From cb76db051f1806826b39753011345680ae59dc0d Mon Sep 17 00:00:00 2001 From: Kilik Kuo Date: Tue, 13 Sep 2016 15:20:12 +0800 Subject: [PATCH 001/117] Bug 1257116 - Shorten media files to make mochitest faster. r=cpearce MozReview-Commit-ID: ArMrUBvPMct --HG-- extra : rebase_source : 5d86c92c8cb3c6c4e3b7632b3d10f578c20fc0fa --- dom/media/test/audio-gaps-short.ogg | Bin 0 -> 5233 bytes dom/media/test/audio-gaps-short.ogg^headers^ | 1 + dom/media/test/big-short.wav | Bin 0 -> 12366 bytes dom/media/test/big-short.wav^headers^ | 1 + dom/media/test/detodos-recorder-test.opus | Bin 0 -> 1507 bytes .../test/detodos-recorder-test.opus^headers^ | 1 + dom/media/test/detodos-short.opus | Bin 0 -> 648 bytes dom/media/test/detodos-short.opus^headers^ | 1 + dom/media/test/detodos-short.webm | Bin 0 -> 1085 bytes dom/media/test/detodos-short.webm^headers^ | 1 + dom/media/test/gizmo-short.mp4 | Bin 0 -> 29905 bytes dom/media/test/gizmo-short.mp4^headers^ | 1 + dom/media/test/manifest.js | 77 +++++++++--------- dom/media/test/mochitest.ini | 24 ++++++ dom/media/test/owl-short.mp3 | Bin 0 -> 11016 bytes dom/media/test/owl-short.mp3^headers^ | 1 + dom/media/test/r11025_s16_c1-short.wav | Bin 0 -> 8270 bytes .../test/r11025_s16_c1-short.wav^headers^ | 1 + dom/media/test/sample-fisbone-skeleton4.ogv | Bin 94850 -> 8747 bytes .../test/sample-fisbone-wrong-header.ogv | Bin 94850 -> 8703 bytes dom/media/test/seek-short.ogv | Bin 0 -> 79921 bytes dom/media/test/seek-short.ogv^headers^ | 1 + dom/media/test/seek-short.webm | Bin 0 -> 19267 bytes dom/media/test/seek-short.webm^headers^ | 1 + dom/media/test/vp9-short.webm | Bin 0 -> 3107 bytes dom/media/test/vp9-short.webm^headers^ | 1 + dom/media/test/vp9cake-short.webm | Bin 0 -> 25155 bytes dom/media/test/vp9cake-short.webm^headers^ | 1 + 28 files changed, 75 insertions(+), 38 deletions(-) create mode 100644 dom/media/test/audio-gaps-short.ogg create mode 100644 dom/media/test/audio-gaps-short.ogg^headers^ create mode 100644 dom/media/test/big-short.wav create mode 100644 dom/media/test/big-short.wav^headers^ create mode 100644 dom/media/test/detodos-recorder-test.opus create mode 100644 dom/media/test/detodos-recorder-test.opus^headers^ create mode 100644 dom/media/test/detodos-short.opus create mode 100644 dom/media/test/detodos-short.opus^headers^ create mode 100644 dom/media/test/detodos-short.webm create mode 100644 dom/media/test/detodos-short.webm^headers^ create mode 100644 dom/media/test/gizmo-short.mp4 create mode 100644 dom/media/test/gizmo-short.mp4^headers^ create mode 100644 dom/media/test/owl-short.mp3 create mode 100644 dom/media/test/owl-short.mp3^headers^ create mode 100644 dom/media/test/r11025_s16_c1-short.wav create mode 100644 dom/media/test/r11025_s16_c1-short.wav^headers^ create mode 100644 dom/media/test/seek-short.ogv create mode 100644 dom/media/test/seek-short.ogv^headers^ create mode 100644 dom/media/test/seek-short.webm create mode 100644 dom/media/test/seek-short.webm^headers^ create mode 100644 dom/media/test/vp9-short.webm create mode 100644 dom/media/test/vp9-short.webm^headers^ create mode 100644 dom/media/test/vp9cake-short.webm create mode 100644 dom/media/test/vp9cake-short.webm^headers^ diff --git a/dom/media/test/audio-gaps-short.ogg b/dom/media/test/audio-gaps-short.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e01a24bfda8b7979d9caaa6d8d7d9fb4204c8f96 GIT binary patch literal 5233 zcmeHKd011|w%T6h;>G%FVf*rQ%z;QQb&1z%yJpqJtC zaeQD0XHcD}gP$~@QonDXHo84NPQ;HB*$1U1@LdU<6rM2tFAEMV(?jB8ew&Ns2;-LN z`Eg?TuHB*%hKm69h7A_Bm(gb}R6 zImvt;AwG`45++1$U?fFYB@<$V;lY{+kWe2j;E(3Fo#8=4wh08W3H%60Q6xV;iDU1u z!O6ki(LRFW!sBxsIqRTcAcKi)r|n?`db$UCZsTyt4lZ10$4$;;{w5BYg3(@ZX9ab8 zFmx9KmLi5ki`9X2E>?mdB<;0a|6M!Ra)(`Z5P7)3V_vJ}2N*UI7QJHy!XnYu2Koeg zNst0K;u;2e5(7ub{PJW&?;~Ei7BRkcB4h7oMce}Njq$L{OPF%Ay&%8@ZBjN^81Az56PptFS zd*$)i1$=gaBCVjRS^1awx((BHGgB=FnMZ0DgARxui*+dmRAH_sjx=70=Vs!l*ku_s zqvZZjY+bTHy&K2sB|NR9?sehe4(Dd*7*RW2bj(udq$L)YgQ@Lna3&2@fb9Veo+}AL z6ZpUkpv|*vNn{xoJ_{ts8^=hWq0dM9kGu$J>mDCBgU?4LkuvPQGTmbe-H)`?TC0qt zB@=#v_n&MF8rmoOoh@jnZ1T_8*B|lo|JVMXhyeVYunF*Y0jIZ&y#n0Q1)Je_55Tp= zHC+(yw-fF30kG>Dgw^(fo%hfmjtM;LmTm@MaiRYbXiyh;U;ut8Z3q--U$9G8U?|HT zr-6Y*g_ZyZfd69vaC;9cZjFH~w7AIN+UzmUf~RROxB9N4?JH9pH}e>p^;n^pOp{^N zZ?+C)D)*NOZ=}!$C>hpL1pw(`o8YFpV-2L*Acm5`J$_7bQL6|(IDYN$=ZXD_KzPPf$A zbve5+!|tZ=M+-2}T!USgYT30ESY2ax!5m~P0&eLmM0o-H70%LxCm6T~8o+788e1U_ zr>|}|&s<5pRha2dt*R8mv&JZMCEZ4T$e-$2&O;D-wOEfzvdHpxx0Z`>u*h$LdETPQ zvo81%18|vyTkufu(p}B%c9|e#=90%tk`a14KDpP0WWmjKnJ5tt!YRX)F= z@(tVwlC6#gq3xX z0XzXM#ToE$(*o5H)I@|%l8X^DIouE&1$D#yX-0o)N5z%{x955~>7`iH;GLUECi-?7 zR6=j?hjCmS5@p}6N0bx9gP}Ri!C3N=a`8xLEjhB=g+ywCxpL?BdU=uB@zKj{;7+3L z+ojwD`%H0Y4!QmQVVttbm|NRCz9uulUXG9M*$8vmOCFI%_ioc6ioSuP!PuN$!Cu)&~x02_T(*A@PW$vhl{iV@;TvF(8vn zM?umL7iU6eQQ%;Sng~^j9oq{R7zo{~It3zykm--cG!N-4M9r0>au)Jol!2paqD!yV z_>rlJ{V;-E`-wqt}c z2J`5sALviR6^BNVB)`cu4Wl2*0*OSCn#7@`1#$rhALWGhkP-cH*>GqSBoUhheE^(W zgch0gHukstoa(k}?KE`saf28m0K&D!I6T1`pG9!PV;0VHO!{(=UJ0>$@db_l`!B=nM}}ol`frzJIMCd# zVfkHX=p7%u$$L*zDluSz*9yNNw4pa|)L=xwJD<a)Imp(fuRt{LifZgey~STjAl zuP-9@sN~i5`?*byPD3}hJuu(4^?B+kX;xPKMX5Ts?WtCP;l|~lKy9YrHytBcWDX!p zwq3Mm7x|?&U66U}_l%8|I6b>+qb1C5-W*)p5T2VQm&@HbDSfXGoXE!++0XGUy?(y= z{$;}27e~8l!kYhkb1=L9;&5})=#6Y%Z!Jq3DDM7pukgR7xi>}WO`|c+rJgt=FFMX$ zYrVE3{>~)Nra0K9+`6|eCH_NLJ!K;NM6QVVn8Eq5|3Ks5S@Q%dC+>Os=%hm3I8j0^$t^mqD)4m!__xe=m90h|z8n%0YbXC4fUVUM0ZG!q#{I^X%9he{-HJIZ) z8ZiX_x-`-$@}1-P7SF#gTWWK8`3qKXOVNGWob%1s_`~Fua8~4JAz@98)%7e{5Lb|c zoG9w4yl}yxU0k}G_a^s`O<5H7DE^LhBj)IWZ%>@(LZL$2G zGH2;Ap`&8*uX1vJ>vZAA^Yrm&_*Fm5^;kXnhtJ59hP5%fRDw&+`9-mv20Ir4Yi+SZ5v98Y0RHr+cN(RnL#sc=7YzN-*Oz*5?oCPj{`u*<6{U|#51c4Ux_0|W z)$8c<4KABK^I{G!>50Jr1*^M?liikUGN$dw3t%(Dm|+q=Gk6D$#}-iSZs<81=#lBp z+0Fs?+>s!P@NQ@m|Nd8N?+KjrJgTJJODiTfCQbfyFFZxj8Y_xd&Ft+mk5;i9q79;S zfikGOYL_H?b&AusdmBfCf`gUTop!v_81hvAq&W+dp{v^#geAI(V`*F3pW#b%@A$ap zA5Q`oM|#Ca*<@qm7LSQTW?B_)A$`>+U*H>Wj^T44Kqxc!mj4YXM@;Lhm2Y>%baoVt zb`V-Go-9bo-Y}|)wB-_Wa`d@R54FjkW+mM!o_YJQ_kBELJT>rY;%vK*)q{sl2gk}+ zosIT=8C6?r**J35XnbsU=Wc#EkRcU*IrI~*-JY)k z*N6aU8GK%4+w+aHhd}uapM^;;+*ssu<4(}-D=s_2159)3ecpb#^}OY*s-sM8#Ty1`!X+)LM*L^)kU;3OoX9N@j@+j$!GfI++gtln0iR!Cer`wEb z!cMC<)H;TQbq@{>-f#}k?s(Puoso^RbLHI7fsha0KctOwZoMo0=YYwC?%zAaks%vS zj%MZ78`|msMQ8rC+1Ct-RmQ~AlO^nTp1|DQrr76*2UQo-Zz+r@_EXGx71za{mFais zbLB?dG_|Dh{jb@g*{FlxPY=9!H|q3ZqjPGUk5hgV8QNN*$W{7#X5xx3qipItpk$IE_i+yPhs)qGcZi?i+9f{r6%Ip zJudTm*>57ED%l?5w^gj7&%?MY|9nliJfv}5?tc2rr*nO5>$Yj)H7!$=7DIpl0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72>idm7mj5O Aq5uE@ literal 0 HcmV?d00001 diff --git a/dom/media/test/big-short.wav^headers^ b/dom/media/test/big-short.wav^headers^ new file mode 100644 index 000000000000..4030ea1d3ddb --- /dev/null +++ b/dom/media/test/big-short.wav^headers^ @@ -0,0 +1 @@ +Cache-Control: no-store diff --git a/dom/media/test/detodos-recorder-test.opus b/dom/media/test/detodos-recorder-test.opus new file mode 100644 index 0000000000000000000000000000000000000000..88b2eab0f8d228dab11736568e0a985564b1de28 GIT binary patch literal 1507 zcmV<91swWMXJ=CY0ssI2000000EhdJJOBUy0PT|2xd9VTaCLJ?Wnp9h0XPAGy8r+H z002*CXHx(G0000000000hx?B_0RR91pfT340c%fib#qi4p^E^l&Y6#xJLWo~0{WMy(aOks9rH8(CaF)lGMFi&S^Qvd`&bN~PV0001o`;R;V z0002J&9Gu0B_<;wAsi?pGBYqUFfB4MF)c7ADJv>1Fd`r#A|4?~0*cx8ij${?zpvUg zy=yMFKZYUU7vMQ!7SXF0_cyRkaNB;`hrvb2S%=`pBo+U5Mqt z+?~WFNUAgDlU4ELO%go(9dB+3d?kL=>kHewy^lsh;JypYAUkTd-~$^ED$+Bh5fLO& z94BB%t{<5TrHpI~ib9$BB~%u8o4rDzx*Ic#p5tnHr>>lu{zIIYQmHvh+VdOI_bp6F zs=YKWm-^a$1YXyuF`N1%tYb7o$5Gyw+@`u2>QS~a7W3^6>c7ddbQ}*JsAt61GQdcu z-zi1Nwc-^qHiHc4k%tv9He3WaJBW7-6Qi77l9s`Q-UAkeW);L#bllnRUrbdpf zuz&79MFpL^H+G)ZMM*}8%v=$cSAs|d9Ezas>B{_gb6KWb6iA@|78|d{7=mu2GwjWR z0~$^DIP&T_?xTM`mC4miDPs0-H|?8Ag$x6!n3hNR3^|gTWi5PKq7mxKc+6!h5cX!d9E=i_?)A3d>+Q zW&jT!>!3)DXc#liD+E`M8%V5?6Dj^ss*RR1_We!iX%*Ry_k4;xlJ#WnSLD-3jd`*< z1Z#UDlb5$vY`Ci3@1~LBT;oSM%Xy1Y9E=Al8nVk-paC zhM?h{mW<>o>cBpLhsw3@NJxTNo(d^jXH|i6m$je`kq6YnfsU8O?k=1SkbMSt{GD%^Q?I|T(Xsd)4^}})FzU^b5cWiniYOIN#f;IYL)ieF zTkU(NOl(3;G+g{h@klR4CAxx>14(}{=qYHR<@}>f=F?>GyNeurL)sruzj=U2FGoZE zr;&d|MF__Cjb=w67)4?i2Wp+N;*LqfL`W}2khtVwVQny0__eMJ(RHIfY70Du@=Lha J+ih*8x)=*!v)cdw literal 0 HcmV?d00001 diff --git a/dom/media/test/detodos-recorder-test.opus^headers^ b/dom/media/test/detodos-recorder-test.opus^headers^ new file mode 100644 index 000000000000..4030ea1d3ddb --- /dev/null +++ b/dom/media/test/detodos-recorder-test.opus^headers^ @@ -0,0 +1 @@ +Cache-Control: no-store diff --git a/dom/media/test/detodos-short.opus b/dom/media/test/detodos-short.opus new file mode 100644 index 0000000000000000000000000000000000000000..8bda283fc5d247f9db35e555bd9250204545807d GIT binary patch literal 648 zcmeZIPY-5bVt|4bnTPIxm_`CJW{krA1*OFvsfj5Jj24UyyTMBQLCWC(q?{4RbF;qu zkTDyiJR~u_m=`GGlUSB!YOZHusAp(kzzh_S2I3IU5Fb}tmsEw4{FMA+J%xb8qC_ZL z2q^6s6yg~iV(XhbxmI0wtxLC)4kbx+wI#FABsP)OcJ}eTKq>VH(=|LLw=jj@8-F_ zh<|aOLY)Qsd#*k8%^4F@YF2#Yi_7rPcX$4I+4GsrIgJaRpEq;w6y%kh;WRnve#7Up zrng?~SpZa^>0vkj(RH75=|aCRPhq=ce}4bLiSwTATc}cSYRdZy9{Q?!8lSQ)*0IL_ znmv7G4wL<-uGB?qGs+mY-|=WTz3E)*-qcS!KX*H3-&$K5YuC79ga5nFUX5j3t5zqx zJ}0;(wV7{%M>F4j#qF=yL~l>MbW*=@Rg2mm)sJT?BV|;|?B)bGhZ|1X;jwf<^FGrZ zdm5g4?cO|>C4y($$8*xEfBc_uhHmBg{OJ2>+hSAku3smX--_*cdf?97BdQ*&jGs*o z{rJRJ$mWl1ejZ1SYTcFB+_(4a?RRr}u#fwUf_2um2h7s^T9=HM3JR(O%BUxJtdpO~ yy|gEXyUS_jPt_2yirIUe7VeTZ?wKPgsggc`0i7K{zM!J_ic+e#tInG&8iGAv%%$iUFx!PIs0 zTi4{}ZTr{XGToc4x81%?@uBzw%OtUjtHpm*HJb49zgJkis*ypY!9zz{&mr{S_uvhTukeLfSU&1d~-T)e!IL8HM#w>Mzxkwbo)&+q2BzKDNu zocT0Z3T@NSUUG-TX(_ea@u|{k}Yf?UMcZ{Rbz`d$w<(O2Mfq?=LJ~(8!Pi zRHmw@@hRJ49c%or+0$3%Fxh|VN?o)zql{tuoyBV!87dk)8cuII*Sa_L)6UP`j@h@? zmd4sOuGrxJ?z2~88P}@S39ruyZb@zCn*j1gPlHD@-+jgHuh>LyPrYIsXtG%}oM@K`55lY41T4tJN+%%7?u zVimLZIxXBKZQMQYaaQH>b#rF@bDlFJXr-n1tmp* zFr58MWlge)^YOrY)9)myM^vu2(b6Wc`%%wkw9tUJnigcr|=n>6iU%ROeX)-=&0AtiTizK;(807qhjng9R* literal 0 HcmV?d00001 diff --git a/dom/media/test/detodos-short.webm^headers^ b/dom/media/test/detodos-short.webm^headers^ new file mode 100644 index 000000000000..4030ea1d3ddb --- /dev/null +++ b/dom/media/test/detodos-short.webm^headers^ @@ -0,0 +1 @@ +Cache-Control: no-store diff --git a/dom/media/test/gizmo-short.mp4 b/dom/media/test/gizmo-short.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..f8caec741e325d5efb855b013ca20b8b49dfa86f GIT binary patch literal 29905 zcmX`S1y~i&7dO85(%mU>k(9iobeDjXq;xl2y5Z7Yf(VMF(k&noa_LmM8wBZ2iTmgK z`@iqI&+g2bGoKTC&OW>I%*+A+0I~J*hdFqBxob_)S=A%1mJnCsi4Fq0Flv?dqP^C}ASlN5HxmcJziSk0cJZzku9Xy{9 z!hXWmR$fnpmAlJRX>DU+9pL8rq@I`a$)c@=rzyS=c|d%>FNv58~DnAnTvz#e>d!DW#ejNvGDWw z-%UZEj{k8iy=^@m0-m(}kMpGQKg^S=r!ZJJo7q1l&GjkL5C_;(j-H-}rxZRpYT^Er z{{NB*zyUy3*Csa742i_)1wde=sW5;E>IXo;i@)e)>AeTD`?*$H#A*LT6^6?67f0jW zHCSKVzqv2T(I@@4%{rC9L(D{Sjl8)hGHbYPLL%?;kT=FD`_n@~k_2~1s36i7ezXEpL1ftw?|O;wFySh#q@eB}z@EJ{azfrAZ$NKcPZ|~gMg%V7DWe5~s_7DC^%4U@$+p954%carZI}! zrhC)Poa^`gyau`FEXoMa-!K~hhKf9hmsZ2qh7yw8x|pN=Agm%_K+SUf141hcV?`M4 zA4rLQ#2k2z(17c1MHPKdA-CE&;wx&vNnH4dde(6qFnZ_NUG$PXci{6+bV56PtO5^z z9JC`cLZt2o7&~H|l!hfNFxbMVpLgO^CS2+4`#W-W@Igk@#@Xi*Bu`Ik!^@x`D8N2s zDf^02;UiA!HkDhxGSqp5%Cgxq zw)#42mE8@fVS!{GK5jJDyq*mz2Odi|bc-M0~KDEa>J-C6!w>xuQRg#eD zKVHSo_}&gOE;GcU#QEkP%N#16Mgx}FF(za(k&?K(A=n#_H>VA>MjAY3ez}S zE7olf#!+-DDMeA)V1k9}&R8H-7!1;#{UyzR)phH?HO}Y$t|zPQEY5&=KvoGCI><5; zmW~Z?io?T)Vk#hVU0u|V&y_TyjByFVzAj$}mp#TlXszR%#K-yZgDL4<-s=!FXm`mg zP5nEI_|nByr4a&5ws(noB2QEg?}i`Du1}U`R$6mk!f{8-QSLY-#2-H1j;e?B8HBTN zQ+B%vf^aNi&qqR(yUh93g_E$i)^#k)4nPO6oD<+7|=G|tW zG`v3N8t1|PAcuZoIr_yEdlQw1P`Vfv?mc|8O%NJAjk}k6p3kd-jqx(C`V!O9Q5vgH zoYWw-_U_LQJMpDvd%P0d!VV_i_Ae~d^WRs{>}Pq|LY}{6&CRJOdkE|cgOkcr0%yhY zwyuk0QHM3P?DBFjF9>_)?2z(w&+?hYXrDJV`v=_+y|!OX?-|4ef)HKya~rxux5(um zE>e?u-(-}I)jE*d!|HYtu4k3iGQRz9DV#1-e&B7Td~UYrLD!^r?2VRGqMt{iAF1}= z$P$x2r=9MAV~g-Sn_|>&)3-nfp<2W!$e~-6(B5v*Xw4I5%N!@LeQ4>w zpo58-31a(crb#>n%J+Y~2h->4qD0qH0v4+z3h`6AqMW3HeHF2|DVhbs9n+&kHO<=h_F_zDU~_32!fwH`(yFLPn@%}DxYk-Fe7{hs zF8%CQu694ize&M2Q>VhPI*}5>V^7X=Ta2=MjS&v8 zR=@Xth#6+=)*Q>fT-}HED5FQeAhx&)8;ja*`~Jfd0Gg|_E5yO5_)AC;pg%dtr~NU* zXs=R6tRrXDBXxruW0ne5`O+yI^O;$fSjCF;gBbXg9!7@Z_+KQ_lA?y9%87Wtzo-1d zxx4|%8QsaVtA(~2bb7kr#W&8=&|E}9!A?@=sUI3AFXb@zVPBpMxt}7R!t>Z4`(b3{ z*_d2Y#PZ|NFo8A?ck{D`Gr5J(abpBX7#3biCTmzZ7)8hS_^-rKOiqKSE`UG6`}0^fIign$_x|iNdqAvjhf>|BYmCI_z`%I zHs3RZ?y8|$=9f)hsF}tS&r0eqUx3#C;eC$W??SrIcvBr$=WEE%Zpg>j_JH!)!6Zam$PH5+w@DnenL6+qAKH9rYHS8D^4kaU(P04pqVp%``K0<(R!evcXYcO{|y= zaGB1AjM>Z;4i>D=vJPG0A>7ng+Eslx`%t zvWYg{s}SvEn51!hd2eY=Wqc~uBo3j!Fu7Z~ZnFwfLQa`B?wi*4ZRnWIRNPzf)V4d8 zSL{x|WmX_4)G^j7v>jUU3i?dvq{>#gQ#zNIiL&qk{4FMO7|>wHdr_Oj1+AN?wCL#x`S`#lAP zR$Pv7(*gF#H$19Hm)cs866K^eYAszo-|nq2G48Cw00~93lC$<|aI?}CPd$astw0~Y zumwuRPMcGmIYF~7Xbqt9ZOPWs*eM)dzCmRdbn}~be*YnsmHzHtm7Jm;RX~N9`MGri zn_SP{#BS()5FzcYp0>QW+6UEmUiOe4H*Tagb12x5Hxzk#SryXZV@8s2pYUrqfQL9< zErEU=h9ESqF#Y)hjh8=wg~c%4$jH#I5ySb<+fZ&ZgdZt1fIkR zCJe6=!}g;6#Qd`v6QW!N6Oa?GjdfIovZp-*_pqf=uJRnQ%MPvCkI{#Z1!a)&08Ad= z*DR@P_^)69HtPPeEEeG@{^k#Yadc^?I2CBl_&aIDzdv&N9`qU^MmUv3pajH4XYALX zJV_+8@?w20=vK$j-od_ToAt8?6W8#p;N>Lioy3zA$`{l9jxGGAcO9sws@)BwQPXq{ zN{@cabLDi19`gaHlp5mu&yUR9-a2K_L@tb!f`uD@71PtC`|_>XC2LBx*X&=;BcwOS z7>KV!XjY`U+dj6T06V+S4y!|n&p!9~8LATmF6y#nzHu`~H`im>qv}-2!KNhuO@fGp zx+D`jb0qj zgP__TYrzb=!t3K-WMgLh(u!i;--p6xpe!X=1J=A~q5^r+j7+kGLoNsz0ww`?HG!~O zgHJ|SXA%ZvgAz|8zhCjN}W;+FAo0+mG6$+@tdhj40{o0)_|FM{{|Bn7v#oGmn4`r*bt9)opQS) zB}`D!^bbxzm)V_^W{NvW!nU=M${XJiubw5v-mHBaM7AajDigAVq5eb#s8g`WV8Yue zKZdtd9lFIL8kI-lBK28H@3Xk0T3SL*9+$||b0a6(M0y>#FjUu$m+M~-bQ$HeN zgcmRe#+~WinVX;A)U=_l6F%P4kU(kRdS-|ebqMUO3FM{_g`s4eQsrG_!kvkVA(^En z9td>min6()+RmZ-?KH|PkqHh+(_j*rql%H+>$;_&OFY)89Kei5)Zu=mX!Pk!aK7uT zKtb9i&1ig_XC76ELDNqc+qK1Jvx0rXi-|>_q#Iyc=aB#yEs~Nw9$@NvG3nWP`ZYS= zB;foMDr(GdB2NC55~S>yKiWpeKYBj<8D;m&CDx&}+m3BuSF$Oka{9WdoKA=tTbC99 zzz1liru7HnN$a>W>-3s@Vz$DCH0(B8r=s)?Vm0TPL6sryNv?|VA}zm&BCNicZ9-f! zC7V1EcBR3$93gH%7^EwEa^M`FbvxRR1P@KnoyHr2W>`bEndoZ3*7wPMt~Hkxmgw=2 z0A%986kG=QFgVHG6&l9~uGX2XUTUf;T?@OfA4U7!Lkwx2o6F`LL@ZKY_()jfWk)$b z)+H?m)XaCF$#EVPLRSQv$U4Kbw8c=C;9q>^2XELS-iVnQEx91`vG{u%>Bxo{9~(3~`po^%-Ly73hzj>v$-P%$bk zwmDx5d1~2RtUDh`>rYV7vPFk2U9m1$TXP{qTF_g3k>v#FG+v0hp}7{VugiTMM;-m+ z5B#dx)A21%fzo6~jHT=pu>ezXUOTLk3Eu7&zsiy)!}f>mm-f%gNFgBd$NU_+wSw-l zm!v^iffC`ge0`Ufy}sz|#RLJqO3I6x4TIC39>uY25&6n8lC$^2QHI8Ptb_zGU3bwT zeGMd1+_dpuzk}b0b4UXMo}aF)R7FVP94~b1Ew$ zbykudjnXOy$@K~`e_X`>&f<;^p!GVxphUG-CZ973KnU)*I6s8dFn%Ev9c6KUhwg*& zR&!Z|TE2b3KcKblMn%`%i1P6Ma*0?+dwuRjP%$y(b#8jkn&alO)F`-Mf()kkaK@`8 z-%oh(>kEeMdf~)}i!%Q(iqZwaRAlzDJw)*}>RY-!JitLk$d9;%LFVBmmEgA%!8h^(_|3<_%+)g=^U?m_5Ic5UToV4v zN4nwct7{Xt!`i1$UpfOho!lB4Wr9qxFstl!{*A{hoHPogFmf7hHS&qDbvvFwlS$dh znr>bv3MakxKb zgfCt7N5xYxM8lS@VSX`S@0KkVnmjai`rDr(so$^1!mnVtmIFtN4H{|9XgFkYH7@AB z9K1uupzcakGnp=0pQ^PIxB;0w9WBFl{Sth~)aN(SQkn)2c6#r3h5d-XG0p}S3Th2P zX;;N42-g;TB(w)VjYpUdI0+=c^CeYxsIikW6A^Af*eC}aGUxhax+9>WQA_~aNPTJf zgimz4>-QakpDv0`MW9KefpqysJc-^Yuih}7pN2eqinNdxLM`GU*p>X$%8trel zL ztlCczW6%R%P9~XRz#gLsO_`>-yQiIgKT3ymULIjd8J6;lf4#QFV|o=l7*?afCpn?tRv;=;c_#qiH5&Nd9K6HXw7j&8A~qiA5Hz&@Rw0_iDoJRXeym6t0m2g zd%KqqE=%UuYRa{0vn6is@s~PUr}^=>#7{~%Bc#*9em)QlK*N3X*}ln(A-oqI3)YH^ z-LB?7E>DPL@(Ac3OXFRABu4o{sB?fxW6p}1-n?rKtkdl5g&Aawq#= zaYlxCQ3%R;%O-DW3UchRyrI11@cZ4Lm)WMz|F+5fhNbHKEzAu9(wB&$7MB6)(t`MK z$57J=rSNXvtw{r5@@w0OH$&&w!hJ*}07>+d@l^x)tf&5}LuKJB0xR$~jZ_YM8S;x# zV?Otc=}`m{NSv)JAb=wnExhZI%HXW$2aQpX#J`of;l-7sf;gqYdqd9jVcBvP`jh18 zKj^fpXXMNV&LlG^iYP!T$VkKd`xtQ(No=?LAt4L=x`OD!>DTo^?4Q5;?@vzG5B2mT z-=A=pdl#F^$X7ry{PILb2wxq3%{TczY8vRzjl?7?moeeNpWe(<)0#T#<4b2`=O{{g zwQREK@b`z2aICFMTNBd;a*8oImFr?EKkVGWKicQ5Na`Rsh27y4E+LE`-xrg z9@Qs@3BQYb%h%HSmo!@kQR@`1QtsUdTZW67n{QEe6%55}O3-mLsH-ZAjosPyj3&fp z03h+1*BG!RV8FrJCe<$qLo9L-m$dLGflYxTkz_1^EKs@qw`e71J?`;Cosaq9H=%=h&X_c@Mxcj z#v_DZ2<@o_yd9ITwW#3I&ZNfgw>{stEMooO(zA>o%i@x-m>M|v-q*i*VoqrB`*o?g z#d~LIa%nRc{XIWPQ;{|_Km@l-egitWr#IeggwYmtc)r?--xO|^qw3#S4i z&oNXrLq2rYdcGuhQ`{DsejbJ}?+k+hgxH_*&khGzRaH1_muX*o2*y6j%C0 z3Pd}O>@so@xsk0du0>MWP^zU5R;2fXX$E2*W2?zmqDx0I=FZndSm13;2ETgZn@C;1 zp#{Z~$YijI_@i(WD(}&aO2jY4$UAb1z=^EODbn zcjA@fTNewWG8sjDA`3uwfcs-DTVIcD>ptOl?7r3R=fvCt*F9!5hPVHq_^Tl41JZu8 z2=zI3H=5Of3vEDmS~R{u`(5lDnv@-na11ADk@;`xv^NuOIE5r9L?01e%H4 zbYKef^KC$uCgU=KoH*0ao>>eSBA`tWpT? z>~J1$4T2yZsSGBB_Pq4?%J=9gq06IDDj|Yb;u^d{{3d!>l&Y9Xr+3-9j5fJvV8&`2 zB@yD%nD<0IN9HPt951*Hdy=sf1L9V+Ymi7eh5ffPjpfPX{Le&nAC!=46~;F$)B11A zr$R4;b*oupBpe&HIVTU1$P4Op>>SBa_ZuULuW@M;mMg(-NMwF(|3cvIERw!}Ie6u& zJ&U`rg*v}{7hk@TUzjqrVuO*QpQVZWR=Xp`X8E!46BcFe_mPgZu4Up2`D!{8xt-+a=(PK zBsk@+ID|l;H30(1U!a)rPf+V0*n=m6XygLt34c4$Aj1!FY~lRjaDuN0cpPi~uK0eH zd~@|7qGuvBsiQcC#`zs4|GQEOsb<_FDRkb5YM%T+cbC>y9Dba|+c0y$GV3x(A&-l+uBoqhTzGIi{N{ho6tgRlnUT2&l&>vKr;isDeW%^F^6O)-8Z6CuA1>*oudG}QRH8si> zu#@X(D@5T}<$(3l<0Z=uDf!Uzi_PF(QYebHBhTGF@cC;rK^hj+fU-C2Jt2`7_rd)B zo3tbWd157j{5M_yn&e!W`^k^>Ecud<*QsCzPXU5jpNpf%+TNh!iCPZQC&F)P8X zlz$i`ywxhc+Oj5?$g-;C!L`z3JUL2^=U2oh3TDJ(!8Q?gTv|owYf!-@ATp2mDlO`{bJ~S3JZTts4J>D@zX&1QmeSQEj7@E}zr}!nU zpp{}N>Tlmxc5)wgw>vpdaE%SxJjsRh42a6)$J#)pfiUc6_`<(={=nZlXPh`TXj1I2 zf@DQVF4Ic^d9LHciondYvlp=_TMjs_QeXNu<%dg}CH-iLz&JpWGCO^TiD_4+KSTH{ zGg9hIeA5sL>O`K`Ddgqk93ys8jn^0X&*`rF-^&Z@dYo0ZeBj}XH|Z&@EaO3L{i|}? z-@j;6tMYhWp`aHtL{fT)e2_w3%ZyXP{CH%_U^tsP^(bH5ZM<-*7lZS@wlA-~ffd%T z4T+$PIafQ|^h~=j1+&qph~ENW1*Wqk2lDR^o<_ zk^gZuM5CZh%u<>L1i|A-0ggtK)@qYCVbU>D&prm)dQdL86olC)R-ynSAwf!jk+kt0=`@X~| z?|Xu5xE>MfU4(NqP_`3Xh4$KJuwlLE?e|Q5ywmt-js<;Us?Zu*;#vWR$VLkTmGG^o z6%CZGtyi%z&59Q2!qi#>L;G7OqEeEvxk4DX!hYTsbwg>{#DXHFAs?Jysk}Sk6Z>aJ z0m6OJ=;xOLZ&UEcBr>J#e;cP<#(j_!F`gTVUip$?QwT%5a4Ea92nB$JXQ*r@fowlw zTIX{WEQUcTQwZXKOJGmxE|n2gMa6BGRt!qyuMRP{gyd5tztuP)++6sqR&BL&V)i?w zDCyd2<4vlM_edkGPIsraqS;}FDV0pci-sumqnss|WvAkO#H_UpnmsY&t53U!5e}(8 zy*XL3!vMh8+#GAmXv=in&uh8YAGgae z;f5dZ%~~Z99uI58tX2cqD)Ac|EtMH>$aS)43xg${+4f+{ZPdd4*emkaanf-Pm*z={ zvL{`=23@n8`#O{y+Ly$66e|7 z*cp(XiCi}#NgMEyG6KufP}=1NWc*UGv=z^C-~W2=6ulL@j!&?H(Txd2R8pl_$^Al6 zm#LLU`HX@oiJG4jAoTSk?d{lJz?}2H8?@Mc)8FC#9pXNOSO)VBw~7#}G}E)xJr;#s zJ=P)J56UXB7^2L*l;v?5s)I=6Kfalkn%Rj0#*xS#9$8*<5Yesvk5FVWP7FcEwQnfx z+v^xQoD9bd`~W$%J~@=k$o0>-T^uWz8A|ocekb<2{7E(^WrIYcDEv29;Dvwi}tAIJy=2f zzKlp`erX1ggyYkTqty_SmDuTKD8QZ1kIU{qwf!2GWV<#8mw37{dJM(khS3G80qcEX z7fe5nJ*Nu9y`%r0TJo-Zc5|HI;UU7;I>uQVHZpMYF1ZxmSNiAMmu`lHEVyl;79~wA~hC6J$kAcu}BsN!lUrYdlEOT?G11ywY z$Ipbm?r}y3zz73jmYYUg_@7hwkk_9P_-!0T7rjy`fI?@2j1+_eCme37gl(+IILuN~ zj5NKv;xGqY!gM%77X>sbPPLxM%BziU0sFDu21We_4vX}Alr8r!lBKk}=852JSZn8i z;|XOJw1iSC?Ts#s@8Wr-Onnj=^epod!hfkdJO;b2I?FJqJRLJk3WCYbVavd9`aT91kYUg_-`B$=r^D9frIrU<27Q*r5?FYYj&vl@{{uQW6t z%yR!KiHimIlLi!|31LF1&xAEu#->JC#!#>*8oWQfizJL54Zp|)NW3b48N4TqW%f9a zzm@ztok;lpISkv#&oQh_W884}EJr!*=y5_AJG&zo)-D6EL7vWMwp$KOoHn>bt=|@8 z8aWfGCuP3s8ut{%!XIm8K;37^xuxD|QTIR*VLq5gG=D_MyU&)P%Aw5(>t^Nc>h3`{ zJGS8yCo|_GSZMJ4_S35Af=)2g7)@-)wzD}jJb>f)1oX)*K6EwPh&NVr32;2)3SvI-&N#eb>6%b)D_xA#a3%aK;uQ&cs%Pp=%ajB`^&=Gqg=yWnBH-C5OT_xI#c-D z8sBX8XpudIZl<4=+q~ezno6zhl-Dz7S*tbPqm)m$j5qy*m*kJcCBukMfn$?hgoX~f zm5U55sink>J*}w++}7aeH7eL^l6@uiy6EF2vWu&t7Q$5K_od$MBb&HiOUsYNBxY+> z5o;9MzWFM+5zO1`607$RiY@SS#T@6MhSb`{y3V8AbTQS!N_!%L(heK66D(JApstf{>ciFG4?kC6LaJ8Ou%~ZlbDaxMZq2p_Rlqt*aZOE2p2t#@n zaGNRe6}Q%NbM#}Ql$`$SFpnDjU7$!qM1O$pi?@Pn{_&^)gMld}EyNt)0|j=Kyh2z| zPAe?-Dc}`l9PXh=d#C1#eB`$6{tA54+CifJ`ZQ@eOK<`QN@+Sxq@dWQJM6TRCpIqB zeDuldtW^Sa&l5|->s#a8je1&pxs6FCI*n9hVd++HlNrE>&o*NnKo%hu@e}RD zc@p2EqLLC0v&J4}917VJ>ep*DsP2%nXvcu}b7z#KY{{YD=*VbaqU2IC{h(Jeav3Dk z42_bceE0YDqo1(&Q2qw>k$E92d_F&MzLTIRdG+qcM&_Nyc0$Yj@g8*bE^XbrZ9q4c zP9i;-WWaGIF!4ngPeWhG8Nd9Q-IrRDf_$d&f8SrJIuyln9Gq@-Ylh2^33FWXa+xNW zWsLp_&q)#`dchwgQ6qAZ-R;ar13=+a=!{_#(#d!k&Won7agUD+ZY9aFSYM-uPvZB* zr0%1rcZFD*hJ{vcUX{DW)DqUJ5l^vy`0h6dc9LYepVHFRPK(E43Td=|$xaVD$@r*< z{>ulBYHd;G*xZ9x^ME|@R7{;D1R1e8mExm*xWzAX& z>#~NS2>)J7#YKfdiRQ=|Iqi895X+}Asm55)zbKDXbHvSQ;y;vZg?DfvqC2v8Tpcyy zgXCC^$Z(497Ev;$&kj;?p)63av6OA#uV@EJa|BR|a{@(Gru8C)uE^YA4a$U1?^4)y zthI4!$Hx6N&1Omrg+(tFQ9V_G^Yvl!PR{IP6YWaMX&+Qt;wD5{AE+`Oyr%9PmcZ&@h9x#oY9aiOyVTR+^S@9y{ zIp^zO=J{IhO0F>|x%?#fv&vQwnq~b6rHW%DH>3!) zCBh?Yr$zt~4M*>YS{u>!0qJm=ukDl48g@5!s$So4C%H<$Z&<>a3V+YWRUItOIjBlV z6%L=KvN>ni;fwpVYo6lRcQwI553;LT&=`GaCgI0P8J7m{=v#0X@TZ3`a>c%pe;_MVOUiGeMTQ@+x^vq#el zE?w^`UB`*!{-Gmg+&yM2h&glmsVU<{>xoF0Zn}+!P4K_j({LI>>{D|x8s@Y3^V-b( zA`7b=g7GQy?wX#~-xU?{H&*xY_&A`$z&>w9`8O5}RM2(HTdZPqKb_6ZJ{?ZveZXb; z&r$}&j40V$F-I-CfkC1qJ@eJV*CdD_I=UCZw0FifhD%S&N|CMs#yy8zCO^1&^Iyy@ zxnq`2=P>i%PFr4?=AlHZ;k3t!>bgp+efDR^V8bFFdN*Pw+D;v_XQ!Z7p`DdKUl+1Z zp$~^s;1vH_=WE^`^L$fXidDFDQ1S2u@38^QP$Yv~vyyBPMWV2w%w&I6LnWh4nn_fr z$eIKq;nJipGO*`H?u5yNG_9446&FMp;Z4ir9<)Tucsd&CgLFd37h_TLCy%F8$7RBT zNtRqJ%0lJ#mUl{vzCR+_*7MutaX@G?XsC6k@^d9e^2+0PV_Kz%a9*oS9pO_@`H2vj zH3xh;sX@QVRy{_!ZG73%p8~1lBt*FP?JI(>f_V%>xdKAK)^-ykllppPfar+rWHKZm ztZ4m>hK}Ggmh=cEyBm}k?dWVo5t4Y9&c@_>3(#GJJ54JkFo=WF{$0lcRi@^?9=$xp zkNq6Rv9B)maPuXczyiy3J>aJt+l8me`{9p6XRd}b`1e)T7xh@V7TZrNB@WM(y^Y8N(u_a$v2h|0B zf@_6vYGouli(0&vSIT6{;7-zG`dMWgko9kRbM|CRa{7>~fW9nOmX)28KaLA(qh0?D z&;)C!Nj9ydN|`Zav?Zkp@RLo0otLwpH~r3En@644a_Q>*2;dYubG7)$^cLLc%FiL3 z4m|>GwfLdWna=K*(j@aI_IplO<`j?Cg|;n-4V1ksx~_)`;k>4}%tHkf18wZk@?;Wh z@5j*ekQ=;8NBkvW)2|brY_h48$}574-hEC9cnvC%rSRYVQ9TN{b|v#|g4jDk8P|TY zhi>G=5F9H>JdR6^!oSDn(a3; z9<*}V3xpxfd8Jrf1gd>6%PzL+T%Mf>qZIrlx)Fvh5PtjDA2IUQzvEjc%#!*@mq(lT zSuLkyv@jM4xlghLUnaTe`Eg-IDsjOXEJ|K0}%N zRca)bVu;ya^NlzdN?W2J(SChZxSqvkD1J`!-``^Wd+Re@7^`aB+rsv&wdk5=8mB!n z@d*(^V=M}WM6+(<;vt38Wj*9GJ(c^B#@NuE9@A}}Q`secLg9CPSQHN4n{osz?|zUl zY7Zowp3GE~mtRhASjs679%7ej{JINnaoD{GDt-C{-^l$FtuhJLef@#9qgk#CD`48Y zd`3bg7I#3B1Np`2sN@DyTrX}b@FD2Z#7MWS967cwmndhd(NoB;{<7RnMFZ02ZOW~F z;xW)&HGe-vFeC4!eHTQgv0sj)u}@aG)o6D01gz#(S2aT@CS5=OhWryk` z4WDf+dLyOfiF8SIkkio-T60z@Z8$jK7#=mTP;~uvdN-T#kAQN$^0C4`mr6MdU+gGy z2rDs4_qTSm-RY@}vew)uTT^O7`XH~g@CSCVbEOQXGR z8QTHr*Dv>NJT3Cs^{}Lkmb==b^_E-1tcyviy`^a{oVl`a?J)sNhKF7w(fBXsR1I9> zPV-8COXEH^^u5%5u?bF{Nu{$=!J}4$&E8Hn4Hsey6*O(DmD)US$*L!+0`IE@z!67; z3_lfHtA;-1tNjXN&-PHul4$H_W%=1_+LWYzA@VKYR~{<+E!)>+;V*1_Gg5f;?rep=VkRG1643&c>3g}klXMlz((;5$PA zCX@^VcPi5pY!&yi8EDCdzO;x8;ILIKqWm|{vFxu7XKJrNJwxpcsUZ{I`W=4OXLT2` zlUB+SPRtE$e98f@0!-jJI4rhT8LJvg=ZeVcg-}^{k&EVMYFRV$EOhqE(Ywn|(5Z=HHR|LuCc(!~6dmU%6X@hQPMfs}KHokc zw~AfA2?<1_KWUXEC^yj|rO9YCY?4Uq#<~Ak-f;A_ovM8`#Mqqx&+^YIUPQ9w+4DO7 z=A&sQnPxq)Sd8eIyiHeHUTbuFwT+Qq^4kxL);e;(R@Tyg-Joe%zL(aP!MM6Q+6Qh5 zCfA_?vjb%2V@M*%KK<{jVG7ote8a81{aKg#z4V`69jW)r;B5ITt!Bl@p%xLi5uCeU zNC*1`YC?%)@7ZDQUFw3m*|qL?DAq%E_?2{AYt@(C!^t91S#)IL*cWmQ9j=$BUHRKD zZF?sU|9-f!5}u^WSZ(hx>;8vFRPR%9`li(KX2s`D+#)~UMSL^SnglK27@-Zth+sF% z3s?#Y%^zn6>m0-`kD$!s-hAWiAy1_f@7z(AfQaW1lJ!|c|Q_+qg3PI$oAb; zz&ABMo!*;-ZI%*nNAzdkoO!=-X)<{&@Yk5EqKjS?{a`>ui*0-Zmj4~1=J(+jdWj(^ zg2vkJ*@?n@=cx1ztv}Jk@RI7+>TW^{N*P^~zLMg=>*$Q%_;WZV$qH|j1A8L{4wqzR zHM-Mx*u5i~7Tg4{g=7cJ@&6#kspG-HR=uApw*%0BfOj@#YE41|Q=6UNyql>s9R9i| zu@k<$HTiMw`2rS~KWuumLqdP?yHb_BlR`cJb|Jn)-v%!xB-KDws@DH?SL_I{Ik(>{ z?WdmsQ!o1HMr*^5q$8DYe&;&+tA2>F+<#kLUQuSE67S5-G*(@tGi5p(mtDzV_!jvf zutx%8{GIT)`q%7MuIq(&jfA(5heD0nArm1X`bgLdaSTxKRF|QVr&g^Xd+Fd_a|3;^ zS+8CNQFvDjrov&)pLb=@o=@(7lA?-PD>s;do3{NRp}cVOPAmX2#LIUq8Mt$4kxW9^i+)03n>3V$6S~2~qZf zEJ29Sv0pPT=3fZM3@7qTlxRP-`mNCXruihqHJwZzhoNi9=R^MmBelX@GrySml;Dcl z6V2W><&FGyEzO1+$muNzS(ttc)WPO*C z<~cw19e>Ye&l0+l%x4~=H>6hC#ffHuM?6v6vKSdc2C}w2WsPXMh=c-0w_%4CiL22_ zqBv<902R;y@Nm)hviQZm*v;A^0UOjBbiq-06km@?9(`-|H@XaE`IiZ|XGFk0<+`Pg3eBvF`=y`@nYlM#s|4fHuYuvfac-Bh=IHiYyq2XIYgTPOb*|3clO%c>1PteF=?$agx8 zItM(Ql}@^AJ&$J;7GdAjnI$L&hfq^4o_ z^e52HM7Gx1;18kuzDSwU-3idTS-35lrcp|t6d^4{BzKmjGf6T4@yLd&D%N--_~Aez zbjQcNmmyQ^#GOp~-t5+&s)A_B?(TW`Sc%^w9W(bKmx)8Ljt)xqV=$>|Zo?-4U)&Fp z^>48O>o5FNp2~CNG4KanXZt4GW)$A5$pEVKi*oj-ct1~=7pB&J4ESXCR^;&87BX~r(czmdhszNO9SG`4u&^?O~0l@nuxN>$lt z$X@l^9@%tAWNpjf)2=t0OM7qf6jgref5XR=MHXd1iTJsySGO$ml2T&L>=jXHrQ_0f zS1)^>nj>Z#C$h^606VHxZm4ejK+?iayLz_dq&RX7UUZ86tROe>f+WoEywkdA7}4Ym z{gBHjdHZB@endDquKQ`HlkDuineIP*EnY^B231H*cA+~SJ#zK@QupnpAlz!0K)O`< z&gM2PCF+$PRVQRG1$kt7dBgu!MX!hFFvaAj^IdCa=Cjp<*P+qgLkv-FlcA1KHltuE zTsAD-xsXptq#3NAl>hq8zs(o7Zbwr8s5w+P%WUfE8&~g?P{Z)uB>hKgVtJ72h?IY; zTd358FSsCn$h9$Qfj6sp+vbW9Z`^ud*WDOj0|H8wTZ8J`{{LTN-vJL-(=|>)qC}zxv1)`MTA~CYO4JYpi(r+A7QL4x z(K``c5SA#*ZX|>(R`ik2dGr4GJ$ zVwAV-DogtDda)ZEW~Ob`y|p4>*biv$h`LYd?Vh10!}^f^68h637at=(6*w<9opIuh zBVPwN5hEa;`HHsX!Uc`T7lR@tsD>?wZ|9V`d07M~9=o@yF8z?mka9KMDl1K(prMGO ze37Lw^*J~&*jA5W{#IJf$niOC%6CLGjQpPxUqNYHuiedzUD{^yVLNelR zLpzE1NJCo>PtaynD`7j_18j3pzV|^{a%afB%}_c$Xgo+GJvK{y+O7s+|MBwD4?x{v zw?u3P%@V-*gR{{iLB4pl#gk9bJrSJT(JM+n zkA=KBoEMZ%B5e`16P89o^?WT}EH8UlC==%;zX`g(p=+FHC5cG5cT_}=P^dqVdi=s( zhZ{@09w_hTFqx}=)vO9mtm(H)-k9>RxZ);r`D=B5_wn6mV+pUm>R%@4d%6YHxtGMfYyPD8IwD66KeI(AC8LOk0Y4r&L%nf=)4sW{pQu>3n$$` zP-Znwt`~}etnggmNa>}iIPEm~AWV4MX6jG1L;Q9y&*)p+lhrs;O>Dy+`HK<8>ED28 z5_0Xt`^pyPXZ!oyj0xvlpV=-F%0(+r9Z$Gxc_DmPpesHCg#B?m@_enY)uwM3wefi4 zLlF3&t^l%<-)^c@7(iqep#3R^OY!80_$H(sAHGL`c=on@$)&pRM4Z|qzV4~ALgdVB zn`+I=EautcyALC$Fv&REv5mOki@eUIVu6wqb#!d%PIOmpsEvTD2hDa(ye9!;H!h;q=>#ZiU6<(-XcmV1f3$v^R2FAd6G&4mzM{in zHPf7{mxBC7MM3f0)!~`Fy(6Ergp2}tXB4VxjyxAFMe3-R_IwsPH|S`|1V4=)3!M+b z)7F&J3hwDvZZ>YBm(g}*nJ=BZ;bH5_3W&YR3Jge zq{CB?I%IiS|2MlEnhBiVd`4D{5$DBC8_`Uc~Z#$n^V)xy@SNm?|nb_=~Xi(l}3(LcmX7K zj$#t0df#U8fPv>ajs8`yy+h55O%wox!;b2Ua1}Yi`5(;}6AqEnj`R5Go*N4BQ&LxS zfAFWX9i0wxU{aU}o(`~kDs}g(#}%(YqhC-m=by51q}hEoaWa#DNE}?Ynhv1ESTsB% z1basW)P7Ou(P%o5a{YP493ahlx4(yD@%F2qiaV=S`!7EC`4&EUlKR@`L+()wzrr)4 zxRKDL&*eY91jP0}c_H|D;8SH@_vTkjo4R;GVL{AqsE@Vt-9e=^St?H%ceW|Hs_t=v zvcbDMHyMl`bZ|JonRdc$<@(PX^XY98$N9uTQe9I9a-M&xALx8_ zZRlZ4xTT3%TUm3@!_3aXBuVy*&>?q!{D>ICb}#P0s(>4*1xpKU&7j~^ds4Uid+}o~ z$3|aJ>G$U!XDW59!=me7&L$p#yGD=w@OQ|Ta8XdLfUhmUk2C!a)17+JqR{qd*vQk* zjtWJ}vq0HpPzKdOGX*6yW5IZkFoneSw{HFWWZ=w?d2(T7U7=V$>-)QWU;kWA-z-@6AOxk3<~W zJ&|saM1Ghvrg9@RHqlKq1H0~+o&Y82+z4q8(l-JYUghn>n1CwjlLHq{`kNzc;Z;>x zzKwYPq`9mV)Mf6Kv{e!`v16}n1JrScGPVUuf}eh^pYLfVJVOA9%8#YJH$1+4nE3Ue zPFWq%xY-RoVMoTek7Cl)Z6oT;sMICz^$?N_YhiGs6SmVt>$_IDWf(-KB1uM2C3bv+ zbBUw<@dB{i{s=nMoe(x(aT^8$v%{!F8#1b24So(<2*Ng|bRTrI>M^cTW!+eI%ocS6 zVY3P2{sK@Lu@fho0%a5_s@PgbrexFO;&+ihL}XIm1hN)P3x{&ev${2_H^MEwV{LO! zK=->KJzowj>R)j~ncI}CgPB0a0_S={A+*l3;$S>q+t7TqIoraS8k%vVJ}8WOjPpK@rGS@&1!q zH+cDYmX0}FsXFiJs&XBh*;Y*8dpsfhQ-^c5ze;2GGU*5h0&a_*3Nh{DvXXJoaidpL zy&}bzCo5|EHTE^(S?SLD6Ow9*vK~GK)3%vLrJ4<{Otvp2#E;erWqwIUS$aPwu!TO& zy~1-4ZQ76JyA>;Vfy4GTUr&)~kD(&HV}vIW611hO8GbaE=9A!*Gx&G`QYV^R9#W`Z z5NCDSb+Uw+q1aNlcm|{~2}=d$yVnCSpSV~Kp-`&=!BMdZO+#30+SF|G`&hS}8MpZ* zV&vk$J4eSZ>LkBZ2C90qd<1U{_Eu_tpYVYoOQB!|-kg~P&708r)CrpSedE4c!OhOg zGQIPQ6({(3#T_-x4%Fo#Ag}Drjsbb&(UE>%@}fcYnzz3C_4p$i%lR#R0KHPe+Q8<5 zQC?j%jR?kC!QF<1Hnim(V*jmpIA01)X!CHSfyz;ozV;VJY0q_}^}2)pqqdM_3942T z(bmk97Co8YF4XT08(FRizecAIZVp+&q3PPrJqb5>j#%0gL>6z@rr5(ztPdpk)W2>M z6*2GA8hrP3Z7o&*sJ|TY)S1K zwZLqABlXpw;BM#KjvF43XVb~c>&lD*4~SbDy*Var4$>l(%1L}(`kMb}CpQRAReq1W!0wnG=@ypWDcqMa zIr1!9(f^cEob`Q(P=+*XldG+f}?&N0mNTf%I`hC zpO2?K)Op8$r+;zYgCGwxm%_T&axUUikh) zxvjtE{+HuM_br{!+3Ka85E1QOz4|R9Avu=A?Zn%HjsB)Vopef8&n}ynFVouZEq&*e z1mqoShV&g?vjHT{6BEy0Jr-lsi{7Q}`3GckKQE)+qZX5{1K+tq1g-6OfVH_^7)C-I&d!ff%TE z5kj&0Aa(A>8oHbs_83`ts)jp(u!MA2>cxZyP6JCgf>$_1E;qn$>gv@1*l_?eGBIL_ zee*y7aLxV44Ck8UxNUh^4_G`cCM*?_o`zB9B8qH;H=0@aT?jXCCuM{k zLdJ|>b zog^c}iAIUTyTlFicW=w6 zr$gFBa)U+y)w^PPdRpJwG$s*O5^@et(WqOuO2bYgo=Oqv72eT6)WLs3-awkhDd?)+ zs0FAGsC$l;Add`fSZd7M2HkI<^nJDThd;$au^}3JR((Y6bV(Cw49^f$}+%acmBZVkbO+BlK6w1alGlG=|;*xEKDwIWH!x3{6WSEyR*{X0}`yTI|tY0Rz6;DEq^N=^|1q&HkR|0BqWN5>lMj$^B_Y<`o5KXAIY}9a2_7xtG1~;tE1~9_)-fMhT zD+mK)a)Ga?Yv&ehkLO<+Ur}FPFh+RNF%0D=l#|q0Dp6?%)@Ch%OV^tWNEkEJ!@!E} zQoz;Iq;4&OO`R5xzJU2upm7cWJ4!jF3MXj%k{J zLs9A0(BvAX@nN+Ye&Q}>+%0+I4~fy(DB`YYdGG;0Q+GmRDDgMg8-L?Tv}##gN)wUh zv(2>%oEZix(-z>^4QW9M{@Dc(n3Edy8tZBpX&J(B%S;M(@^z;?TSKjtA^OOgWna;4*!yC=CVJgzZbfCP37bb9vXskA-sT z$m#(&q=Duh4X54xi0iMTw3IuNz6%1?H&i?BJdOFT6>M((@m``rbXL@O-Vx}i%*Cnp zB6czqsPg-3Y=y1Cr1T!5#;eo=5~Et@-QzURD_4mwD^$FS2~pUJdcRr1(Q?}ay#2c5 zgWsar5>$q;OOIx-mDg&T*h?hL7ym)3M4piFH=19`7tsU+xMpkfdkGo!ibYvnaxo)T z%|urfwlx1zvV#jyl`k*!%ViJVcxDs9BJn5uG@1L4Le2y}(`uk{ft!FssCs`BgtfX6 z5n|i6Z!w(-BXhgIP}~wz&;Ig9#?hYy`0JrrbuZi;Lg5aWS*tP|%bs`XkL5%7 z%3-*$r;HbmoP1kY*vD&G9e^4Chq6AM7B@RjkH|o5|_vK<^DAxBB>dJ^lOSJv66MH7SPTjK7^&e@QCo-=w&oLJ15`b> zp@|TwviKdz{Oa0Z0s-x#jA@KsS29p%8ii}ccnLY|iiWr)&MYASNXqN18RFOJZ(Qi` z{>b`}?IyLlJrJ-3+w@(pac9pKTG7%hFbqYJ+CKe>j9W`xjV$><5(doXpUysddveze zRuW%6b4lbAxH17*k6LVOawU3kPpgm)X5;3YKS{;JZe*SCAhT;gWbUB~x46o&ywRMPF8^*0(FVmhK|8CDZ|xq0TPyfo z_6%1@16@|Ws}LUSr=qN|?HzvCcg0W1zv3weO#A%HjxXM%i>K||=gAvuQeRaoup?j6 zv!qp^>~Lak8j)Sm_P9nxF|^i~|7z|$*EV=I2>fI?;guh>^-Q&2J##GKs4cfvfLdYW*w;~Nea`LWg zLZ97y>18%89Qma^A&ke~`@(a0Jn#1tW9g++RtyArut~3rhDM$9j;>NqH^0pCku^$*rORx9> z*XIiCfZjoA?FVR{B?~Bf<8m**Ympels+6dtkA~u|qNjER1XZ;SYxK>DWBIQdg*BZg zT6Gt0#AIH4@V2{RD;R%G^+3&9Po1`=vrC+Kk|yIWkCTm}t+SFkF zC-K^h)RF)7M7*fdWA|!BF@Jw6Sfb-_(yS&9tFy)vVpQ`0TVKzc?-v~N5LzbJ##Um& zA2u7MJZ?@@aSsj__%Pj$*4D?FwyJTYW%JDi)e%_VuF-IZ`y9VWOp{!toJ3t#I?Tk=6eVjCod!#7Tp~P zou|i3wh3Zhc@P}2+UCO^0t=J<20fm)G%l>=mS#(!b~W%Ei{x*>F7|bd=HdYFjja7< z()OK>XK!X+2+iZ2D-eAepSBr<()3q>40^`M2DsGv3Ia8(h#kKWfQu87P_BxhWki+G zO`UwIkFDKyN4Ga#1?(3*I=pLySP02#%=;lcDVCMRu6-_9bxeHES5wfiWHTuXEwT-E zFBKs$p$oBfc(?V~@^IWc;LCGKPezNUw?#B;$p0PDaTPkaP4-5nTX)#CDi$g-yQ&wn z?yK!OL+>BUhe&`Q_ejU3-lR(F%Rs=(=HdKMH}XTNsx#n@&AA{ubleTkJq9Y>c2bm= zEO!s@g&jSed(N+S$ZuJx8s&5KwVl>7pjyoWp!K4JL`^qbb#Oh?54BQefCprJoBO@q z^jdgqia`S^t9@_&@*S=#nrhCP#dXHCi%4evpF_?c9LWOAV#0n-dh|!^%z3u zC%#d3wnu^rcFtVWnhn&46~8l-m@1dr&I|pq+=Ruq`|~4{t0fYF=>C@A(1h`ULK$yU z(LG;>bJ*#COto-LsiK-mmlG@W3SutfV~VaDm&eZ74-A!6`%T40Z(Y4Ez0%9EKe2U^ zYBbj;P1A3_e~Q1uXHZc!3nY1~KmHOPI}D;Fm^kCjRn$f03Tzk#KhbEZJYUQD&hG(c zZtSjI$9@Jot!TEM0EU)0^LPC3RZPboA*zOboAPO@74L;J(M+ipOV%RQH4KJ^NGqMG z-#)`DS0=wlUa#>YxQ1Q@X;vfHm79hkP;3U6?H!hHRy>M;$egg2q}BMYmv*rfgCY`{ z;8BLdcW;+Jol7@-Q}e;wD4;+^QCfD~k5@CfAQo~8S;UpeO5bDSrSTWMQl?-XbvaWl z^!Ku~nR6jzyo>e;wxQZzKi&KtLSY+h2r@0RrRlqAz~`rk*dIrJemJwBBz8Lw7v#l4oC6RjUpkTT% zu1%8Oy!Z)$7kOk!RlB)nVD?hxu{B0=YYty_(Agc5JP3LKzN|0~$k#<(?tx_Av zqT5&{TtmosyK#)D6z=C^^o!X`k=B_o3X6?VXZm+*mGju&3@(N3jB6<6vCG-h zN+P_IeBKlk=WEppUbH>4sKl`grrH`_XJ5*+*_>gszRI!yE9PC{~gCWbEA0-20K zrB#fox+gyXKt(yf<0VN{anqRFSeU%#2!Yfgl+XH*F<>iQ%jB}F`FXE(tyU|sL(B&f z6G_YS^0DyZaS#YzTvZQx;Kkg=)FJiqnXG8rW9!#5TcG*Em{b68s!u$BQo$)dO&e%7!sceaqR_tv7RY zbH`m6H=oY?1GmMds&n6Ai-grRomEoBOk+x2nXx_k93LuC@!KNqCF&(umz?;A+D-?# zg{DDR$80o@XWEWBYfu9nUuPl?yVx|QufMJgtx;@YPW)x+bqHl{vnY{a-egSt9df%=Nq5kpH#he$F>LJfhe~Y7;)Gx8`{q^ep_^i2CK20c2GU~haB6ol4 zq@v9DR|SfPjB{Q_l;`a(9BR?Lm#=xlj86@SL9i6BtL207*2w||nxn4VwR@G9m zebDOm>dIScM{Depm1DSLz_uifObS$NNyP`4|yd> z(xOcu`+DSyv+?T|dHgDssd1|?ZM)!F6AOq@Tn|lp#{j9C?Y}0+7G#$1mnqQIz7?4L zaQtN8E532>^Y=Pe7r)rrisX5hy+X*Y^x|~yY|96=Os7gOsNXjKrpn_5&ZyxUn!V)V z=NYT{mZsD?mx^-6gdDLQ-fMbPsUvZ%%$D3w7q_Y32(tZ3SuRiRD>E5=C2GA5)2VU0 zj=mM)qSBI^?(wQ}#&>3SqfA_4gyX1ndUrnYdpiHms{=o~`hv`|h})O*f28MANwuth z+Dln}D*MJjXx5j`SM!$UWz+9(Q1{ik%iic`F|u$jvadDenFXk z24P{-hN&O1CpKYG26$1kMD;1eb_@2$HoawbGOp@tZM7!$kMuYkW`@oq-W^4JFc5gs z4f(?(#Ip2A^D|zLIF<_}GLx)Yr!b@9tu?czfr#Q=LDg&?m|B8PAa@nHCQa_FLwBbKuoz zk?r+Qr?(v?)sNOkXIP+6sLUoCnh(jAe$7QL)zPtR0nfrrC}(uKecG&9(@+2l#=$_B zwm*tYD5`ty_d8hLwq~*{nMKAl6MQ`zIZ?f7SOhYr2XBb1Hz*H;A?K|`Hf)$62!yRq z^6F0}5roo-Rjq-R@v@C?Z58(S3DW?vUXo95jbVrrMbb4D0#uo#W($y@>dKwPvuMSL zSbQ5juU^hws=Sb@1)CG0BBVf=lY0+CpYtz1Fe=;@*miFbi&kSQuyvJjn z4d96h@DC1>we^hiZ?i5SY4UN)n+r5VIX0EwT){pf55+!Hu&A^I>~m-olVa7z_`@P} zNzH!0jMpZx<%E6{+7If6t805z9bvV>006RT6O{-ARUvsvX67=a73e^NMXK=x;|VAX zqKa;Tovm&&aHPEbATy;|+k$$ehqH?BEQ-hqjQ*Wa4!hqy{O~DFog=ku)k3yd?u^SZ zBA~=!4yaHM=wI>O6_}Vv8*EQHKCV`AkXCZ8qo#DZbJ2`(sd}UNHm&K;`;(oYTLdW6 ztu*}XlArHR3KvnuiCN5OyuUXAcXk6>XZ`Ff5;&%_mdpxbUN8@H5!|k+$8>-DDQoPHrRg2GUe2zVO-C(Ws=4y| zZ3fquq*l@L2zT1kZ}Fr@wBLAN{<-$s`RMZ6A(s2BZQjTkS(louz;rE@u^dUiyO{*i zm~urrRUV9;_j=NvLm@o;!mTOm&&<`G;$EqxTCN+KHIvg}fcCma*%y{Bo%?pprez{$ zz}#c`vPE{JLu)C`xMJ0z41`N5HsaXl#etzuHz&lS;~998(nvzu=|i*+Ln{G0)Al0R zYYcIGL?E5K52G*C7O=6eIB@s8t_X3aMlTKxtOjBlKhZMB(W8N!lMb4j5+_zg){f)) z?AsMCg6Bi-Q&lwrF=6NSAUW?r{reyLl7l(trKP`WuEra5H4dfZ76&g!bgM;Ji@<@T z^d}_8Y0}8)2=IioL0UZ>*&{`t%>E{6AGSr1_Ek4X^1M8Jz6)1)Gq{n;FFO{lqz^4! z4*#;aa}Z6QG&xtQR`7+CXmRQ^WYiiN$5fW*94R4VnK>8Ln4+CF%@`4@3Kwp-jfAe3 zwQm68LHlbU>O9$F$T z8XqI;fwuLT7vmo3qj^~Wge<;luLWY>`C&gh-a%xa<66d>gPp;l5y;ndK=n2o1|H)- zfCDj%rW4+x^$|u4TLflZBS_GfrkELxq5&*D{@S@^jW(f%Ns7pXod8$Gc8nx67gc%X zwdWKzc!K~C#X9Sj->`mQJMK0L6AF;XEysR%{We-4RP5>{Bjh4h8wY=YC$CM#%KAsZ z?1!hC)|avwL;P+{(%EWwp1u#z022n8v5RX&)>$p*2{GKPwHT}dp$fJ#gfu#syRY{n zjX4GqTiUZ~mk=1~+vsHy zum%P&(#rHqQUVa!KuU*2E^L2Z^7q;aKha)lta4eH zFz(Zc@1s*6SGZyG$v+2=uZa_h5Ft=PR55`&shcv3@@c2o>2soen-}fz|ZXn4kq$0$qCp=c!rh zey;1<^W2TIZ*h4t=o5E8rv4HA4d3E)%HfuGan6_8_!N0wMeZ55^yj_asjeOxH`{P4 zSW^(c%Oedrzh3lx0n(V*_+qp-f|v3O`O@7`E0}vk0La^p)-Q)M&EX$A=%j#W+P7rRNYi{>12_K0O+* z;V$g+nH1SbqQ3?{g+dHw>=f@=HM9v~pk@2?z}BSAGWYR-aBX?*AsomS*|w}MaBv;s z{|9s@2uvhAqt`9LA#?_a?* zZn)s$7)av;vQA!Mx!~i4^QU^cAk1HCj5A2)P{!^(eR2|!+76Pksn(eDosWp@pFg}O{>7y#CRs~KT z8Te`Y%|&V-;-8bd6H_slh7Z*3u;B^TF*L2;MUJHz@JK@ZA8Gr89HeQhU}7y<`cm(| zycdHEMkMtR(vWR++ssdWmks{r!pzLup}g}B}$?uOHr%ZG%&`0i;{!9KHq$e`CO;>7YjXh zI_l_i_Iz17EG&qL=|TN&=-`CyXB)I>o!*4u`5y?DK5UCqNgN5c-@aP|U;Px>x8Swh z-@UT*G2d-%6Z>mp?-TA*du5kr{LiQ9%kZWU_K5p2K>ibw#|2)wp``Zk(C|Oa*qZUZ zG|l|yJfmKf)~@bSut)B+jnhg(oWJ+NTV2+C!i~PFWw55S#S<&ws$7%pJ8n76*VvH} zG-#bf#DlDiR6U>ci>^F(2f3JzR=}37y0w09N{)6aq9bG0zZy``P5V1XwAA?QzsRHB zV3{-sqnG<|%W=6qZlU3GnSfH=aCHovJnc1=|9L@$E?E#7Ry+XFJ=h{Jl4ozIYdpNX z0x8Jve0l`BJSF3Qz5|lwfVe`eT`>%YrT%JDn{aXbE#hK&2f755!oE-PkvG;uX-04h) zGMVfM?irb24fOa+=|8J|{psIn+)v5g=FT#c;Vk`9fG_#W#lL7ueLsJP=VUt9&)@Ig z9dafUf9AW8jL+boI{#vvlOmtC4w*a)XYjvC{LTKyk%L4c$E3+xH7M1;@Q~&yxSYv& z>YUWOFIF#Jym(8V+N0p304`B3^o&tbP`P}&utUzk;phKXyPjz}D};uEg1(uIS;^Hs zYwt5S0im5R9MGA7OQ(q$&|Ng8BWP7O~ zhix(;<>&9{^{+f+c?xoGYnxI~7?IoET#?*gt`rmwQEu(R}k*%_nX-*)zI+5aCKd;BjObN&w-1Co7X+W$+@f1ma_3dS?uSyjn!+sW_g zUmbm(Y$O5{=P0PinDsu}S=za0D-@JTmDFU;Ii`dQWJGz^&i`pMm&kp5CT{T$`?x@k zpA~r~e}>OG{tTamGvR;pssF)0%kyvk#eeWM|HHP(#98+m~S&1%;U$1;rCH3JQC&J}0uRxv`R6h>~rU!XeP{~nx#s{Osr3>!dpMS7;>tfCYT?E|05%1hjl JmLNNc{9gkbnqU9` literal 0 HcmV?d00001 diff --git a/dom/media/test/gizmo-short.mp4^headers^ b/dom/media/test/gizmo-short.mp4^headers^ new file mode 100644 index 000000000000..4030ea1d3ddb --- /dev/null +++ b/dom/media/test/gizmo-short.mp4^headers^ @@ -0,0 +1 @@ +Cache-Control: no-store diff --git a/dom/media/test/manifest.js b/dom/media/test/manifest.js index cb57a6d3be79..4bd0241d53d4 100644 --- a/dom/media/test/manifest.js +++ b/dom/media/test/manifest.js @@ -30,12 +30,12 @@ var gSmallTests = [ { name:"small-shot.mp3", type:"audio/mpeg", duration:0.27 }, { name:"small-shot-mp3.mp4", type:"audio/mp4; codecs=mp3", duration:0.34 }, { name:"small-shot.flac", type:"audio/flac", duration:0.197 }, - { name:"r11025_s16_c1.wav", type:"audio/x-wav", duration:1.0 }, + { name:"r11025_s16_c1-short.wav", type:"audio/x-wav", duration:0.37 }, { name:"320x240.ogv", type:"video/ogg", width:320, height:240, duration:0.266 }, - { name:"seek.webm", type:"video/webm", width:320, height:240, duration:3.966 }, - { name:"vp9.webm", type:"video/webm", width:320, height:240, duration:4 }, - { name:"detodos.opus", type:"audio/ogg; codecs=opus", duration:2.9135 }, - { name:"gizmo.mp4", type:"video/mp4", width:560, height:320, duration:5.56 }, + { name:"seek-short.webm", type:"video/webm", width:320, height:240, duration:0.23 }, + { name:"vp9-short.webm", type:"video/webm", width:320, height:240, duration:0.20 }, + { name:"detodos-short.opus", type:"audio/ogg; codecs=opus", duration:0.22 }, + { name:"gizmo-short.mp4", type:"video/mp4", width:560, height:320, duration:0.27 }, { name:"flac-s24.flac", type:"audio/flac", duration:4.04 }, { name:"bogus.duh", type:"bogus/duh" } ]; @@ -55,7 +55,7 @@ if (SpecialPowers.Services.appinfo.name != "B2G") { // Used by test_bug654550.html, for videoStats preference var gVideoTests = [ { name:"320x240.ogv", type:"video/ogg", width:320, height:240, duration:0.266 }, - { name:"seek.webm", type:"video/webm", width:320, height:240, duration:3.966 }, + { name:"seek-short.webm", type:"video/webm", width:320, height:240, duration:0.23 }, { name:"bogus.duh", type:"bogus/duh" } ]; @@ -69,21 +69,21 @@ var gLongerTests = [ // during resource download. var gProgressTests = [ { name:"r11025_u8_c1.wav", type:"audio/x-wav", duration:1.0, size:11069 }, - { name:"big.wav", type:"audio/x-wav", duration:9.278982, size:102444 }, - { name:"seek.ogv", type:"video/ogg", duration:3.966, size:285310 }, + { name:"big-short.wav", type:"audio/x-wav", duration:1.11, size:12366 }, + { name:"seek-short.ogv", type:"video/ogg", duration:1.03, size:79921 }, { name:"320x240.ogv", type:"video/ogg", width:320, height:240, duration:0.266, size:28942 }, - { name:"seek.webm", type:"video/webm", duration:3.966, size:215529 }, - { name:"gizmo.mp4", type:"video/mp4", duration:5.56, size:383631 }, + { name:"seek-short.webm", type:"video/webm", duration:0.23, size:19267 }, + { name:"gizmo-short.mp4", type:"video/mp4", duration:0.27, size:29905 }, { name:"bogus.duh", type:"bogus/duh" } ]; // Used by test_played.html var gPlayedTests = [ - { name:"big.wav", type:"audio/x-wav", duration:9.0 }, - { name:"seek.ogv", type:"video/ogg", duration:3.966 }, - { name:"seek.webm", type:"video/webm", duration:3.966 }, - { name:"gizmo.mp4", type:"video/mp4", duration:5.56 }, - { name:"owl.mp3", type:"audio/mpeg", duration:3.343 }, + { name:"big-short.wav", type:"audio/x-wav", duration:1.11 }, + { name:"seek-short.ogv", type:"video/ogg", duration:1.03 }, + { name:"seek-short.webm", type:"video/webm", duration:0.23 }, + { name:"gizmo-short.mp4", type:"video/mp4", duration:0.27 }, + { name:"owl-short.mp3", type:"audio/mpeg", duration:0.52 }, // Disable vbr.mp3 to see if it reduces the error of AUDCLNT_E_CPUUSAGE_EXCEEDED. // See bug 1110922 comment 26. //{ name:"vbr.mp3", type:"audio/mpeg", duration:10.0 }, @@ -116,27 +116,29 @@ var gPausedAfterEndedTests = gSmallTests.concat([ // Test the mozHasAudio property, and APIs that detect different kinds of // tracks var gTrackTests = [ - { name:"big.wav", type:"audio/x-wav", duration:9.278982, size:102444, hasAudio:true, hasVideo:false }, + { name:"big-short.wav", type:"audio/x-wav", duration:1.11, size:12366, hasAudio:true, hasVideo:false }, { name:"320x240.ogv", type:"video/ogg", width:320, height:240, duration:0.266, size:28942, hasAudio:false, hasVideo:true }, { name:"short-video.ogv", type:"video/ogg", duration:1.081, hasAudio:true, hasVideo:true }, - { name:"seek.webm", type:"video/webm", duration:3.966, size:215529, hasAudio:false, hasVideo:true }, + { name:"seek-short.webm", type:"video/webm", duration:0.23, size:19267, hasAudio:false, hasVideo:true }, { name:"flac-s24.flac", type:"audio/flac", duration:4.04, hasAudio:true, hasVideo:false }, { name:"bogus.duh", type:"bogus/duh" } ]; var gClosingConnectionsTest = [ - { name:"seek.ogv", type:"video/ogg", duration:3.966 } + { name:"seek-short.ogv", type:"video/ogg", duration:1.03 }, ]; // Used by any media recorder test. Need one test file per decoder backend // currently supported by the media encoder. var gMediaRecorderTests = [ - { name:"detodos.opus", type:"audio/ogg; codecs=opus", duration:2.9135 } + // Duration should be greater than 500ms because we will record 2 + // time slices (250ms per slice) + { name:"detodos-recorder-test.opus", type:"audio/ogg; codecs=opus", duration:0.62 } ]; // Used by video media recorder tests var gMediaRecorderVideoTests = [ - { name:"seek.webm", type:"video/webm", width:320, height:240, duration:3.966 }, + { name:"seek-short.webm", type:"video/webm", width:320, height:240, duration:0.23 }, ]; // These are files that we want to make sure we can play through. We can @@ -145,8 +147,7 @@ var gMediaRecorderVideoTests = [ // Used by test_playback, which expects no error event and one ended event. var gPlayTests = [ // Test playback of a WebM file with vp9 video - //{ name:"vp9.webm", type:"video/webm", duration:4 }, - { name:"vp9cake.webm", type:"video/webm", duration:7.966 }, + { name:"vp9cake-short.webm", type:"video/webm", duration:1.00 }, // 8-bit samples { name:"r11025_u8_c1.wav", type:"audio/x-wav", duration:1.0 }, @@ -217,7 +218,7 @@ var gPlayTests = [ type:"video/ogg", duration:0.266 }, // Test playback of a webm file - { name:"seek.webm", type:"video/webm", duration:3.966 }, + { name:"seek-short.webm", type:"video/webm", duration:0.23 }, // Test playback of a WebM file with non-zero start time. { name:"split.webm", type:"video/webm", duration:1.967 }, @@ -234,9 +235,9 @@ var gPlayTests = [ { name:"spacestorm-1000Hz-100ms.ogg", type:"audio/ogg", duration:0.099 }, // Opus data in an ogg container - { name:"detodos.opus", type:"audio/ogg; codecs=opus", duration:2.9135 }, + { name:"detodos-short.opus", type:"audio/ogg; codecs=opus", duration:0.22 }, // Opus data in a webm container - { name:"detodos.webm", type:"audio/webm; codecs=opus", duration:2.9135 }, + { name:"detodos-short.webm", type:"audio/webm; codecs=opus", duration:0.26 }, { name:"bug1066943.webm", type:"audio/webm; codecs=opus", duration:1.383 }, // Multichannel Opus in an ogg container @@ -249,7 +250,7 @@ var gPlayTests = [ { name:"test-7-6.1.opus", type:"audio/ogg; codecs=opus", duration:11.690 }, { name:"test-8-7.1.opus", type:"audio/ogg; codecs=opus", duration:13.478 }, - { name:"gizmo.mp4", type:"video/mp4", duration:5.56 }, + { name:"gizmo-short.mp4", type:"video/mp4", duration:0.27 }, // Test playback of a MP4 file with a non-zero start time (and audio starting // a second later). { name:"bipbop-lateaudio.mp4", type:"video/mp4" }, @@ -287,8 +288,8 @@ var gPlayTests = [ var gSeekToNextFrameTests = [ // Test playback of a WebM file with vp9 video - { name:"vp9.webm", type:"video/webm", duration:4 }, - { name:"vp9cake.webm", type:"video/webm", duration:7.966 }, + { name:"vp9-short.webm", type:"video/webm", duration:0.20 }, + { name:"vp9cake-short.webm", type:"video/webm", duration:1.00 }, // oggz-chop stream { name:"bug482461.ogv", type:"video/ogg", duration:4.34 }, // Theora only oggz-chop stream @@ -319,13 +320,13 @@ var gSeekToNextFrameTests = [ { name:"redirect.sjs?domain=mochi.test:8888&file=320x240.ogv", type:"video/ogg", duration:0.266 }, // Test playback of a webm file - { name:"seek.webm", type:"video/webm", duration:3.966 }, + { name:"seek-short.webm", type:"video/webm", duration:0.23 }, // Test playback of a WebM file with non-zero start time. { name:"split.webm", type:"video/webm", duration:1.967 }, // Test playback of a raw file { name:"seek.yuv", type:"video/x-raw-yuv", duration:1.833 }, - { name:"gizmo.mp4", type:"video/mp4", duration:5.56 }, + { name:"gizmo-short.mp4", type:"video/mp4", duration:0.27 }, // Test playback of a MP4 file with a non-zero start time (and audio starting // a second later). @@ -377,16 +378,16 @@ var gInvalidPlayTests = [ // - Skeleton v4, wrong message field sequence for vorbis // multiple-bos-more-header-fields.ogg // - Skeleton v3, w/ Content-Type,Role,Name,Language,Title for both theora/vorbis -// seek.ogv +// seek-short.ogv // - No skeleton, but theora -// audio-overhang.ogg +// audio-gaps-short.ogg // - No skeleton, but vorbis var gMultitrackInfoOggPlayList = [ - { name:"sample-fisbone-skeleton4.ogv", type:"video/ogg", duration:5.049 }, - { name:"sample-fisbone-wrong-header.ogv", type:"video/ogg", duration:5.049 }, + { name:"sample-fisbone-skeleton4.ogv", type:"video/ogg", duration:1.00 }, + { name:"sample-fisbone-wrong-header.ogv", type:"video/ogg", duration:1.00 }, { name:"multiple-bos-more-header-fileds.ogg", type:"video/ogg", duration:0.431 }, - { name:"seek.ogv", type:"video/ogg", duration:3.996 }, - { name:"audio-gaps.ogg", type:"audio/ogg", duration:2.208 } + { name:"seek-short.ogv", type:"video/ogg", duration:1.03 }, + { name:"audio-gaps-short.ogg", type:"audio/ogg", duration:0.50 } ]; // Pre-parsed results of gMultitrackInfoOggPlayList. var gOggTrackInfoResults = { @@ -420,13 +421,13 @@ var gOggTrackInfoResults = { "video_language":"", "video_label":"" }, - "seek.ogv" : { + "seek-short.ogv" : { "video_id":"2", "video_kind":"main", "video_language":"", "video_label":"" }, - "audio-gaps.ogg" : { + "audio-gaps-short.ogg" : { "audio_id":"1", "audio_kind":"main", "audio_language":"", diff --git a/dom/media/test/mochitest.ini b/dom/media/test/mochitest.ini index 3b915e06df9b..8eea66d99db1 100644 --- a/dom/media/test/mochitest.ini +++ b/dom/media/test/mochitest.ini @@ -38,6 +38,8 @@ support-files = allowed.sjs audio-gaps.ogg audio-gaps.ogg^headers^ + audio-gaps-short.ogg + audio-gaps-short.ogg^headers^ audio-overhang.ogg audio-overhang.ogg^headers^ audio.wav @@ -51,6 +53,8 @@ support-files = beta-phrasebook.ogg^headers^ big.wav big.wav^headers^ + big-short.wav + big-short.wav^headers^ bipbop-cenc-audio1.m4s bipbop-cenc-audio1.m4s^headers^ bipbop-cenc-audio2.m4s @@ -407,6 +411,12 @@ support-files = detodos.opus^headers^ detodos.webm detodos.webm^headers^ + detodos-short.webm + detodos-short.webm^headers^ + detodos-recorder-test.opus + detodos-recorder-test.opus^headers^ + detodos-short.opus + detodos-short.opus^headers^ dirac.ogg dirac.ogg^headers^ dynamic_redirect.sjs @@ -423,6 +433,8 @@ support-files = gizmo.mp4^headers^ gizmo-noaudio.mp4 gizmo-noaudio.mp4^headers^ + gizmo-short.mp4 + gizmo-short.mp4^headers^ gizmo.webm gizmo.webm^headers^ gizmo-noaudio.webm @@ -477,6 +489,8 @@ support-files = owl-funny-id3.mp3^headers^ owl.mp3 owl.mp3^headers^ + owl-short.mp3 + owl-short.mp3^headers^ parser.vtt r11025_msadpcm_c1.wav r11025_msadpcm_c1.wav^headers^ @@ -484,6 +498,8 @@ support-files = r11025_s16_c1.wav^headers^ r11025_s16_c1_trailing.wav r11025_s16_c1_trailing.wav^headers^ + r11025_s16_c1-short.wav + r11025_s16_c1-short.wav^headers^ r11025_u8_c1.wav r11025_u8_c1.wav^headers^ r11025_u8_c1_trunc.wav @@ -508,8 +524,12 @@ support-files = sample-fisbone-wrong-header.ogv^headers^ seek.ogv seek.ogv^headers^ + seek-short.ogv + seek-short.ogv^headers^ seek.webm seek.webm^headers^ + seek-short.webm + seek-short.webm^headers^ seek.yuv seek_support.js seekLies.sjs @@ -572,8 +592,12 @@ support-files = video-overhang.ogg^headers^ vp9.webm vp9.webm^headers^ + vp9-short.webm + vp9-short.webm^headers^ vp9cake.webm vp9cake.webm^headers^ + vp9cake-short.webm + vp9cake-short.webm^headers^ vttPositionAlign.vtt wave_metadata.wav wave_metadata.wav^headers^ diff --git a/dom/media/test/owl-short.mp3 b/dom/media/test/owl-short.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..9b31531f22f25a042fe21cae113afefb1e0412d9 GIT binary patch literal 11016 zcmeI1WmHsc-}d(;HFT##H*7it9a3UYQc@gJK%^uUbZF3_J4IST2|+;6AteSuN>V|( zR6xM?h3mPl>%QN$o-gnB_xNz0d+&42tR2Vto&V6+mV*PQ;x{)l(>a-G0RV<|2y|6Y zl9HE^k^#ZLR{v-C^P}j$&i?m9eJ@wmRw|5O&IayZqE zQ-z!==2WStDm+!yshUsKeX5aD&7ErfR0pT}bE?xjIlbr8`G1$#9EqSZ{J*dL|EvG+ zZ{WlU&H(CQo2{D>#oh$~)Mx;JFwjR*8f6a?0YDxP0B|PuqRtN5Zv0y~ps4H)AgKYs zU-`rVR`s_Iw}~g}E#~9nn(t7O41VCa>^w&WJ4-XFjYyb|c-Q5c( zE2vZdz-Y)xr!yW%gv2J1)F4Cvxb{WuE^wZVEVh{k^5@UefrYX9Z`(Dl>;Wbmy6++z zEkv4%;nFqzcY$RZ8kiov6h0jWk%696J+=T7J^>R&i?{*poY2w^{x?Ar)TxQLN;j`1 zIGMN=e1D~B={A!k`nH!p&;CEpVD`g!)eg@+nPu+rrR035VndVSe&O0zFK9v{G~0tz5DK%EgHKVwo>J z_tJ7)c=_qZ`z)?utMpvhrz%@l2Bt3{_1qQ5qYqBIgUsR&S{K;pSmIyUiHYxup{#wpZG?I0V;Sk020{)r^ma( zNQYVm!<&?(M!)AlmhI)7&?sX%=gGnJ#C8hNlq$rz@7<|eAwOil-LMWdEg2o++jY6} zE=E-HZAE$dMXRPqU+2j1`K^JCDXT}7PfS;}5_k37U7fuI`V=G_E?x3_IahrvqR-m$ zN4ECnu_Z^=wPUHWM_N)NIp(jZhn+I6%Z0TPcDbs?_e|Sgsp!v(`jox*HuPM&%h9y| zDn;yPqkY+}m(@?3e%!g$6mmsUy*j{MX06uD@|jBPUl{sp81^_apYQ(9`D$)q>tT%r z02ulVOLP!4F`tP)(F7QTtFwlk7Qqucn`PYZEs_(=@2N))Xn>y_0royT_wug9leC_6L_1rCZmr0VaPqV$l z()9BAx@|c0oNtZOo0Ti$OfTf_k1Lf06?{O5wmAy#iQ3)%@VvJ=C*m50EFZTC@ZqBH zJ2-n-AkHsR+d(3H%kia<>$Q$kDEQGFiMd^P5VCmk*{RWs0EA2ZA)EA)WdGk#U=(qn z3GcyqL|Eb0AsY@r6gs1zmdnVw6`Ff4=Ss#L>O*^H?y1F=*#rN)cEhiif}f zNhcEN2};`9uRxZOEwcQ6j510L_O+*0m2AFE(O1#9aZTd4~$q%L^AHG-l7BA#}sDB|2UUDzd zY&tUce90e6{nmMzZ{f;hzW5^`2R{ml$D<(+!)u@#5zXghsug25qbZRl;iJ^8(OpR2 z@E1tP>&$DUh;TMQ$Wz3EK3mKQ8LrKS!2yY9w@`3xE^=O;GZuPXAD+M_DvT6ail}X_ z3dR;F{RUrOZL#-aJcU9E>aa||KX3Zh=fAfH_8fgS+D-9)oKP=;uTCV!dCABU^Ye=t z{PX$vpHg5B1X>c@`MA>r7oJ?ZnVr#fXcT4n$jM~uh(9BJ+h5pVr~1`91DnV|-@_F5 zs+ZDPKbEhE*aW*54+Z0H6s_Jp`+(N*cdhA1*)j!r8n`GJrtui$1rk6GVlXI&5k84# zY`}=lyD~Yf{$K-s1eC>t;65+{$^qxqsml!|pyAAO$?^sUe;$ZD^wc%T4&?c4rr=d7<>KfVezQ#ke>|Mu+3>WisJFRriC+eb@}X^A?M z*ODvr+*reht7>iQz}p4KKlBAq!gO0$b{}~Z8JdYe>BEA8FDj8}K~Vw)o=9R2xQ~Sz z3q%7q!FEh3$OMSVjG=I#W9)`%HXBjYCN}N_B4|qcw+T0*5yg$_#!SM*(YZM;tmTc# zfILQvI|Yy4CR@3_@obsq<{IbBO3+SYeht}h4AI!0JRi?UKUQ;=?CGW|SMib4%~|^& z8G}ypjZ8sY9k<-i?;SdM<#@lG&3I5yy7T4i%Ech9gSsEL9}Gtv>eo3Ye`uUoSW{(O z_-S_vh3>>7No`%&cgGKZTY)WuokM!_e%#+sNc?@C8LMHWV_^ZnKcGhuG@hL~Fp$^| z$?hbB;)tA(9U?z8y$c478yK|A?xKZ{5`O`xE^{&o;zQswDRiCqS^jyyjUrTv|B-pd zbr)Sarm9Vs)=3VI1_@Yqzk23b>E}Yp&puZBr}Z@6H|sR=N|dA3``{7h5$Bm@SUq@S zabH?kr7uF4H7lt|_LTs=fR%E7Jb6^3qv)o<7hjj@DqZa;9QD0L z+K);^-j*dij<6aMaX7s4G@#?TWhBQ<*K0B#n@!qCvkvnwR{{=f7oL^;p&as_C=-_y zF^1?nBA-rQEvMFFT!Z1Ex-d5w67V4xA|pri(V}@=Z%iKufj&G)azLsNIjyZp$6|Eo z+V!M6a(d@b zvGhJY_bikZ9ms>sXO}inRo~vQ^l0`7x?NVw9xfG4YbX_d6=(QXb%!O9jjlq-H7$Ae zCGtx3+QBt0zgNgdp1 zH}9L{{@+gEN-^Q`-n>uz+X-Mc)P$XuTA4MO65xrmMNG#%}j)YQC0~A7(pNqoF z!O}|1Euv&^@t!{SYR#YKK(B=&ggNd;_4(^c4jGB<10|_kKKu{G$JZOi5R}GJRu(B^ zue!pNogW}(a;Z74Hi-zEHnnMTow;yDvT|9x`MF=$*4c0N)ojhb45{mftvUr=Zd7k6 z>&Nc~o5=AHv@r~yn?k~ByT-QC+f1}rupHzjp z&W2r?GQ53R%@#ev$h6o+AmdV|<%i)ZVF&?oEkrgIi~=P(Zt(3_w<>|I1Timo0Ns!^ zgM~77Ll$9XfDeog2e^{fD_qUtv}_ES_yMLOXB$b)d(lI|BnVae6$f5pmIwhM`6z<+ z-r}f-4j>e9>~zT{pil6zZTaHWoS-5y$l7(9d3uH<-R0!fl{t2Jauq%UD4^`))4g|X zV~brjKxf)nZiHg^QFO9^Hd8-`n6`stYSg2rkDm##67-hI1<4(a&3N*yatqvgRRmuI zsl1Z1iM31|PW*P^s@}(Nn>GCnho3|7VVlA+zQ23Mh^`W;`j`D#}vwe?g<)dL_FC{4^k}Z9JM> z6m$lW$kDvyxpKDp(Eyo5OZ9y#O@ofY0N)Ayaj@0|ySK5VBV*Bhl;}37$Ex^4vcz-u zO4Xs9)znqTEIX2?;T4_AOUvgK+x=e9){6Xc<*2Pu@HpNYa}RxDv%mAwzAl|OtwxfV88_$788gWz2 z(1n3#Qc46(9_nlGrwPf)55Co zJj+M@vup!ywSgH@0fo&sbo=+zD~HF1TdG!epZ_jX8wS=v0mu*-Ow0zAA#l*T(*ndr zIG#e`1L3&FTRZZb(?3pNS+WrEb`bv;3cW~G*|j!)8Jn0HP(Az#XbdR^eZqY~W}=Tt zH?#*4en5IPn9kkHxCUSJt@DXCMkPZ~F*L6I8Y)Neg{*YOW$==H~zKm4G8XOsmc*)089 zntyRAPG436gAc5`6QB_;NuTn*-Zdkiw;)@NGG)Z`qO7my#8S!DSdD@Eo#B9IYXY*n z=#muEvpb6AMt7bw`hO}N{?;SW!T0LPop*sKl70d0)UD$OR+H}&cWgg>(&SB697Ys? z`5J|w0;B^J2IN2;;#E+k3oAp{3k7v@HWdPO&Vu@VT3`$`1!Tueh(pwfY7l2lz`AV9 zDI>=peLV(m9qp$_p@Xt&Dn(GHmcuJW@}!+%MGVZ8`A7qD%E#7}uS+i~eK6x7OnMUP ztBG0fw}M3nE_{bWDB zd;xw~K-6*)C|0O&blJz}qE&;iM4N*5EWgm|HKA!ma&#GrZqc&I>H6g6Oz+QM*=62R zhif9X3ogD~IU2d-JubI>I5g%qTs}MRa~93--uov}y_ z5lNLsXS|H>_s)@s>U7_c(T%0IFnRP_dBxv7$39iaUfFnsr=i-W`B|{a?R3XE7BlzT zGNA*tHIthPn@<{N+;?*ZSEY}CVEcwEDx?{YbFp*c=k>0iwL~5H>R|atFB0hR(j?ks zIxNDN97|otkD_=3!Fo+Q5gO|e1ZtoGOaGbn3`gxFbG8j_O6==4pAQJ% zh^gy>zY}yncI2?j-{gp@7aE|Q;wsQJqI#{zCz32!%S9G9poi{1LO7FINPGy@$^0eZ zVKAwzd2XFcQ!?{X5(EEPS%dD^2GL`sONEW2!qzpv&V1|OpWpVsO*VXOx?pCre9CHO z&VOWheO>t2VW<3ST2TUCo9LlBr|Szo*F1&7SK8wSZyl=d|3ZOBCxwM}HDUViNFf3= z!8?JP8rmSTlLvI|TnDovszD7wPr1jjB4BK!D_EkT2C8H7Kry@{$WM#{Iq)E32-tOA z`B=Gzg6_FcxNd5nt!~1m{k(=j3QzuOp>)gQBd%m!x-KA9AzAt@h>Kd%pa+cy{4>Ih zuDFPXEE5WT+_@T)1XD`n|2p_V+Af_6f}5wKBS7x8Dw(QD$_i#(@N4K?+e|LW_*|GH zXo?Y?S-WUiF1wFH@w|!oC7gY3^6}V8`<<2-%`CaDmddYm7#>7O9SD!9@BWdwEHO-@ zKDaz$ITL0`vvTWK+f1O)x!kLw;N3g#YP%;llcI|aFlcqM%bU!7P@I4(+!%?31N1@& zoC*?A$%v#bVii*LaL}E=OUJMPB}m#}4b0*b0_`FzitIBlmI}i_n))JU>blZB5`*M` zkWoQ0peRpgE_+I8Zc3~i85}<*lfu^ts`?5=8L3cGtDx#n<0QV@Sp0 zx!ZFgUes$Uaphd6P&lSJK63wWD4Y?^VUXVa7Yf_U%{R+~)fN@*0bVe}eEntQS1LxR zJgpOSgNkm^mOyy|7cTTil51*)k!g`T0mUnTVgqssWO%;e5ug&0irb_@Dy;MxE9rVV zX;F(pXm#u8mW&hTLDerTNC^%8GkU2xZAOB97p`rp&ImvRU22ZTqh|x%4jTKpn`Ti< zmc~CrvdUaWKkUb5Ee{74--!&37A??}9SWbMVaN&7oZgdauNQZynf1P)Elh3@CU9pV z#H!pyPQ~*!(=Q`++r$IY`rhc)C-&~y8(%`;thH|$wAXNuBI&+mWZZmn+(or)&=IwnXFm7T$t zY7Cy08dxiHHn1NWq=Rc zq&MyRt$)%7ZiFw(rPY6(AP?0hW&y!OH$a3)0~iyHq3BKpa(Ute#=p;+T$`wecnb2u zPD)ci$g%*AlG_T>)dO(wI!0?nIAT-I=>TZfZt+ z-2IRtP{_5qg;!`BrpBjhmop(j`|fE=2_GL_F)q_V#foVtnlXZIpP|4i($+JyyK67IUHz7w<4lH0ppeZrh3PbV#WV83 zI>o?-UE+RB_ddl9g=DM^s%*6_!azME~2FXmh-*-RL|z}+R4e>YPohi8gsoAu_9 z`iu9N*L+i-Y8Mx}S(=0L!q%{s=7n>$zodUQH7o6&ZV$(Vqp#-uoZtVgF7d@T(p}oz z{U=ap(;jrOfOu%Res#GC$3WBIbTmG7)JQ}&D;^_(h3#D>h)1CbQ*;#s*k~o`OtLPC z!iSRprDG;R77<;G)G>52ew zk{VW=LJqF6a&P)isB?HQ%90r+P1jdFr=(q)uZ$5c zATxKX3%lt?h;om3su=Kvl~ACiYyDiHnZzYltK}&2HtV%x?1)0u1vp}AG%u&7F=Mu2 zF6HR5yWx%Nt%nKk^PN;l(?1n&{;6;`T5$eqkhY#~O4N9?q4+I2f+9S^A8?4^fTV;E z!do^_F%XQct~)oEE@yvE3}Z593}Z04E_pVME`<+yAH@c$9Ka!B0;cadq-T3juq!~O zNcDL7G_(Z;hG>xA2@NrfiYxn}`-P#XMILGoDp=|iFPHaxHs(0IDrHJ_!EoZa#lAFF z>*9FZL35({{N&-e?;>aGa4H}r@?7N?A?eH>zoA%{)RvetKcrd79(FQ{+|Uf>uVGAb zyVJg)WmJCFrgCsx3(-{Pjd=|J=C$GRUhN`e`7|p%p*GK|HO>#>`zFhEUig= zkQZ7U`De$;;IzxY2Gkf$)(7CBeH1OcF&I z^B#K1+^|MgyxI!(A*7zY;;@*kFCO1dCcH(l#F(UJ-ET~~-_5&9$y{+Swrg`{i&Bxq zha2UTHesS5i`LHr``4I#_y*!5g(Q6C$n5{P+sx~yp`AZY+#+e z+s5Th%_n-tGeP(I6}H?RSo=3C(01L`$k8q&j7YSFWD^GgJh2)+(c_GcnqW2YoEalW z6X#i5I(bl|#ILY+;xbf^h=Rb0`asd<&LjVl@OkG zCN_~QbRVdkyf~Cz;9xuxY#dE(=%W#Y>(R$&sVd7OqP#}t6flPU)3Wvnkk%nVOka7l z+w{(>KF;3hmaLoisYQt z8b%}6HW1*Y&{om>mpJ)dS?dtA7iR8k>VY|}!J2f?rw2)2vkBHr1Gq3&U z0K5b}n+1;|=E2E{YtT4iBczC^0nH}fJ*h$JFxYj=n(PoODONhEq3y(ExID2O@@2&! zQVIKXx*w^bS>$NZl7ui`!~^7VTkS67_*|--S<6SWuaf&%)%uvj8`>^*_kZtko_r}e zJdVBaU`sAyZ}SSj??g)mBhmaFJd&QcXSK`FMdcYQ9v~C!XIxiR`Aue!e%qsvvd9ia zrGMYvMkp;(DN63GX)j~k+sk%#f_=eb((WEXv`;vt#_X;te2Tdqwq;wMz>Z=?i@~Kb ztpHau8{=q6RPY419@_U?l88eKG#AGMe8qwI&p4S#46YPb<8Uj!*#*wKby9JjbvR1k z!x5tWC{A7hGsKQ~9%vzM0Hxa^%7o#wF#o7maq_U(!dw&np$Cg5#`JzmY1HH_lr%QN zYFtLHtPq$EK3ua&kTdh47??*2OLZ&F*I_#8~B;A&GzT`;a#gOOzY#o{-8UOuCGIx9S>?IKUGhLg`PrTgK%_c ztef}4@t^Jk`eDZ@6#lV-3iaMso}YP#;;b*_17a$aGMg9V*k84QqzF0CsxujsC31s4 z7Mu1t7lbR+xO1L>>|GoD$7* z8AJDmOt#pT0&V=kP^34{UPQGuyy(6$ody%fEIFog^srX!Ax0kSIJnC`SmZ2HGh&Z~ zNO;~0(p&8>39c0u9e+fp1#x&2%4RqH`3q-~aG&7AdO=aW(G~wUC{4wS&#)Xe9}3Qp zT_2rp-Y;3m+R1;qP3Apd$nqoo%82|I)uKc07i{Vl#qnuuR-s(5L#5j#)>8{6aW{&S#+)+(m6QAk6)xPF+m_sD{d!CMT7k& z#PU9GmWnr3(A~==SHqp{%1R?+%0x%|sikp`&3ve(B_qwq63@u{rhQomh@CR%%=0&j zzGk>QG$K)vldE>|hRnCw?sdEA8ovUD9$hfov^_!W*f>r8x9z=Jv+plQ2Db%`= zn~ZzBR(kU3-fc6?U3D+pM|pdMOMW&kzcT=qWz75+hL%$(Y$hK6IVmapXM143!h70$ z$o@N#?CgSLJNcn#Vmp8%`T^!dPS|264MiQP#Ic=JPFYG^p(^Txq0q!WIBFf2KvxqS z*B_zH>v|6LtP72$3uc4cJD?-Jq7VGpnJHlm_-;Mtj%1GTs&hTI*99;Jhi{x~4u_Id zhdSQeU0@fx-{xx?Xe=-++v~&v_1!LI_f^rOa5&?~U4F=u$1BGMlE>nqme8`v&X#d*4vY`4xCNu7rfn^a49neqH zg=35i#z_I?Aj~9EkunGGM(+@FQF=3fPbuVKvGisnls`Tqf;lH58v((Cz#DueGzG5< zVPBg!m-6AtJ=BGZ?5DbH_yF$%=i3RY2N6H2X9Y4y z_j-ECFStg>GE=^effg_RcI7G~N11VpDu}Ua%YK-6UA>%@l;|Y-4lyDgmTAOyJ*R>D z=w`E*FVn8L{-^oy{@u?iT#Q$S|4JkYUpXyw@_ziAKA>+rV)(D>QutuKcVgDZA1XEh z(swHU?5wK)ycPe2z^>>R(+CnZ?tn1-Rgj4o1F8a{ptvR#IMfp?XHc#uFQ*d&GDInW zd66$c7h)Va857a|WcS5G1ms(zqY!?qShmuT%^FlfoGGgiTAo~p37NV~gb+z|{FKb| zl7oT#5&P2OGJ4p#>e2c|HU`Z@@m95MLGNrXO*2aOk%{XUcgP3%rCaewuq|6tEe4Nz z_A8!(^=jWTJU-gbs@#8Ib@y%w*N-ZX?BQEF-XAsh>}o5r6O! zeOu2aWzRvtNPc^;h5VC;k976J&GbDwKkyXT7UP0_MpyQ~H6@+Dw_84GIo1UF~A096s2!QCczU4 z$0N;P6ExjW5vnv8fjW|`U!hS_{qupK8^0N(NHUVlS#}v7M>!57k-;Ewh(@3kI@-}C zh)O2-Vip1N2t!#BH;r=rH<9EB3*Eu~mH4g4L;Ob1(+7%`CM}xmYdb4PFuT>2i|592 zj-CgKD{y5>v?P?$y<=NvY2>s37xbn`*m{P9WBHq>B@R-`ao<_Z6}Xg|ZjHO&7QOLwy!pZTOEcBD zqtRtY+LZ8b-JbWUevOefqgKmH7>*@{h(?amN#I#rTgHd(NOCzSK{|F4 zE-7H;|LZd1A#3xe24R=-*_elwLuHWjBlm%__)Auv2`s2PinULTE{fA-jmSpdWcd0e z4B|v$m9$?()2d!H^$?*jbbp6lnla90iSeY+@e?5s>@EpEdK4wpZ`f19L5${deL$Pf z`m1H%ZQQEf|6FWAN63vVRo7kn5ryO<&xZG%tyg|$?~luT`>S*4%|09S4!yD*CRM&64XL z2<|0Z<<>4#sd{{8k5(>8I|BW@k~5Fh-1LN(QN49KTZo(; z8>6Om+z+3JGWBbBYaOY7%voBKY^K_pAD#8lj{g3>YUkIwmCp1{SK83nqj&%bj9aiP zcU?r55+6WEJ0)PD#PblgP6`Cj%|;8KFY~k``6J|sCa8_B68h0jdDs^z=py{2Er~_& zLKuECgv$f3dF7DU{zzGLkJB5qR}o-0afs<#4A*uP6&Lim*`qfW@IXHD+AWm5u*ycP z4VT84`|!Y5i_0$_%Ep%;T_KaL6rJ;X-=AKkIh}o$rgEges;7-&OXcg}R+QG>H{12t z{y;HVc`0-_o{xvqKntey?kp8~x5<^p3I0CRV!mG6y(#6Kgrmy+Tpl_Eo3`eI Y^frs+k+<0%nIDhtEPw${Ik^}A4{}<0MF0Q* literal 0 HcmV?d00001 diff --git a/dom/media/test/owl-short.mp3^headers^ b/dom/media/test/owl-short.mp3^headers^ new file mode 100644 index 000000000000..4030ea1d3ddb --- /dev/null +++ b/dom/media/test/owl-short.mp3^headers^ @@ -0,0 +1 @@ +Cache-Control: no-store diff --git a/dom/media/test/r11025_s16_c1-short.wav b/dom/media/test/r11025_s16_c1-short.wav new file mode 100644 index 0000000000000000000000000000000000000000..e08d5bbdc003ecc005395fb4af7019701e2a55a6 GIT binary patch literal 8270 zcmeIuu?mAQ7{u|j4Z-8GV`lJiZvF49SjhM49{+2hN`m~5^~AM&w2p8nqYHUxe0o>gA-B?usZ00Iag lfB*srAb5 zJfqm;i;Rt7AUTk>x0lc5@U{L&0uvfbGE(!4619P{5t#)Udj3V}3OSic5K#p~JwpW} z0|QF~3nL>1jgXAe;=I(HltfLC_f#iuWRi?9&@(pBHPTHtu}n!#G)e^dD%d|X$k{dC zKiI=D*uyq8(agxwFgZ0b+0-aG#oV9?V)VYV8sB%G&6e1@($h*4 zkQJZkz`^XZw_)-hSt+nWP}B*`%6@Raj*g_VF2j@S^2gl;E(_#8erh!Ljho|3}FzRV3&ckZq8+97Pn)N78BHk$f!$+ zDafiT$t!6ptL@xlSO5Lq@B7v7Yv1qvz7K<0^!xZdyN}=d_tZXqFJA%VFff3eD$XYS zN``?UZTsFY{s%OF2-(c~@nqVH)`KjQS|^`l^U6Q>03>D4u>FD8hm(#f%Iu;{OIg^H z8sMUze0Z218k>MjsQ==>^wIGLE+1Y$`PZ_&<%KI_&^y+nqVr{LFsH{#O*oO#`7SNi zUx1DM(hjhFV8tH|Kh^LnUfSC6M5*=mjFbau`x+U~N6cKsQ@!xi1&}hk<=yg)(#O~j ze18?2u(5FB1<3=k&ovM-XZai7c^pxR`zBCt3Ub9q)2}uWe>mpaYsoX;S^P+{&GmUv zl1cgH6($*P9KiCQ7cWWvpiuHx*4l1)`cAPsYUW4zT|+*c0ZIDQym%?`hyAW!|LH{q zwJs07t6w>huNU9>rtW&Rrt8eUu!i(Z9`lip7^52b*QLN_Rx%-?~a@n0NJ$l%Pu#2CUN(A z{_xv3zm!&WJuW@+g-7&6{Xt>QHJ?JZKoVjsQfdMv=^{SEnd~x>Qu@;BCO}iZ?3)e> z=ZWVVpLnWnGupVrq?;}DeMIi^@&ys*QA;6JnhX`T85CA{n3tP;?_;|%JvPn z3j7RH!FslS+yjh;Id^R4#pgU()!)M^zQf?Y!hg4>#Dg!-w0m9Jxuo;eC%LSCiKq~e zNf708rK>B2PfWj>uV*fO=aEbX$fWQ7y`WU}$@@zkyUd!l?uf_&J(d+pMSPDY80ZUq zvbN#$RR$~5hp1aoE1xfOb;c#%JVs}QLrMEhCN*>OiQ24a`q^9Ld}rnHTXD<+uNVKC G>;M3ysBkg> delta 88441 zcma&N1yq#X*Ef9449(CXISe5n4bnM;G>DSYE!`!8GlbHOG)SX>l2Q_bv>+uY4Juud z((n!U{eRZ;Jny&OwcfK}ab4HmXP@8M`^4V+94eGTSFq_GK7FbSfPw!MEUYrN+sD8X z2Dv0U1+Gvp&_9$g*uM<_n;ZNeZsuiMoTOKhP|$zg2|0{ECk^p2-AcQy|KcZ`5IEjeaIk_42?z=ZNC@4BbL#k5xmbBw`?-6$ z-n;E5HRkt$w&Fvj2ajd!?Oi?Wo(lb2o%gnnx)1dwA1gkvc&Mu?ud6B}EN&|(Vr6Y3 zVk0UdY9nqF`Y-F76zG?7OnDm_`N|$sY?b~kb+iy?DDt*TxA==f*fdF={}1>#H}4=A z9M+EB{2228?0~^PU*T%ExP=7-g@oXodcIyBR?c0;UR}jbj*f2sZ`g04-}%2_uj3=V zN5s?u^^m{g&xps2Cy!_C31G7=ErrwP1$0rkd4y^|dY9tI$O=NIWHHJiZ>@K$uy}!; zQ;?#go2^~IKW4kN)@@n;uZMqMfd>@-K2Ud|@bE+Q6FI5E^b`MQ@BbM*|6vAzTk*FN z(2DQX|4aOT4Tf7LHF`|MulK8vG0d{HJa8 zf2p_a+;%M%s`wiQ`ag;*3lld7djS&8#13QSx(^T#|F7cbKOe+Dx8T>h_cH6({PCYh z&24`IeiDj2&{LWQ6rmtADMm1S{^q8`h=)3+$GYaKgYTcenAi7VkBXGz=tP|KC|RlD zYRSdrG#2NyXh!X1GTuhCff-@$nVG+jACS z$iQ8jKSzaVa9{2a#j69QiUN!+d^W5)lEZPkxZaTg@ zfsn-53`NZ$4gsXQKdSw-OwU={yB@7)E}r3PZp<>>*r<1iUG%wf#!#}6f`PbM+2z}= zSm3O;6L}^S4~}wr&6w#tv1u&l6&a#fy4%+uoYbcB+tHtGhA!TK=$+1AV8md<`R@W{ z@E|9BRN%Wx%EGCg5v+!gM5P)UApi(R(g1*;hdNWq3BJPYkKg*0_X-&Gy}fNxs|Cg6 z)Uw%RL_`^F#@r%=$tV)H^&*_ghu>s-=WT)j2g$_4v!JwQ#n9pfTIXDBhu1uYc=_H_ z5{^ve>iHn}k|e;e1VG_{=Guw!O~&vaCYb~Zn@oTVh3?2vOH^pJ0W}bX{X&xB+wLSx zym@lL`g=r63PcDXGJMF@t1GaA%V>&WDz1c@TZ-$KsRCEcde!&NWU zZev@3T`k#X~eeaZ9I_tEv9DcwGDRmgxCa=EzE?XAE6hhziFl1MU zMTiYakWfp+Tw652lz2;&0~(jq4>T2lDZHYun*WF?`PH|iw70c<9bS#pNJ>Z?8=ziS z`1}}aE+0yv%jtOhfV^DWsw(S?<$rVU3kAsHCaxIw`}9IgiENixk`B7K9eV=b3ZG*U zPU1Fd*ZwzNkVp2d-{h$*~MP$qiO6Lx!U$cjwO}l zz;_;giI~_vxkm+^dHpW)0KsN<-1k`5@wbA7II~Ngb2XAVg&9r-ogaGIfX~PuYW~C6 zAw>>Og&eQ%*UV?&_KSxyKMVTOs>mbWkDk13asOe>ua#3Wsb?=(o>AD{k1f?S?vrqk zIp}mseUL=`KN;G)57^H$P5BH%NAFwSDB?qXZmAy+S&MD<;KmHH#3S!!k8EELntqEn z6|3fSevyCbb8C-V7UV6D69ddVpG+e)}PC{e#=|)r6AVUjM%^tKR_3%wTUT1}pVuL0z-CgTL?I(3rHPwoi!ZRI_(Az1w^A=|<>0 zwvgQJD_<=+!B0OxQ#G6=B7qqP0}zcj?NB)U)!AAjxtGnPRJ$F`(u^EL$={dLyz)s| z;knnIRt{4LQq6A^x>pSsLg-r^DmZ!QK{ApCn>YFi$_Mtx0NH>>eUuE(PK$Rb)Fhp8i2@Wu4iL!U}6 zYoUG)rhWnRt;QU(kY+PM15GR5g}-(;_%eR&w$5q|dDRv*HKlS0!s@V_`&0yTO)DsS z75{KHr>aYUSa_#bwE$qm|Mmx)#~jT4@P?AkYZn{UokG%-K7)RBG#y}o*LWqr9B%%2}remjt!?9m=ODjGbDG7 z08j>y^;b%GK-u!%CN+TQA##~XO4kDcJWPZvo03lZVm`F8JbtUXg6c*=*Vi^5Su8$Y znDM}n^c{{=ijn45#|=(w3!S_CW1cr41taX`u(MeCTR1+e17C!4R<)+sUD^5V%)5T3 z4zbl@joEwBD{QJ_<7#%hC{M} zM}_!40|bfzfpU?Y@_Wy{lPZ@M_wu2b;C8WHqgFz1FZ;JG-JrBwcp*i~q1I6j+lHD1 z`Qt_?mLuUFx^_an81$IPqW}z`mtb1~asYn4K7e}togarPQ4mpE+-0R~h(c1ebElnS zpqT$0QNJ7fb=QC2(B;xZtvmnbs?X!DY2AgH4|AuW6Sc$;@$Hgp85FVoWH3+#pZWXI z=MNf65o7nVwVqRs@E0D^DAWCxPY^4ci9{j1yeYT94iH3+5k7EqM4U(iw6eaPcjf?u z*L}+YkNTqqe+||&Av^$CwgW{>b3pP7`Y5qr(rGIyg3;YS%r3`NOz}tPti&1E2hWSx zUak*!{di(JFriFC%y@#0=hz!0P%DVW-~k+RKK|wua(ybH$s?%KW#Dg2ySlO1$TiL# z!II6cAhzb}is;np7YU{4{m~x}(1C!X6-M-;92T%n>NNPW0SN?n5&}U!f3Oe$`oXqn zhIwtZ4|XbOLF)U8#sEAd!9q@N-S=;N-%`zq1p%r2)sAaPGGFaUppT2bw`~6u4g4SP zFzDxmkf-ow|L!}LXEz@*ho62*pc@=NL(S%{YK<2>7<*l}Z7M77GN3~~!7xFNYV0z& z>#YRz?@}Z4(|2$<(JCI{hd>5e!wnDsB$n@IsojeJP??p8bEOwtHUPy9*j!rsSdliI z^roK4Rj;$E?j(>0)_0(HpR)^e?R?C31uV3ATCwLA%OE;$khk5GfknC|HS);Y*EFt+-ID2Q9@y>fE&CMMP1rlE% z0OpF1X_H%mY4cz20qDic(*#^}n;z(|uvMZgrp&>`5%Yv|&Xl0PUX))DQwotO#ZfAnzGJ5KwFZ z!eZbAzS<~;uPu78KU@#Q*4)UR)GcxUK63r5sGiwoa)_v_x=65^@aJ;2P0_gFjN$YtU+9m%x00j68o`=37Y2ezNA)^w@sg>GU2Jb7g(bsu9K z)fSd4ka*ekGuvXA?N-coW8fkW@)Hn63e16|>)mn@>N-cq{x+xuWVlnph-B<`}eyhN%yjJ(zjk0Ykko#NDAM&`Jq?~^&oDyX2)ld$c(}RY!_)>%!VEzl4Z?%OkI6U@-9?%A-}@TBjZC5KHt zkFSq@cDeh6W^OMfsco%*pN>1>3&VwpIQMHfthil6y(Zoe&CIuod8A4hdAR)Fb5!SG3&=j4{hKl| z;K9#GZWhoC2919Qp`O2a>Oyp)ri+J%5E}X%0`{1QW~Xa{z@(|KlR%2Ag~?z4wiAc- z%*fOVzB0d9x0?@Z8!0F_hRbZ2 zBULUNi}YP2)D;8`gS#$yh@g7&utg0m~qa9f0CXuC{vVkue9KVZAa?WoX!yRa^tX$1f zVo&xUCt^LoyP}XU9|%TO{V7K6$`Xa20RqC{p@LR`voixA@Bnh`02~Ek444C|Y-swt z{6PdSlt zz7|U3KF_>8gGwB{I)cNk@c0HDfvHgNk9OPV^uRF!5Y}%5{Y|C@#35Mqwr_Z}l3gKQ zM3yLth*mZLqZPzsFu@T^uGbRKPM>yqKkL5a;PI&FqzLKrn}{|WxNPC$n*RBf+)W{3 zzZ-H!Zbsw6{{5f#0UAuyn^5Yugk_WfN*?Nv51PSc z%Ye#i+Hc?2!Y;NTsYPSjMGoq9n3#43n5Jfg&nJv}Vx}UOh!+iQJQ5^?iG)!z8q5Tm zjSLa$je_#u+v}3v`5TcnXZS2SOhl4L&-2T|igoG$ykdobN}mrXz@r7SY`~@pJcSI6 zFCnAVx0%pXK=s=;5Rlr51~CvJa+=YgPN3byes9{6GB0sp=x<&^o81@DHj!kB`bER7 z*qZqp7Cts3Ax9+MvVaf+#1@VNpo;LC7>_(iri+VwK3f^Y$sc@E{(Zhe zAV6^TR$ySWzd^k_8&ul%dGrk~pfqpD0x&G@XS|hVrY7kZ0rpfS0R&vr03iQ_gZIn< z6@vi2s~e1|utjg5jSb`^wf$jzZ%5V2`m(T@sV#MS0eQSWE2}5Ov~1ui#1c3qYV=H< zIk77M3W)>(OT?3g$3D^$>>?c&CFPBJrlw>DcemosVhYK#c<2(ozhs}$N<8|I>rAf{ z@b*c?M|lSAC`ZUHRW=uZ_~k~6crx@5+@eMrg}bf~B(k58km3>4gGUR%9*LWz=n@3P zXN6D**>Z%9e=*iA&6+6x@hxa+{>EMEGtS$;t?LQC9XKIs5hd8RD{D#(N6lmgv%$7H zL2Yue7B@;tAe9R?vnDBxvnEb@pGto@NyFaBy%~oa?S*?^|Q4 zP%~WIdsh)ydz^sFZ%v;k;%7~hCb$Y9B0Ul(B+&XI*E3bFIz%~SR+ z0gr$HS&h5RMvLKDS2A1 z8g5mlQud0T#Z!24^bmLn?*DL?VCA7EC6XI>@PRoo5;^`}4PMfpOcvf43e34(TrF<9 z%Uq%W1n?AJ0D+ZXk2M4Md;x&LOk4n_nWlr)q4`S5M1=-95ZSxVkn~zQ$0xKZf&(Uy zLCGaNp!^DiLrM-s9Sl5UXDQB0@*_x#8ND2vvf_+tZL>LfBKF$%rkx5FrtlESD-{yW z8r%*MlPjEDrrh4qz!$1 zr`0McC+TD-Ng0P!jAh0V1c0LeVZmTQ4c}@Ga6=IU90p}%Krb53oBXNys*>Zy!B#{PDUpS?NpaPg((vtI&SKcl$ zj>LV}K5L>dC#($?m6TsP4&8E+2kZ| zj>C+RhRYwmEwtk?5=N`**)sQ%hGAS7TQB9^5?W8Er*%!VjPBI}0_DsnUa?*u9Af-3 zo%OIlemb)9X*SYz4 zAgCc0Jp{#i^$UoF{F|{r6JVSZO!+4bf13a{_`oPc7aJ3vmYNxznU?)JEuol`gPV(| zA}KjJH6?LDirq8zPeL=NmDES}ieR4IXy&~FGaaJ(mVjSLMw(AF-bK(rpqL2FV@i(B ziJU6?o#UVRSh7J;3Nrh%vEMuI{28|jzP9)NmZis^L3meFOu3gA?3fN9l^7B+ZbzOx zo}sHVss*M*j$1$_bVjybB0dKu@EJ>WROv)da4|FE z& z760MmphL+UQ=lt>NE|_oP(snO025xANV<14qA7o7eLF(c-AE@zGZs$s)-RFB~(^dWqR%;9;wonw#+pJYORBzmc&1`Mcd%#HE1b$#GSJC%yiq^-^3_9k=8y zPcswt8N0|5F^Y8A_YlGWdiOb$s0Fq?1S0i$cwO7fi@bdCo@Ngd!(zX}MlHMfO7Spf`qA=MFy1H^-Vc$t!wgz{5 z3t5S#nqj1Wg>vn-f@#p{A2dUV_p6I~NnRbm*g{cRx+!t63RJMg?G!5cIL1+*%C|i3@B5l?on-vLms&Fu0PpiyzI^`Pg?>x@QP~{5A^b zihuYZ@N2{>mX%k{;bORVs1qRcjzn8~5w&9;d*ih{A?ocB7)Nvdm=v^@{7bNHB8Lgr zG0#-J92wi)z`MBjC0^h$E@_x~xFAhEAut*M0fxs0ta{{sf*=bTrHF`Y;HDrCh8%o_ zB(3pnqT;Q_jrf3NRFY~Z1WNz`a7SpoDrXUY!Vu+Qu&`U8aFsj5jpf+g5|)~F}oYaH?VbPi|Y-I!GpHQ~*EmSy*u`N%mFcQI4w9hDU~_bkEZIRRvZ&THZ_p~7q| zU^wWD4Y33_0r8gFU6w0d)hH#$KbYu7iMhx=hzLRY=fKfsMsK#{$G&&^Gh$>4|EHc% zeH6gRPnntu`b!lrB3uo|23~Np7bH9(iAKX1R--|QKcyY|3i9H`MRNso9@GkkV1gR} zs8!KrkaZPx-sj?9Tt2I!rE~Ulp}uI&DC8AM$k1}?*D!hi)i?v0iO6ggN}dV)I-F?g zfgZFXq7=>&4Oz?b`^;SQ7dfS`uU7hqYrLJeEV@(qwAiMCC%KMO4aIKdXlg)+8 zcYw>_B!DM@LYjdL2!KhmE5%MT@gBu_kvA2+M1CvARtiVZLPqM`YwG2rZ@oblH`{7q`20AxuF*j*Ar zJD>^?ihpzf%mNv%)}q3>TmEU{n?OM9yC{kDqZMZgPx z9JZtLT7TH(5;(H}4Rs7xxJyoC)5qD!L6*g6(L=GygKgDyko}UVTBmrr2 zMo3p>hLDWnpvmp`#Ylyelrl}tNzo~Pg36CNd0FjSJv%OUPxuMFvt3bPg9^mMAYT;7 zA>a1R?YJt?$Vz{&^Dh>;7MK0+LmBi_3dCXJ2D zPkOA?$h$DIOSEX|zs9&tuRN&L_m+%BlDXRSdjaREI=LJx*|^_lxk>yKUAPQ1$|s>4 z9acn$7sP|)LR)s~ON`xvpmtkH`$cHZM3A;RKC7(hB-MB$$AuIB4th43<)*<^TPa2Zj~Q=2X6WqO zehU}bJX+GaW>Eth5~jtPF(=N`$fzgmg$%&mFioXZeATQLkk0rjyG|9!sBKa;aojx{HKJd;GRiY6`G?hiV7~H4NcnaJ@3(Xk&dKHBa|k ze4AI%f&3~tmH2Oek&Ux_g8HU-Hz_8)6{!|8>{2F{dy)~7X_xnKS}EeQ=ge7t)T0W6 z?08`$l2PwH)oKGLLfsSO+Dkf3M&e)ucm(N&3j;>lHyuA*XFp(NxyI3xBRMKT#wR;7 zX|%Sq&<7&}qlFwUu7rt8ES7*=HIxR-TMtg-BKFYqgArWI%g~$jfnq16@05&&l)yCR zwwW%d1;DS;REEMO$*hq1ylYqj&uK>4Nv94~#!66FN?uy9UHx~Ev9a+&qh3L-N#!g0 zCgnO4QN0BEr?vc4hV}V?jYm-zdTbRy)Q4_CNO2}P2u#-wAD5N~VIMC4HfS^#@1VTYVbVwP5HL#FGnd82R|g%X3W(joa=Ki!Iu|} zhUH(Tj17{T)4`@I+!G@WFKG7Wepl?QzfW|e3PE?6r`(joBWLuoQcLGHh~O8?u=GZL z0^3=^DHDI_&R>L12CeF5Z?-Y&5%3xt(jrhK<27z&RERex{D{5<#V&HXtG!xlbf zg2DKi1}~KFBxgKp)Oxk1zHq)382&X2``5;U%0$?;D@7v%#Hes^6b{k*ngTuBmDUw^xun!w`Mw)$vsRqrLsA^;2H zW^?yWbk{<$(M?u0)a+4RI>0u&WCLaGDJK782}Qm9#QtexKq~o}jgFL@-EKXbn@XL- zZhg@zHWf1cv-6?Dj%x+L`G8K;yD6zoFB~ti>5GI;B})ctGc_EmN8$$EUmmo~m=+#q zB|zFn4 z81-mM8#i|;lR*S9^%7R@>){ecNbX7JM=b*mpj${GBv*iWqRlXs;u4sGAe6CA1!?3_ zEUF`XMuVV%AiO+(Xr&0o)SPOR*M&{dy*#=oh>vx^-es4KZC0j| z4w`r4eDH)atep*@Qw!=%@S-EZo02w%*0V9=j2Z{CUvlFdH)&+&(pB~GK}57hJpqfC zCDOxdw1(sksA2iX@M=Mz9xx|FuD;b2<)`>faj<482(mT8g?5A_@k$v;vcE*U=?1{D zAeuLFi;ixr3j*2iw_LQbY3zhbup|6#ul$%db4vRvD?2@*K`8 zgS`z=kBT;Hxlp;_jC>P%9HBYrk|av0(jM`P0X6w4rVy#s=TC!(iXNM1d^y@gtOp<@ zM)-T>zngDP(foalM$+OfLp0N7=4UD!_K1*A(gyQ6PkEOC`v2SraK*Smx8?RS*6pE3 zL8#Ew9YH!;b~YYic?EejT?rR{QDs*r?=Xi~m=out_VnA6{-hDik@joe_AL!QBc4B`1w}1uzjgk@yQ`?MOB)aUZ%X#QELPIT zgZpPuxJ$or_HGFu_gjrF@p9&ZU=}W^mFEesEL(>(5f10;qy>&92U?eY45xRALL z&n54m>n7d#JbRj_R@8N_rz=MCfKOGH7^ahlakp0u4m6Hl;4)P9ZWulB;3HziO2`+J zq@^hwGp6SuPn!1aQ_KG!yp8J@0ju?sU}q0}ary8uUrAfChi?#g=Wp3sIjoH%`8Lm7d2L>7_5=k?&AMfs@oB;O7#T1-p@yk?5B0boF^HE(vB6+^*AhWQ4-Hslad0rs>BHJ{%o_yUNC#yMsWi(FJ&N>c#7R!_2d|Lx~yXb&LgjT zG7=QydJKZ5$XFaLd?&G3UG@(1rTkQ1CMitbgsHW`djaFKKwUi8Ij?(HvIibV)g$dx zq7{g}-%EP)a!v-G%IZ4ukcI9MnzMI?J)hXrk$Q@Tl6+gF>k8Yc>HbLrb-%UJe~D?V zJfq<|>!q^e>J7}^O?m&xX+y@z>-fOuNUHo4yB3p4D~-AotV(yEqL5Tx8Jp77&3si{ z=N2y%WB=OYUZUSo*2OF`*y~Hc`{gX+E)cEvLEYUMd71B3iKjEC;+7~v)>|`dHXo1R zckMA6%dxk44!^*0Jfba&+TdR^QpxrGv1SqcLiplYfb9JdprG(A%e=E^^Fr5_p#S!LIz82y;KflX9WJU8IvJet*)*m6c3Lpxf{8z)o`h#WXkWK1-FD3N zd@cOvDY5V=_QvL+nr=sa%hi04ha`c>96X(|npL*;Go9Ct?D!w$I?PVC=$@I+2lG;! zl*kR(qr_Ck*rdLAAqO>~Dq3vLi_Yw~ z8+4F*Vxav*k3)x&#?~f=mf@sy=G?})EU=QKAa;)p|6U>X0;k1EmvLsVhDQwO!zhrBWxm^vJ2g-7ma6BoJ>kXYAxo3Y zh}eVJ-ecv{-%0A9S-);)+Tt>y#VDA`6Mxyj2AYzt#?GZO+k`vGgm*|atD=m!Mr&%N zB-pYM8BAKQ7Kujxlm4^+H~j}fVm2;p%*ORNzwG0k^u+Yk*D2W<$w?^*$q8w%U#Dig zPDqJeAY}KA%b_qi$PV^2zh;CO6!CDu%B{u5YN!gZz19;z;WUuMcrX5M%ko-d6><;1 z>WF6Y29k}vY`HlWqnMCwkqLAddA-aDo=;sMO^$N#zy-8y1;N0sJD~@X>IT$^IVg1i z!~t8GD8++m>=UuT%Y_5U7NO6r^+6Z>2x^C4_bZVjL>?b^q%|%-;||LY5iBKxAV51e zj#2Nzojt&4|O%pUf2+ZHk6KB@P!S^S|zsxF6NvOKUfLioR!Y4mpvk134ma zq6gKyai`YrPSx^}OxPjSDb4Q{6z0eU7SU)%+G=-la=jNWqyT&6Fv!VEM-)K$gf&;^ z%rvnwkl zSvh)z$q7CL8Qfkg!jHGPTEB|gp)D=PxLp9qtKyPQ`uX%2wgR=(<)QZgxB zO`Eb*0M;IdF+6GFDc})Cr-bz$JPfG_Q~LFa)p{eqF!KQ8>b3*IWkOcl$5#NEK-wef z+ClwhPvtLQTs$0E0$eFv^gWaYjdI^goWfLx5MH^~9acDw`s zcyxQZ_92~EIET~P^9;E`*JnZ!x$~vSyq+jVPaj;X<;jt50DGR!Qj-yJF3GSYDvt&D z$`bR9Ncii3fJ9yFMJ)qMpY-vwp#8wqC9OdZkZ{^$9P-J?RS)_J zqceaNyJvv8CDqPdnsK)(0)AnZys-PS!wzkoIVs=i?nE^0zCNYtpeM}$!4m}Fnlm~D>Y9FefBh@K<{xX8^*v*G%xY={o-|hS)mRQ!I#g?u#S^{h1gMs z9jQ~}0#mM1sCBk6G||&~B<`l4$yEx?eh~2}IX~)#`w0(EZ&c~kqYKYJ1^_n=H;R@9 zbFf{CE|~!x5ITkZtih4oVX*$_*CD|hlmB;VDpYL(fl*Z`01PY@9?FiIsT|Tgm+_`J z@)1-Nk^Ja_<-MV*G;!$c;^i`n2<%~j{XE>4qqu{xmFq=6wg!-nyH5!08}51{7yKrX zwm3HiCi!UqDJ4ZX6R$ws)6ThOvlI@z90>k{HzvV`WlV!7@DPeWlhgGZ{RFh=K#4@a zl5qjI7d-EHF6m$JXIcLVIi#=F0Ns_hUKoehIWGpLlIm@OR7nrv@~IF^o{-xB|Nfe( zgNtR%JpFb&ZR!01h%}px1uLxD=wtQw^%NQeN)SNG*PE;(h}DS-JXX^?!%`@`S;@Y9 zcb0R-D{ypsHRrPnedS`#1^%gc$=~ca_$&RZJHyPgRwhL2`VQ&ds5d?$;1M`ONf_w< z3Yvj<_Gk(|Rmfc=T99Qzpv;=}N?Mmtz$};wfNoO~V%7%@dldFr)19AZiN%wDYMQn~ z@Q@5>$TqttBfK-sn4Gy5Gv=W{fE&?otVwxGTkF{%3Nz)}P~|KJ_BU8$DrUkl>sM9l z?8%=`m~m9|^zx(o{_3-U_pf>px-TH!T@oZeju-%-@IyS1L-7~_RD}%m4S#JRi=2m$ zPkfR@poFg*e;-nSTGu5>Re^y}BH$Wn%r0(WubDt^P(AB$0=49MSF|W!Z)_u`Y-nux zI;)^30mOpY9#*icMgORir}ZWHXN}H9`)rIS9xbQXg-c3P)cN4Hn2|#Z@BN$tXbH2@ z;UlbltRLJKOkl=@SKSWu&?LnRcRPw>obP}*6e#1v znC;aRhjT=S2}e;yQJ0lascfmm0a)pY)@F(Fki`;>n%iXWm zY{S(x?vYZf4};hBNDJbk7e2NrVJ}^)*zH;R%eLVrk|X@HDN&!0H{_-wlv7%r0B4>M z2)Fn?u#05OF?w4U+rGKLwj_P<7MwFW(h&_k9$Y;T{l19?)bk(6~z+NlrL zvRj0wsVLCl-tyy5-d>DOl3EgK5%`JYL}G5dxlp1mo+?bIk)`C>jBSoWBXpw ziSaX{m5|%2wSS@bak?0u;eI z`ccD1?o@#|VBv)b_RjYwN?!Q`B@I=lyr{irWCA3`FhDGY!*oDr>-|XJQ(vCm9fdfM zFy5uK-)2q6G>soG>mjx{B%qD&4kl}`Do=12nn+FP8&n*?lM%BKLFNk^Hm)NH!R2YN z1XGT&oRp7`Ig(WTBEPht-((ECAXbr5XfYT#erK#lJ>Eg9o!e3_{eDzZ^pCzvB zorsmp*5DlpN(c({T^h6V8F*+^C|=vi#d#qc>jQP9VTvg%=RHnF%LZS3#eGV!iMb!` z_W@)WT-5G@f9||zPrMOYuSG%{m-FPov;t+0X}y?T#O&>sp%1E_2-)f`@*92>0qgUBP}Nb+otvSQ@RcOn+G4&x z8Q5SSks68h;{~+@RDRsqI-;Ef-vI!<(8Mzl3Pli!<1Q1tC>`4pS>#|3LTKx)g*(fQ z(gUdZJkkdji3aj`L^7TT{&HSsTyU$AY%LxqjX2Th7Q?3Y=t6D)= z)7Ft~K;^rby{NoB`YEj=RA<^}#LIm_jGqSp9~VQmr7d-IS>FwH7->hYeC?8EnKLOb zz-#x!^&(G&BfdC~$eTB8t<*c0>($6w^n9 zbKAESbN(HWKKuE#EJW))9ZHv$@{TfhThIIAudh|vBJn$M@}zLYwFGKvEt+;xj7-yJ zBC?DeNUBE^NsL?+@$?3nAWE3QzCDOTqAH;)P3--{2x-nMovT^Kc!zHAAy%SHdHj5$ z4gLf%08eyQG71B-Swl_lLMjFGt-jI%kpavEMxWneb{MTMX-!}6rEhSSu3#PhxQuH* z0)Z#eK2&1Mh574JNtWkSGyp~bzX%A%BRbCZQSo`ehMu$UlUmbwzFr|m5>qd&ZT1#& z%WnmR$V54u+v^8m2>vutzLEyshD9~EZw_UKaBG;ED9hW|g0B>xKL(*emaW5e)p(($ zFaTlp1M-P1D_^D>yxwqiMnq?6h&i$iX1T16*Lq&m!J^tSSN&#sqpqFTX37{}TMBc|6DDOvPlX_$K!JV<+%}95GCQi~Khp z3&g14w%q0sZ`Hw3nj%JB_@Q<7=HZRP4egD_P4rFmP07vMo9+L^k&lL=FL5&SI5;3g z>6!B{V82{;4se(!HyFL*Hh7X1=QQ_!Y(9n;Mh>q|epLxmeFBhEH%W9mSk3E2NDcq(KHfK{fS|pMz zP=m1HbYOGA_U!1{o5%Dv7WNA+4ui%F*B##?v69zd$m5f(Ki{sOyWb%1Z(%9c1}(Dg zVLQ)*Uy~J{$j*whi(V5ntXCJjZ8L;wah`FKw^GU8$&ut;84y%zmriKb(ZKt)@y%?O zj}On>q?O4q+NtZ4LFQCe>N;eKj*qAe!TV)3p%l>B$g?1RR?u?vqE(Ga$Upzyx*o(H z3w*vkh$Nc-Wc0uAW*-uYMO2eiX_@0Lf!)a4;{mPDddYtc&)e`2$)RH9<3*_pNrulR z*8pL<go(6t*@OW5*(30O81Gvxn*fDwQ)HY4hSaYreW-%fUJB|;`{};UZ`Ucgp>`M2KNIYDI;i#iE z+4}{H1n!=4AB8Avx^dOmzE6$ci_#Bw7b{9h+m*>ZmpJxY{nN9EG`!ZXDI;F^^Gw$B z6tDiu_zSzr)x^Gk0h&vOXb|;*ENF2Rt>+s7e>X{0hP}xZ1Am>k1oE8~G+X%5QsIUk z=IM%w{P}4UpnK(&t=mITwRt%`)~Dt%Ol<{Oo0b>ti(+AzKwhNu)M?oj4Ll4(b>Pch znS3areKG9rwYeXM6xjZQSNN!D&^fs$^2>um2TxpzY?1e>Bw_)=j)rW4u6?>%an>LL)l?L{lN)qB-Keu$jB085&dZK1qy{5 z*{#@lEywYdWpblF!ENdD^z~ogW9=dF_MX#Y^-W!$m@wKB@*$c5$DC7+YkQ9_L7Q`1 zSJpvx3C8y8rU4f16(ga6NotyK618#KMr-YPucU(%ugQ86I2e`UCBAsLCCYKOdrfGO_ci53Y_M@ai9? zP8o{pM6hFzUg#;Arq-lIf15K;$>c(Woo2%pXJm>~=N)@x^3$n8Hox#v85OrN{qBrTzZ|%COWD?4RW0nB^ALB$9M(bxb6xciAvDYOdOg`>`uAn}7nH|V;sV{c@1I}l?#I$v zi<8pB9TVb561@k(eLi1XfB76wdI}KZVSf~7Q=$CCZughvVaCqZ)AQOO$4-hPK$8e> zBH?UNFK2!I)r%ZjL~!Cu1$;$S*xkfx6;Dw474ps4V~?Wm1EC3xia1||d;4qBIKN{T zV#&s_6Mz1x`Rhwr@?)L57GRc5`wFpW8+g3fONeDo|}UUH-f1`|Jh8nXv5>{MKQxLG{Anm4@qj34A4IQ%1Q z@(nT!wtY2yR##vz$$w9`r+xUN+1x(-`03`)`KrP6ia0X;{-fxD!RdTi{>C?`Sv#i$ zlaig`MkDFZ0*6pH!f=Qz7*Ovy7 z8Xb6guvQ`O6Np0j&Yx}Hx%u>=(Np5iZw`)J*0^_fi+!n6 zF`DV!VjoC8BNJkg1Iok`!%+o#-^;MUPo~#P!$M*crv7B_rEIt8){iHWgpEsQzX?Nz z%W9W;xdni!{4D`O(OlQv_hwbbo1qHK2Bgx{7geW{b+11Kiue}!i?jW;_=yy0ozmGH zskjF&7TH9zC`P12O^uZ;fx0iT`8R#dWgimV_`k`eXbHLxKgWI8%&Auk0IJ4`M&D%WqJqCOqx$c`ln^Cnf7cJ4US3U*P@g z#TSTddWUl-s&PYN3-S{CV99@C?0H~zUaWNNI3cheGHn~6j2wiQfg+YNH5oqe0|c|2lYKZ z+2gVwNMyOZa~U|r$r37!y$QPL`##G<@_jmNqp`!9`mM)C+N&URB@Xo}-YA)rQEooJ zPWi{dll=e&wDfRb1#&C&=x~3gx=#5>A~w|C$%tjf;nxT;^=s{B%w5lRq!MWID$R6? zy7T9LCNT|)R)d6hCXNHnw~o|Yo6x&q1^Xbsok#3Gzd_oV6=^-wkCf3H-l0nw){K$0 zd&i|!3;F7LZ9PRuC;JnZp59g3KinLG&rIS5H(SJh;wjW;$nw(VqN8#A$OXJgxTvaxO3=9BMJzZd_hnyz`-HFx*vzOQr6=fe2W zvXiKMwf>o_{q06l*7%T+D@n~kCKnj(GZY8)Xj59+RqT(413f(Pdv{2$`BtX0%K^FV zOjg&`_tg8p1eH;!^)fRuR%pIh_fr~!g?F%N4A->U7UO#cLDVMEy#h%#s@hg^mThtB z1mBB0@xLpzqBh4ZFO}nqsVsnr%n<+yTz92>=cO|Fq~RYdhPc2Jd%&aG8gLCM$jXES zIo^%k_oONwTc}+R1g}u#OgRjA>U@8LpSdiIP9AZ{!0#o>re!6xSh)M`7ue$vB2=IS zX|UaYR^5}jyB5VnJrEj0=;$Xnh6$HIV{w*W4}^~o z7SBSE28!qs%W^;Y36z!Vb$1r_2k}u_+4*_h>H?lJ%c{{2(>>F_jy>!8@10YgGhuh1 zA73R`#NfYaM_>t#F6w;A-^FgW@FxGZMyrrH7*Q!_Q^_}s28yU>z!&yf7j3~!cC0Sr zgn(yo*6aPzfzg$?$phTLmx;E-oK_uo z%Vj6uA{W7t>RO&ey!s3Oq zA*T91$XihJ4$1?C7-6CfvZS!(q--l*l?Y8YG1ot!WBCh1`x;|OD8gHT2$XWv9SN^@LBAI?Lbbm0-gYSn~_t`66 z|DB{b8CcNjjKWWTCMUBg0wTX2n8G+Ox1IQ6Nxyof*~z>va=t1H2Ln0I8b+|IhsqF~ zr*RNz<`n<{r{=Afjal|prZr!2QszoLERYK)P9KSn-BRnQ(PKv5PvnbLMvdZ8?_@e} zhliaL3mm|k5kgdBQ0s7yTB_=X#6<1=0K7f;Kze%V*>gZLbVeAS9VQ8}+pUe+VEsBU zQgv&RH9fh8nkv-Sh}xuS`XFi4S!=_a z6FVeionD$}Q{scdxD+oC+4BqDF;`1SrY3&+7TAzTF1;f$n3Zd6HZDTNL03de7}%JE z-RZR!vCLoXdU$I=Y%yxy{B=LH;|5xvPu~s*YjkM;(26EMjAE>ksOWqs93%5%>_->a z3w#=g{@K!m!#dsm++%s2hk}Be*kEc5S|QbL(++nb7H2KhS$Y)Q z1)fCXY3g-$w$J|K{c!R6+>ri*e3(F7 zc)j6&DS+mj{K*vY)`v`Lj;~WevXyabFvduvMhWcSluWS=$r8>%RA(Mt;do%s2Nv8T zhFq8h`c~R0eJkR}$iQ8D=Nx0d(f+p%`(!<}iUr1WO9|bcK{h9WXMdmu(0ayld>kkq zKggAn4*!!eOF3|c|FPf`OgSm-$`rfp-X2K(Z9Cnqk{XuL-KY<|csIW9OAqRf;Ogm& zMS6igIEb5Uo^deQF={_vQx=_r01_KfiX!o0Kmv1`{@yZO=mXa0ync_&Mb?%~dY94* zv+6iqC`&=*z)>sKf|>=aySG=MD3#Mf8O441V%y z%aS_tFwJI+)Yw*A}$MUy4FGb3Wtz3UqK)RAnuhovr3|*YFgg1+K6o#A)2E zX*qZ+=x&J?~#ed@H*XKW7;=eR;o^l)`&gbc8$>*0W@%hCqV*kHr zAtlqME|yR>k#e(S+vyck8xd zfX^9(h)9?{sC=9tCrYzE;lM;3FCjaC(EJkspyIi{>T*BdUZ(PROzRvfPDDU&y|$(q zB8cV(PyFYprptkxSHpa^5^mKnH%CJUB#2-8CbxOsi<+!7Rj zIQ)e>`?u41(JIE&c-bG1VZ1tvf-7ugswqc}m8f=~jY{l1p*;C}XuaoA0ycWZ{-ti$ zTXA;d1I5Xv<(BqZ-5_IS^2g3rLm=berzc{eVR~J3KBm-^FG?pe|K1`RR!GqV@L^j` zcOuJH(!;E&gK@M)fx}Lml?02lFyEwBx@B2N6Co_>!QW!LU;uM|%+4-9EKLDLP@@ET zI+D!}7nX9y0ow?dJUb;+hD!QAn8cA!g#rM7uXmm*i)Pu>m|>CH=gd5w>hMah!sSVQ zSlbkjHT{fWMcYDG5TCUx9RGJ87;YJ4-|3gosv$93Ii>7>+88&J6OE|2e`*39SVnD| z9N*_J9?XVGNAc`g!LU-&HR%!TAG9oNM_>*3iU`8i4dg~VP6xs1d#Z#GTORs|F<6G? z8D6$?M+Aa5@{am($iGg~!-lt(|FhW2ocJ6KiT>kXK0-lj>naZN^16b&+d&S4ebFk(qc>xx zrWc`tFYmYJdxSsv4nBLHF0jB<@c~bDBhVjlXcY zD@uRZJ2sSAMDz#tdX?dDxe7>K$^{rF$yH{Zfn9#3f1$j1T}rls$M1eeZ6gv9D)ZIJ z{gmm&q1@hz|B_dhYib%>J|sR8nab9@OWPW%-qUt^Rj7?(gdqLJ8gz%g+n(^2KJ2{Z zO`*w%aERoDm>#r1!@^gJrMyO9k+wlcWo`;iZEtRU>$?K7wXMp?;WD(oGPG5{IX@5@ z9A2DX_4Y@ShBSm2;S%(n^gUHA_B6S- zwg$I8XeR4Hfe{m)`zZNxu!u9NW(!i4(hb7Pwg^Y#)Z!)VlFc@1pTUccqYaA8%e6T} zn1CF(#Gj4LbrmU-G_qdWdA^a6XHqLK>spnVt!jKA=b8!a@wsqVZ_wA`(m(OFh$_iN zB-AI7q*jZ{dd8nKyI2m?;N&qbP`2|Vv&|%3-VRyWZUay#^@O3eVqfIlU@s$5{?Q`+hsup)^=mfr# z07y@1j%cs!-+OwGtHK?uNQ@sDncq(}28rVfTtdN;u^!bIgbey~#D$%pDcNde~|7E+6VP#JHJ^ zB92A2CO_UM?M2J(44Gp3LvsC9Hb3xFj9A7{XHe|9qm-Ic{r=)=2Qg)V4`xzGJ)Eqe zE|E^@Urr{Svmhf!p#$8mZU)TL3<$hZ&CMqCp7E!Gc)>pSv^Q2D==dd)=5QT?Xs~mf z4`Rb=V{F9_JtOq$QX&l3pDD@tpw*oeXNNxG${R*178Qw@@wjH4y=D>2ZxlGf^SIjp zETWH@CcGG)McJ5)S!ICqy;vNQq4V_n*@UQTx$)!|BPFN+ z2y^&f9O_TBhuz=l|I_wa{{84BfFnGx!{=r&yS4s=mlaX4cl6i=1N0wFNVy9lB*F8Q zOs@vOsID}JsV;k#mFaq_6zdw?d{^7nb0HKV&Lv+CAo41`;unacCyI3vB=Z|ifE9^D zBMZ>H_PClp`j;DI8T7NtKCfr@3F>g{i4b&p>o0sY{Llbp%Au!QT|JAJnTNOlBg(eFW zsJ@UdVntAJaYmmuy$fBVi{2jn-Dy@^D(ryY+;my|BjrMlc?lPiK*NYPq8g)8gb8yy zfLN|fE3IzjcMiHdPAs9Q)exSgWv1I<)5Kfl`z_ps^UtFtf3i23GL{HV-=L4kk-!GR z9`M;BwYwgqQs7@7!d?>{rQao%rm@)Da@zNCVI}w*beA_ClCvd*iT#XeTXJ+y5o?Pa zEL*uXJF=BYt1m_;JEYDA0Cjgl#l2=;=U_N(bG98{ddxZ)aJ?Jrwk+QA&?_i z#X=bVmEHk*=4UYh1lrXw-jzU^a1)q~^z zie~K9n3rda9EqUe-KSY1Af;q3PuC#f+A*64^z2YD!03XtOC$8En|gx!`uahPW`o>7 zdWl7N0v6ll2q@5ZeAqfL=lyhhFzGW)Xo#UolFOTZN1fgX=S?!r4Z(`pEKWQ1fMlk| zZKflG*PtJeSF+r6_~OJ?ouBy}8TZ!XyI4zm95o<)FqD#FAhK} zYOq7{8kT(D!FM)|`h_-*UxQaM#PF5Cip$7W9;az3Q6yrSBL*EA(>gOM+EXEO*U zZybpQcG|bQ7-aC)+Na+S?2l;u+_i$$eukwX?m)u8KI#um0LYN4mwiv?02AQZ@q_an zr>pOYDV6}kHwwo1jTIk4kf?JcGL5Ukf~%Fk$rhz^sv~$jQ&Of{AW|{olI#SmYe`6Z zJ*fbmW-k<|m6fS3a0*qF4u+CCTf|(;J2TRTAj9geXwGYz5Lo3UsvSHG&0=T7%|ZR? z%RvaoEj>{u+p114U#_J1tOgfkYEOlOTxc8AWvkwyPui7ye2=7v7uN?_d^i1Kh z7zB$5t}%MB(Hb(G0NT6{>Q)1LRgpOY)7?=9f4D1|x7m!RO$2)Tx~FSbY2}P86LA=c zOhf8AS8{^hVg`Og>2hbdIcnK7BKo zE4{1q#}{io{iP4hD{kbX&wexBIjX|i3I14|@;vE+=9oSG1{BP@cb)>8=@b{0JFCC4 zS|*!2$ulq97Cf}}h8fzO=C!!k6#M2nW*nmYLWIb=;wv^+;Z7}3smQfg@#NkivN+X( z>NEy(s(ulytJXgeDJb6UXNG63hXf?bz8OO-&)UAdN!)`?tj z$Efzj$hTDXNY|dn%C;G}Q+?LL%(NeztjgEfAD(rTXe>^mVHa~x+(tMXW_C%(Aaal( z3~b>g);1=fvvgA2jsFhT`A5jR#}4(|pjJmKwu2>#+u1?bkL0vj(vMe8F|#&z%}B}5 z^LDMzyO4Ag6A5@shp=xLFFW>7w5`0F-*_<(O#>U9iNodtV~VyEyYt4))w>7UATw_W+RgTOF? z=ozO!YafQ>(kwuzieE~Ls)2cU`23l=i*J4NEj6`GHCio8ZQMD7#TlO>qE5p>E5>FP zbp8em(*%6QuF4cZf2QCy(s2g0Fk9+hbRL*Yxh61Qk+rQ>B-kCtK3I$Q7;OGd-3QyiQPqu*VWa=hkK*` z8E(#_iluuXjQ`^uMH+4^<%mj8+8)D~qIlO;1+w|1SsdMEqXBGZ-L2kPKtMY_?Qc42S(<46uf9zU zadIFK;{w&#%9;Gugi>{kE$s3&&9KBoIk}3z%%9xkwx+b+*D`}S<&Wv%4_n7-avcJijEmm6jUwuYyNykD7shItY7Z>hliF_lFl~qp^vXhR< z85M-0*EK7V%p!E+<4=amao_{6U7GLL=-Q(|Woq#TaIx)gzPN~Hu;NMc4U5`dG;}4^ z_sH_=8zUCk5RGlXXBnG&jk0pKY_5eNS9>hKfd})lsH?V|La6sCy4}xa^yEa-@$Xh7 zZFMqOKh*8AGnabHT%8->mov{pvXjZhmctmN7X&RQ~;_GN5= z>}KN^6R_SbA{G8t(oLr~}+RWbPdfsbZGx zY|S6AGRBH6&#P1k$_ml_*0``k2qdWO_iq%65t6#iYDfk)H-=Pu0k%Ua3HJR_qi`My zm%{XEE$y4$ai!OB&6PUOO&9^zGlJ^{TJ#-5~? zo2!@W+Z;TggI!Y+X2j{NQK^pC=kz|;?6#(pLno)*&9xxjp{|&r?7yDT-gW)@;;P2W zu_P?|jU)L1VSWw^w1$wdAsEpOnQ|cmznrCtkoUP%r5jsfg@!b%Y^D5fvf4F(3seIt z7u`Mc-;b4on@TQrQ4-cVcvl-WOhwT7)f}t3Tq)Ij94EHAW)k)m%b*|GiI$#TA-FeZ zLY-D7`eer5Tq%>3avizp;y17{Ud;-XoX<(?%gz7N&@eVtXfAm&Yc*h#my}cH1a;WV z4M~@8h%(V9nel37KYmYKXPPtzE-B?o8Q{1YurwAvyhgn#T41|mS^xQ2F}`$%E|R9@ z_S39m-8bvNn&`J@+kOFW`x80m@#xQckL$rq967_naNjMn`W_5%r4lPxMqZ(+tJbpG zvk6luDw0%;^Mq!3C9MkypB~XbWL07M^gU{Yp{Z(7b0e{CuKsx?~*OqE$V$;;`It|fjf!|VY zQCEsnWEo3%E4k@HD=tJ3+Rc7&QsV1qc!KK_rXf=zxAjT=@J3b^&-M$m+{at-0n$@H zjoGCnpk;2L%33<|jT(?vfS7IMEKm9A$o4rQe_)zTShCUP?9+txV;8c?+F7TqBN3g5 za*wb|sDA3wCwxyT*9P=~DigQTyLCTO(5Z~hqOfd=?Xp`a{1>=jlLwuIY@;n}MmWDkz+aSfQT2I6g@<=2gYl?iV6 zAAu2}!>C8mCcQclY`w=5riHS}`?Xy}fwv#W3;+}Sq>glhL2X=8$uQ_)&1O~1EB2*$9(kx!4bK|9ZnI|v5d$kz{ZI!wu)eF9st}4 zc^yRzsQ{e&1FeAAE?>B}m4*Mc2aEk5`TUE^04Tz`vHkuT@%gFn`RV`p+4uSRRsa3@ zIrk-^YkcLHe*^*I3*7`AG4^lT_!v2ig&YdaVwCy39QwAod^80Q+}qzuYp#6IWI4_E z5V<*h&Y+2B@Cjrg?C;D8Ce7kw*3!(62gMD}fffTv zl5+x@fi=&zFRT6VHhej1z8A$n#5rv^vI3Mi*qAs3cOKCzc}5T**Y^ujKH2?)A6x;K zbil=H`IODt&-MD@bv^}DT+-F*AdiskR)tp6yd6ajUGxu%T3{I;0@mjwIWYhdYy>Q) zar#+-7V*ScU1dc6QWty%FR+v?0EHTRsmn=->99PzHSW>W1{D4*`gQ)IW9a&i=BxA9 zuP{{01xHs2d8Z-=#zb+VZt5M#P`AHoN^{}Q2RAo(nh14<@67q#bF4}E3 zt}g6p*%6PIsRVO83=Gb#Gwu$t?@n*U*lX8999LfNk^T&3>li;%#oCTQI~g4o#W&GP zdF6^^9K^HvDITb-&(NW0S+ZDUX%wN4+}K}vWeRIHE9+9=B0I2a<+DMJ0L=0I{WGEL zUGaBi9!zw4vYG5erVeL_kWuic?ZT#&_ZrWdXRC|ztKCtM07fnqh$`2dJPlriq&r7Q zBn}${2nZ#HlyrI4^Um!yM3e_O_l#u=w&_-cHiS++=mx-#Pm57DF?N)j9(`cFZvKz(3@x>fIQh7Sa&oC z+#<1qWmaS5r(il4A<~b-P3I5ppy&#&zt@n^#y%vv%E0zJAsi8?x53OLbY$tY^^=>w zZq7rimqL*0?9Ou-jD&YQNsaQ!!eDT*``}x;n0d3ybRYae%2O6F30xTNy>?zSvEF~+ zso3jtnOKBqr_aS`*U*OC(kler~`%0H=`~9MnzUrPpAtZskQ!84Nodjk}hp;&&2yP||t2%iLbjj9Li%>z# z+%Bb5c7cAO079aTJP!#e6>3oCT%I@(k}%F*Gw~CSnAPhrj`pH3wm>tP_`axZbyuty zl89}qF05ATt6qAKiIfeRt(PU~G#Vngio9NUUfOT#Zmsuj>#MH1^sTMesMbrbP1p7( zhroWM51V#Ka9{8o38DZAQ4EDpVlsH|OV^aflel;g;~!I&`>d^KnN!) zk|$@_-W(Apk+FS|F=>PlK}i*k6I(_!93anltW54Iqh+}pXMX$MXOW!L#0`t;&&F}} zo*_#d)RRDBd+ABan2EN>9;Kxmu=q;ZsUk!zsW`$isa3H$v+ZD8MV zl|R>vN;4LtNoY})6m07?e9k<_Q^6diwZ`G@7p@2i9PV@{N3sy*RwIJ~?qJLZchOh* zask5L2n8C5Jy9AO`#t~e7CWGOqKAM31wnfEurUgMYwU0yd0&AYKjY_wvOGvI6gp)+ zRzR$xX>1cV@6zH>N4e~=n7AO#5x5(Dl?XZQJ0rsX=e1i>?5=g5?V}yBfK&MX%hm3N4|9YAOsP69GaWk!ZORfKK~wR zE_9^(VYaN{Q`{}19moyhti@VIjYL>2W!hZ4+{&+$~yURkxBxF4qaE* zv(te^R~?;3*C`?KMHOdT;7;FKv`%Kd{W^j;RfBOLN}Rkn6^4X(04nukr>FGP!6oC! zIY%^%wZiZV5G;I8%>RnmYzN|SPPSxvd5 zt5GaI>DoUz^6QYYH%3UlmC~Ei$h=9!SeFbhjwp*2qjX-k>54~(G&dz{=C1&#Ls_%x z2-@#mUlrY@*>A2CO!5@`>-kv!;-4AqOFcv!O^Zo|6>(0u+&n4P=k95lPQn$Or-!|ei{CUC`pG3K%WZS+w zaRX>1@^_K#09n&vDD`j!y#Fa%O6+!g12^A(9(VI2@nm{sRXYJ?`(u9T9|B?` zh0T67UVQxo2nU_|zER%5^~N%m zPyD;98eoC_M>>bFq;rQcEfxBGIBK>1rgzt-`taw`$8o8eNt3kSlc1)m}<2dEs%R$=bG;<|yM zT%o=hSwtH@UHGPEv#Wrm|6Q zVibxA04CxXr>28+qor#iXc7>Ag=UcS90B~gcEns0z(a%H-Dbk7>M!r)pqTsOScGC8Fr@6~4^M;;eLnK3FR zu@+`!F4G6>xUs7$e*%KLmL&nea;B!QZnJ{`38V@fg(@>@-~ymWNes7iA*DkEqBri+NvXU-IPpW$CZ@>PUf)!593O$AbXZBF|fw()T zRxqKmS-APhq?T0#+_$@1Q@hB7o~M~ED@d7JJugfXw(Xwmce=@kEi#_Maz)YTru0Ls zS4drxY%4=t!Cb$UF10E@KMyzEz6vtBLWmJ1W_gInw@~@iY?TgPc=+juy%A~LgY0~w z+MP4~0OSOvrb7dBe8s+nE!V_QKy)atEGpPUan_-tek&6k;d<6Rz4~9;es^1$C}(u& zv1ooxCZIAw#T@R?XaY6@t7Vt%UsPeerz3*LsIWQ86mdCdjVB_NJUaHbAY|_L8_O&Y z&&kwNUFJCMCzL~xd{{pr$T%Spw27OGEsPMd93d(crKXXpj;kE5nM7G(U{EB?78+ky zw_&u}me-R5J_T$t2c8V+>n9JpA;pf700}SmEVn&nCMV_QFt~l!<;yPPAy34Zp{XN& zi$*iW%(7;GRdkE{15Klr69qf@1f{m7VR&G2Nkt%LB_NYO|1cKvUH*Ww5%xuz&!Fbn zk9-@2=XK2$Ba*{mFG8*b=p&i2>s_e??p^^B;>|(|jBA;EP!*A)@D!}K?(-???+PHz zWsz#XIv^a=`|L|c5c!i@Z^_c^bJ{`t6ipa~%_k8__j)w>Ju%P9&2l=1@Ky5FA@=hR zELp}s9EP!@D*!atmAmFRUYC7dE|qKYlX=z{jb&*$8-@<#AcG!@R`*7%V`63@utWC81Wc}SE8ZXge*59e|WlK zEcS!Ix8J5(Iz8*e`1(koaljMaQ zFd17CE`RAh!h~^? z3ZphE3lKO422Tm)bZjm2d}mzMWmId4H|to7@?O`Bil;Qk3lA%!`bW$Riv1}F(#7XQ zbwMjmfZZOLgtX1}lss;#Lgw8E4<;b+GA5o31jIoKh~x{w#>B#+`GP^Ld2i7!$U|S$ zazVPW5|WA&R5bv>nzs7yZ@cc1D9F1HOHpLWIQqlD2yi}=nTThzA_ZQH{85h2bKg}njpo- z2g(QeRPf<(y6{ynMN(>q5aL1+jMUG|*wxnFFO5>-G8UF!FKqngOx629)=|*x=Ht&z zA@UO;UlVS{r3B*s*t8<7_X}uZ=K5uLmDU#6k$NtD9+hSO5-DQZatAN)LtaFpgur67 z6sc{=3m{66PZb>H#@4pD?!(DTD8NyOuBUQ@Cd z*E2$SZZ1z1^6itu;pK^RcY3a1NRxOfdImYW54xml8=f@5Sff|djF>Q?^V@3&*Wo)# zZ^WL}?&#>H!+bPdNCk)Nrhn?^c=vpVs>^x!Z`qN^b2wxh0_DzeKb|Q=dw;R++&I?P z%ahqBkJ{o|&@mo`Mvop^%yi4eV+n+LrHU(!p4`eBA=ID9l+0|m~&c*sTzQ&hy z_e;|k!Afhcg=ejm$~i(jp1+q>cdqdn;JO^M(U1=gVbMBp9l$j|4puUs9(?)o59+s z}?HSC$Xs|Du3rG#d(p?HuSo`M9Q9+556_WS0N)R&70O!dq zrERbV;PEX`$Ria?RxI%}1O5*JK;YXHq^xnkYyzPpY@E~Tm+uyb7c2n8wkrAK_orIr zNMDQ0uzU`qri(r!;Q0PYypD|KbhLRISjW5p=m0FSfxtmvAGn1x0USq(?^1-=F1Q%+ z4G({1Hjw9~ROW5|8htasNHZDI|3cs9VRpIQpNSqs{u0M2B(&NXjAE%Y%|0IpaJfIa zM-B*^#*ZD#UynCa0hADdUAGBdh~q*I!^ErsWl(C8WeF&9)nX8cGV7Nis1OK&tbpDf zsOrU9jn=U51OgUV5#G~;VBkETx9zZ#4C1Ee@z6wefC+GD0K^CFV0lm@(d!l68O28& zQwTBA(c@^R;Oh@Aw#+G^Bf|eIL-gkavnSqIPp?_ov$sR@+Cr6#!Y{JPOf6nkEa6x> z&==XaJ5TvmVD&#q05XGnX9+<1=Xg16h`1WW?ib7kFf;*%TWBKIfv^C>!krFOz+0lI z>4)=!+B6BwT4f?o7g1Y4gPWn{Nri$&_veLV6|WyMGW^0I*cUsYJJ<#E4&H_sJ}%uP znGF(yKV!Q)LRjKS5C|vq$NH+Nd|I_^J*&z%9K>wPKrc{y|hn#7{k8e%%JPA7Z5UlSA2bZjXCJv^G zS~FOkh~n__KkUHyMh5rVqq6w(&9U@jxZTCm930}T;yHUO83DuNS^{!V0w70*>YjPb zf?Khz@%14_fNmOcT5hoEaT9f``r;+_sirS&5JUvb44?;W1IS(2Eb`!wSvJ+?qtb#z%REgQffObapQ~vXnm!#Hf~umpy?AD_dF*8s5u!EhU4ny3s|vr z<>(AKgA2sog-)f3c>D*jl&m9UX>EXzQe#T1$3evV^-bRapv#j~N!H-MLF;9~9<*%T zY{k||HV#)=v%-#j#^zM630u#^4bAwqThWuFCK(NDun;a@$N58-4!g#lr$RXhZ;XO0B{NAQr8#rj{o5ES2(Vn9`({R%AL>~|~x&r=H# z&@aO?zB|3d*-_gAMkvJzu*kLHdqs^W>3K_3U2dYJ1hZ+!34~bE5Fq|~vV*mQ6F`aG zeFHXi?phufdJ693{@{5{HEt(oh-UBVIFW*K;D39gM5camRAZPSga4cotQI#Eqo)UNc#AO<|o%pX^7-sy<}~_x<|Qx;Yr7UfiS*Y zTm~KBZT&TYb(jBa`b=s=jcPlVRiYTE2m5W%)Nr>RvN(tpbcPB4b5RI;O$_N@NwlLm zHQy?e5tIB#jKfy@KG9CwsB;3}>PGOpN-cYrJm3``1Ov@<&W$dW_Qk)-{~Q9}`;ETj zzQjo%v&Ti)&3PAw2{3T!L*1`STj~EvL&3pmP~~QuPf~6BFL~a~gsEVNw1Q z3oHeo->e7+Akbc@571=Owwxn~A02F%`W`~Kux;G*m$sWZFy>DWA2f;)p!-3H1T6@^ z=O7Pvm+Er=i*`?@ffWVh8qt1x>AARaTKjD9^sYT^@itea0JYYkqtbA>WoOh&SY1>L zC}}ppwrD|p+Y&M^N}mIC(@Q`cm4M}ZCzci(Qb$i6Fhdk4O6}6WFUEg|JH#d2x0Q=k zG%>HGX@>TLWPOJE&of{T>jFYON0o;{i6zim@SGsYx+$K64INl2R2OaVWfhRw@vmUl zHfrqJ>$;R<;+dxFU;-5)Aek z$xZ^Ss2ft3rx0i(%@r?nFVHwC9W^?3S1m`R#xX=)(_vt4UwiX{TVCt$3-DaT_A%U9l_ zq}fj(Wt6}t_-I||SC3}+L6z^hQ4|*QU{N_+LJpha3Jb8u&Vjh!ccN)`G(l*Px;qld z4xB0jvAa#;>*yHF3FhoE1Z&Gw*A6m7dNf31;8{MzZ3Wj)zWXD?_hkexkb-WW6ah}g znKJJ4$oe^5kMynl?1?!~K?GMOa?xw;ciY93q`HmelIwz#$YVXA1OR(gDqutPmqa`+ z-(LW<>G=bvg^2p{FfRb7J~eB&sfalg;;bM zQf)&?gykg)J%w>%);+?r6|(291W0KzBAUC5xOsch{>_@7)0T-fPIMjBu%Ec=Q|&Nb zy{`Y49mdxq|I6^>0RaCS@;@hm^57QGk0qI}Wyc;|C!lGs@fBQpx|0+&%;KN00M)fX zfs2b*gG`qadHnTH&a7K1m!a#u<7Ka*>qmFuUT3YxwXwSJQ8n=>UQjxQ0+_rh+*+E1 zsFW9FicCrz+&6b~+WbUT8=Ig1kP`8h<8lMz-Vud}0&rV~t8&#FGD2aCy9MtZdeo2W zQyf}$?mKn0F}Z|N{1UA}!hq};PaGIv%Q@<4H`SM0kuF_fVURcY^MIx&8c$GefHSDR zc132V6uU!;L;u#knGcSvP04nle&02)B7fw^3tdh3Jxr|`tY2@{Q$KI$ zs%s3*5A$-UG@(<8?8bbo8(v}}coxn%!Nef*2RrFbWw65qrO*k8$9=8?^f`cGdR%qd zQjYB-0Z0Ks`k||p>_jC;26PULYu8Xrc0m9U>a95N-*8MlU_R1?oq?}_TXZAC&)_a2 zvLQPPMjr#|uhR}6LS4z>J@~&M!`7#fax5A}XUaWz(YaH|zhV_$c8N3S|+prLa1XO8ij36dL`$LZ?bm6n(+H3wNTPGw~5EWV=iXD(&Pdgc< ztsMH{MMZ;6gm6*^-rbe?T3VUx6#p7vTrmVmlsE)Hu){J8L;eaf(uJnde92%8)#)i; zKgX`5Cvvp0j5?xqJ#TKowqWP9fnE_{fJE8CI@4!yN(Q@vTku5S*csu58VVY#Hg6}P z#Tn8r&0M}l4jHld8E#2VyEPyBYF)yb8;NKgro^t@68_4GN`8e&noN>kvb)c3{|qUP zwGKD|GF4Yq>^Fvy)RT5LV;xD|l}(d4PzN>}`>yMewwIuSa*rezEMSYM`U|9n`kyhF zsdOonIm2+nkO{ChM5?wyKr`o|Uq#9P6@roGG@1#C37~)SqoMBhTsNk$B!OV86FX?h z)AOFI@@y_qk9+gMc;aq7cbDbyP!j&n1i1vn8FSoJQXRp1+RvJ2J2G+4r>={?fB%T9 z7Cb<|iF`d5?fs7?a3Xfc^m*lm<(Mkuidq<+#nhpi9{RtdpLKfmADRM5e zJuokVAkB%$OD~k@TRBqZA3`+WTn9wBOPaJPjMJpz$=D9Kwp(cSCX0rQoQspx7_=Cu z907WfubhCL7}st-;@#tFUv@MX(cix4XbyoOxDA8+TyZKgL1IYV%Z|#G)Qt?G!0xt#ke&!*i$yTrVlMmlK#U!8sT}nUv{#4i;!z|ZB~A{^C8YK} z79m*d!dG}(pWm+k^On#9-gOhHw-8OX0Z7wR>e~tK|;u*sAZLsVJS| zHhn1&KLXf>{i+u{0fdPC9O8>l=cVGP;_jr}w_!qPkn&rCg2Ay5a#Fw+l(;{%c7?C$ z7+TfN7j{X7a!{M9t`@;(;=IEf-y`QQ)TcBDP0L)U)Otk{vz+Ih$7@TpVK<(-rkZeI z8${>MCyU#n`T-9J;Z2!ANdj<}ZC;p!MjlX-KfuOG<+U#NwBRqNt(|16r466`r7$vD zp%c@8ootUSOc6n45)7*i?L=z!`W7le9`zt5I;XTaa8EDNBz1OVg~;7r$uE+VB1h`Y z>W~HFo4k?}Rjfpz0Q9Mc!Z{Rl)Jc=HKDNl~y_&bBgv5A(t8%vv3AtD-uV%P`&1Noz z0l+W5r%J%%O3*emlCqJZhLfe~54VzU#Px_(y6J6t2zXKo%LvBkI> zJh@)72=aLwSzKzLq9PFt;x8|Z{dN;h0!q$N{&#MkaJDCL$#z_vB^&vK&-ErL9UNXg zWoJBUgPxUHh>T z86s;!%byh}8TQV?Y!f+~r$O>oYC4sx6u)+V>GDJLI-P$X7r(SutPJ$nhEM}w+9*Fm zVG3Y2`t75Rk-hjmo*XY1yBRP7!60l0tGR#j3d5po6-dK?vw-Bpibd=|Zw!w9=zts| z;DJUfzoLDE)Oz%Rtt2C@2&W=_C0zjGDk>pjuzfQw!m<-CsD+8_uXhI@_t z@kDb-s7)66kU_%;1y;0G-tvJZWhA9C#zp-sJ7Pba$dhc`qJLqMWvk56vXFC9lw%pJ z2S|ARlsp)XNaD?Vezz&BzoF!*qQECcv|wxrjmO&3EH^SP0T$${*)O zx!w2Ma&D#b>XHz3?W-B99g{0?=0aHVzPwezt@E0V1~L9w={Lr$2wPZxFhj>K>2!99rwQVuX5QebJUcCxBcL>`ZEP>bzj~e zLY?&)Z!f5AmUG~IGw~54qaCiB0u!RTOo zc}*WQ)fBFcJm=j6~9uv{nwF@)Dh^aQSoPhM5{Z z9RzDr@^R4~Hi(!36XI$l?M1=}UfqO>-<8685%yX_(M~d*0(ZFJb(G2fWzouRI=Xzm zyLZ`Gi8%*RJ47&&5Ph0?V5nw|eX7nR(6DXxP5~ix~gNV=acQ%hh`b@arU=-I|!EK<` zykYgBd)3T?nZn`p3^RdXaG-4g#7j#1R0BLbi3$Plg*VG9&eF6o0tP zXWAP@{L{NqqQm{jwNTJsl$QuruMf7f4tOKtmgJ2Tm3e@-8AL&-JFLOuw2a!hKAp_K zCet*exQ2ya9(kdCS!Xnuh+rFJ&m`MJUSu5KX9%O(`~Bavq860U%~@Tp-*@pxC)+yZ zgx(bl90}{9m=zVYtw4)Si?1yf=HJY0+IfSnwpd_wRnZ~;h(Cjq)vhY}1PL>Mp;s>e zTIt1Jl?fmb(X`q7*{-X2_;8oALMH-L)!MFc6^pw?6d#*QsuD6*oeD9&qPl7k%o8Tbnl+=*ca9PiKD&rI-=8gFHNJkBq)JjFG(8ZuS~D>ID&&^~ ziauHHj)#lgKCk!J=aVTu@2}GkRDa>ba#V-|8tKbGu)-(B@Q98iq!ZonN1G(}eI}3p_dDP{XPB9D%xQi0G z!{Zf+_6!@>U(~xMFQr3kqaR>~%72*KiIA7Tx4Ml{e5w6r6KaIG1o2}_7nPR&7|4)| z#ZXY$gJ6X8TMi3d^1O82U%qP3%4vxQR;2P1$FULoRf$Emt#dHyg98!p%f?3=j%Nk1 zi8D?*z{-#40+?OiQC=Rd9g3dr?TI|`opq6=!!ll0ET9*qJ4E*<8X?#fmm);krJf5N z-_7n1;h-7$!kimf#ZO27Od`pYu%fX+2S);Z(F45@Fi! zVC0|tn?;fy$6#5S9>mem&0Rgi2p0>M`6?GNeg6p?$lcT{Yz zO*+Y_r$_OH7B4lX!oR~5&+b9MAu;?w(lq>_N~ZDY=Xgw_?19mYKFbR)H^nl#5K5E$ zD1Kc5nyfc@*nJPAT1;pBWJ;p)aP4C-W zv1%1h!o*a+tzmBgz4$aI_@2Gf6?=xAuabq#w1zc{`%G}hG3(7DIoHTRIPckcN&M|lwE z4vQcRSne89G{N1>elY7VeAd?E$`NPO13u_ zdTKU$YBulR@^=bCI)wpeFjjN*rHc)kzM)x%T9dhisZS!46gJf>_y|dm=MZ^RBA(y- z8|`trAWx5f!2lVv>FV)PaMSz%Cm&&4mPBa*zJn{#G4FcNBYm5FKnm_ zrO*VuJAJwv5N*#36O9FoR~7R$tlo!jA-29((4b&h$w{=p6fUP?8x9P=t;~4)>IWUh zuOiK9A}j@ubT8br(b^G~%|8TyfpiCgK%n^jx*(4fIs6A056|;0jlWMptz(_-8Q`Dp z&UYvSRmZ5-GLN!!h0JND*Q46@K4taHXpg7c51Q4b0Bj19_{7XGlcRvgY^4g77*^A? zXUK0Bs3xrv-lGe`At* zRV>B}S|b2ig*Bnls>P5hh!h`$(zl(+jN(pPu5ng@L^--HABU%^A|!!78j{fi0Xlb)M)WbvH?8sFn$S4kO|2Fsypf!8f!XF&0)5c)>?dojD0 z^(scri(TWu()X*wS4F!0Wi`S86M6Gx5R2o{}z3cbrUe7e0aj6RWB7M|u1c;m(Hnd3)pT7dX zU~R>gh5$*u-L>_G#&aX1r5dYF;429E{3Z@4BLGjagTRTr8$g86G~q$t-2RRy!(I& zL|ORggTrDTkSTYzZth=lsBEkC^n38=i=%e~*r?U$_jt$;ckUO`f;j7gH`0NVtSA5N zgZ$S}wilcv>+4H8%U33h9^N|QJw1KE9{%)1$3mgaWIb@g_L&;o7rlv8!#(9pQj-mX z9}hDscOFTE$X&S_T`|vsJjX&n0JH8lhBpv~`b@}Fw$uu4%)#jvO4W(xU^$cNC7pdg zDVa4?s$MG-vkAN(e`OE_d}8k4dp??aE_R4v^vJeAE-&{LSD*}iiA_i_M5rMk?Kznn zReExSzuy*S3wU#$7W)u(@Vj~R!jgl*;5}d6`bUrpQ;?$2V1TBIfrvHB4DI%X=yC2kMe=j*kq{ zOP7CkL-vex`fz4jvZ3vu_@urEx3uQ_r!h}YIv$qZ;Ke54t}hFFhM#l}uBs9LlEn|{ z-I6GcEmxvM=`H%~SVKoRj~Ej=1DR{M;`RQ_RE_m=D}sPgIuVKs1LBt5{PRPPNCiay z#W3!wKQ-3R4Y58vg@~7cPjK=phPz_^egB0YP#BLI*h~{DyOg)hZW^^%S77Q|0&~Dr zBlHqG)SvWH`)Ew+{T{RZwz#PB>CVmAdtLR%=TqL41(iaxM)0EI^W$GoP*^Y@D0vXY z(nZAxe76=)o$d-89q{KEdN65Is*AJ+l^BYbN^T#q0>8Nl9yLu5 zNe1l{Bb9`qxJFy~8&J1(yOtt5;!O*-;;NCCNc?-m8FSwCf z#8T+xx>(NP#QjcDsT11l*mC`yApJlfHGEU>4s8z}JD;k`rG zOXl}}y7aju4uofiPF1Uj9lP^z7J!G{$`rzpH$c)s6~l7Z$uPr7TGGeo`aC`HLlP~& z^O*iY+%xC1dbMkq12&|Bju(__M-ZH+xZdJ?LHFdwvqJYc=kw^s^_8 zF2M8_mZJ9_OT7ydcF6c>W{*W>!>9g)+sMDjK4!XuMbqG^Fk5KT7v0+Nw`lYrbWLE> zg+fyo24qR;HkC9`zRPB1s9(QwXHx9II5tr%_1~%zj&*M+lHcc)_RLy!> zsCAi7w4Z;{q%9*o47w#4T!dts15U2o<}=y|>pI*Dzw7|Lv_{K}^w0O!B))06 zwTb^TQ&al?VCH}ECFtog{J?)S^K<9F@+tqndi}rpiTcX-o>`cFXU9zUn^%k6} zZAXWh6dO~Oo)W8h=9EyW?Yy>xlf1W8&Bu`BFf3raT9!w6HN1W8IsdXB?e*pDdc=U5zskkat!Zu*kF6m5#l z!-##3q!E>eq*(L>7WBHk1V5z_lb{7>4mJVcIz1S{_KE-YRGqbsRAb_UqMlGaeqlin z&nyk!E6QRhg(AQ!>Y-9o!?_&JIYrOq?lJhOVfo|10X>r|-bi$4%ROnY3o#4tZMQbmfOZFN1D@Gdzpm)Q{vP z3o!|#y&LNG;KOW$v>+n0E~@pEzif6|lm7gAQ?IzGeK#oqR~ci=g&F*IgJs{*k)T(B zzg3sK0xmd9^_={|&*^E+%Gc|j2?V;R}E8+u^B_Q}s1{LJ{Aa~eP!;*6EXl@Z4%1Z5$ zq>HHoxDviTlU6TS2h-N4YWk$l$*=TR>9o=?ts5!Af0FVT%B(yn#KI`b4*j%%ttU=A zar{*Y>SBat6d~#L$q)EQIECPP7hR)71f;LcJ@xuhL{3C_dC2U@`yv%GdGc9>eEIH~ zVB;KV)M~e7c#>u-b8$vl@RTLUCM!ki;Z%RA-J+(ZQuJf1%0oN|h zPg3z1-}Jd6#TW=U`ZN{fXt#Nd+p(bVADarctX08TB`PWX@rc$Cbg6X2G^4dl!m;#& z$3me*hSKJEQmu-k?s6&a5@IT%J7}2#V-O(JSwCJzeK=-w~#;8RJZ2^RX)08LGr^QT{W4WrlKg%RJ_iJyQ@!f$=98^ zgPg}TVk^9jqnw@5kMk|ZFY4E*3Sh&1Gz;9zW_G;NYBe*c;Ztbc73Fi~q~p{>+e66A z%gQa1jw+zE#veL)QUDx)q8lS2!Nv4si)~s5;)E@t*s|6ab zw&XVavoO@X@AJ&P-1Bjh?749jw?C6?(=x1_%4eLCCN2L**Q*e)_TMmfelSUY82hxI zrF^b8^zhZ^dW-A(ZaTfOl{nBbYWzg?3%+th0~WL6JBgSfa>oVI-6h({4_k4Sj=i#i zlu?IxJjCE(`VPcu`aPJ`zETL$D1sFsm_>3XGm>bAc0En;Oez!^;U@)VYpuI@_MfU$ z@zYN3w|9(^b+=d{0#O%Qew2XsqB%X`M$3jlqzmVu)m{|y zkUf$pAO<)kE%}}K=Ynbm#o=z z{tYGZRNQ20NSs$yz|_ZaWzY*8$i*~?W!~39NfhnH`vpCJEY%qq#NOiiiq>j$c#k0C z%sc1t5&(oqd_d=V-aJ>^L_LxDoV(}xPOOGT;By3FEJ!RG9!Dhp9oUX(raVgV_5lg+zdl)+jTTPEqu0qwTKGSca82#w^}Nj3)xo`6=9Isw_K&zQ)qYK?*R!)KdbnpCD>Ws^aR*;&wFcvD`_lq(3** z)}P_6SbE%{ul9FX`8%e3VV3v(}fB$n_<>Rw})Y@yj_=U1wDz?RgDcV3|Ps8g-O0$fdFQ$XMvC)wg zZA>Jg*q+kRttX$O^Vf^^`sYGdJ0Kyu89^gtI6pc3*h))Xy^Nrg#5oK@dNSWWXgv2W z@vk-usRh!mOsv49_jB7Ap~^4QuE)jp}~S?Rr^4(LNVmybDTa#PbvQoxKgn0(>8tGU|hj(3ATIl{n+JZG6@d3i_xxIA7}I07Vv zo@|h&H==DN|C9t_XNFbBE^yihRroAyqj3uKWxe=swq@=nEKUkurd~0x4))#t<~*7W zaZfw#n`K*ftzr9Q!K-u8mqg;V>c=4Cb)cTNU0J>S;pOggdi`L5jAb*aXWl{jpA6_L z=?Q1cFpF%<5eS7@xSjty4Rwk>U34Fh}7f92xkTWJSyZ=)IEz2?%_?6imcK z`h|_2H5Ew1TgM>kjJZ<;f5KB>4A0aojli!ly^cjt{_#*p$MfSld?wb~-h5xzc2Z$! zx_8>s`xG2-<$uw9(`Zvvf1jBVLnnoWkw!3x?+K<)#ZV$$Edmva<+xn^`w)0e4@(?` zf2&1z2FGKzE9DysP?K96N4K^0N`s+DXwc@Xf)BXU`QO$^GIE(Ii-kzFZ$azBlx^{K zVZ1?S`_dI}fxLlk`ZgZo{iaE6JZH}A$4)23{=vc(QHWCem`=$#$xtwU{Eh9DOmsvU z{X$WvZwBvf`we4(Bj^ZHA$foZdKsHP#7z93lDGS%ES)w3z(mz2lSPJF#wQu{J<>K9 zw&>5b`byvPt7tI^u9FfddWP^Tn1zMNF~MDz&d?~tqQw69%-^EKuE`_Il*yY1^!zb3 z9I#wL96?5Q3`T_toXKK?@yVm!m^5c$i){Jbn#2bk$;u5V(jOY0FM9%`MKlm-zpWuG zJDAU&p*L4ufnNVdc5ZTBfgJnW?Za|O;VpOCzIl2RszGE2T`^1;N4a3;qq!JFoyQ{4`*ybedicNmfP?(W=a^Q z(f#nx@n$(K*`*a{W}{&9x^OPXZv&s;xaFGA7P@G)2P};cfw3PjbrzEniL#52(}hrG zs!Qnc-(X;B+!S+a@B!9I zKyZr+Z5^x!v`9(ynIz-m@W24cH>Q-K`DgDuXf*O{cZD`S*)^lGLPiI~TVF3(r`@;j zv$x5eTmFdXyW0mq3EV`=?HLV;R6!TjoSR?PvzUh9IRGZExL2_w62KLRG|g`} zbYP_h)E$A(oEjs&`agR91%#UM=Y42}A6GBy>+jq4m^($MOdX!Bxl96-!=t!0wFS*) zPcv1zhbG2?fF)(`n!l5 z+sU~x#!AwWnbu3%Zqw^|CFlhXviF#G7pJAg=pEPD*6nzQ?fl1ey2+Hw)q1q^=`O^#{u{4(C~^pp%Qc6l=7{J zpmfI;L{xx1v-ZY9XcxG?8|J_gl~!5a@|#{!DY4wXfJCDkzM-Hn4@B2dGD;P##~J4r zAiDqcH$}I-`*h6VWBftyex>b*@!}!rP4?p!xL5vR0fLPo#f*&xf*|EPq%nkQ-IF6D z6ohXPD+3j6r$R!L7+YUe(4ax+%O z^+`3{ZXg((GIZB^R{KW~yBuS^(wL_)!_n+@-k~d|#h{$Hm={putgos5a^~*EHrU-~ z@}km~{OrSbGXmg2J$J@GI|;bN8OdB!siw~rH<^^Li~R*XN1#|_8S zcr|LPEBAjJ*H?Sd?iy`8%s*^1>GY_gF6vRW(I_|Ubwn49Y28&OBkKPqfEh$Qw8XkR z8WW7A8-mMWn(;#x-@R1$fSG0(bEso!)m}pEw-UK)IYJ79$pEh*6*tJA&_! ziTW-5E>=S9dcrOO)BN8Py&$e>ulDg#_b(z%f$bt<`W-ka(bW>G$B%RcZ>=7Li^vc} z&6VFD(mP9FXBt@seO|W1NMPq(dvwy27FAO7xT*>MReS|zp5AMs3cPpc1(C-I#BJZ8 zbEU0i1tNeMGbNJ2*QdG^!E7;iPqTS}&deNLoPJ2`CVcrvfBk}SX;%m)Uu!doFcKQm zt8+o4=(G59hOKV+f9`zUJSWh~^d%qn)m>;~o;I;@N&Z+PCXvVh2PVhPtxuGl5p|2~w#x~MwXz@kHd>tco7mfZV6 z8lIQqplbe3drhq#_H;52ArK-_Dmv<$3ZmORdoogSD*NKJK91_qPQpR^uJM$3d>oTl zDy>}2GPl4XhRVB`pawT_@T>dI?C0woFoUU-jq1ow61`8qzphP zc3!nir_o6cQZfxby~8oO<%Q)h#u?8I6Z|L;^w;TCoK0U?xOUpKU~xXjJ+TfU@@wp0 zwO;3rn!}lu4RZ?hB@s>XtoDnJx0z5mKJ%s{f=0&Dl#xC-ULg&yK(7umk` zfzU9pHZ-38%cHWF1)%+bz_v47d;#dcb&WbI|8<8ds(Bto{g&V%+{tjRS(7rR%qWSi zlbAEqToy#hle8Pp>X(;tq3~-*(2M4rCu6fA$o^8nSpJ#KW7&35grKqV<3wHnW7<3~ zQDoc3jPcI`ooA(NV^(AJ0^>K>UBgQ*S-50Eu6}MuIJu&f-}s?u%U({u$qRsgm#@LZ zjmsCwi`cARMy%}u?{=?Iw&D~$08kf!TkRDXh@ zayWimB6fa9=bL0yP+~tr9>6iZV1jyJwpr#g>O!^}#5&uJF>liR>E5r zDB=t{K39_}xolEzTAQs7mJwK+H_yynn2owuY-G7~qmZY&>!11%t3Q{aw8nn6g@&}a zygwWR9V-=pX#&@Z!T-T$wf_%3!+yc%Ad>-4tj{n1vCq$^{}Jc5|JC3B)xQ7!Bu@ih z>>0!hshItLFZQjsvrsOP>@h#@{`5rh%GJc}v3KLa&UflFfY!#0u=YPNi(>)$%*PbM z3UDwaxp(4QZ82>10clJ6aPOf*dXs5^SP*&Qo+QGWev$0@FFR{Z+0O){{J^?=Q}-d= z`$r+K#`^lk=G@ci5BH7FOLeA~_8iy*C0SJ1V5O|vh|48w{R&85m>aiy!cR| zSP`i7Y3u7Q2Y+d3uQBQE@=77{IFLYLSP0SL{_5Pd>7m}W>G1i?5?+me=b&olNrUh+ zFcDAiU4s$LTWwD^FTSCkSirF0CY7ADx8QLE_uUROk&Ksj*V1_GW|ar|B(KYkd8UB* z9X8Pb;%u{L@KdtIg2uey=^f0-w;YLe)(>=W-iaL}$(J8egG=*;HBGKudyWXhj}%&D z%4kYTe_;)eLS^l@wTjZhQb>Os7Wbbm<`;#AgLRu%F495H5E*W)fC1`eN)Z^NI{a)j zEVA&M*fVmt^(@_oMF^3%x*a8(@%G5>)508|x1MAd@&-*#Flqboa&q4!D1LbFFWl{p zqyCxzvuE?tO8m)998DO2-*!o*Xm}tO@1M@b{MJy&z!OyB=RSIm{m~`% z0A{i~oAcXb&mf2@r{GVq+LPL}Zjl*U-%Y>l^wMiNA9g2yi9!jw@mp=de2<=&$A#+} zejMuNK1}h<9z8gNJktsKCwxh~z`N>>7sSHVRtz5&s#f00c_o{K8}@x4bVKFY{qbEM zMnF#W&CMF8OY1Bbup@^HYOk`~?tql8I0)S4-v+=Ns#bsvU?* zgbQm`T8G}dV>?_PuQuC!5)~>$G7)*Dr;QJ_@SNchHKq1e$HG$3RNEBQH&Xv(7cc4% zt}1^+!9&$(bAT0m_t6MkhhCwSa?QiA)ewBr^c@|Hw(YSvki2Da%PCt#$&*LrmFt}K zlhS+=2>`6#v)GQKhT|*sAR%;wR&p8?i`c+m5=&Hs?J$UW>Jx1-oE#0&IwrfRnzG}V z^eUzEESdemw&A66cwDE;HCo)}FrN5=Q;L5m{j(P*5K$pQ5#=`Mc)hc9(F{8%aU&{x z&+KI|ZX&GCrL7m<(HC|}BO)3*B+ZS#IoM%q`3Vrg>od(7bIY{NN$_9By(L_mxk|;_ zbMjR?dWbaNR?bqkO=4sr257yg9EmqCYW?Y;5xfSrK7S(nb-;_c@6`Jq{u9Gppp5Bp zU&U{?rQ}K*$L+1R#vFC65lUJS4}Yx4RBtAuc}czUyqkg#NAME#c6w*h|19P8WQc5Pqz{zM3^qRSz1b*=_Hs02{}}tm zN3)D|P3Ibdt87jUx2NFX)A1xAvp-V*s~YMT<5tHhq^DOzSxIo5W1p~#MrTo}ihhy9 znV|Y7!{N%rSym654tj*o2m0Ge^WEYi?HN#g?^>DZ8Qm76-G}^HuATio`S9~O>GiX( zwe@r5?qQVBYVAz_z~{W%n~eKhKNMbTq@U}+w%(<-INSZe*_xv@F8lLVp#HfCjQi{} zY+yGeW%t{N6$j!IF6)fGZZc)m?^nF#;S8TygCQ-yU(x@JzoYNtf4}U`JeaSKKXU_+ zlt)umXVpwt(Q%9;m1ARJ@;U#vU$Iy+Nx+^j6(1FSa1#U{@hjaJLT%@22EQa3oJJ0VWI9j) zghwjWVDj^f#ilX(v#H}#*HvK&09G9;KYntqCJ8W}zS@57eOl{|_kvI&VAuLeBgk^c zi}_1aBw&QW5QmAjf`lod_=3XNdKtuvjkQpNqKQ9WuX@)~C&Iu%K#_nPt5fDE;$02N z3mM7|w1Vm!SQ;r2v`8Y-^|n=JLT^#NK@j<|op>Q+t_HUs=sJ7Wi0{bt11@6&4t2LY zdx~jG56_w71QHV}9Lv2IrOL5}QhWh}tV*vjAwQogv$#B)!dLp2W>#+WCWZ^1#^TM{ z7^O$)uws2pjow996nf5mN8AD=0Q?O5QjRGb!=6CjfirP2%5< z`fR1#WYX?me&v0^!95U7&(>0k`fs$_-R#ut6U&L;BazXhG{|g+F!yW z6&4_5;Z#K*yeHqep#p>4p31EjfjtlK%@+x5&W~|ni}`K>lBV4T6Xc%l%)jFEgxAC+ zGq)TSW1wq7jK!R^>V)8WjF7}KSz6nVhn3g-@~sGMuC|!Y_QOyO(Z=o@wc!x#!-voE z70>ZDMMS36sX69*?E|7C@zImE&L=U7@o5kZgnxo&w!};{ivWAag^LmyuuM71KIO4% zJ_)?da1~r;dXWBJ;a|bbYO!DVFA)?H4o~uT?33g(HT%(2=}e1V@xtsm--V~_RMM{g zsZY;@?wb-1rZl;)jJ^X)Em#O;=Mq{j z7J)0x$$$uHIL#{R6I4smbTCs;dF6Q^f3@?}#)ju^rjyhE=AXPWlhvwT8V91_6)EOxE2acuqV68w`0KO(~R z1*EKk2)}$l8y9g;ufrre207hxWv8A{E-JBmQ)6L9i{J7c^HC&;2FFacnsy38#FJ3b z)2Bf{6DW`?Q-|qs?k@mIZRlk_RB`>WuUrT2zpI69Xps{7Mh z*R|S1S}>(T$M(z%F#{uz{fTkYhQ-tEwmhcr;NMi$Wk*cU-xNh2H@p=$yuWVsJNW53 z?@mR@nshret~YA|wU|lv%VreBU}|-yL?Jf|Q-JHMeIM^)GMkTws}Bn+Wo9eJ|@p5X0M3-LBKZq^TtN_~Dlp=-^8y zBM+klA6%Q9iRg9vch0EoA!Db5PoBp~#pVMm^VJiyEBoiG;c5P34*dmCt%P+Vvj^wi zbKht6UGYL!-Qd6~2;_h3*uJCA3Kt-=D&F7JQXuCI+nD+-xou<5@19GI{c~bFAWmI0+*N51szd+x$y6uUrWc(Z9zum0&7?q7Hhu zwCc7y;%IBYp?((*DJULx7YEtkljow!8U_E!fEdq)F!*#e5O)QH3u;(t8Lz^H-NQ;9 ziUu^7`JVX=BbBace0^j*F1Rk%N>H0aDXk@(v~n`IeB&EdA)u935Uph^Ptf<#sYs^! za=T8rf*0RIOys4wpYMLQoeGaEe%9vo$+;<33&4X%% zQ?l3c%yKZ6u97MR_N!}XO;tzkgp*Jts`+yhZ=vmfmmxs8H$QdpYJEVT*Oy^PX(0@-9^zhR!0 za^KV?EO&$!A9IE)COfA4WOfAc9{PPyUkdzwLOv^Z=C{p!CoCd+)PHNzO`&6OOS?Rv zeYhh+A2$rnKi$}QY@#CiY|RXMI5Bbky)na6Uv36`pV<67U$DnHyqq|up~p=-j~99L`m}udngW_1;*cQfxc}6lf%_eEl_fi| zwo3rmY+|5`I$s&EMmm4Y;PdWIJ0WWSEwuOE+adK6_&rVJ4C7YlYMRwVIkIp@*~fRD z-eEo{{5$Zrtu}~OtSb9HJ z6vi+qh_BG&cU=M`>AT!(ddk3BlF-I&^g7DeMt(_EjXnAm;;r?IU_Z{pil%Y+;95Bh3AT-6|79ZtI~c|0@z{dU?GOUF zeNA#U^?GR`Y{%khQwkKbrp=}-+mp4(qE-Q$$sK-!IajvoOizl+W-Ms|sG2ozSR-uL zHcx4}gYM@RN!6@-A^0=Cz{-oX__V;e(T2Sx2%>9(8R&VZZU}9%e)znDbp6{0Ck77| z&nbtlTjrqBbot^oj=|o-p(HK`FD3;B1XA&qxp7`bA)2cw&w1#e)XD5ZDjb86o_=^s zXi1Ym{&81ECfNn1m8y^w@P66qD5)Q3+JVw`-&|RAungBd$d$P^aNTUCiMBEXcr2T^ z(Ut_|kau!PSn^+h9YwDyZ?pwxayU{qPL}Y;y!O4v{pf~>>yH5NRjVTLC7WvH7 z35QbI9UP@P^|ejnEdf(|O?!F5fC<}NN>mN;|2zXe7iJZZ0>*ljRUm@xmN25%)j#Fl zz#3oEZ%(5;T}}{z(jx*{`DN24UtA~Wwx5Cp1$aFpxC@ttSc*jQw0ka$rn#QmDpaBA zt?wsWR6?p8TX}4fi~l@5Do=g7gg~BRkK7X!ZFNo%-q=#AGJ?elHQ1I{-S>{&Dl*Qo z0*wRN`rHK9B)oqyLC$V=YhUGdq3caSB5OfFv&WJXco9hfu^Ye0R`gQIEY0Qj(m$XA zfy~EbRW#_=Ifji$9j*yh{&Hd7@)flQ9{?2m!#p3!A4EX>M4mraY z+wU)}<1<{q1(MHs=t;~w!^ z&P`6!H@oWJ+$aaOZ>_!gA6Y)l2ej%%q#FJvC**8-Wg1p>U%=dlr%7VhOKl$ZFB}Mtg*_E|5rKuTdS-E;v!5&DKesclqe@*I39M3Fz zz+61V20QVDLY2Ka2fm!U@IQy^H1^lNt?>)jFCPm~3A#(~aEkD~0=dTCeZ7TRtqj0{ zedk3cvUve@kXjQA6vqIm0%pwncfGrm6WP~s16yy;Z>Gq_(?Mbr8rII;t*{{BpCdfY zkJbI1-n(Q%Y*(7ed!Pr=>gqo0hzzV+Ux~*z+S*}CA}~GQiQQp91iS{E&2KD-?+u!n zTjabIyO^}-n+VUpd9Y*I@%}%i&MGRdCfe4GySux)yF+ky3GNQTf^FR09fCt}2ogMa za0%|N!7bSB|J*aiy$`#etE+02tvSC1idJZu0z?xaK;#n}{u_@i)CXiXHC~p2xo#{C zpKLwgHpqJB$1X2bTu>)lL~8Xiy%0q(1h~V0P7%Yk*qEg5k3EiWJjf(W5HT!3$gzO_ zaHciWx|_9AB`G094tP653?+@daTsdXt%j?@E~{~w+EZnR{3xQu`+hOH#ht6Z)*2o# z2Ox=0#{_W)39`qKgEswntD6bbn{23j zLwoe~N{w$#c2PI+`(OVV51D~9{kwww2?sjm7*D-5(~Cn5*PvqMN$C`HpU_1Srta+8L!50&jsdam+xKBFBoR_BX3TBI!#*y9*>F z&&)qDFnp)wT;(xm&Wt-pB;+82lqsp^EsYuFqdk7Zu*yR+>ML{2G@=4(#sx=4fTEQhvivMXQsz2u_snStA-22Gmfdy}5QS3kePSX6$Sl~&$fmx)AQur$@W<8mk-GPg z+upye>2`09HMisZ(2^3=r9`jp!a2-e+?ZJIhEA!1{TO&i^$49nISR$}mr_~VP)C-X zO65TNK(xDe+#phy0&InB@k{_A0i>N#S=NJmCnyLZa935ZhLB_U`)kV;%JODJosPP= z9aNtn6o{0$+&94qX#we+7B!P1SIVTwx^6>SH^o#zOF#7kAH?n=-oJ|*u%cbSXq^jz z=ccpKCiMH{E^`Hl2xQJsu8R~=ZbsNoqLBDZF@>yAHT{N6El)g`gvRhDQjm+2piHR# zVbjgvj3vxh7#cx3k_#I|7rN*2vDrf(&ELxcsY`5V9t~4|(A98LI09*v)|W; z!5Bof(|;#4_1b|c_EmE@g^L^q2K0_ZYl-#(!K~(&VpI-Tp*ld|fKib#SYdYqhm1|M z{4ZeA#qQ4z`%PUq5;HsA72WQw^i)>L3(Ll{d`E7MpFQlNbRvNVKmRtB8)U2dz*nc9 zQ+W3NXqWCZ*3j(`oqDsbWtbzMk#m=1&ZHvxp<~L7Wo%3bI?h7CY}7VxVD@5au*Za6 z{HoaQ{wW98&4;9>p`W;AFvXq_U!H(04}9jzk$lO30R<}IIwRWzH*L>4r|fgye$hi} z!O8RjV-Mjqc}4w^K}n)~&bm+1ge;!}dafJxuNu00vvn5hQgOAVAFLf-{KZ%@*Uqeu zf95FX?vnU368%sXi66o=$I}o}LGFY~c*>9oiO~ScQnLH_I7U;PBp^JEdUe$pD)}3w zf8Bwzy1O4`&}eF#t!p-W?}u{1S>+wVRop?rWl6kOTEu*iVU0g@sNuz91VF|{<$)@# zIYc{@<88Ur&vAP>=iEfKBh4F?$*G_9$x~;?4Gt1jXJqG+&7Hs0p=dFRKOwCvi(q!nI5=O+kRJD#oF_LBxv+U3*6{}NuizpkY zC7q`zI=T}zs){|!Yhv?f!5T*oR6+qaaWi)J1K^$)#-CAycwF#zA>ss`<<%RDY--?mv5dH

}<-0OCC$dSouFHHiHS z`!Hvt@{JwW=arVAq@DVFEn^KBH`m}(iI_UA4x*I;S>)|yB8Vq+3ua-@2L#wJ;EA9aM0Y+iCc_YFY zL2L2X;v71RQ1l20wCw?ezI_fPP|r0lm3LA-yc)}wAk!({dAjLALiq7!Jl_g*mdh@t zQ2i;8Lxfb6?&HC5z5c0UizTn!G!|WXpI=cNq|JF+q|kFbxe}fRwFu#47)sqbUnc1q zc^JZ(*riN>2b;U%216nAbBM+MDigE4Cr~FM2|b9YSB1vxfqN1dw8BYs1qH^Hd&;-+ zB{3G9dkuhhOBOGaVRE>FjVvE%Q$@R|e*g$X?k|ecQ=%2d^DSHK$LM*(1k|-^A)qBs zxBhy|I1quyM0ZYF_m@xPt11@JXg;<;v{I@3E_2W=4%<|*#!=L-{5h8vjArDpP`Ogf zL6ZmN&xG zegD>Q_Pi(wE(Hjy1p!y!pJ9j49JH|4@2r$E&aAwnUo^h&<3;3lK9|Jf_aA5tqatIN zfOnBa5V)Wk?9?aTIC=8t{;78pIh=KJ3{L;5P9D{h0++&he_fVVP$$JBJQpYR;egIq z=*Fl@i57#CbxaC|?AGW;Zd@-S%>7)v6ue%==tEcGE$AW-_Qv5;9Yu!jDM9!NVW+Cv zF9Xn;g{e=2PF=ryIu1Z;Yq+As`j^%k%_}T|!>BYN;B!;lqMNEt|0lgZXFAecJHY{Y z@~$gOpzWK5q87&e2zWM-&v7k#J$|9g^)eo26Seg{%Ke*Km%x*4_0P*jg*hgI)?`u^ z?%DJy4+`za@X8mLA=C35ygJxHY$@j1Kvds?- zCftM*IkrOA{9KzQuB#sWI;Y}a_GdU<13m?#K}i<0SjvABPMJYMTe!B5yYhnCW5XZZ z1uD_s4xCDShDXK8@r-jWc|j@0O017K30)}1ubg*|1sqQhb>^-?a0u=xq=*BVLIKmTdj+6*)A<^gmY?SK4R zl{$<+$Np>@_>GG1HrXyDH;FEy6jGJ?OP&1SbAF8cr@7i&Vcyi3faeVUz2_2|ERX%` zu5kDiin4bnWyC!c{B@KbEOHJ=$ z*vAppIeH~C<)r$z&42t;U7+as6?}lZwS$r!uc4iNnUcyA==lb9ltE!PG13-*Bf0F7 zFLujGDD-&L`bUAuSdx$<-)%dv8oo2wL@uKITP+6Paoy$&cfX!qtWYx3a{RzjJP5x8 zmRP1t$M#oBhcG?Nu)rI($=7*%<>h1$$oB~+JhvU)#pXw(Fe)?12yp$6N9c?CNBrWe zmjyGgMR(XD@i^3k)cgMw zREYmwjVT_kz{MLsJ|h47NdkXf;II6@0sG1#29>9lnjo zt9Uq6Sp%#`S7Hf`fA=agKtVU!oRXhFj0T&ldl@!JZi7sUmh>#B<|-jgu*KIHK#X(v zh8lczaxIK;dUEK^Jb=5?$~&Sf-`Sc|)oQ!-V)%E8^RIWe_UD$)HBgEMH95RoksNap z2vSYDNSy`}9Ssjkefwhn#xdy}p9%-t>lO}L_)m4rp%@5noAebOC@n;A62y#EIsuwk zix>K?a$gn(^L`E(hLX}wM86BvTJc+TRij;NNt z^sdH>z1i1&$5|x*pveBwki$2Vll1h9%mf73)_|q4V9fpq;0U6Gc{^eKTOv*p(v@uwV zlMd!qoiewbq7E|AiVww9Q1Zk(e`TFG&~?2y*BA@c6swGIkdy11QA zxL@d{U*c@s=qT{sB)=waq_!VIGHEGFE z%zu2JxWnW_#ep(AQM!B_B8n6;ou8opcAr4L1Vd&b%I)~E;$2Rci5#_n6{+)8*V)n~ldy_iFf9()&9{G2jx|< z?M2MFeC1cu`LU39D007OAV>O-43QM~;7K#Lj~T$M7Y(Lu{2t2}L{e)unO64hh|=3| zy`9>;gx|B)B|21vB-eCe!uzpgGPL)`Ah3S838(+y$ljYUzQeN;OK@^pu%@cE{+I1# z-jIi{a{A6WXqeQ3ctI@g{YvG+@7d`4EYrWj&`?oEvfXZFFRsgv;JbICkLgV$vR1nU z?@^$RJMinz+>>P&p28y;!S`FiTtc((MdB}xc9V{(nk7*|lh;2?kTi*fn)$@m#HJM9 zYlfSDHv_#>PMfW`XITx?Vz)XR1UvID&F}roW1>wEHhN{uR$SWa4a2JclL!WTYawAx z$(X99NxrXkH(WfU7LtdqR?33Sv7qKsK$M0NhOK`hWPb82A^`fT!W={)E57{=>4wni zXJl|ipL79gQ4l{hq==Ufx}Yc|>}EXF3^BT#A3N$z0jNts*Wel};_RpCWnI<6h9}mS z`qqs$sf|bHk{@{x)FDaa*lN`1!8Fhk^2mQ8I1H9S9?uQ^$CyZrF`>KBg9+rc07oBW zTEKK4#`Y^nb{o4st#j?7ebtl1=8%sf=MNUyB^ELJKV;T~Txo>0a$!!Iw#hd>I^(qp z3V4%;Lq)@K;Sbbb9zWKlHcIw|R?$a>)pxp?KmC01x}t(l@xSEv&~Mx&b!z^|naGgt zt4QHc+ki@r%Pymndp>^7p%iZM1Rg&E<*E339+{5xH-qTB`69$!^0B!PEWdVJ9q>`} z$b9B>C_Kn_8C>%?eKI78UFz%XFKIW%2o9hX3w9>D4a79SVV88vsy^D_1c+4mbd2}T z1EQ`BNksLVYDo5lr=!=|R($7O*gqt@2fd>x@@Wq_+5GTX?~Bv&rjUB>loQX!2um% zaW_ilBd6w%g5Aeg7C3S0oA4&J+K3vCtIDtuTD@!(!rsk&J~IIFIF&JKsj}^F$hcw> zXYOPPopB!t7(DCJN)HH`Tt2rl$q)Tm*zitt!{1^RB!4V# zp3S6gKmF?Y%YhXrAQ3~b?9W6nbgIo2pK&00t39ihImVh$KVLfe0C2D~)aR4h^JcqZ zjC}aNs>UT~Ovqtw?((L*bGX!%H6v)`^^|WeNKOmn$%~QzqJ!;NADog;{xZwMAsr*7 zv6I;r%A(e#`+7Q#@R+$s?z;o2p?DRMq*#YciI^Sw4?4yvF>`L9r`@FY7yBEYX)oQw z0$!=!79qkt`23>*k`v>dID7A9Z{8(HWvmqvvGq$%ho;^Rq3TW-Z(0!zA<&k?ni7^! zXohWsE`%|#I}Ssr=Kzr#u+Vc0eLI4}oBR3%Prx&gciQT28A|(a4|RF>ar&m7V=x3Y zmDI?XuCCVK+@3vFRgh=vRpOlQRjLIyX+qDwX8!qzb5VIT(*5vKjF#BvGxEdA{=@(w zY2)^mOK;&tS$?!rpcIew$NywZpY?Zs=~X_FKmZMRV1H_p$aEJSG+dN@KU7a(Df2!V z3(BNw>X_VX{jyUb?v{)INI?W6w&WhR19Emz95Y|}%65`?aBSKJuH>d-=3M+mwNV8v z`+VCN-s#$JyG$)bF)ts-sNBi)hx(tlcHpeDW2u54ks30XM~Z_pN#W(P2MmX#l#qf> z2kNOt@<0mx})P z0YrHay0(P`%m6HdPt_MMRkJzR^NydDq-&Vn)p>=AXgmsYEfFnZ+Po);pT-fL0BQ>m znkVY+w=t-qX!(#ci}RvJ$#6edW|x^}o_~3;FRT~gvs8b;NGX?M?bYx}{kaKSd@-Bdy&r0<2Dd&Vt`|XgRw4JFElK zU!tlKe?je=6o*1vOOK(7x}mqIA9_-m0ayC9%`^36jgOAgz4fq0GFDoFH!rL?eh1w7 zq{xGnFG^_+M6cU|B$}^49#H#!T9s{>4HdGC;x1M&uR7CJ@0}1#XINA z%RKY4c_KloXJGlHklbx+cKsgTn)rWLlV|-CEH^TyiefM}t^4~La1Rfe&Wp`spwjW2 zW#;H1k2P(=w}T!aVgPGdD11>NVGAz?#lU_SV;<7}IMc51iUt!yZEoBnNk?gh(xVD3 zf-lvVB_-(v%dkZbWeXMF={EDA4U;uqG3#ljjnf%KjV(?I2?H%BhbaY}Oiv9~f(4T$ zkqBFNlAdwm5Uv;lMYY7)7{ONZcVaMJJ=o)Gug`}foia;1L;*j%&CzsPfx@?e3E#pj z{tk7{_%>J1$)fA$s+m-UwW&lzI% zt3C)E3A}C%kt3A#FnEO27kHHf(nbY zXibYcmTP=-^~aty-TC&lD5UBn#;z+_Me8y>^&mkGzQh(o8hl$X`g@}3UI5E{nSbl}g_}q3K z31fPTk`SlU&_@`I3?3WrW$(iuJuFFgR7JI~G$|6uOE;b00 zPO~PUS*Ml@#$ur^E}OKgE~~Py66?kvmIA!AvNb&w_MR8F;;HSDb${ta4;(mPzCXXj zX%QfKfT3;396l_*lrtCA&%tic7VSHk3BEtcd+NbFnA{GK+hoC)~C zK4O33r=gEUu3;Cs@bfQomY)!%!T!J5c+3Cq$pH!caV*mWbOrSgHw1{X#Oe2#S(RDsm>-qPUhkKBRWLl66 zxb!ZTroZqlaF@#oCP85b%aXjzD7a|iWhQeU&x*><9ABx46d;1&g08nb4lUX@j@$IS zIy_gtka&OTsThw+3ZhTKpukLl55bhfd7d55==7_u96~28`DMC-kNp$OWS?&0Vl^0p z*=%~;V+Hxw^b)94-+EsEtlizTf6N@%J4g*hwn$b2>e`)&zFVTeS~xASTFb z1SR-l%3i%iM~KMgCm2N6&=yGvj1VC5BnzXF8xHH%L=z=;)JQJ*?kmD)!@2&SMI6#^ zk~MpYh^``;nWW?h?u}^JNM)!+-Jsacct=I1 zJyxFNBlTY|)-y6-KCm8?SH|zL^^;;@*IR~#kT+E!oJ7|E zZK@HCpddx%HxVFjKt9H)_i8C@e$e^4^r(=S^Rr7ZAc@k1yrvlOy=Krzvx3Ng=X2a$ z(ZUb8;q;QK=~P5;ImjN`PnP@n*>92qng*P?i8KHqGMd}hk6AEG=8HSZn;hQ|BDIGB!zzME9j?YTJSx3^R+r45>>? z10{;U@A0Q=He1>|Uu%slE6sWAUq)zLR4w<7k%SMC9PRQS^x&yaopPFp`&D61;tBK< z>Q_GYm46uFCxi$BA?8qW?woH|EjM&u6KjnlyfO2JQ;(U2N%H^f%u(&1Od9n8Sv`fb z$2U@AGdW)vuAuUXnBP0|*XxM(yjuCK%IGmDKo~gKn9$Vd^p17w(ZZjIwRE~ZqhK>Q z-g>;k8+RnX(^ldxh&VxgW0~?^WxRec#wbd%g{*(DY)d6l+1{fb z!8{|B)&{w}abfF{~#a;})c#=_a>AO5Hk0T2f9>^%y0RwqA;kH4iXnRHp zqmZqT1MBBG(~zY48Qqb*2)o3dnr=7R$5sNdHpHVBXPrLfb8h*PDpsL z`0w1(6ro05WA=l4UiN%AW0dzkj&~krJ?Z$jqg6BZV3NEKO=1Lvsx&RO@bzaGoL`n& zC_V%4qgA)-T91_aJy@Fdp)wTl<;wLpD|m}4bSKhz0_xHaDwUZ{n00=Jd^H1En^N}- zx5ad3BRdgkb;chRo^JQ&z{x*o;fwrv?miSkji{u0mlvU+-ezcbYP-MifuP7raGm#r zJhV?f({OBk5G!l9B4ln-!(JBa*M)eO`AK06^S3_SB*M7B-73|{6o?Ms0`vVLEW%g(?v?ms>DpZtdI!o|2gA^o35kJ7IRrVlBBDuUe0 zDGyU^w5`P9Lb%Ydsrz2$H|>EJ#XvWxgl1S;8@%WK5ja!1Sk(*M8_gJwwLbPAU$j`G zXKH<*`{20G^?2~F0jSH6lwAI|=WZl;7n`Dn_=0RtsJW6^5w?aos&%=; zv~nZZqZ0Six8wnfj4d=Icuo3s3~$)u0j@y^OCcoAyou5Y%HYV4m zF4F8Y1<-jiM9jMyW9H4LpC-tDMEaE*uFa3)tTg%}U5a3~8=2p1Kl+GtEp;(s7Ah<; zz6O9JVg$vnc~l1^`lDnGb-L;fONJL6L~VMQfHur3%HC@YDnJX~zV(I0e(g#-XA{5j ztGZWjKe^7?#*uj?MvsJl5|p}g4FFx))l$p?;`~==cq(T^pJmlnGwT1Hbk?@P%Rpix z(1W0Z;or#o_Yz_pmuwl)*mSpXUtw--C)8{lzLNUaOZl!dm<}$+cdLdG1a^hoDAkXJ zOiV8fD%JLE0%%vHER5?fdlUMk_QY}S{u{<${{}!@u#CBd#GL-jnuZ1Sp<$9phlZ8{ z7hIIQzh{~3T8?SzYC60-C=;f3QWLmFN7u$E!!2wD*A6u(EW!}a?GS7gjRwuJJQ|~L z#`G7686wRwbBS7%n6t}_Ox-q{KwL#ozhEgtx2Z_qip~d)Aux@eiVpi&mestu#d{c1 zL#9x>Trl7Jl0*3Q~xJWat9HH=-`7oz~LMQ{F0vXMHrBkXl*Qb01WzD?uRmylJU0Dn0c8K3; zevS7>q-W5wX4UuMzIa!?hEJ_Ft9j$ebywDHJ>5z`xR2ug zb>Ax}--Ism%=IWA1cN~@-16`>{spsMa~C$6ZWPv!`)V04vCgc>9km^Sx=yrFszzCu zbQ%us`25CnsSm2}6mb39W4{uba+#Mv4gw)1LsQ2{kOVkQnFctSeJ|ZK3HI&!A|$|4 z;$Y4BaH#XJcKZ*Cxyp28;{F=|Jwl5;LG~4E?+UBM;ug!WgmiVg=Y;}Y2`Oj1y)EG((s&i8Ws~mYqaPSbjJ^bv=>aoAF8iGs#6->nO{Z2W> zU*AY6A(r9E|8|nvWMVjc=sZ#l-c&pB>Cv~}xoA&z#529B3}h{_VNy&ykOu1tj24Vm zrN%2}Qcc7ep^1K+GMIY|_#{=1hM^_Pn+>jeS@tqYw9L`e_36r2>MZSWxaT2Ymd5{p z$Cn;;n7*YJ65zxB`nuo;OrO<%afUY`kCFZ9;13Y{9sUa-<);#Dd+CE=MNdRGlTj@(F{pY0=qGgdpN)FGoY zJ|K9+itOvv5Nj%I6jmc871Z_2clv=Np!ne}7*!-L5Bi)(nL-8Je5s)$Kb4^&8s7_; zy4`J#`&i|?YcNe^{<>ZB8D5*Jk|J@cOd^tK8e`#7I6B zeK^dL_0i);X7}LjJ<#&&4I;bnW!`|Fvm_$&+T0)m&HFshu!7VN`_L*#J!S}tXB{}G z%uk|wBcaxl8qEVtUr+^LP{k}@f06YneDF9O-L)#0fg3mi`M4cGv-KAMj54=ble2t`;9LpCIr z*`@wO5wGsoFGY=5J8!Ss(cuS53~G}zAXBVHi6<7~t$stZga{#vG|+~wv(auqnST4+Qa7ZM5Y*Ayg9%=b~2(@r1~$8BYF>pJ;Fq0w|!~r>^|_pF9tn zYa)c{tl@waFEn^~ukw&Bk?%=mx8ct(Dij{(OD>cYa44{}BRqM^JSqcFYXgt^iahxC zzfzDUXdmMSO!(@ayR&(>b)qT>2y5cP}CqA+xwb>WxY!iGQ_~r?s@CC|qtNKmn{R`M$=^bBs|rZzX9y*FBA6*%B@t zS$ciS6)Mpq*_a?D8P*V~ck6NQZx_j7jhH`&h}$v70l7FEtGOCS_Ux@sP!5Gb(>}k7 z%*J(1($TsL!*sJ8n+I9%vB;u7*7gnb{>}6D;tnK4QN+h{A0c#WY}LGyvYl$?GDxxMkvM^) z_TDA}1*IQrMz9oR`DHhtapODvH$$3L@{2^v0wL>;;Ng<}%r5#w;L{X5{3IDpp7PVK zd;?4Qh4(?vR{oY7gB#NRDbZ|11ns=SZ(49@<1H$_$vv&|B!U~OhOaDkBnP` z(W4R#t&<(KhfEF7yGce9>R8ZAc9@p%G2|E;1>xuyk!F2qVKstn)SR7XEoXRY;6h(F zyZ@3YW(Pi7cQp!qvYXxJnr+gOFO9AqbGcKY{USr+^zI2)4wRq9)l?mWk2aB{042Zf z`YUWsfU8hf7K@)qq2{)`=5oPQ0~w_5so#depo4-k`EjFqGxy6*8m;7MqvA zTBa4#Q!CF@Bh7tYLh9rxlK2v~$UA;uEvo$5iz_^D5^1oqs&`Yiq9j^LA<(4=yx9B5 z_@i!dUEz6o)!Ty^x7%ppyF~Cn0~Ps;7~9NYkTAq0#7hp?Y*LMUVsUV_7u)F%!tdC` z>S~L#KEE>jgxZ<<;nVjCXOJ2nRHOp3u*^{Bp^470Ys8PTv-`w~1@n)wQ5NEBZFl&A z@moe`(9f!V2(Oq20A>NI(s;d7nC`Q^c@WgUSMnqXqbH4DPaPI(QFJT7A`Ufu(twY= zpcnONTKl5=)sA7#N}T`;9t&Yy$_YJo?mz>!QAy!E0ihGG7(9qsg~wOm`AeBg@G8@O z`S1+_)PpbnX?=2zqa7@L!J;<3*CW5;Y=V+V-Z^8hZ%<+=D@x8f;KT?oYMfaYc;AF* zS*;ocw|aAfMK$sX2REN#Jm9^G6UCJr<;-LXh+u}fiX`9Z`3!?1903gy75)?`|E|&% zolZREJg~!g<&cFE7iZI%KiFu+(C`kHVjnV9`1EtSG3%Oh4@7V&qiXUB9pDok*Ha15&J!hW0Rzh+SnBm_A zj2iOx^q25~wyT@Po;^EBhbE>Dh~Ow-{9KlwCL&Vz_oOben-%-DKyvKqyFA`eF!cLo z7YC;LH#L*wr=1%mDBvcSTO-bj>wo=`yv@n|B?@-#cOA}W_^U3EQgP{fA_s_EUq}8p z3>_xB>HVF%h(tk@h4B2#)Zh!5|F1e=?PtQXXS?~?3rV%zYDOJ{$UxtHA9p#7T)Me< z^4nKYR-v17>QmK62YfnM4`m38)lC;d#C5BE<=)$0q>rKkFIXu|aZC#@&ur928}`f< z!}#GYR@occma79#!G?K1&&pvC^XFWCr9bWM}xajR=Xnc93erS~MvDyR0$C zvKxtR4g#TjbCs~Gg*x=Mj&sS9E<9KUBAOyq@~{)H&sl9(F`i+M>Z% zixGdinVa;&gqpSgkR(X{k{arBa~x`rP@!0;6*xwcYWo{%bYRBRned0-L@`hRnXyXj z-Q8+1HwrlzF!!r?%S8?ZAJY#&P$4#h75KPTW3+_uBx}xQH~MJ;xhvwo+gl6=-9lkT z4fsSw!8+2D*P^5qorWtVUEF^4*k1%<+Vx-`VQ3rc+(D2t93zE+huR8rLI$ z?VGNx)G2C0zOv7Xhip;ZwuZS8%2xHb>q|Bwc$5ULTb`hx{Vz_Rnz;c$U&9M7312L5 z!{q!}vaZWOXf=SaDjEg)0lS@!8vWR+o!Ig}h4Y?~vq8zXz2-G`0+!R|xNZ*mVB$Z{ zd|-3!6~^CMXdg9#vy~^X^6k9SSHEjaHx;VrF+(AB(lL!#7dEYMn1~TUH`h!=gJ5Mt zF^5zr{U#flcw*P;8IWGXI8pA4rlr<~r_jZD?;2A7jcLs|-ox|cg%l*0{d|J>Jz{wt z!t)@krShd%$|cKt@z05WH*^Td10`uc=MGe6wd(qW1N~ngIy0UyNyuA~o+}RTb1`XV zA=$oy1(`e`Ltg#2Yp@-NTj|^A_uuI*Wo3>f^WIiQ8|%ve9lz)s`FF~nG_Y|S25j%9 zMxwSJbOSlIAqzab?d8rgw8M{?KlH4z@}NU9YaodE1p6J#m=}ayK3jpl5w|iFRW)Y$ z)h+9oipmrIvM;G`OS^03h5{Jna4@hTj{PAf%u0jx)8zVi!0jt{R^iRnSw=wf>fC9{ z{v)twbXWw?;GBC&u|Wxfmeqq7-Ec{vKtT&LgB%ahpKzsZ0%uQU-1%peLz!=n&9^m4 zs*h7sZK#?=v}`lAR&qGgMO_{lG7woH3<>iD2f2sD3YhqjL?_kQ-U?KY_BX8(sNe-(3TrvxgIOdZ3np6c>&=q}j@ZNWR~{942DJ(ZGf*PKSp=w<3q)Su0DJMc>wxFO<<%K?_2S@N6#gc(yiJGCB6QumRG$ zS`A6|2Cf;Gm13}gY5jqVB@Bf74Dc+uC%rucQie1(!VNrsb}Z_;((4`BYktsdt+j(E z^JyX~(S?LzGM!^6uN*^2pnwH|mR9d?=ziLH@+QA+*wCN*ct=yWJfCbT=hTpFd5V@H zoMV+%7hJAQ9NMaR&stG4Igot0*8gO3D75<&a|n;5lh4S8axvu6DnQKLoh)9v^o%76|<;)ce?P zCOoS5`X#EBd-l%nDn7u_>c+Vo7pHlkt1rootj9YyDqn0Dvs)9$iL#SfWK^^Y3rzHO z*Z#A^Qdh%p{S9BU`~DsaT_{)tN0@=?ZMG_4NjPn43W&isI8xat zIa~%^zH6I&h$)xW5x4Ryn=NzjXOkaC*9v9F?YyuYD{%o9<1^@nl)lXgymv_R&E0oi z#sMc@0`y8{!y{j@Fou$qv%H#T2?mG|8-Am{88I^xZUewR*(yi$Z`{C=pdEK#7le+X zoZex3T2@IG+FL5b2i^aCE5lX@kB}58^I$6jf$|z}3rMwSRGPs5lpyxfB%tCIg}dlLYeQX9U>%XZW%8m)F{^UZ-CcW9iO~ z2`woH$s{1ukr(fQ$Ji&{j}Y}wCMj)i9DQ35q)HM0;I)Hb>{U}{=PoHQXF@k35~xaz zfhQ2Ch$&CFi=Y?d#ADlF)06bGSHMB%j!*a|pyC2IRj5MM{P)Npu^PhwMApm+sHdvgF62ck zrnBQ&h0gIc#L#1eqR(s@YLfO7Ezb0`RiG{pI-H6lF3M(_l(FzDII=@q%()5 zWhCf`Qli`x+p4hfVNQ))!ajJqH<>YMqI@AB5o!?mF>(7aiAlj4@d;P9BD#uI z7GY5?E*g_bE>2v5N{%y;8Toqf@FLsCg#C(w;lTVI0`K;RP(M8LXl?kX4^bHX% zQ|2Fx6}$-Hy98wzNTd7m_(em?nIDw&GX_CY!{tdrj`$L=gS|<^7xcsPwrMgjohZ4} zQ>qk%_~6~U*n*2eZ(JViNCPQn7CJQ@MW($Ru72mTo{w~#AS>mF+mF{3lgBg1{~?Af z8l#@dmv!bDG0bg7o|;Ai2Ot>YDAE*6S5#9a%fGI-FiC}SH>dp2oW|Di`Wkh7)N0UI zXUZWsI)(+?%L;AVb~*m3eV;W`XFd@_n%x@KD_JDyJ0%%pd+{>@pO$KV~I54*9BR4Puis`-dFx!RrkY~d9dW5zq zAY*^rM(eEDL41Ib^kUDfQU6$rlMbDBP1Jh#6v~mJv{Ed=0tB+HSCi-RYPW*qzU}L~ z&86#RI)R!+t$!US!H}@wi)H;)7U{I?*!ojZs&k)wYB!~NJ*6@3DP%e#hNNEgKbPEwZZ!Yr;4dthF ziq4b?B4B#Zx5axmxI_8~MtKpJL=3+pzwu+|xGHfd^I%GTKTYmP@QUXrz)tip8G?{& z`;#V`9{W1ed(5G7%+dcE1Ns*K-$nR8wCX#?v^-u(QFVPuMSX2aS!qLcWkpq0X-!2% zX+F5)olz_L(ius?|7OUV0jN-uF=yC-?A(ZAf^Sg&`nG2Q>N~-aYa9;Q zy!^l82b@VDgcox@oo3=?B^5q2K@>gT6fBvw=ycFjS7|NlZNAnofxs_@!e(H2&_o|; zmbm)mrz5vA9dMv!SSKv!M$b(OuPF}F=LyeT4SBj z+X=Uqwigu`=&Qe;XNc5vIU=!Bbuu)Oh>5|d3P;}gNRm6XC$s#}#F<=&QwjVwZoCgmM448ZU@*FgCG30eFv}QDIOOo)&UoC%OR2Ij zpa}alVaYkwkgy6uKu-+Xla^G%)##xc+7uts*b&!Rr6(u8Wp~UuZrqkjg}^_!F$8>~ z-vBMf1e*i-Z{S6r*wGHIZSSA0zSVTF&)<`2S=CR?_#%#ze|?`PT(2jDf7)hjwEU(? zl}04cztN6P;})}GOh#99F;Sz4rXsH16)mV6w&DI9OF^}gl6;yI7W6_w9&9Yg@~>5= z^V^^hq}?_m#S15WU=AA?4A?DX z4yHP^ZjU*eaS)C$JhZ@;fGxn^MvVF_(=0vR|JzJ&fNv$J9GNcL8z=R;m%b~p982i1 zTgdfu>s1dx%fGp)XZ0`(oD;GCL)BY`wbg`w!oevNFRsP4xI2a7PH}g4w}ZR8Q@psl zySqct;_k)SJpXt1dUx|>lAO%RpT^n@yJafbK$D?_~`Us-u6L(W;fWOuj*@ok1wlEd9WKeBjCc4CU zMI}|-X2Y1KdO?|Fbgy)h*c=TP@;_UUJ;M~_f)1WI7|s$ORZaazCh+5wQE$$@9QGOi zi-dIEXMvR_RQDf|FQFBS2A$e}!OSZeSldr#{tG*^w*7kz-=sT_O7$szuAGMug+rpP-u=l7*L9qXLT2d0olRr6x(dS?356 zvLEm1YAUN)eJ+k92|u}cgJx3UM9L(UaPhorelT@5*x14MeCt1Ub@GR{iAg=G7x=N7 z+cPX~7l&2p4afO=QuX4bc^ED&9|mF=D{I#?8_I1X#Wj z%Kv}@{`UXHO%q#VCG;Y=@WQ!MkkzOLrIXybpwVk2f9$&T3vJceQX$4W?^$0GRP2yp z0#q+?65;_&73O8ketl-u4c>HNCXRlB$^{g#&&~SiPZGwMNJ2~?PUI}a8@pMQ6{pMg z>8NbI1brA%&?Y`?U66~v%4#FksQGybGSY8-PRf`UKS&0Oh$nsTS1_fzagy9%!z~mR;OXc(~ zGk7}NT`j_6DQftjZ`fk3JP)S2*JW|EUQakJ>mL$G1oQ^JU-A%16QGChS&{zY)7l;) zT|+3#Z2Uof5&Ad95+4(Jz1i-!Qw)yXo}WnoauIP@)igs+bM%QSE- zGis zWU9~?X)Sv;tk2X+Nm8A}_JgGpM%nE+KJNJrVmL&#|K6is_l-ZT?8Qw{>YOH;rxOof z?|X%M=|pl5#{FOk7+nM4Z_Vmc3j+t^(&Hb+X^#ss(joiC6=Y$kR(nRV*ND|Gyvr=atYXYo+j6DDr-hPV_sjS z(`Z3}8;n&P%I%+WZOkcImtIV9Hlj}NLPL2d!TS!G@^Y{x_a}1>0X37l8_r!H*N!s#i zscxSghF`KlX*8iwE!{8-@7*R#_?3hHMyrbhq6or&4_5co=u-*r{G_tJJHcT>Xs^u6 zDs$Go?rvX}R02gxUt?+BVbh?9_+V{qhg#Dng2Z1)3BG-29ad$9D)95^9azNG$NWO5 z`9BlC2aWOKf#Sas=THA!-yauV_9+b>_Cn!)M!9@36fmGnc+@O2bO~~WCk^S)GFarF z{vnEozn(#`Dp`v)Kz(3N#<@zKA5UM@A!Q30(Q0Ve@KBsxSK|m04j^#GJH#}GD>0C*P5N<3#DpoMup#l{{EbB=^(f8!i&h`EmS0*ARRFJCJ;RqieMF3shmkv#vaYuCp zfXZ$Y3e=^|;Te%Vi4$an)Xt0?SyVN8m{)s{Gi{5m2C7iP%Xhc|FH%&TnB;sg7cxfI z%_D4m+O&V5_03uhXU3o$7mdDHOxlbcXeQ7jm4)tMsM=)`T$l1ov%$-7Ps_ycj{)?* z6Dt%b&ejz1x@69%P+U*!2<5GiQ2Pr3%2mhdRHUeud%3E~Kh3xlvws_vD6r};Q1{mC z$1}dXf-dlLm3z2A90CyVusjd~+NM?HlcRpv-5W@ugCueW3~_qit{4R6D(=SqXFI4+ zpdO}+EuY7uW${C1KE>Lj%x~*qi;UJ<9dU`|Mx7n3^}$k;UQUi3ir9|KF8lca{oV}k zG)nwJXuL^b&XqN7Wq(`_n}PIP)2k#C#w@(GYj25<(77n z+_&`AS`{^1$uw>?QpqGtCK8p;&;%gp#{np0U2W6SPyv6%JdQc=e2QWNSs$nwZX_)= zc0=9+2lA7%lLMYIeMLp7LYsiqjmxrW=(WM97SuJH9sHTlVu zLiUy{+%SnTE~EgP%e4X!KQX$77ktFr9?+5K6J?qpWk!i&lFP%^bZetb3<|-q3U&A5 zTr&Q`G&prGwV-PqT)}7%(DtR*;LBa&B%7U5174*$n4%!Q8S#Ul=m@~ZCz2_y3-JZv zg7@Z#tkjHl^=C^@jGAXKL0S^w2-yUD;D0{7hGSgLAEB-;`*L@SkNag5gLw{y)O6Vz z$?UrWZ$vkhlMg<@P+&jF-X<>dwU1P83rnJQOe?kLY~c!?jV^pb2t4}g;<9QSc`2@K>-KYDuCh;JCk_O*BiTIDJc0E@gONkXkF0QcQPQ5=mhq zvfPF|8~J21&y-Qiv>##Bzci{ub}j@#M33b=*24k;tT6Bqjk8cy!_w=6(@@e<6@uR2 z*xGwg2R6i9SBdbY5;J7=B){#YCwvOa=O{FN3S-{kt%}*vev^$EO7&@P$8S*1mbicZ zTcMIvC|fME-E7OZ2i@p597N?xJP#TvelMt>sQ6ShCIG=|eX@1pfNyPg`QgV~N5S0IKhuQ1@g1>{aJD^(z9s}%cHbs0gb}q1C z2KXJ2Ag%%}2pRkY4C25Dqu*J0+45_feR!S6T(OMHFS|kojJb2>|XEk%Jd6GAm5-`92RMe-4~mEw!W`*B-q2z2Te2}qMU2O6zIDJTpbfdrSkwsBK48w~wGjJxMPrdt)B>beGB1phS zpbtKZ55qMidf4w-*MfaEOv>xj$5_tsIBe@;E?g&EUzN+oJ;Qu+D?|NnpGJ=KNrVSEruebNK8NAF(0oWA+Ki zf&)jidcvXB!yz4q$Ak5Z{%$qzM}ekmtA=kZ77tgT%X{?zj<+B;S5Cr1TJTx~S{>;*+k+(P!8a^WH@iU$>qsc?b zuAY1dwY<;ZGgdqMLfG|0hnkJtheP&}D=?ssQ10Sl`hgG4?-*S{`$D_P=gEH+7p?v5 z$Gj$X0Wl{{LghX9tD8y){E;zUafWWED^Ml-P)<)#8 zCIZQ%z3?kZpl7k9bJO1cSIb}>=M{3xA2K3GK0UPOby>wvq3KZzI$ZJflWDu!na2+l zJW(cAi*8bMN&rhfTJYs^UqS&~Z_55Q*ypmxnJDQFi140 z3G9c4o7fvFlD=&GZC&v8Vp60k3@X#C`+4x+&zafTz4EE<3Eq)#>_77fh2U@ZllM+r z#IfgQN!*aEpC}&w@Wc|vs90US#L-o}ngLe{W4{sjw=HtE^8o0Dpv_w|=Rk46QQeMZ zg&(5Ep*+gPUiy*wnuFmW%)7VR&%?kr*AbC??a`wk+3ua|6YuDaJN!Aln?_C=2pAWxAfADq#zI^SWXfNTzaB^_WcS%0euB4 zW&F{Ut1;7Ua8vf}bWI^BB3va00XeYX^r@@ZasGW(`QMXT1qFIGu&KL;0` ztS?41aUx){ugd|;av8ZRR8@9#@`~!ta!An=a%gF$}fed8PZtCY@t-p-?4BcY5n z6}=yzmd)Y3=|>B!&Jg%RFyu;=e%(Z78QtB%)1{cBnz00S2!@)-_N!n_rUQ}Dg#3l@ z#J*-^mnh)(aw3?4c>TNrw;kksE#>G$&~Dcj_@o9rq1--&j-iaPepZ7r3_%T*wC;U$ zUaYY&# zb4K{6zf~GQ_QMK^EXewlYvPC-$sPUrONgT!vM=YKqW(gdz= zAwsywN}s6p1&lDE+;tj;}O+VFsb3pgu&XKGi?8sH@8a zC;GqBELJ}cB%}VBwD&Z|8N%sL;9e!#uIvjvNOKoAg-0VXcSasTk}}EiGe#@e6)wE` zitb?n;O}zBhXuh~M11{(d$O&#Qy!qcm+o(i8Tno2ACfKh5N};iMov3D2K+C4xeUl& zOLRB&DdPdN$5GLbDy5Q0G5@uL@D}!iv?jdo#-qXT@o$x~1_Pa0<(J0qunRHU?;=Sm zY!|NkE_5w)uJ%?jMm@^qI-YCI5=UG=4MS0LfN?0NM#8I_PoWe^58m*YVZA)+Eis)F zq}0fiR$nK${)Y8e^hm9qB87$Mp<@`CLmU6iQF(%sxS2o>^JOtyoBPF1JIvCQGs$5O zwOu>_y&5P>qbU|w9U4|XvoA07DeQHSB5FEz>zS2U%eRD^HH35GjD_!eH)%NfWHRfd zBoGHC9S_UbxznkdVJ#g$U?ky zn&`W~L%iLK{pP)nrgr4`TNoKtSpA-)tNTenF=#}x@5lMh+s5tNvD#=Bm$pZU1A$xX zB?lE!7?MX$!RO~pR$&L?Dxlh0=KJ7<2QdB@IRGO18zG0wy-_~-NSdre%qT#5M#30ukWoNKr1ue)$gmr*CLz$dhO^j!EOCV}f7p++iIJ#pbgCv~P<;rAl$ci#jD+%u4Hm4eipIK0%` zTqF|rVCTkE5u8s_+p&GI%ZyYM;uBC#JcT6xPu0K?W!`d(!7IPa)2sIx@5o54^q-Az z>DL!W_nr>lhP#a5HCbB7loOA+`_PW7VpHE^cpfa(Q~%Xt;*ZT$!Qt|QW7apvmCTjh zb-{mCYqG>df?B|PL0Ro>(p#dTbtDJu#U(H#fB27PXAvr4{Nw%mvwl61DGJa8Q+haP z;9FyZrz}mg^YNgc7VhQGjp<{FRSSS;7 z_1_TOfEmht-FMQkt}>z!yy?Z;r+P6%SG)3MqDp*JXvFwI$V*7~E3c4`%k>>g#s0BM z;Pu8AuP9YPS4yW$3 z6H2y2iRiai%v`gI%n!UZ!!C7gx~(3jU3cXUVYBEZ%)91%C||6y6aGqbj*E0 zIXP%j={QL}6e^MnD9|ZuG;_)3iZ1GWaA4w!537`8M?7fEc?>A68wSpKBwv4jl`2_K znm{}KDix)R*#CU4TCFXXVbyCIdB$F!G1V(NwA<<&9~OWxV^Lo+-%}?lZx{iGX(h-L zmVY1F$gCq~2F)AhTV71&>_B0NqjX!^#%;_&kvZhc!}DW}pFDM;gHyU>9-4x`dhf-a zBa#Xk%Cz(5R}-)dFA3;Scc%C>b{iQeXlat4^`hLKmCfl`3wc6*!k>F%Fv&(k4IZ^= z5UCqqysluxZ&CzU!~%AV?lA87X$LP+Rh@NHx0>4Twl)~&8r+`P{moP2j?CB&Hd7nX zP#X=`d8{Kve!^7MMIHVkMK2g5@@|!FM?2KxBVHwORuekgHUJt{?swUo8Dc^;XB;ov zb*usr?Hg@1qu?d!O|-h@_NwkOr)*>15m|3722(_P^&;Kh+UadhmSE54{M$jWI0LBV z#2L*t6C9U$N_^#c}SWmVAU{rl^u<`AC=%}?+5 zUXN;Svz~s&7W%C0A1rkOcJ(*6evVQ)K86V~%UBqKr^kY!d;@IwL;SAscCgXUot)3| zc3S->k7ZC(72)*ea4OOn11B$baio-~{dAWzZFMnbQ-I9$Quie)yEj=DD%*Q~wtRIq zhDFk4;_a54lX&duSY{Q z!o`FeF~%hnw=0}Vu^#Xs%7oT=)3nKp5&yCol99w1ksID1gau(bywq^colUstJ#k42r zk<*=9-464V#VSLeQh|&C9DK)5eMzDaz=ms?V(oU(2a2CZx_`X;zP<0zQ`IEcR?U}4 zNSu0ENyzPUMZ!Y+A$E1kYsW|%J$@+9?~1B)0Ec0yo$E;p0W$S&jahbw=X-B6dg|!{ zAA()oC-l~v?QECE@kvEMhc}0N)ZZ3-KJK;E;*odjgLIUw8QWVU2_)$4gXk_MCl8;g z0jh4srme!ua%pdikE*OG$m8cY0k6Hkhv-62AR8EGDxsy5mrzNm4A_MZE=uDAGNKzF zp!+e*7AwkV;Ghq;^|B)@YcR#Wp39NOD0B0WJ8U?QJ8bQIYtLuqu$wK)eyGCV#eq3s zyzqwWcvvGiMZJcl7Hap4>tN2mw=w#8Os|7X)mdkS4x!bS;FaM{_w&%Xm5OC^H=n@o z*A?nVBm7@oIy-{bgLsB3s2q4+R*{9j0s-)-Y-3$$eMUu&m{pkC)EhV*E`}2waVqj{ zc*D$Z8kzB?r@TgJ6KO`^S21v>|Q z_P&OOt{tLai=B|;gqe`xx4*ghpmPQuQ4o4RNr(#N2}&&3iuS1k3@qp_C@Hl&+L~>@jVMu z?Kpoi^^CII=n5{9|;K$}AvGul`<8&!SF`ik+UR zX*vkDwrI{;I>89)RXH!D{zo574|u)KcV*Y#83*+`o=H71<|N)0m{&qmla}UeK#_hx zy}kTyH|@hhqIz!4A1r6)e9d0WAI+Rvc0Uz9S}&-$?Vu5vtt7d|e4+l`X(LyreBNN;<3%Z$%3R?AzwMljL)oC1_>bJ< zLu12Q(%P4VFd7a>)%Lb$QxltBvN zdv5rf-F4 zLQRcnME_o`ybEV>45XU~#69lxfA-IBoBpHy`b8LW#(|QD%4Xb-V2#K>U$EeE2QtN)N7*K zU2WECLRIyiuy@-(Mr4fU_wv2Umpd#wLuFT<2QT*mysUW|c#h#iGvc~i$!V%(e@aJ1 zL7fHb55+zjLtm2>Eawz6pS;=j?(pU6!@QfNCOW@05ksIEKg&y3I^>Azf4TRXb6@>Js*3rHt;n3) zERm!r^etOk_{*qf9razZNUBJhUp<6Ot-JLwS@xe9XIqX<*E%!@K2)RTEjJ&+Lu|W0 z9=FS9xW!Lr6TXRLUZ3>FSG=OtzGZHtz^CXr9%XJD!8`+O?xUy|bzk6vr9N6eECf*7 zZwYsK*iXBNX1PZ%3m39_QR0phhCPdN)*RxR`?$rsZnEd|b{^Kq_@g{ohuaLlj~Q*j zW5tzPcS`_G^mS7yq)tYkE|oeWBKRj*>7%8YnH`9iu`#_hQZevdVPdhbIa1X;FVo}B z1+JfKx$l7e@a>f!A36`i?mBk>A+$pH%gYgYmj0Gp_X&^rvd>Au-cC3+&lHWE0nF{W*p(Fsu1^(*GWo z9eyaMpqpD*2!mH-e9gvNfEZT`G$7PLpD8Xc$qq2-4+saEk|Hepwp51S6_bqjSf3st zu0O|g;zHd z%|A%PDvKJDx5koG@+OX)8Web60Euq~5Tjt396{f3WK6n_*R$?h6oBC4`i)i*9iVW^ zmG^0#PTAOeo0~EwM4nz#hV_dOeIN{%$5tcUEqc~y+1~J-kF$$A>iU=T$QJysOj7Sj zkqFjhm+=E?#yZWBP_{Eb+H|_0ww?RQ2S(ChzwG zRrcpj-wLab7|Cjz-*)TUMU9lvj{uxkHYuY!o0;dznsZe)`B9RhG6i*9v-8$i0jBlE zrR~c4m;l#ACG#h~Du?43tGdc5MJyhA4_`NHMK-*L?w2O^7GEK*y=;)$cSmf73@C{(Bw8LLG*<5DWxt7;23(t0Nqk z+BLsWGQflp?r8JJZ2!7y@?gmF@~*7rDA&Ev^1)X&;iin>rJ3yd9*?r+ob|FEuyz8yLE&a;hrh5Y&H8?=JfZg=R;i{3L_cds^bFzm9Tja+DD zwb2a}+BBpu?<>l0;#}Z7aG&ObtfhVW%w+fFk-fP)3O99I+wq2Q3Krfl=SX$96_J2Q zn0Q1S2QkKYm9$N{nCj!trGw0yU%?hGky)z%?`?`vz#AN%*p^^o(rY+r_XslZ1CtR} zpHu?PgVSU@N6$mR{T=1-BqB8ndAf^zb58S^x{FYRtyaZW_ymv9z}g5PIY-wz>c~8VY~glZ z>n(5ZpISY)E_7hcm66`9CKu>B-|$cG_-J~>{@Q{7yqDY;$iI^`w4a_jcXIM>a`*o8 zVPxJlYHGX*b@EsI=5!aUWhC7}a9!~_nt~TkC`81b5pC9Wz@(YhWBq$fI?1`?2d^0N z5Y}%I!RZUL*fbY7)*cAL1MiP3{+N4Tp!4sQjvJHuz7N3O(BOA{iSqHW0HHNbPI&h8 zYysEp*Olr&OP{^;>TmgWr8Q@P2#efkzRghd?CI&b&`VXVE(J+qleAXKPEn{iLUl)W zZWjuPG9G*WM0zHu0elb=I~GjneZ<#Z*Lts8Yk15Celn^0+4Wern78BdvBJp6m~Y@Y z?{4A}!T{t>J>mO){o8lH-EwCIEa?o4*yPR%3jE_r;In;oNE>75T)?$5o3eGEc6C}^ zm;385h%uEbHk6pPxqp3}KCl*zxBgKm|EgG6UG=)u&?R`FcI?NoO8RvnYPuw4PI{6f zd3BRaxNr^DssU|pn&pY&w8aK`z9)y`iw=*bg$O_=%SJN==YOd_Rrj{gvNo`$zMg#E z*klqfy3uZ~^~-_*|MR@6``WA0ww48+`5of3HX=AEH9AzCXN*~5Gcw9?ij(q?+&pPuA4z%Ge+pAH91!U9gwnxal9J$iX{1y8CXU zDk1RANJmU8ioIguz|B1ax{*+QSC(uT{oqhsD&X($v811Mv-~Ef<*YF$`{fawC5=Hy z4&UzQ=E=kAU{Y`%jz{UeNZ{jTM%#Rxy4;i`e<|p&THIa~8UFlM)XrtBK)=j=@_B7t zfR*P8wOgrpJ=v;_ts?Jf!RC0sJyLDbiclDUb3xjZqO8Y{puCk`-0~$8Z%hyJC53VL z&u3F+%U$`My7=W*q$fb5*3FTU)%rXcOG$UE+R;#U-mZ3Tu5e zot25!)0Wt<8CYu*PhLvYWM%$wgg$93*|ZMO56kmwoh7O!J`4W|_nvqa^Sl92Cd~kO zwN)#Iaq^}mn}UX{F#NiO6qA9P)p&yhM^++6yezfDMzfAt`up8-C$)c)?97jsBU79g z7x#IUle|*0rmvo_DMJNKiMG75$Hj9Exhe^|U8VKn1nMcXbCX3UR@mQ5(qWef$uqKS z_^Vy_od3vfu8GTIHhNT67S65rDK-L!RxAOW88=&bQx{{}jlVq{Q zw5k(qe^#+d-tO(fC0 z=UCy<|HPY;=jL!8wzW%~SMq;&IRzPO$@`uz<;+*jNdz;)$dp^^=)|T+pZrn1NtsKn z@4K3REU7E)3=NVIjRJYmO0c=>0U{7HQHfUFv)iPS5A#_ zN!aLSj(2%oZuP#sxfQqSoW>qt%(+~C%-+T;IX`c9;CS_&Dt_ub4CC~zuV%%a^Bs1S zq-kg_9PYZjO4R*ZU%|tt;a<D7=tdSY{lTrts|xn|QTHD`L1 z_|H5}7}t7C<;|uU7N?&7azYudq-~Ns6r(h{#nBNhhE_#Wly}m;LRaAm+-etl0 z539hGjmkOi=)$dg%&i^Zsmov7l#*$7W<^*uOs$!Er&;jzpKRA0jq&5D_xjDB7PEv> zWpeexGMnPWgrhezs-`7|!g<|nBCzMdEP004!F5TbL2Rn$zwu=Wslx#+o7fto9@Ze!$$#L*^@A&<9F z4P_nCzNcu6Do-8~YbX1~^y`c|^_+U>@5$$++xc573ARerK$3U~wTj()@~rDjjfv`v zT}9scii8;2^po{76d;7L~MTvNl+CQJ?-`>9POY6Wp#P40AQ+lA_!e2q!sX2ueyCEfqV_Wxk?S)l%BBl16AyZ^-d5z{o3u=9SG z0eQt`HB~iL6~&cB6(yBrC55$RCGT`to-#u$@kCtfvaf{S1w++Ix?5Z^bUxXC?1&cd z@xf$ne+T0c7^*auW~%7q^mEDS>D|Z~0eMQ-fmk>>fSvgw$}v%6Jpo_Kuy4Voh}TA| z^=Uj0Yne1$#TfDDS5fr8z_}8(`b9!-@QeWHN7kTza|S5y+ZV{?c!>{{ z%CmZzj|Gy?B@H8YB2Xllj9 zHZ^Ia_h;p&v6q?W@)wQbcMEeuh+l%Ph3rIC4mw*UYZs-gv?w3(rT?R8h*;2^?Nt6J zBteqBKj-j_-n1bYDObWI^kx_CbDA>xg2ZhNPt;%^Ovoz8CI}3I`;28W)n12aQ-py8(=WyuJ5KLl8?+Z4se@kaEm6Y*yn4g-P zDjOFS1>4;9Sg3!F=OgW->VniFl~zKOwingq zD3ZlD2`xvx&n000TR2`3rao4%qlBlq=$o9~1oSY=AZm*R; zU@Cw%5kuO{%tL3>B3T;ycWR}JIu0UDaj_S2xHxEwME9);F#g-YW*8p++un}iR0czEMlWcSXHeq6HziSDd6SnnLHG(Bw@jf&PR zVTX9uganJnBv}>}c1aIF-*{M;)om-$auPZ%Q09E9;Y(CC`Gjt{iFvfkCu(6h^eQBw zHeybVhO-CukU@kcP0?s4m07IGeB?D1!1_)Avx#IGtGf>gt*%HTmJ|9P8*ji)W>`~4 ztH-=W{-jifhX&D@ji%n_ns!gCM;iFi_ikZOH zGrfzJkfw6(cV-mU`0DJ>w_+igz2hq=0dc zAeo2_6@4w->p(L@ybSKXmy{++Ba_b&OB%)blm0c@Z%P*fNrK{L}6i^;qA9sE5n@ zTuks?3d=xoiNXbOM)?q8aEp5iu?5{o7Q;{!CsGv(#+RX9cgSuzi!{q_xe=^YGlUzc zP2d7tW7z%2XTzuEZB-cLoAU-@LwS-(-ZF3az{1a}kLJOKZTFZcWx}sx5phrXU5@C& zBeLX^#-H_*zkZrPjtI^qo3NB9Lm5(f*xwpTFY1y|42Ft6u_=*aPjR1ihRfRNH-b7scHbYAP67Q?OGc z;D=m-$FRpJ={B72Z0ilEb3{)J{>U0$Aj3Z(7HnkKJc^nUm#%bLzHQ;Zb8m8yLHXeH ztXpvD)F5Y5|Gt>jDIt-MG)!tce{0dMWtF)={^a0H@LLt%s17_R27t7YQnByNV$6FtEsQ-a1>p4SxLwvh-+1NV#BTBi}A>}J#@Qn0T!mKo9gz4UjGhTcn4)sXp5E1mF2wdiscoc zPhoU#Uh4gEU7Sfj2=hC5A#+G2KeXPH%d>Y=$kn6skQ(;9D_WX_J}Wz!yrMBVev_%K zcd#(?rei{e6A{7u4LT5An6(|_uXCP)(EYqrYkCy=3DYvR+wep)#0gk|f;e#)s72@( z8axBzw*9W@=;tK{i}94V@EV=kql=8_TpXjeI3pLC`*hYF@kK1}X-9qr3-{TYi=g%` z)taQt)6$x%d`CuV2o7ADK6@|aVIH!?aOB7F&KxZ3meHFV7kh|&W67s4p3e`|(l`z2 zCDzM-H)yNCH$X)+fC8YxY(Z?yf-#Mv4U8hBq!5;ofd8(h0dF@z+ zpx(k1=o~80_tBJm)4-Qh2yT@=>fF{+fHH$WLrGMxp6PPH73X+LjgCf^va5^QW&X64 zVU9d}DNO3S4w_|esJb?uGS?bp#L|E*+ggw{&zaU&(s=gWRlr2>tS})CG?cd)&q4xM zXSeh8#xmGvG*^7LQ~#8$mLr8PaNj;Vizj^J;Fq`6qtNK@ii&ajph^NiZg-mS>hTf6 z0NOlt88!P0w@4v!e#J@eBeRJdE!Hq(n{UKk7)JZwaBDvqEI^$;oliCaE6C7*av7vv zaZJrBcHyoC7&M&^kS22k6O$Uyk&`-;=CIuo#*^bRkU47mM1u?*a6c>^B5^UsGaDIl zU}{X*B^U@uTCJ4PwjaI(a{t|x`01&1-ttx2wjj1!Ih7(hUJ$W|rX=c-?5St>;NRwp z+VL%`VAlv*2?BWXGA%v8!+`m8a$Un&VO6Ha-b*V2=h;)$50ujPq zvG8|G+sw7VmagHVps;gdyJF{Ho=sb_YEgW}Z9#al-k;m2^~l_RhmPzzmVFh3Iy={y zjFNT$$k>ZJ@63xS&ciB^fw5$o3gFC0XQT!ZAyUdtF7h>GrZiS9n2c7ZEzL15&3=(e z5g|k(j1-kr5eQ@jF9&2V)}HQ`ocREP#9fPC+J+Scuha3_-#iU5?7`q_wwllq5`WEiW?*_4zp;YMaCq|pK%tk zdgNI9O`WO+zd+o}?`QrGnh!9Gmn662;xFbX0YA!KLo2gp601r5zv#n|tZ=<|Q4wHb z$cRllqatfQh+L91t8EIIHDSzS;I!IhdkMOkO_xnH51Y(L=q;B2n`bRAcS+PjrCCCxzQ8EWsL3#`$-pI6$KTa`NuW$jOChn; zk;MSoOdW2yXf(_caRjlS~f>3?Y6jufc`}LoehU zXz+APP`;g)l1}uWqRrV|;Fim7Gm6m?;-dQnw)3m3xtc}sI5}D{V4f3lvMwsOkHWpKS z9oy+6)4Ckhl3Mf!{=EL`jQ^O5F0_5d@5NqjpH60ot1SfxH(0PNN1Ms)egNWcg;>gV z!$ak7>DEX8Ev!`mgR#LqumV`^`@4tfmc1drw2|gjBGqwb%jsq+TB7y+M6(APvq2k2 zs{EFZ!skiG(fo)k<4oN3FSKovE|Z?k7PdbX2M)BHUe(T8IwLMwlgv_21z$29lIUx> zc*Ck|RFr=p0x1f`NrD&5U;onicI`1-o|vk-}M%OvY9%* zwXK%7=4ve{NRV&FzA(Z)2yr2*-2hAa3hE4OF6`;-303|pk>Wp-YxQRFM6;piz~5he z8psBgBxiAsXJU%_;cI8&!@KcfG_Ok;m$0)-LkWG;g$X|gUaI8TCujr6mZ3$|l%F!x zKkUmr8wCK;Qt@B#K`IV;yN7IcX^-iKO^W#-W zJl#D54+1?UZaGnnm1D3yVgrbUsP07TAq<#m|6O(QeYi(ausCH3_9seL*y7e41l6mhz*U=q%rwo z@*ma9&jb+h9q)vrZL1H%%dMH{G$9}M(rM}NDqQ_V$Y#jK`i3kVOH3}Rw9bJ0!7aJ$ zMnMDDQ^`WgwKdPLo|AGk3#>>)EB52hc*y;Sr>R1G|lXjON z9_l=;QrN+5iljsRUpec|gGpkk<+vc(*MBT6)yItg2tQtn=vsZGX(4m+&*)r-+J5VD zza1_PQEKBDzKR;=Y<-K&Kvvpfl?U7|~zXo@BnQNX4ovY}V~8Z4yv;4T1eZW`ZQrD9KE-pmO&x~$WDw|0qK zf6^;~rJ7X+WB#8cRIB@ht-&ZpCen6BuoU?2v^2>QvP^k^GC|wOkp2y{#2!GNw~Ba|Ys**3GpN zXUvYp*6=&DkfYa}?G|?M>0YlYlm;A^f?hLqBS$Jt7++!sEoC3(pJ5bDtFR<{XY$lc zkHB9C_c8^l$XxJp+Pj}{n@0m3=|jqni;xi0pg@}uCW@x|&}=oKGPpU(V& z@V^gm5;R!Z}@M)95!vh{gR`hXWl z!XbZWxg-nWuZ=WTgJT;{Hyjf8f(|Ueb0-XDsfmln65H4nGd)yqgM1^zB&j0N;__hk zk|Pu4Hh+MAqd8b>h@R#$gS(R4n+;P@>~c9EfZng>Dpf3deaKz?C-<8GORRKt*2pLk zBTK|k_iHE^Q}-4uQfO08a8@H4?ex8@-Bco4Gw^5#x zcZA79DYOn@zJIag4{-Vwf z{jrb&p22cv{ZPigLk-VVz2Ym~&jO)cu8&swQ29h&{|m+I>EwvX-YnUk_2t#vTMbJt zQTjdD2wkrC1`*?tS-*PLJ_4l?-?N(Lz6Xp9&v#&d9BR2{gfuk3|DC0@=#LXTL{gIz zVPc!t^n-}{UzJ=}JX~G0ADvI{1T)I083fVW=%NNu62a(+i0GZ8%ojw68bXv{L>OJv zD2X~skOYzFZ4$vK(c3+~`+OhndO7FeoPGYkwf0(P?X~xRJ&QVF;|gz9x@6gIud+=h zwu-ewQuPMZ_S@{{&veL$-mY$1l8TB|te}dQ;%kxI8TpQSIJtK*WvNq|M+>nJ#pt@N z5Fu5sxi^(&yWB^jTM?}W#8}`9D$(W2`}1LRdYg|^t@3oy4`@QQ3C&Ovyxk}P)~;q? zmBf`eORtCVu9Yx0%L`pEli%E)Rti}8*7&mY@Qt?A`vmxp$8I-Yeww>?!!dB7;G>BG z+nSh0N;94ABT=O$i`{g;-+3GjaY>?K5@!1nJnsZosQDgjaknjK9RX6DkEn9(-Y>LF zpC1ihI#_{71z+b@d6cw?vU(uhnv_mB=tz)uY&^DWMbgKdU}KNp8GqvCls+6hU93-^ z*f(zAk@gMQmMKUwEdK5vaj`yTwcnWO|9~s4u9#NTDTSOLH>c>ZAv|wO`Ux%d0dGZ= zAeIYxrycv$_~A-}0sx0kK^VdeZFz%Yi&z;4?j9F<-B6LKR%)dsX{*V*FA=>uu-GjU zU13yBtr~yfUGTzktM*PG2?fOd8K!SFZO9K5eQoj2WN=n$cQl#D^JL2}w?xYT5GK+n zylSc_$o8l;q~!3tMDO6q^YOonDG6R`XS1*$p55WWOL!e!;7-SqW_I5^)JRU)^k!!L zcgU?gW=r$UYL;pq(m+*5Ll3Da$U2gV*x}=b5s@T4z~3FA$r^18Fm^Bhg`fO6M8wNsGyG`-1eNfhL`ru zX6S;NE!kiIM%H>^Fh8j2Z0_6XZ>#R#;fkzC>PB54dn$gmKK#kS6+X_)#q-o=WQd&A zB$tKX?`sbZ!Ds8m_QunezEWtuZ+%#CukuO7O;n{;09$GgDpO)S{T^{p?Sjz{+75~e z#;HkG^o^(c*o4gT%^x4OKb^&&e#<0pB$HS%8d8M-8eo{*{U^sPG3@eO#vo4XJ{<%a z+N+C?VI0$<9l%b?7l>1&ypf1Y9uY{QF^&WkyRZ=38znszz*rqNnTP4l$B~09^k8e(e=1>htkRP-S5xj zMRewix-iv6#|nKfx+rUyFvAT0>RRM^w@07T>d8oJ_V>8xzWy?7^b1;r8lh3bnsa2P zIOdKiE;6w~lG$MhbS2htmm%ja+Wk9q&n9sD;uMe#>hW5G1l=nxKf|f~zMYlh4WU zLS0Y6)DnKCUDVM@Fb=Tf0`mqUNPej7$jvO3o1|q!0`F{?BWf4Nc(v@rK*sF&in=ry z^X*`lc!k(*k<@S%vCd?U%>q1rapW#F<7{|XC69Ri6Gp~)Nt4&*CUqrRHx+Lt?(f!e zBRo>MOXQNjx){EhI5jNzJKz>QG}C#RCfhD;%r;z!{YIOE%{@GD2fEM*ZxWfevoZVP zqlts_F{5hK*okDEm{6^NKRmyiP;krD~>q_r)bK$#XiudO?G^Eoruj~UY86*i7rl` z*K87#MO;dfv$?Fiezxp-5OX&Kg?pj&u(cK`0vC?FweH1nUpV=ELHea9opt9bDt%=u z7?o+^k}Ab4qN$He^$ts*ifJ*Yf+m3;{5O}Z`;(4VL3gQHz#}LkqT%|Kn zyz#$-DL{*Vp>KxZ%6O(fI5CibVMuPtCZvQV=1dk0L#RhBfWvti&Tbjd3TwI>@8WM_<}b#|Wa(G#rhneT`w?v?F-_%npP6`*)QcYA zC?Yq%Cd*QvefE+l#$~>ax9E1vNI@^dR{fDhr|MzeB-E!SArp=363XgGe5O2z{`4m# zy~Kb-yZ6-mRghX}ru0*VDB6QU_+K#>DkCIO7-~tA5qnS945x4a=5$dHN%o@88(q4V zU{AQV)ao-YQv;^ko!oOn&%Fq#*D@REP>~xTCSA4JyA)mEse!F)m_E|BRNfXV zXB=3qo&A|U$GDLCD%W`{HTCd|>77@*;@R>2&XBaQC&U}2@)XI{sbfWdq@{x__`FvZ zkO8yv2{j)|4{z>XE0E^|_kSWojVJJFtDYa;3-)r%|zJv#Y*O>HJZ1vy;fUG^&Z|s!2=%>s`$Qk zbq+_Q*VCyOusnsy2X0<^Ik?AGF2bLb0KQEK%BLi=3=p&>X7h)!+l;Pcm+fk&eiST; z?<|t5+-on&I&rkK3ah5B5u^)wu=Dkxk()1qJmeb3LD?#3=OhVoHg7FEsF%IZ^Ebwf zDi+0ozck76nQ8c3IbqY_bcE2G=~gwAu(X{?6jk3F`OpgFBzox!Psa9Ns6)LT^Aj$1 z9NUMopUh6Tc3k7(WD?Y|AP+dKbO>b25t~m_3=O9=?9k)wXpq(&BskfHUFW7NBhi8* z4630awd&z_o8o|_L&qV3!{We?oDyxDJ!lwQcen*^BE^Zlb+Gnj%iZngrR)LF#6kPN zwFpwcf)_*u$`wQTs*gZ}BKsjTtN;S5QC>^4i}0_-$-6j7#VXik^dD)dF6B?qPmI2hj_J*r)>&6>*mL>n`w}rN4~zgh*1#$iY+fI481T zQf(OsCYAwXgrMe%vvr~YY8SyIw|(i1ydYW(>i?Xm>*`C@UC~EOH3WtQ5$i9gE3UUw z@%a7PBYM7VRVXER%mC&zz_0(_l=R5=KVWz|Sd`y3zsqULL0CXc{2dj@LAVq+%zt$3 z8UiEgzo))#^F)%?FUEIqusHqKUxBo%js)C)2j%Ki1Q=~0lmJSKsjR%9a8yJX&Ovh} za4H&_ju6*AdE2~T>BvGTy-ams)^3sUOe3tUU#mJ?-o}VX>p1zvVrQmirEq9I;(P1mDU(0p&5-g6cvJt?U;~3B$Hay z^+ktqw!5WbOmm)ttvW<=ArpdYpV%o(%i_96DiGoVI-2ole0{J)nrsRp;1yL7pf1ZA6pOd3`WZ<0ss_{XyDlHa2&X!Dad0M}*pp z;t!M8(MkVk<=*Rgo#vn@#23n!{iIZEdOoKdCjs_%9e>) zkLh4w%;yw>X5gQ_!spGgBE^cz32l~AT%M<|uRQLmPAfBM;0(n1O)e+hZmHkB`@Fo^ zfBf2xr%R^bEX96%%Bo%;PnV3T-o7=8(dS#8JwT?FUFo^WO?o#Eej|Fvd6X>U*EW2! zWt{xCpr!7gXSM7j_QiW*DS>@`HRgBVVH#_>@d#PWM;Qt*uiH zv-S`=Uwzz|=mb7cphPrBF?MDXV_|=YphkMp(Txs&N(uOh%&>m={_*q{iJL@nZ*cd} z@b^D@&F*t;{WBBdW#90oSg%cua&MB_>cD?dG6=xWuh`*&Q1x zlfc~1E7~fyZbLF={61{qR84~kxbr+dGu^`BO0Ylk50;8AB2xwKwsPSYjg)9$rk)HR z0_nQi%ZQ45ie69LSLfUnc%!IcTQ0>P1& Z;p*d?0UAwHn*l@vd;bj$;ru^G{~x8W-%kJl diff --git a/dom/media/test/sample-fisbone-wrong-header.ogv b/dom/media/test/sample-fisbone-wrong-header.ogv index 22814660218a836fb7a034dc05e5d377c2370dc5..46c3933da506d49b41def8d0f9ea93905a8fa666 100644 GIT binary patch delta 1625 zcmZpA%KG0~%0E3ln1P7_3fhe;*+ERN?UBDGN;zr$SAhMp)10id%;Kc{yi^7qpb$vwWJ$&uTp&HnK!JwcljRx3 zIAAWB{F+gwJ}5sY)k-0;G$k`%KQ}QmkC)3YF*nu9ke3VW4v3SWhJoxc?$vz7*ZLm` zOlU00NX;)w)CS5%WEN!T`4^=tAzF3@i;SjEodCLNZE=^HOtC5;Z}t zP-U3BiAf^DK+o7f*GMiY_`PKm7ZP##dDq+_5@8?qR3&`lO)ih$l<`SnVUJACjsPpkjph^ zYfa$qM{@Z8|0|ix@{5u(i%o#ij{epPiTNR=VG7Yk28MjZBh;Bzs{qkANnx{AQj4NAYr54n+<}4y}9!R+R@2TBPSy92U+? z5%LX`m>eRj%-ArwLe^dq6wja_V{PqsX0*)AOG&K&M=;~$3$o%99XObU_cl!aBP#_~ z2#V|_XP}i-BEhkkEGL{9%7vHq7iID*ujiBLfx;h6zgoH3Gl~13YQOU4`!74Kcam*k-gh^s zR=#gOV)bj=GM5yvs?Up;B!5sS`73K}w>*8P*c~G|%1dZkZa3k96!Q%ng5dHSRO#z#+o2wGRxDOJ`Bry9>$;*t8eUu!i(Z9`lip7^52b*QLN;Gs{<_oUR0w0e+P zUv`1~?#>^6`{tL@s;=M$QDSNj73UZpwu0>o8u|Ftdx|Zysin* zx-a{tgF<}bd8JAr&)lA4+uJ54Y}1cVvH-_2L~`yo^@&ys*QA+mJ$UqnWH?w`Jw$5u zM?02@TQ@1!H=KB2kZ3vqWa8G3dm{dD%(-JTFFt3=l3)Ej$G#Z^Yw;X&o)tRb07AiB z>1r$S1Dmhr>lwFO-q3QA-mmL7nHI-d4H*6msxYHJ0h|`k7FK7zQDhm%uJu- zxs|i${p~zrQ5N*n3Q6^fTKRmLt1~Y7<}o@e97@`6vZ$GxPt;~b)6d=_=Q}Hp--=@v Kc)j@7WCs8_Duh)4 delta 88437 zcmagFby$>L*9Usf4Bag`3?U#PA)P}=gD5H8(p@4rLrFK%AdP@ZN=XdTAtfjcB3+Ww zaE9l3-}8On`RDA5YleHTwf6nnYwcKT?LD{h!K;|GPhPyx2Ef373R9WGy}N(8TYm{9 z(#mlLdw~9-gh2mg_`lqY|KX;{s;*6ZBTfMQ&oj%`iACbjL&m$-?&QD77%hXd-`U!G zTDrQ}0Nm)RJJDnsP&(e73Er6*{NN5SRdOXUjqII@w4dlclYeaXL|a)_TUkm_)S6$&!qQ5}N?1tPO4KU& z-*(?66AYB2%ln9kH@4_vt?+NDT>(217~Lu44wvcI##rK4{|nabZ5agpN=tiBUNqUj z-p%ge6OR`#Cwoi1e`;YWcMt{n_yq)D96H_}ZWfN6MIN0+4)*pg{{xfx{~u=UIq?HR z#%2OH*?YbWI7~RQIF{}JChO8tC|#~!C%KDTu;$aUWLX9l5GvV*L5Ake%y(*dQ1bC5 zNZ#JX+Q#o6`$Cdi8SYU&CP$Odg{l*YgBzrqz(ELr}o#_u3>>>Y^`)4@Z z$swBlBL`_kQiDQXCTTJR!;}BFI{q;y#y@SNKkh)>J;*NG?SO#)m|FE;>RqFE0JTJA z_Mo8uPjO~u zv5vwtAWr~7k)Ruf&EMX(8*o!acUx9pw?F*n8~yk(ktW#3r~1E6U2$>c!8>ziAqf9Ht3L?g zS)-~CC>>8}4VTB6_>pJIGnUnU&)gmzv>Lc4c84_r-1A&zw`Ohn6SwU@96&^v^o319 zc77y#KdXE+j4u!@ZJkdyG8WIV)i-AuZ>?0@MJ{`tIie|8Nx(qttn|uVSIn?B+6dj_ ziv~wIJZ4O^o?A7P^9T)*FWv9$3ruWP`fcyaIzt<$M_8uy7Z}mobo{$O5je;}7wKR2 zfudk)cLbw8C_$l`S^xk-sR6*pO_j0u6jyHc=WpE)hzI!$x}Kg^DOLO;GAdcDQbNKE zR%0&Vf~4dLJ38SG<-_l?Jae}|fSq{4(Rn~>lYDT|0*zx1rrld^eVjbcDKUG-a@9N# zY)KrTUjhhVfcpBW;%)lyA4aKoa;pr06p3ojR!NX+u>#c-hAfldTJOeBynBAh@_R%> z0)&qM;OSmus#O&jfu+<%P$g%4_3cHobEVHW@XI5J4hD=5pL*t4ivDH~tkT(D$twmUCs6T0VaW;QEV@(QV zcfB4jE7E+DqUQGmMV@BmR0b&gj(;SneU4z6dH4Hlp*w-@5q`|0^+ls24p%dT2cYls zv&N;#%tg_n4y5yoZgpL-&EslrZs0rc5kL)w7ad{V>YB+IJEd85xH;>j*lh0bv8g0^ zZ62OW)Yy~#XJY96J1_p3rFRn}9L^kej~Jk4AmjO$!cB*u;el~6L0RrIu{E_2e?Gr3 z$Lt8b2nPV$hSuXJs0U|cl9^{6<*-8*NQvFZ4q4S*y>w|bV-Q{Elb}5?sssGbV@pA8y!v6NkO=y)`Vtm3_Kh=iZ*Jl`Wc?9GL zZ4UdB$7JQ27L}O;=KsTeAmAsBov>=y=hXu-CbV8+PCV@7vhVhPFL;50KZ)I-S@SyTh2_B$*I<{3c+;O%z@BRVUg87%}fQ^SQH90XfEC>;0y@?;^Yh;!#B|K|64WGmW_*@-g6{}4}@L2N_ zeqUItfOe8?g*0eqb?bqd8O$B|K!u)60_QBQz#n_J)JCl-Z4)9|RcxJ&W&2OR+zMR8 z6p-0`dsst;_sa)RR}N(kk7vR{14Q9W+Z7CdbF@@T>R~l1(QHF8Hw_|X5szfluf392 zxgWHpmP6$Nl=B({9@K<-g+E5G7$ncwaqzLs2^$8mnmr8fZ_@)KMhCCv8kKLBkfDnQ zf4Q&Dd<^?Pnq6Vx%tZqW_njF}4Ttzn;E+;`M>k zQlO8Wv5yaRr!l)slbHZSf8(lW!Sdeb!}R67mRXG z{2z{{6jd=0Gtcyz1^|rs-u+>6n}WHX+)~hb>|r9il8GDBhH!vUs2K4Cx6hh3zp6pN&5hM(X0y+i zCfrcEc6$V+e1z%sNxcK>LdPEOnENeA&H!^IG>)@bH&w*Q zo;46)*yHb`Y9>^RK+g!>^1%RV3A*hk1K`%_0?4;Nc(EuG_~A80ofeAvNXj-YMCt_^ zis`Qr)%$_p_IwZYovw^jy7F$Xd)@9E*It@Br@-L1do0pUB(2mO_BnSLC9 z{iLQ4KK39>;}yjSZ^03@BJFS4c#+bX2qfIYlVTfe2Z3iB-~z|TLIej%pL&9Bv|=W9r_wz=5AInEW% zoW&+5vhM5*@6hNI3MTLQ*%t@Uf`H>y2GpVq2CzZmFc?-3__-tSfdH>R7;pgfct<$h zw5G}nGX=CD@nco39~KmECZn_A{Wq?6sru9mk3{x**SR?9Va=((my@oibl(&;?9MMl z1^k*2a2MR_+bdIgdHX42_{Eoa+QIR2vUAsp89h`dk=LUadd)i9PiPcxBOf<8mq=D8Nz{d;(ZR5C{4tiIV7(VYyTWQ-g)k&y0~H>L81$I zz+BM@O;U3pP2Ssm0JV5^7LSc;)dBq#f3s%Pk6Cj;+4ke@aoPMk%N^zuIxH^%pnQ{nYJ6ac1YG`U+QqIvMsAi1D=IJzWQ73as}Dz7tS$T`sPX0>fGQRB zyxctoo!@jP+HYM+eNF}e_V-i(Y8P}Ui;4KV*JGT_6>Sc(f z+{~N_5-q)XXJX0@5s&#z0$Bfv zHp=?!YSu>#@DhM^kzzp+VUBC((+aUqbTz>NEtHBzU-Mokw5HZKTI&3EZ&dMJ)?VaV z+>M@p^r&-^WIt0YZToGJ#(-{qV(9kmPx%@GH=;I6He6=0j7S{7dXf6|tO)d!%|C^- zy8%>ZOis7H)KwU7jjXl4f;;;ywGz^wC zcseLW$1dbV);!Z4t|_HJ5fz#k^2d_M%xI1N>beqdw{JUgw5^hWsk_Z8o8W0BC{ z06<><=1iv-dFva+hRUr`0m4{|Dsl5DJLb8`5_f5Y|Lc1DA0m?+^E-wxJDO_?XOrZZ z(|yRPNHNbG>CQ$*R5R5wOcib9D&JYhm zbEH^!3oC%u3j7%u@0dBqV+m-ZOFes(`AB^5WK?)kh~(96c&immy5L!L-~4LMmH?5@ zEg1tBgJD76!LLUEH97=ND6$e$%0kF1lxEiy@E#JFI1UL7v`934_3I^9u`an+&?Ns% zpPghxjh`f0R@;RBqZ9;5ui%a>gaRy^-b2rnUsjfTfRTSeNaRcWQVIYmOJJ7=n!#pG zCy-XR-Fc*eS!70BgF?R-F{smSWZdCroRS_oA3y4jo{F489@I2(AOR8tdaayMW5QE! zpbuAV;FtZ;R-0JnYe3qR?zLz)5kVF;&npcr(y9e;isbx0czr?wZq1MtJyvDl1!QP^ z2@$2b!-%2;s@}JPfRqjth@KFh-Gl;l0BuIL`_twWxe5J4e{(<*yF75Aq40l)-WspS%}lfaO_4rT~z4x)j}^;_VByn?~7GxAFgK2q+R@c zKD_hyeEnN}^{QQ2ppw?FqwlZ*g?W8ufPV2H{k=336>*;su&*o*z+vio0NEEToR@aU zXgKggRc}m*HEQR4tUo)k^$*KO8_E`zu!1JW)|BamlZ{z~w2lDdik`Cov;UN^!An)9 zgib#KNCXI2BAV1c@sbo{6KXdrE^p8=HYU}(za4uXT|kz}O&k9sjBQ3E;rLUIBb|cZ z`{xy(W$85|?IC-VS)2fT*@XuFeCP?dS%oALdqWpUU^^!!!NIEokLH8j61GTC#c+t% zD!xGTF(v}{a;!^|B|-M{d(hJSt*gXWtoMIgHsZb8v4T{>i!rTN*A?oIn@II$1Ff|P z;gA6;+sGmhY9~7oMFm2qq`6(}InDt_z@`!;VEqwQ)?dJudKCF&aBx_Z^S*u0dqc`# z6Kw1U*WnoZ9Dvhrb+6~5=Z%v_*m5939byNdJ}nIE~~9mG0+(>LhwE6E)k zu=$8(QOs*GKS_y{nihjL;YI1kPmO$v6ZMO?2H`rhCAuEJE1(xP0}`uO|$XBmesE?I)qqBv7_rwNjj zPYn?*T4hf>_oukCQcf#BjP+}bLzt!Uw7RyqXH@k>rw?$mF;+cZ-}hAhIizHrv!+Gx zBks(0Z(w-PN$eAOD^rI_q%c{>Iepap= zYEi0G`i73#U2t;r2nYlBeY%gg`b3?A3wVt9#FP+$82_jOEAC4o4Q&Vp=3FkX7k6Bx zu8;s6c!A3Y$H=S0m;t;70AMf!8-S{(YGJgizfmw!qDJ&b^lZ>4zLm`O3a$)ihw`OU za0>P-z5!v8kP#pc`(Ls#7v(1U;H5^7UX4vza74DWTAe-@dFy@KMhOj(d%`1uj=xv} z+aMw`1ru}RKxC3YL_{8kCMBQa{?MyA*@*NC0}vSlOZ~SOoBkIz1Zsg?1OOpDNDHz7 z3dKQ24yi(Dx1zCuHnkoO&1b~yDw)>pW=ta8+il002JR;CQSa#E!WOp^bp*Cdhqf+V0EXazaWmTNrWRtMz5dwdd z%c;_bD9~zzpmh0RBm)2$OhcT*3ji8atkz6B#j_ZQJJ{&0h~NxBHorNJxw&Ss^BUCx zAZ=Vy5SB?0h4mNmdp~`XVg^LM);rq2}(dbexvo*5C{R&e{?K zfR>T5Cf{79!}i(fn1zV~9OPy!IHaFPP6WdQa*ePA>zf$0TApri@~6irsEfy^4t*}u zXc3nYcd!wsh?S3FLSXR&z_Fhoe;~h_cNIICNc11t$2_&iIujiSQJu9JPb+kG(%;C% zK;~l@S=ArblcZc;y3!|Wfc5R*+`Q+es+oTYmU$jQm0zOD13~a-MxP0&frLTXX8^qv z5$*eK80ZFVoX0)C_~ep3cB2!G1(ww#unlQga{}qb^&$rl91;QqeCS=$oa2i}?j8}A z*dym&OTrKbj7?^x0KFKiObKWb|{|nCQ^dl#Hm1)U3Cu@kJc$T%6n$ ziAhN*$q5S*Z0<3C;+r@uBtElM1aj|1G41D@Xc5*m`z$wYTx5fj7E zr-!*aZ}=%Xlt`S0asx@-F%8}X;XN25VD1F&6p6)_?vFv|$nj=#HRekpODE;T8Q1ff zqHqQ2)4%4YsmT+a=Xha=_k9~wT*#SZm6SMsJyVFp}DaW1dj8K3jzFpP`6IE8lE`HD5 z#E5y$CbUF^Bw6u3g3yD?z6KLELwANiBwkN$YMOWuSFb-(@1tW_%r}_G6&J5OrWF9H zMwIaG{D?YG<)r!@wPz|3FTsM(P-4mdmF-Z(HJjpv=sn3AvcC9DA)YK-#+m zldC=qjOyFHoT#Bi9WRyrGLo%gp)VfggNj2?Cq6Rk)mV`C4OquyRe7Sojgcas;`*G;x8hgGe=5v|(MgT=f0A~Jp3c>J*>-$zO&9$9eH6wS z_vEqvx9~L#3y+2SA{VSW|NmxoaA8>#;H+?CItoOMUT-1hk&C%-=eZ&4_KE zYphz1i0P{5S==9p<9mip5@H(4PhE!(jQT-<;jw;;ZrNWT$bwo4Jp2Z@&Ci7*2H%iW zdm|btd8)9(KVcXYr`QNU<3Rw-o*+({qmVa#h~g+v(8XV{(v|+!eC&QPb93PPOqPTn z&u4F>v656S;;e_OQ{HJM(&LkFDhD^kQOtS>W3#keDT zcf|X3_BdTyyK~Vl^eTy*@MJsBwE4<(?3jVQm?2O`X~D%ci}!Vo4-u~QmZ(&qAPWN+ z4j8Z^663-n+E%&Ge66hWJQc^&FDdU6$tH7ARYc96@_~*n?C@B3}6e!`Bq+M@*Zk(ua4xiTJ8vY=3a037} zO4{_&&ccodoV<%G=an?Hj_yuWmrdyfJVNp58V-GGMjyW!rXw=o8BGF7GydO(6O7$Z zgBFAof|zO`ZnF{|->FOd>N}h6#xABxlbts+{SygZ+)e>_S##$Gw_t2oTxiHyw za4C!!aL1EN)sq4NP)Rn0m}y3y<5&-pSA18Lk2aG(LL5#<>fM-M6?JiSuu=hBu-&Ogf-e*44Qs3HtNmPCNPB>|Kj zvH&jsM+-nNkfAEgN*sITUnaiu`Nfn)ilrrGP5#|7-61N#-hcd&iB*+-`X4I-9=PMs zU9Gpe!%kOYrlbgFWvf}c?v1IUj~1w@e6{e{TXTt!sbU2(P)Xexj;VM1*Fw@KM13xVu-5WgV@V^f!Wki(!dVBRkzNI$eYD27u%>#C z)hZB=J#}|FephC62{kkNxD=dUX^qJDu7y4;nD}?lvr4Tr4z5{CFzC6>c=|9A%)ak4 zbCS-bA*pQ=*0UmJT&x~*;5dtje9l%t58Mw?S6IVU&TIy0jjyq3rNGL#NVIIQU_5HS zxS&9(#=`8?8Gg}N+61H12R4QK5J@-0ZwrM+Kl3tVeK4qg2p5g(jRAWr%VUXo+E=1G zJo0vA*GVZvfBOop9A)EGw?w;0(CMuRmFQuoQjwg~^q>rz+$Ylt;a}Zn&hsLlR_JBL z2_g^-Iv*+5>N()5?jYwLl4(+6I|INiKs!_rFwneh|LHvY2_w@vmX3`50|;Swx;v9f zV@*Twc%*-{fZfR%KVga49FVCZpa%2Qfm1n&+|+%bcsH_AbVj|Pm`TZd#iK#RP_?-o z#>-N%&n1nct2M%`bd+Gq0sf#nE0P$0oAW-Qer2?8@@M{L?PgI!U%dZj@l#wB$x*tJ zob(MJ_)V(PP^dVmMIO&O0)y`r^(Y(3)REFyF%m<;Lj$^}TLu{$8!s^E;pd!GyryeZ ztThtWiKlx}!%L}Omj_t66?US=)&O{2@HT`5Ymyz$c>U;ENqGR~$wDOiy%khCPUw!F z30;eqUuH~pOBmVtU~EMrt|wufUjy+5UN`8M z4@?>AB{ijijaRuQM(STv@6Y|N*xmS;U{4u@YBx>3Er&(S=wzmp%xx0FE?1yw4ZL{P zv;0#=z685};acf5%3D2I#*Nde$Hn&BUcDmE`n@Ml5k;9ZX&!CZ904YCFMo#JU&#NY zLq8m|DRWqMqI6z9WsTt$o@ajT)aw zjViTP3pM?0HRoRYTXheL$3ncW+77z8ttZ&x#LC{jHoMjSMQ^QjQKHJ8OXh_D2HMT$ z>Y3=OA;3g6T2xc9MRsZdJ8a_h6g6k){Es;SGVBZ6m(6~Oq?cA&5;8V>b*wH*wRU@T zg=?6UX!F|7~G=`2lDFpO@oTU1|pzzRcZXsiVv zmAkdsFFIYRduh`cVBVsf3fULP*nBGR@RS(&xh{Uel9t<>2Cyh#dbtYVUxTGPOv4uV zu(<26&yfCUotOp1+W9%K?)+i222yIhAHKjz~p$r47ExIZbb-T zEx~hYI5h5?V~4rNCLPnHNGTaG z@51r;IYmetD?qCf&=c=LON=umX-ZJX%7is)7|3?Tg>}-XmX$+W+4~S8q%rCan1vNf z4zJVbli4AMWuL*S_<=gW6o2i#IzpJ2{5SdGx-mb<+5nrNJt&b!LQkA64F0YQ0LOr+ z-^nc6yRadARG|iK?EPKfB_*C z4h8{r$C-#IdMm@~vH8x+yeZ<$djkC%$Nz}NyMRx+BW}8SKaVWOrWde8!-{)n@^t98 zS2JbXoT02;U_;f&4&AgM6xTnx-DAxM|Zb5kYLnygRhJDwYDo6^@gNH5So_FVu zR&PnncucT^he zsgHbGxK+c6%mJt88PQ=0%n>Y!BNaZ_!k6ihlV73>G^Pzs95b->9FpuMmX9b}9&-DOjv>S9+?k;KF9eON& z55l>}PfNqb$}K1>C##|@=EN(k=ReK&JHqFK7K1CC?70A_nN!M#i}*L@Eko*XyNeBye0!rq4IuCCc>O(YFB4uU7kvzQR5? z-(=WwU&6*p1fOB~EF~K|5gV|2jz!(0TOH)i9-6dleR3s5S=+SOxcZcui4@0@GBTzH zvEi@i_wMDL>5fK9{M27#5aU%Y>0CwS2C~I&7S%KHQ21krCfnRsO^SA<%{-CgIQDoT zB}P83L(i|85shh;leF7DWYaM=t|7p2U$>Y_AO<7d*}&+t?Opfwhu#TlT3YSX`W#+& zn^jL=Ae3Hgo{5h$bWdrRUih>fH6rSm<-0F@Y)HH!aDuwbCa2Ro$B_R=a+kO_KJq(S z^2z3zhemze+?j+M!4e6^XTiRe59>hrQiCH44W^N{S<32&n3168Py0?Uh8T^&mI#GU zi7#T`!HSB-NeQr7#mrJ3HaKV|2`%VQszub34Y@ZwupC7Q-o0$`?zRU>%RSoW3;6;1 z%Xz&yt-c-NR(h<})t>?^9m2UwEC6FGtz3wo9h!aPCvnCde{*V&=MKpZ$$HUZvq6sC zM6vyN4i8jH%ItXI2eH}Oif4#7#h1ELaY3?1wA3cgCG?>g^78TSMQvH}K6o5iXQLE_ zkR$T^DDKI_G3kFMt!>Xu8oZBh%GMF`YGO-E;suI;`1>MlXUJ}K*Dq=U*E=iyx0!|y z=hP3+dnj!mMA~NtU+heN+PfLE7M%3$i)>`$EMV^Gu{-{ zy2J@Y+rD*skl=Hic{v;CF@W&KnX4>|qo)NaKs#SRbFH%B-}5F$enqkwv;i6RX3}nc+{D=>>iL;Nsxq0*O!eY1;7)u!%RTnR12#hET7n^dUGWu)= z?IfP-X+GCs*P@`dwu+{qKP?$LIz+C-WIX<(`1k@nMG&oa?)YMb4_tQ$XH#@p7J3KDp8js3SEDuC1j-Pvt{m2*~4=5|mT++R$*+%Mz% zkMN}}1XkMiVc81W-dT3sU{ z#+n6BXViGJNI3eR^q=kjoBq3pz(j9cq28<7_tFy5Qr;$Kr6(mO$0x<7zI~gL{x&{2 zW&xkgJ2so#=rAkL-Smb5qF2bx2`#r28LOtu$Mo2U2Zd5Y65>2~zpuz@j8(`y`KBeD z!Q)Rl7S?=wB0@eP-7MvAH}ZCc13aIyK#~+`=Y|bvSo4E{Jy(1;%3Bbk0ew(v2Z#dJ zQjzk9)0n3s{#Of!;>`kITj~NXdEr!c%a1-FMhM+L?@Fp&eZ?M@9l~2m0zrT_E-Ztd zg?sz>TNixlJ?h~{qraFc)LP~Bfe%=m98CYZPoh4QgJG5~xa7SrW9_mdl>4)VV1$pW zcw)~i%g$8t7%_toRmn{s<>cnb_!dzp2AV2YGBTalP9y-^hhdO|hn6sa^a^RJ%AVi7 zdA@9I&DwUHHu1C@qZG(`$9U43K@5E0=Kv+3rg32C$dN5H-U&O6!nFKiD^QY6jfVU+ z4)OGA0Lmqw3$zCz$^4WmbLWx6lWyVS#5OV9<)65#5bu4*C2fjQk*%F&cVJ>$2$?X#<^#hKYU z1xfKz0@L60>^Mi9)LbWdWE%Er_5(ADDU>L`e(M%SuVb)u|1CKnN&MKW;;*$Tp@{swz^eO z!VhDg-4K>I@d9uQp;f^62p)!1geWY(VX@rw)6Y0WySi(jE#dOjfX9Pjd}pINnpw8uTkosA?8pwk?po1YddW2*O1GRjYb)O$%d!@ACGQd z+cu~J1M6s7bDlmY;O1OFEN8w1k=q@~;O>QOu`)T*1z^t8nyWLwFU0AWgk>=RZ&`fc z!Fv$>$_saeBd@8?a4}yk5Rjmaxu~IM?v*xv9&q5FvZOKS1`A&pI*BE(F3@sxsWu}=!5MN zRPhYx5Z@u>S2dRSF1_VvpLQ{x=)Av6Q^6_|aI~s|0ib`W;7EGZMCpk7m6Rv>u@}F* zkoadO49`tvg^43aCl9AtxPLb@^w-gW4Ea5{wM-A{nI&Mq_Z)#|BjdLDdL9C%@aWV9 zjgmz`fQdMU+5x`#3$q=wx4ZF|0$(L_kjywSjbj+g9%8#&Qi`=qOE3c*QY04IF~=dF zCK}28tM)g|pE0~Yks^cGbYB0VMvX`_k;jN#l9jsgLPCSe0E zuer;(ujpR$W?KFUI-;vm1KpRkTo{MdIxhOBkmziIlu3?YvMCUBo{&oq_tCnsos)U= zJl#$lP06Evh$O3(84I+^;B(cFjbv&#k{^(*GeT^@iBt*m-PY1NLXycnSx5(dILbKV zf}ZB{?%m$A6)mqwO>O#JH?299@7Ir!KXMNoBSCBs0`}w9sbr#8Zi$coA@FQ zM+)9F{5~QFwQPu!C+J*;9@3I9K}fXfk}YVNpPFdnp>=MxP+sg*!$_9`;9{i1ny`3NxFfpfp{j2I8{x-7j6XT;1Vzk z-r6o!?D<4-w0ktVS$yO;GA`Q2`|9?SQNiwSjowGAi^2(1OH4Q%2SGV-2T;+jD5}*! z!Ifh?84D1pEjA~@G&bo+kvqRsYZ zirq21-H5%gqOj9KphUXFYyn$p3VX~wly7v|ihu)+C8lx+6ReWhEm6UgAcSro`Gw`9f$A&M!D4uB(90EAui z2-rg~WE;G%jcMCjVBO{K95(^TjQidqwp#*TLFgb$AlCP<*nnJ#wFrt@M$MGR>sif$ z)0E_>P*2(M=kG5^CrQllHSl~yu_Dkn-kd0qmoMa|Q%RF^t;V*-)sq^Id=9$4?1_J@ zWgdriZkEX6kD||C#5%FnSn`U}AE_h1u_H^&LP(VxZp+#IC>Y!!z^j7*>1Vb*!V}}? z)PaP*g*r}nUle{`T%LPmgaYv3GI3%6Jzy%a2G7{Zo(L7!d)v%G1I1sG&w`cPea^2C zMiF9}<3M;`6Wpau(|1V^yi86>AmaxNAQ)Xj&x*@^gvoLhz0!8=J@Cqz1RNC3GWuD~ zO6E+C$Zz4b5a#ZW=L#Nq{l)c_XFSOLm!y2eMNmK_nccWwYy0Df{|j&Ko?W?EkRZ;L zq|a7$`!ux=56cmzD8#Sz;XQQLU`-b9C^&%%-#ehlk2^hjGn~{LI&4@=9E8nXZw{tJ z52U;MHvsYkYc)JvmeK`Nvn^42X4PT+DSy-hy-MsZgZ0Zd^ggt*9o z)QY0vmEed|xg`zlOkNi7((Dm#a5c0spTjLnsj>LM+2V~#{9i{cT-7rZuO-f`-SE|n zmcU&x3J4PPLlV97>A9&@$lut=#CkN;`6IL>q4LSh7u^m9D|!RoqF%+AL|jh~dI3^2 zE-F|4KleVeC1ctq6ZPjDSj=Q6dmdGbUMr4Grn7SuUQ>kE&!7`YBp-f^)_l)ah5ksB z!}7P$Wl^c3m~q=82F#m$V>@IeQ7;I6eJviYx2Lfhf=-nM^5BS9N*u$F!Y4b35L)1b zt43TjtR6nLiz2BH(mI1a?9{JsP*6oAa~P|nr{lhsKG zJsin$JZE$F{cE@5?OEV!TM{pE)W{MU0q{`6v9^B66mLEQFVBDivN=1kTq<#3<5ZsC zvH0LkP{3jsr8(x!FsaYgbB++V;ale;LjSDi(^=EW6=F^O1FZccMwMLmFFbTEO0l5p zLx`@2{g-F2=%Emkui_g*?Gi?1f5yB?%)jGC;<3E?2URV_+=U5J0aro1wKe+3^Zre? z5s8r)A0AM%--pk;+s8DM;Cld|6P$1^L@o~^w%=of6{caD7uwk(KyXc+^-xEdQ91xQ zzt0gbko@ABu*7#47;;z$L}C;@MZ8@IxSfB~c>iVbK{=k@{%k1yUCI@%bX~&_ZQMS# z_WMv4y&svoPdBA;jOEPy}E{zZC!8L&=Yfk~5fKmJ=4hLro1ABml0iSB0?}S&yjzw<5amP%hin zB96cPlIOp^l?G{iq(y4eP~21GYVH15^zE%OYXoiwR;~n=s0LqkjalPvvVn2xOn9b& z9dXr&Jh6e3JdVyFBSZl`*mnl8h?T{(C5b$L8kq7(B68GA8Sc>zKEX(kDvz5_u)>`n z0$>S_3I-uS7E7@4eaHv?Jd1BMK!hI?p264m=p9C5Ahq$^gS1VKl2weOpI5PM#~|=T z>ZcEwG9kX&l;Y*t74?7tz$*lTatn{MewKgbx2fak{k+CF?qQFBJ+ZNe#tvIEnfdqp zf&>{X1o|c(5CZ2-6@FM;&r`ps;_}_DR3ByuH4$ch|Caxa{Htdm6v(_~xV8!>xC9Eo zO@2bYkY?sdRe?9^ug?i-&Gpeowt>u7RdE`x3fq~Lo9C+Dt@E@49OF;7=bUyP)yR}u z>|Nf20>U7q&^nIpjMxReq|ilmc4 zLMAYP(eHIZ$k&reYY#e?%w)^&%jAWD-!+YA8=Wf|O%>h7Tzu{TUX#Ix@vzb17(yEW z{Lw17D|dOsJ9U(Xi=R;yd}^7!eR3;zOLMDs8+BWCTYUTecIQ8FFJme*Wdkxr`;f2{&NHwUUjk@t=9&?`%x^w^-J-%M;G6egLkD7u z0lwH7B%J?(F!(=svySjZ!mEfYHB7OWz%FEMae&5Gout3|7p*w(q+pTq@xqjaME#eO z>wqBbiC-Wuis=Dvj#UpW$#94~cRjBwcs!(DV995l9^7krVwj2D&%@Su^T%%aZ6alG zE>WG7wH!3XBOoYODeX&Oi<9jx3_)_l`=dhIbt1KLw7$mk@8aOGeE02hEbvzyyQfcz z`!y`S(hC0pX@71mj6op2v`!N@R9|R;nGMK7PU8IY{snKku}OI%z1sCN0tcIZIP!R1 z`ceKOo~ygeX904nE^HOnA5-HGB6UMuMGBKs_oQ+z#7=zH{&X+u-)JJLONkc#yp(o7 z!>PMA9AHzro;dK$M{!CK4kAC11}v_jbiBi1Ws{Vpm|L9Du(t_IAn#dzlZBtn6)vb@ z?#}3lUthKW+BY6q+TD1STUXO#y((_QR2Go+X<6akNM`y8#AR}Kt%glu|C118JFfJ# z(WhdX*Tb$JTL-axJAV*31y36X9h15v1|A>Txnq-O34K&9Zxjm2@<5_HH$3Pvzc zLB>eF=GIzqd}{Gms!elb78i#vAnPcGed}d_bk=0RNcHTIXEt_I{j78SOf;_HX?y#m zR#7CbMu7SJrw>oXP>d(*t&J{TU}T? zvkbC{F|^$@_A_g)8VK}HQc;HztBlh$SZdCDBpxPvbadtmck{+F((};{RsDV7h0iOX zNqwv!0|jwue@sFgXp291=wdf2YIU8G?zXL}+ut^a{IDzZ=Tnqd24)`B;q}R59^Ipq zDSc6`a5l`*OC1H{lg(T~)=AA%~kW!{?1c5VCaqh(B3QO`dQcdJcXI|#YyF7AgOD*an2agy29x>uef$U_zK2uDmkzenOR!JE;8n-PkjPTj7uX;P?i4tZ#xnebuQPKQIe0 zq+{8LzW!2Q9w<$Ergh&8%)Dh=ArfT;ixUY$>#&!y;XajLk-Bnx?2*Jf?*3PKNY3(r zuJfKZ*)rV7&Y!BS)4PJlFa74lM;f6}(X$uP`vCoJ#pS2l#q;ZV{p+u|0j~bTKSL(p zg+O-@*VE^<`L^P`545}6hCiFk9l%arZ2g+A989Z-CDrXaj_Mzr&XeYCc!!*|afml6 z-W_f*klc8qdF#w4Wno|)t|GBD^U)+3taBxO_Ee~G#Ds9hffGA|`hZM@KRwvJ?keMe zT`OP`pwsS*lirsXzI;6Tj={Ud%0vLh8suXEz3eNpB75b?1E1NAB~)3I_(DEgV<4h=%YE|8=Blf3tZ zPG?Brfd|S)1ni7aGPNBB125T>fv!>>tpts1AxvCD4#N6*rD$8Pa+ExTq?;>C8#*`n zwUy=aGp@?3n)^>Hft(2wEi;FQ)sq!6I!~PvDz-F{bB>1+4y*dEt%gCK97)QPh-Yu- z%_v`*k!4k0{#4NVB^~ut_|*N{wxQ)P<_nwbCb@F_i@xqx((yJD(q1%UL<)WRp3AQX zAkt~=jvdH`O|flA80O)U@5IIcw|DaCkJ@hF$@b)PCnm66 z{-`WC&1-8Ui^i}zg+yv(>4tnBf$)}`IFk7sFtsJ5Dq5+~#9Wb9t{d_8w56B8`{Z<= z)3!f>`Rd-4{}cyvuq5Ud=(6|6EI09w>5$Eac1x=FZkwrZ0#F~YsMc^sNhJ(&@_4n% zKM$TB_|c;zhy5!M+rh_22QyW*ipOFx!L|+t%rkb&BSchhHJi|PJ=+vOlZfk7<0-0+ zUk4dP)JPgNVxE~;cG$xWg!=k~&Mgbr3-SFTeDBpQ!pfvjOl;f9#5THP+s?$c?POxxw#}RWz3*E0{m`e+$G!UOs(`s9c?->M9n?&~tB-yBHTgh3r#ikTmGYgJ%H)%Vf3O(h0#ED#k7{dcNI^g=6B6Wj zH+J8Xs(5Unc0CZhLX|V+FyN{4{SAKRvM@S%#32K}mnfT-mC$10?zdlHk3)!1ffl5} zcK=y*PwMVk6chD8XbhpFpWq_NM!*>F~?zJ>{v;ldX z9N8l;j%f1nmh_`AGTb8zxVhG1`q@b5&{sIv2kH*w;Z$$m!NpuxC$wMGrJSmWxZD42tn?vV5yV=5<{M#C>LgrvZrJPMA-!K{|qMiX?*lS(11vlBTx{MP7 zp21~z8K;GDK?Z|z`0S-(;nmSz?&d=Bt*Z?UvOT6uh(d%i_7BiTy6%E9k{PpA!wfqq z&p5<#gf2`%aL8bVvm=Z`X*=dx%OZ*HXe@Wxi&vyyX50rxSK=lQa06c^+7feGb=)nN zoqUU21V^fCc@pvJkA(Sjjvk)}WD{i#m+i(ctH}TKDa3^9+5bs{QL6Jxs9>rNr*MWi z_th35KHjY0S_(+|BW>N^`!=amGjYTp^>Z!oAtb>2625(pqF6lS!hdFa#Z*QaIZZpY14 z^CnvKJtnzi;xCG?87hjnlE3TvWa(Xl|E^Sa3Ssw^A~!LA-ELvWtP zL8O^i005ktw_Y}8*;kv^e8owbEAg;EE}S@hBtCXat)oVd8F@dEFIE{fibuVZ>AW2t zc24X7-V9I(QH?>Z!#!%Lsv8m$wf6(?_TU5Q>7{4S0m;xAVR&|!B*bpFHfDqM>%d6W ztx4AO9)@&%8TNeA(pmiIq;@{N!e>4R22D zkdSqHX`W4q4+`T_yg+2nFL=jXEg_kj`03k*L~@|?j>KSAuCdv;2o(oi5iMb0V-j|! z*IL9ff3@r3tp%~gsCo0(`OuCVXnj6?J0Pslq5VTEn*1<|u}Y$%^PzBz%#X1jU0^Tp zX(0M%OA`+3bo+CU<#iqk3T|S9sWFhNd2KO+7Otp*2~KE*RJ%<(+=W=2wNz*6QE>Mp z8V9)HjRWT;JYl(Cby!-t-&Rf8Er}DKMH}Cu<5LHboY`3*<%KTyb#!bW0ykb-aCgk) zTcBON^~k%){l?A3hXTg-cls>%7j5w!pxhT52le*CfJ@0g!RliA>_xS`)$7tMDEsFW zpP!T0rJRr|fueCR>(@VAFQBuIv+Sc#0>NFs55d==Kb28(Ou#E0Tec;8r@qJ%fTzJ%ey-F*hCwyn{lTTZg z)R~8wE@QsVaYWX^oJPO4phf;t6v~VNGx9zXKS>Mn7{{dT|{HIF%KV9O#GO>D+1WC3mn`ua^ZCjCzd1un zU*XIW$|h27mW=!FkLIgGcK^cQTFGxf{CzItAx8OE+xl+ZR?Kq- zArKJ>vj>%r6XZl`)+Zd8h~p(>2N0Tn0svGz*H>Nc=iAFv9*=3AL&b>*=&je*G(!Z@ z{9s(aSHMElDUexEaoat(dtYeEuA3;8zdbgpmuV(SVn0Ls;_d~00;=^!fddp_jNLK=chF?P@(y8o$N)F5&z)O>;tz+v zaA*H^Ixkwqm>Mtp<1vg^XHjs4txPrLsId~&?z2&eohOthe-EwqJW9Yuuh_rT?RqQD zZhW9P*|gl!UaK2qtW5sc*=h)69Q^b|EHq57i_XWCn({^IMCRXHM8gUxnt0e&1L{s> z*-CntHFYqKwkUAeiL;Vmkrw8g)JnH33uz*RMLqaiY!?h*&X3vI<%gvypa^P|Ku<@q z+2O)c&NyHj;gV;kgvwA!-v^U8@~Kb&;P3U$Q)SUCn;J7LQu~~l$5S0%=~cKqsSj(L z;<2Wm5v*ui=nCSqc7@~r?uT0j0qr~e5?VDRW-F(Z{ZAX?W^$qt757g~paaXOZIk2s z{KbRWFzG0sJu4ViO1dUJg8hS*h3yEe0bdzG*t&t-h{x$5IDJo*5Ms+iA29~Y&^*J- zcJ7Ek@J4Yuv`AbzV@%^2#;2KpB=y&{O~yHjA$B zV^(MMiP~8L5>%%{={>Xu9y97Zf}lbwcBha9YD#L8p9%XuM^@#uFj0 zTVBaqOjorg;mab?MULcVrtoIhO4Jg1VC#m={yjD}-d$#B9+aXz{EA*9K}l``3cIWu zp^#L&T*!-ZgTh#GQ&VLaEE_u#Y2)UG*8li3Tw$t~Bf7^kiY8xyER(#ic#>d$ksL`# zY09_Z(24x(Bt2|+YxzHmt;~tf(U9mr{^cVSw6?C|ATO^g$h#fnFxVHZl014dc4~SN zN=fp=`$O|HPc_uBwwC(Zs|B={C%FD~f2jtzu&1gK`V@431txKSI-1iYx@-J}%Ux0W z!``u>%p#(HuU8omhs#w!>QXMiI7zND>kRDjtNaV)#p_bC6+C|TJ8Bz|h)|iYPVT2n zFAnAQR{WQ|vRqTs*zzIqk;qiG=3Uy>Q1za+)2l*l6e9%bFV>(t^xgJ^xAbA>EpG}< zMubBoC&cui1sWEs#LyTiYs7Mh=&u^_8Km`px-)(BSam z{HnJ9LmSRd>4J*oK5_1k;iSe5v7F zhX9*75n(xl3A<@RihKHJVcNY3-Su`}z&1bkZyT$|3)IT6A1yVHm)<{V9u#gV6jh@f zHhrUvNM5{w>Bv0BDHKU&SGDX7Ck>j(t7E4}ZLdB+$WZE|$EzD|%E#|^pEG&y#Ow8j ziK1@HMHnPxRo*mp(&}vRk*jH1zt%lVFb&%w9^p^;k`t^g=HpG5QY{#&HKCZ#G5{XB zk~6{3CjH$~I|x6!BpZ0#vXj0aRA6y-KjAp8oY}>4pav(8ae=a(Cz)*~>GF2S%61!oLa8SVwH5oiFW@;z9?~gWV;GYw zG)WQOGu^j6tQ!^GcZ0svo`rWPZV1R`?_2+`{&w-$(Rj-Ly7syFYgLQ8HFN^sNdTm$ zG)J^o_U}Et$5r7DRwTxcjLh$+8iT~~l_qIl*t}|?srxv=C&(5EF=tv^RZzf9@}j2ga3Im4Fba>234V$S{!%Gx`21Pt{yKi7F#Pp|&;(p#hj^ z;eMfADQXG@&k+f7Tg*6>b&ZoEF8@J6RW$tj)UZC`P!*N@63v`1v2+kyCuL%@H{j(4 z{7w9j@*J(=elM?RKct?Q8+C82S0$YCl{scah2G>EZ03#%VLj|LdY2D%8)Do{MiIv% zTazE}llG!zcZN(c{UN#jDx3dPj2I|ms52<`+)+x+seXTPwS$(7+re9-DninBu>apeso6^n{Q%y?Y0&R(+!<~KUR^9bB+02a~5 zOcP#=(O|s~;WA`IuP25XP2zRn2QSxx+Fi zd)aP@idOk1EjyOHrNpACvh+c4@oYlWwcL2}i;)sk0E9XG zFAnu5+QaVe^#5u5EdPG=62K82*x_?CnB7``!pn*%*gJacg7F_s0H)jp5t88fN~Tu> zU{qI{!&H|&%gS^;Rf=^DZoaE+>$wn$5a*IF2M~FcUhxaW(G$fw36l8@C%}rtp^*h> zUVB_kAN|V>vJCoJWuMox`vi43_CyFez4aG9F2bO4;C}FWXXAI1@Et@xICvlQ%P!jy zMt_7nW9+$XxC|=S0TR4z42oogMrJeC*O4g~V!NQT(Wd^``IO{q$!CJ%+~~ceBYaC| zy6Y+ZHD+a+j?5Z+iv8oXWzHsLT$>ZjZ>##THqjA#pjB`;G$cs&(6DZ+%g9Y8Es zrj=H=@;e7z9w(Mi)M^ON(lXQSuxaA0^8FU>!ujXXl0Vs-Oc_fAr*F_lP=~2U7k@jEckitr~UN!z71{ zSze{R&+BhdTHK&6il&1foic}0drSWp)%PSpRJvsc4DBs#QBf;{7r!r3#X=)#@xoi? zd!ZR9QuA!Y%`|iPfkTf&Z1(q3H?gx^v7*I?!e(&}#t1DI^`dpq|Y;0^z=lb-2@D>qyl3Y$JRhY@ll~iMLcg@~yR9#-ucgu;$niUXBRbwXPx;iXdf8H(oipWVR z3vK@8u(@0ATkcHQ5P1cL5Po`hnS6)@K|lp}B|jL=DI5oARm?6CK`IL1>v6rss4pg< z!YsnUKv^x>Hn8?8;U)yL`iZe(u`%=K57Wv6W2wuZ{(+;h)du$k!k+cq&kZWsgrK~w z9QC{AJxUl|IY%Kar-IP!f(RHvlKT$Q&*BDj4@RK=Mt$$lA904T-#Ngdy!9nQYeh5m zYRtlm z#1u<_;Tr{G{Kkq8AxP9Y5}C$TVZqhP-(-u@In@z7o+&9)EfA@gaY=TnYe@j6y`EG6 zPqP;a)XK_K7dV9~N(Vzpoh@Rn<((O6Ly%#0S2X7}O$e;=64eeKhGwxd;^v_K^yMIg zatbu&?oImKE6j%#Ea{Lsos1%dwQmDSqy?j z1lJfn*k}zIP5^D*2X(7^Rgr-lf$8ojgFoDr%-d|n((-3+#I!RnsH1zCO9zr&z*ee+}|fahoeV4vVYaHwY!qGS`>>Sf|cG? z`s0hWp8nE@<`p+`(PzII?;KTO?F4@;PI;bmL37NWegg{T-8)a2=@bKt%AM6;SuK;z zo#dGpZVMh-d&3OvPV-t^Y>Itz9WxG5ej!3+UGWv0t8k|ls8r<`a6N;DQH(XflTCvGF04Kur>V-Pt=5C*pJ z5^Eb1&{;Yu?#6!y>-;0+-D8LPZBVPD72ClQ#qI1M>_>9iEa}H9r1=Xtx< z=UqrTiird~rbE~_jF%mI$<^YSBRW)}x}u6q>D}v}Q|9$6N|&O*K-3iMU2MG!hMzWt zG@UiwupM`fDgxjd+OH zT*GEO)A+ZAN2?~WKAim8z|CO_U@S|Wu^HRqhrW|FA)&*_*66O=%c$E8RZ`SYoR_)S z1@w$%r3iM?56uRUu8w?ygdv+lbt->N%R!+n=PG@N6^tD)>F2DKDqiEIWv6{O-o>Q9 zP=Lr%vO|=Cp0)d*St-t_Y<32RxA4>DDuwK9tm_c?DDC?-x6sRrWZOxBu&BCY6X4MH zw-=~z7Hxpq*du?$Jq4o`b)9)UuJq*Vl~wK|xTqI}!o7I(oy6{<#p~*7jv@`Wm2yO-CvA`Gr_>BhG_zqy>T}O8HLS}UCYn2$nk8o&k^xq8MSJAT z>_c{_Xu^&2>+Ht$rR%U{^pBBnrZD%8X8cd|mf0bj_vk_D=V~2YRE55?-WfWY>|a%m zu8y0Iwp!}x+-=IdJ@=oQgZC9Kcdq89HpXgHpPO+&l$!Wi{xipi1byfv*N1enLE=x1 z_C+vPvjoq`wXsLsfDG%#X}g2;Bo~VH{x(MMFs2N^adzqZ-f#N;iLW05Ul3xeIB|2v zGx@v{jV#*b8uson6H&bDssh=3(kzbdve5vxv+h>!EFhpApY}H$wJc3E|JU56hB!G8 z;{p|EY~@UTYeK0y#uj$@nr2vHqMTgCU*=D4a$8ec?`xUCobt!?@Q1BqHS#cTj58iv zvYf6$Te1*8arVm)KiS{p%@!-I{I5A9x1?jCgjCFa#)}L0vqZiT$jYiG3fW1=U(7Q z^^FmWY>37-;IoX)y+&C%TQ=9ikgGkG-@t=;S=3cqP9fC$6y5G;GkS8O>G*dmlD0Y- ztRL!j*_lhdWiHYm{gc5~w>4>}<1X~^<&8pT3|cFr=SHZF7FKd?1!papOZzgm>}KP@ ziwW3v69rzVCQX&f3l}t29=bvMXaYj#`H$)S_e?&ew$?@(9FQ1)NXXz#jyeQ{OeyC?~39lWcJ8m1!X{A!L>U9OaBK8_PxT{8)Li)GM{>_kgXuMpguGoel^ z6MZscZ?2R{O1X~QbnzS57_Vl9O3vq`_2uS&X=oUmDm0fonY9|Q$xF&9bAmc-=7yxp zH$<7}lgxNEvmd`Ft}{)VFDc~$r3`Rf4OkirA6}#06fLk_vaJ97tQcRqLl;TYa{Fo4 zvF@97U`_Pfvu(eCxBZEn^LX^S$z+NxKfD~EF-T_)m3X*?b(DW z6ctG-#(6@sypq<1gijA|J5nM=!|8nS{R+QoAw=;)Rk|JHNX|kD)Y^a}u%$Hd=R8yt z#%)&lq;k1x>&4Wj&Y-JT*uiIStNyC3<$%BAA|M_A!fQ*lGqGvvcb$glw7_pEx2P+{ zDYA?uyp`N^p%oV*2<>J+I4SXUG(5re3Db}%k=y#Det07*i)Z_VS?=Sl_yFmtpT_J` z63{X?P-QJ0`9=*$E0}HMK$fTcbY%OSkUucZCM?-#bM|S%`mqbyWbLfe){%%#M7c*; zCDcCwfs)uo`SS3FaNE+$eUAB=WW_n8`XFVa;tIcO zWe1Csy<`6z463eXQS2Q*u(#CwD_g?t#qjJ^53&bG_qYa3SmSM>0rTs|z{&(S{Exth z&|%c0Xp>%@2)5qi3DZK^JP@U-^P~ca*x6O@93@;2bd)1COLOcKx1mS=J#v=*vmgxKdkSNKd2%&&W z=mUDw%gPYWY~6?uok2toEb}kS_DE#;J@g8lX<8HqQspbLB&B|t>N>~fav|q zhSVn*#RvnW1yESw^6Gx>(E-r*gk!$ufZ&MS;tr>X>R3kP6JX=S7F$KIHV**qguIR- zhExE~{ef0MY?m+G+seZKj0cPTFZuk7%K#AmR$l)7Gvf18;q%k~^Rw?uJV*Nke$IV; zYkbw1e*^*I3*7`AG4^lT_!v2ig&YdaVwCy39QwAod^80Q+}qzuYp#6IWI4_E5V<*h z&Y+2B@Cjrg?C;D8Ce7kw*3!(62gMD}fffTvl5+x@ zfi=&zFRT6VHhej1z8A%abJ{>SvI3Mi*qAs3cOKCzc}5T**Y}H9KH2?)A6x;Kbil=H z`IODt&-MD@bv^}DT+-F*AdiskR)tp6yd6ajUGxu%T3{I;0@mjwIWYhdYy>Q)ar#+- z7V*ScU1dc6QWty%FR+v?0EHTRsmn=->99PzHSW>W1{D4*x^$0@p$qgM%~$8IUty@0 z3y!W5@=iq#jEUkz-PAjfp>BWGl;*;p4{mPoG!g0y-!Rr-_?Gqez-;ZdM0{86 zN32o}rJf^(u{rj9Lbc-HcM^G2ui6*w+4NpdubimNl7y)j-WQS-QNiM_J4^q`?vpP@t1vShKy(kMb7xv{_M$`saYR@SA!MfR?hPhf)@0hr_a`)5MgyW;Q4 zJecV8WHZ@`OdZY;A*0|?+l5Ul?=_w^&sG=bSG%Ji0gPNK5LK=@c^bS3Nq3HrNE|i@ z5D-cXDe3a8=bhVah$s(m$Q|xE;N1l0c!RvXk_28_NxWHoKBn)QMF&9Z4PWvE`}?FL zUrab2oT{=I0v}_;`nAsV-JFM3 zFNGl0*`4Pw7zyuqk{accg~8xr_rbSxG4p1Z=|1>{l&36U61Xtjd+oevV!i*sQ?b|Q zGO-BJPM?d>uAvVz6!WYoFBE6D86`l{Lt9~+(g^c7nT?<<`$HRW1s~S3X?E>0#@R0Z z*c_yK08;FujQIx{!T*7A{g4ldhAl6uv3X^>ST8Q(mrnHWf1YWVn(FZ!+KjZcpk0jq zUQ?vF1WFzp*{MfZ6I%@S53v31(%3giEOTcm${nroZs8~`!*E7I6%So zAi04}_Ej#~_WMOCebqgILP!F6r&hEkJDDvV0%UVc5Zp`_R(0|g=#s6g7NLTexm`-B z>;nBl0fa;wc^(o{D%7CNxjbaJKZBoW(I zU0AKwSH1Ke6Db=sTQ5t}X*5J~6?whzytLoe-CFP6)>mD1>04W`QLUF=o38Co4*QWl zfHv)r;J)BF5<~$Kq8JLH#ANW^m#!&|Cvov0#y`q-i#B>7vn_ldxX3J4*$N)+t~z4# zx*ZhKtD`cT@VCk3h0@TC#wSMGyr&ZvN!Du1@W!zp6*@RX6>8%ap`l_-fe=nqBu~z; zy*VOIB4hg^W6}sAf|4p6C$@}eI6ULAK$+ZCM$2+H&iwYh&muXgi5nKxpN-?{Jwui_ zs3(EM_R^D-F%xZ%J!b1R3<;XwQAxbVBbS~-vb}dqWCxCUmRIekA#-0l+M%pkz4sUJNACG2W5&xfzUV$NaHByBG*8#_l-Q<688It+I`1WK!2_o zm1ZnPlhC3pDcII)_?&r;r-C_3YmLL*FI*84INa$@j$|Rqtwsg~+`*U+?xL^qyhf<8Jg7FcEUvcSeN&&uh1&-cRnq+SHB4J%&2)`6k(wKwZoM zQn&WfuEf(ppMV3W`m)hvHk1+i;n};{Fb@xdLAVWxvfz*qm`HYiQg*T8UG^XB(Q)?0 zgGjVKyRgyD4=JQ;ye&BYer{OqAQMh~aI$|THU<);uU)t`f$IO2*{D~6H(RGA!f~Mj zl3U1q`R-@0m;{ckqcC!rgcj4_2(Ju5+Jpe%kuM!T2tmXihvw$Cu*`C=&%Z~S3mxfx zm@RAgcrTYyjN}2D`W0OLfSnEFp|q$-j;eC}!P>IU!@|O{vQB_N4L)X>y>~vt! zRY#}MbxKHlQN`JIr*91yt&>@Azm6bI)nFWm5+^TCg&`pxfJ*(?=_x&RaLG7w&Jhh` ztuXuo1Pk92^S>fC+krTolP#HE-s4NHE8v;U;r0ELD~X=%{}Vrgm4f(}35}<!893C_DE5ZGML3L!rSzsWGH((w)+NJ>Bg$gMD4o}By5i9x%}vRg`6~eGP}ZzEg7$mY zS4DSd6P}Hx1P?~wc*pViC5w6MW*-;jG>yRPcsqinjYgem8!WevP>!v*HD5xD(c@_Y zZj3=;9hzD`f3csGY3GBHQZFSn>52*fs+x(}ACryELn~LN6@z0uS{^>*rW(0xSC}la z%w<4cStM}K{_sT~2W{?SRUHMZu+VP&zL~Q~{}&NE1J4sMF$L!mf28WVc8$-s z>FV%$H-<9HT2r4p@eS~MXn!`JyvT8hNsm3!KCDW^u%zlNDPQJ$Sf^jW-(F$Ey--T{ zM~ip!3$^e*jD-&SyuZQiy0bFybBVUzBb_q6)a@?uw~hD=f1dEgCsFPw*|zUa+yEMh z{9R-_tm!a7NGGCy+Dgb(#&d7Yk-kaH^XPs?|QAy}Vp zN2i|@Fd_BxmO{09tK#d?a&e+IVUi5B2pK4)xrlFp=zDYn4xKnfa$<-)0Y?|o8DR;{ z-#%5;UgjEP&@7gyvR}?yiiJ@BDhrC|m|%qAaW_8_Po`H^wG&XbKjxSIAs{AF*z8y1 z#n(@Oz>pLniRh!bfJ^}QzU(+C=3z_h8Mfxl^HH1p(!F~m)WdKq8a+-HSq+nn~epm4!{3(lN;OSBsI8iDjW4CMxmGh zU?PrjYC1?aTDm5JCIRtRXa-5o5x}o&N6a-r{-fv)cOAiRA>P3lBbCF8a!2dgF3bo_&egc-o+=Y`2gmPaF!&qwZ|8?FeP z-v{H$S;v-ox_C-bLAfve){S@?PDxT_(Q48v4~DX37Ojwek)?BqQ_VWed?|0m zv^d*Qg*($Qr&u6P`{W2KSEj2+_pEU%46bFvb;DaNlT%9aUVRpFtEdiOP3|q|^tjE% zvA@<^mJp?9`BBbJ&qn4ad0A?fm2^pZQq^OB`}NlptZ-^p=rI&HvxmZuyK@S(f(ez) z!p%=6wX7oGzTMrL+C?VxJk4}jLCW0fd10EcZTDoq(@j2Xk?|CkD~d)pr5|FwLh71i zTN&aC=K8I4sa5&;dARBJ)sWE@LX0Re%R@xIh03R9t90h|581JQ1nn(Xqb;A#=CiSY~;6PNtsf zGRJX0p&W|j!}s-D77^W!vm8`DgrSp0h#>yhp~|F@&}ZSurJbl1~t!q~@Zx&KuT+8Hxs)!VYr(nHxpHESLR{&`)i&Xp7 z0pXb5XJ0yk$e+}DOO|Gz(+=XNXu>FLK8Z-W*Q3eriFsCTmeVnWuad70v7din$uj=o zFpM2t0ie0A+%?DX@)Yt)@-5?3jf2SNM@3e^<~h#9g0?f3^GbpC33ET%{QQR`KO+c; zEhOZ#~zfQtpvv;?XxX-scI4L1X z0=LSX+hHZ5VSnJkUL@^3?H+-&S;?51D_!ihq(tgp+FqODv>+xpa^e3bjAaoU`_7Ji>&i`-5ZG0>*zZeQ=C3(X1RL*vt5t-G3~|8 zBOg3mD@<zari+LoHj}J|&!pyGP8+C;H$?^!k6}Q(5)IWRWVs3X!_y68u^$A! z{WjIo=~*xTYDQ)m7`{exzV`JB(`upHi7wQ2YsTN3On&yJ{nZCAsQjayBroKE$=H%` z`Ahd1#x$>8PP&^AVN|n?8d3ec?Lc{X1+UD);;;~LJ(L({uVyH4>Taf0zjuLD7`0JZ zfWUF^ln^kdV{4h`JL9S@qgqS6S;tzG_qt|OJf%5acvu`y_EEiXuzK(PzHtB?nyI6L+_lEmDGe2AT1Rav2&54nCl! zqz=BD`|nb)f2;|H9};^Fy6|_zO42acn)!JSFBgnxBOt`@5y`1?Zn!N zxkqk!IL?{9DRM%Qx>C*_rhJ}J*+BQ#VtMZBk2%QNDPTdc8rPt(guV-#M|e#C-2n8w zJ_0Rt64*`MVCq~Xk%QZ=E8Bh6Lk3Xc^9~U*eYi z?L=6Y9(bDQoS(e>+(hCX4g8o;I5K1QPWyZtV7>jkzvoa5tEtl?;OG4ks(@d%rhx9= z{|^NEPpMkmRAKv(m64vAo|2WFlAD=dke!r~Qe2jkU6fCNm$X9pEHc1gUNgB}qwy3s zN6CVHO@7|68e)X`HT&#_1_A!X-gUh^yJ*hrm$~i(jp1+q>cdqdn;JO^M(U1=gVbMBp9l$j|1GX}s9(?)o59+skVh((tXSe{2K*lcfWWsYNLk~6*#tsI*f^)vFW)T=FIWJGZB_Ee?@zVLk-iq0 zVfh?JO&5Je!14W)cpVwd>1gwG9rFed&;eLt1A&9UK5z?X0yvHm-=zq#U2rkt8y^13 zY#`4|sm$B_HTq_Nk!CWa|AoHI!|ZaqKNCHO{3VW4NNBY&7{yX)nteVH;BtR-j~oy- zjUPLfzaDR<0w^H@yKWP_5XXfahKX4N%AnLF%MwuJs>L7>W!5i4P$3Yq0(yZvP}PgI z8m(d92?Q*#BD|*w!N7SwZ`)xf8N^M`37ao?f%EXK#n*wS_7fgq6cCe#N7|r0c0hozc5*5lWk|#xL zs3<W90Z7+edS^Gh#&V=NsYTp zZW^q^>op8D0pIacZTq?Z+f^(Bzz_+{A*eq9;)|bP$}yO#zT7o+HrVXtGNJYot6zzg z_m0bz1w*6|N%O&m-WwPvt7 z5yj!^~FojM%~@eHP~^cMvuvz~4=sFB=xz%! z4km3~_D-BEDyA0YY>4R#8e)b_sO$2uZ@$+JbkF~nTM`{TnTOhX`bVp5eF$ZFetPxP zmkLagszM&|ErlcScLsOPKk)$2w?}fYumSi2N5%8em|*Z}@oy2etMVD= zwEEps-N};gfM0G~q||m=;>H;T(E3VeZQQbCrcY= z**IKf%?dmA8JknNCTu+uH#Fl{w4x_RO)?tRU?E(*j`N2u9d?a9Pla+2$PJvv^HpwB zv19>nR@Ci?XAV&8>geI!*0#i};^dH$06EY(BT%86?)U}Pt4#WQ@%8}kV;T8eKw7{f z$F2Qf?R*m2fdJ^HX#tGR@~`6Zh{6)iB#~0nKPXy|h_DP3U<;s&XIdD*g`k=Z9khID z=N4gt>?6>q&v8E3Kc5OH+ml#)`Y$eSfXR?yK2LjW@d6yKC$Kvkgq3M}C4cPs$UQwtH$FT*pw zJH5o&QQHGXD8&h|$hF~nMU5xvc}rAXZla_FvuVc(gjmuLApUx?gSCSb61)3A12%Q; zS{@gA3hw0o;CW3oZYO7mX7B1ak%IF78yh7u^@|&KPf_Bggf2!5)YKi?DIR*V$b8v1 zyByBmkD&G2=J-&XQ1JLY=kAyg#84ZW!%>oP06-C}nSdLRBf(Km!UvKm)>v*~y1D6T zr3$ELAuwaHKJa#8&S>Eq0h%J|;~ScvTsNg5l7G#Twf*WI<^F{y9Rmi!_;PU>bbz<@ z*96vG{Ja1;gR50C?d!H0_9Ol0TmIBak zR)hl(XfM7YisBm42EM)YTwFP=eKvS{*Pga`n=4X)TIV66h^>PLO2X6wkqiUMf@vj5heP3drpESFmdvHFoWF zUCJ@>Ow)BRffYdHd3mCsD9-+G$2r59V-1#5d|FNz61{*q0X;VetGTxX%*{*)Kw6+h z46kvE3cfF1!1sp;G*1yB=rt{I!K8@Z8(iO^!taeFFUvJ)_HwTT$<&4!1#&pod;I=o)pVR`z(p+c{QZP9wUC0@t~E5p5&_{8FxK9b?e>i zO5hWGv@Z0kM>G7O%J07AT&tb9f@QIPL+Y! z-6rw%>KM!k=Ik*9Ys*yE4l+b~G(=w=TWV?Ce*0DDy`U_?#8k2UMvvEvpLsS(C4Zrr*YWw2={DR4}gX<6K+x>-tRr#bc^4$OH!gwgS%q z^C1>x1_8;M*xyVT$!F0 zzc;l^+$n@evIO&DpaCV$!1Ku7^4j&flmj&|rrGmyGH2Xd2=doGV=6vl~J_Xy8c$ez0rAf?HOXznuN=Iu%QH*0=QTPD^x(REbAe&ViAwZnMzy8d5w z7+;V4FT;-q0Q_&r|C|KMgIhp9mSn!R9eZ${fTq31S90m;PEyn`i+{obRM!ezTmWAU zGF?jK@z*~&vu>$ehOYOHm%WCrAKi(2owXj<#_GaH)x@KCLFpI@VDhGLYiSaqQeKoP zGAVIz-`ve<^AlNZY<~VjO2k`^%MFZsM-(Coz-<|>%2jX32!$=~7QA=pQ9rIvacJ4O z@6^@CYCPx|;5Lm|8Pfzuu~+e%{bk*BF`~ z=H*anLZ=ehjrmwNyu?KCESz(Ki9zNMcG8{7V22Azp%V~~`&d{+f|v;H4?UvLh0l&_ulb*BoseKbRA_-Hc0hhT?PQd;a_EN_ z6%95K!bu%?cUR_XX=Sog{A+-5#SkP>;t&AA4$CkM`76mt7n(}*C4(_kr>A_~j$KJl ziL!-trqAM(40Z*#;E7{rguo3o6f{)GjYd-YVx`Z`1645$LiCw!T{FM`x{0fsanIyktcc0(>8B!c;9dH6< zs;;WoZww=;C+%#;I+D68ny@NL*4DUZcJfG0>M}(cF>Zi=RH^D z*<7L?_vVA~#NB%CF3aPgB>bNVatVkt=D4Y(I)e4IpEb{RWa6GrT^E1<{t;I#cz}Kr z`Fbwe`yWlPbMOocbdd!7xAi`ILyt4 zXj;8_K=1A-@1@LFd7y{s#({x`*m0aUTIpbR??^OT)1hd80tcc@$U>YXMb2fm2j)c( zq&X3J>4g$~D@V%wLx|>^>wpM%Ns~5(ahg;-8QTHZb_>nkWYLh3b8(UygBAmoBS0_m zRTHoiY;$6#v6IHOt;V)(+kSK1&zJYhokJOi${@wokm)?{JYG|*4ZHEwIn{^*TQ53y zK3UWn)dzS$2ye;^N)mv(Z1cjzH}HUx{N4DHUSI2SPYeEX+S*C7TH5g0UkW3m6*@8P z?_hguW{L@7265B_zi4U6s3ZNXW%vcs0WfY<!4EV+O z0967WSAy1|k;Gj$s$N8#PS@FGAHWldyv6NBc$a`meM>lBFs0I_u?BkLO8 znOB;l>zPPBd=WcVfPVqmHZk?M1qDo(4UEVV7Mq>W)b+DU-r*X#E@Sfui7ndQ;K}up zMUcGtnN_4D+!@l=mu`mR7stq?Wc(y4#F>558rb0ppqb;hx1T^#5zoFTF% zwES7Vl3~v*%r=p;c`77tg{D)PO3`cA*Is^zUWfDV-g zMxTAuF|rrG$CKmbViyBOAQ*)0U={aIUSU|2t$b-1a2Am47_o>Q=#9bAAMKDs1U%4a zWmmLskXnyEuoYya<>6GMucQk=Y0A2Mhdp}>l^%3I!&@|XW%DdVDkrX8^#PUJ}zZef3zWa%oiv@GPD6y;bt>j4s8 zA0-b)1Cn^tp5JZq>Tf7{swnV@5iJ;7LgR6_+sPAqd|;*EB%Jp6+vBjKSY4VF7>wDKDb?- zVxsj=w|Cc}iNZj%>lE0W@X+_|f2vAtI2vWYnu{qk1lt!Q)ksEYIV z_KA=D;2Q&-3K!R$ewhUvP>M~Fa)#$GmspALex zDgLCcgJPoC$2yj-&tkBlGu)0>XBueu6U%h10nYd7%JMOh2< z(i=?V91OdgKVbm?a}i)e9%l3-Zxtw^I1;8R_k)Pb^mjIoMf!}t-(VEiTfwcT)x2T# zp?lTLg_*+P^b9kBU~r&q2E>a?dRMR^XCait{K(!R<94XvkrJ8;+EtM6cxGNW)MJrs5`8|Z+nc-VuK~C#zj$(g_k~07H*n0JPGJ zy($xlh$djO_p?n`@$lc2o#SiEg1y)nVV5_8$?}M6{mRDGHNqnxTE7j7MZIdmT=&ADrFdz?O1^1hjA~wf7a`bv`sV%4=k)8 zR?V~J2G?Jcu<5I=OEh*19rKX5fdU-0g5RThnOzE^xsG+0?QgxCXs&4z4lJ<@x_-}C zUn5-bnApI5E@_z&*F)4YnAS7-o>3Z~3l}i3!vneUBP$buGHKN1mrfB33%H9Cxx?cX ziS`T|*FV&|MlYp9Yoi}vhRT1L+lY{tz_+@LQGBWWX5*`cxCHTIN*0xt{u;=Ti$zmV z*@Iw&^jQuIUGlti-e10I&&p|u2bQPs6UVX<{8NcRwykwA>V*Rl@XNwS8;)beCQb)V z+QG_>=mMBs-cep2t{n=W?(K;@@tt*%rNh!+RxF?wrQ1dKCmJBw6_+AJ+N7Qf9N*3E z58o(B+H^3HV`NY zCnC9DL$I7f2_rzofH*O8JhL4r{tW@Zy2>`s8R{1i5&6 zzy;}ctgG4D{mLFS8?P#UwVm%02(4EvYjz@9%q=A8=pmMZhL&j)wQwrj42dx9b1?Ex z`pqIqk7KYbO%LK|=;p4TZiI^k%Y2oCm^Tq(GcDUaV9eh48mNk7m93VoLd+wj}On5^;L7Sf_;eB7{O{zXOj>&f$>iWJ9RV9tAc*3fJJ z#hc0?6g|a4Np1visai2b~Jc`IY+&e0!$0m(r z)YGHrLW`FgQ=$Jb*|TfVAt4+%kTeZHsFZ1V`Z*q*AbVgmqtEif%T2M2E`-u3KZ;+Q zk0$F)9(LaisTSQ4H<_HEyj*3)ZbSVZU6bRC^iIiuCupJnsMSC;%~7x~ZqxHNSEO3W z6F)K4XKUD#PcJ^r3BG6Vbj99mks3kB_q>xASgj;-a9tc(wIVd&&YuI^wZgY=%r2_v z#T%2i>sXM8BPDuBg_&P7+d5%8TwTN7z%Pz(4UIK+F?8(lcg{V;@11-8%T^x5xx*p| zLl*Q@E{fchJ*qyss3glt=(69pL{BZYw3V^Y6vwBdt-Q7SY8ZP1e9OBvo|0`%1)iD> zo|;YjxBMM~kWOJ|Fjl}^UCCm-rf+EGq1I#$Vak)pB!x}Y3O+(2^EnR%~n+FjTlmdQ~qYEWYFjI^{OU;?`tWjk0Hsb1vZCCeysJ zvrdgzs!$0IN!bOJhWOu?_8<@z5-o;I&+Fy>@^Eo-Fw5sJiU=S|g!oPZfiNN#g9d@- zr#yu_E1K=J(4f4^oxk<%9yJGZ=@wQpyi>8;@Cj59glfxa(zrsox)?p`K8lAzM+};z z^y!}Hy=Vl@sJO24raFRR8TuE!8A0VTboM2vf~0f*fWu@Yf@V$YY&M!994&^{CPYQw zK+dG*+63>?J18J>8faaxPOHJ-`@~Vipgc>M=3qk#iQT5yFWzV%JJNUVd|^XfAcZFA z-Qm+!k7#>dkYFreysDU|Vf8+I3$gXRoCXEUN=~8~reHY*+i+m`ZDq#WS3l@5ZWU=x z6JaTMq-)`(mDY~1bp9a#45TX%1OmnH*9Cc`$YHloUXNhdTKL&XQG2~toudH5 z)`2e-hMV7B^A8ioCoL!S$l^N(G``2hu9EUJST;b_46j?r&Vb@oF7%D`_hMEL$v6Bz zq(s$>mRsI7vf=w}s$6J49cGJ>8!{S2F?0O*O-RnEh(L}C_cCVL&sI^uM zq#$Ni;y)+fvwiXn>vk{Epm(E>$gt$2OuX{mJ0;L0*~otOdCYDZC1C|V^3jiF2G&=L zK@b8{;(Jy_pWtGID?UEX1st#ApFY%Bp`rEDRbUo_Czt437~X}L$xmM1MTzAEKhW^G zP(v#*H5A}gE?!5P5VhXHQ)p;?_paan^mwM~j7yc%7wV&SAwXnTv!P9b`1}+21#2s| zGz3WM?XIoYH=G+8Emd1}0AE4K=QpvX1OULoAL{{*z`#|8RsTon695-P6XpLzzLiW5 zrUOSQt0cRZtPqlj|JK_0gj`4$?5X{9^LEYM*ceK4+!+WO5Y#2RKsoiI+0XFGz&cvX zsrhCSuPi)Nb8lODeSOu+?ayh}6oDsC+dvtBjC;I$D$QX$8ej5qY1Oqb;@vxeC=0;< zIXEoh0hw}V>*D?;hsw5EN52P;zBqa}fQ?#(evgOzaOZv@Er_!|cq1J+$$Iji9^}7< zvc2FWSyxxwQMNK+^zham=jrJK_VBm+PYe{=Oy&b8Y_F-oec_u(72H$yBsJME`0+5K za>tQGh}@N{(G~M7$a4$?#H{-bV0Z&zsLzBC6tSVKk>(rogdW%rXRTiuw$*+!%MV+x`icPv0+n(=kIaHeq|vK6@uVEIMDD z)qIRCA8+e|pX?D1vDe0$+7jV#rwQGpiA``apS;H&zI^dJDe%0uYs2-rmT)OAZu`x-jJdBm8|8OU7y6|eVahH8wLTOkCD(uq)PSnRSJ;GY+IL@FTKAI-R{ z{?t%6H^lnz6e3;>KEcVa819Ps@BJ5kKtUX8U=vNK>{9MFyJ^&7ZN8~%G0Xu|wa`n< zP+#Ip&7(1?_j~mA+v1|ir#m-e&voTrpHF#H7E}t&YQc;0&yW6~ps-**Q1T#(rHk?r z_%1D;THO^my1&QJz+mF0R3~XQDlrrT#K0>8Nl9yLujNjmKm zBb9`qxJGN)8&JD-yOu0FIjcDsT11l*mC`!FOJlfHG46vuM8z}JD?!80TL+1B> zy7aju9-b8nOjW6f9lP^z=7Wdb$`rtn*F(}l6~S`X$}q!8TGGem_&h!FLlP~&^O*ic z+Q1Le)x6G#?>0^&WG@>%xC1dbMkq1xI#(-uC9_ISMGYw9(QqVHw?6H5trx@1~%$k&*M+lG)^u^RL*)?sCAl8 zw4Hy_q%I>ppI*Dzw7|L)CSA+w9ogJM80XcwTb^T zQ&al?VCH}EC4Y`*FTP+V@cFs(AHV#R|6jfSU;RY=YH~B38g6!`-@Xo6)8~2%PF1#} z!%T_|DN0WXRXlS_sMK~|Tf%Y2>!&A<%L%DIAjHY7gWcY!HbPOEB>05HlhE>z6TW+2 zPNE9^nK!BjWGs>9Q=rqkorK7~ku${XRPDDe85x&^Kv@({?Rm%5@4d^(f`jXozsS7K zbDT&SHqHK~2BO?3+f)_AqLfnAP@vR-a5OaGM$P%TurTO)-;I1>zu=}44T)aseTMBq zZ3~96&>cQ#NHy@}f z$t|!q0QCHV$kU0+e7cLicrRI-V)HO! zpCfTZi_f|c>1_$oiCNv?A;+xO_;9uFz8{>&3A@p@tgXQv}7SB zfwXr+-4=Y9g^(IVWY$Twp8Su^PHWPiUvKIaH>LL`Ip8XNY`Gwv-)^wc7fM zfLFi;XQ_^pU-&sKwMqGU-E&-X-D5$fC9HMZj?ac%j zM6PKmJ;@+MoDYvaqhDN)q%?6^0%BJ^a4)`!v6C{-BPPhh#*D{DDN{*la**y`01LHw z+Pj*7gXu|rYS}1QQ2vq}45U7kIdVmOK(Yh`zsaD2d>`Zvd#Ybj?itM~ghN@WS(0=y zbpThw*Jsk|0c&U4`czGu^f~#J_9~rP5~g({Mc6MXkD<)UgF-BfqU_K|YwL*v#1Y3` z6{9XjSVj?&UZ4DckAzbQu5-~fN)}~ zOQTLBybYuB8lOvw&b$*MqRiIfKNYB;Vpvdno4=pW@DM>)Kn=0^Lc7fF^jqJI6ALv( z>if*|Kpzkg!FdZpcC*XHVw}7Kx@-t#gq2Zf%oueR`o76+@b}d6RJzV%8U$RsI6q0n zqkYrn3KgRv;OJ9TkpH;NYut_nh5y)8uw|_b&Ma0*?u$dThM-HKBc>UxVG@p^A3PQc zB{GyY$CGMN9CepVc9#%S5#2${5Ez31q0apAGWt8d2yWrEN5_>^0d`ph&?A8ijw8jT zvl~-si+!PmvA8K=@4bcmsiwL;FR1d-DGQPp7U`#iuDBPSiJ9@-W{W?oum zk$6-Nr8WN0!IKQ&P;_Ac@$oLECnHZZaxkqi0$bAHr&9CZRZn()>Jr^`GGeSsX2ScI zNki504vlx;FRs8+b+V@WmG=nlr*V%KRRE9*1qx=yY|ixCg~4jp4Ky! z&-I2LzWQ8GQC;s%hc~to2RcTzpQwKRSB_}FVpd!S5i>;2xImh_L@W7W3$D_!S7wkh z>JX2I7(7hxfmn5)2b0=Y3LzRrup$JrNcLoUBF)gQrzxIExgsO{q`+*AbtljMQ>7|? z>dF1~j!}{v35pcpbRrfD87n*mlMNFP`jfbtCYA;w)C`i}Ezoc*ObQM2US8-QIaWi< z{ru8ap|D`^|nyqyg&-L?j8|YauUKy`Q&3QrI_J z7i_yp_MW)FvO4&q*qs!tz4^PW-{ui13` z3nlSX++?axm{(Q6)W>mU&McQl zwJvFh%tUAKdxd`5(qyCI-a_`CfA>(e?K&DOey%x6CG4kED0z@;%7z3@enbd3Z@#iE z#OTB37){la9F>bP`F0sSz{j(WIa%JJ%l>TUr!Gf8c>e-^>n}+Ao#uB&Z%phr|f_W3}2{E7hplKr2mA z(Y`$g@NgRO>U?-s+fL5iIyE!|Tg)@Kvip2prD`JGL4F zbqZy9h7$ygCj!y=DconOG%K0D+S18E$_P^rPy(@^AZkslDOtS~m9|Mg&4X-09%~Eo{=yvjk21i!3 zF_HKpdrCvM?mUi;UoYD0p9`IB60(~>1dWj4{N(Us3oUikGJ;Yf=P(TE$$Z6UB$?8 zFnN`AxIF7CCFj*5$z*{cK8Fup~)80{H==r z#&}Jvf2%&1k2z;jW8+FGDRe8Ib`x!UTEcfCG2!oZ0=imqHP8LlmuZ%x>ft`X)hE|@GNYjaSHTizW8spX6(i_TK*HJem!0 zPd)9OWm|WxX8UBpt98+rMB=sT!yw~zpq{r~S-t$>hPOYw#2>K5=y!|mB&j>3ySGVn9WjF?65nFI#n5%_#5n23q= z3mQDD%aMk+jzQEJbEXLXh9|=qo~cl|Q$~Tmn+yXfM)7si24Td72L7S%vKHyI0e_Jid$YrK179!QQ1+5QLy2aOt z@dlmcOINf7@&>x;+i-~YnL;m>jH?~tU(Gg|z z3q_sY8N9pgH;e_2pd(0yqyZx6Wo-TsGx2^UZ}&@CI&B6fs$M`QlMJ<#PcrCxq-`*4 z;oocZmEPx9(IOIDCnZqybm3Pp3k#8Bg1b(gp;3rMiT&>xzeR~%lSY;)lQs|N`J<~j zV7Y=gf{g4Kj0zMulf(w&l19BTY0knH+48zHi4WS7lt&TktM|(DRu_18EXcQRK=4oeOF+T$_V`?>N5Z z#?T7pAu3H9KkI^i`QmyFw49)Ac$}CdJ9jc!oI-qAKOVyQ`eT<<*igv`3&HXKX@!=NLqm+we7dN*JcW z{qXPcW*IHnr4?sJgJ9FTa1O_B1E1j7*GDhJei!z2?&yXC+(HK*&-^h7zPW}c8?v%@)= zx==G%+JyoZEDI%cemvPo6P;(8u@j0%1VxDMa&{J-c2KBV=hnXFVsB?9*~LLj=6&t&0%ri+Jb+0{boWUlQt86Up4l{_EOuTOW9xULySbiZuEB=GV^(G zvkE|43+n+bQe1T=$@n-tFhKH+DS2rA**g~+jXcX;p_NZ|&8W11(E;(+*GtxE_wD=a zZBoaUKO*|>_5n}~H<5gMMnfW%-$^y+=9l>_rXhF^fQc*amG6iIa0Ma_^f3i?cUuBGe)%JM7V?&-&A5s{bx++EIx-F zx+Z$e9{z&L5)Vk9xG9t<9_jU<=-}2Q@>_N~ zuo466_P}ROjgcPxAKm={p=SKKA6ntZRm=MN`?lTYPJfc84$szHCIQOfQQYd9{3f%f znM&P56JtTapj)dhmc*OZPMprnOug}m?^WyPtu`Hw@fn^Aom_x!@%6j{^a2Ojd(69&)6!z}j_YjecD&to{^L5$WXk1g{g3nL@hfF6 z8^_}z^=KGstc+$I@cADW-9DS7=ZfERxs{&jC_jp}9bNkCfcti6ctsvxfjMtV`Bq3! zvSSM(D!`smb7LX2dwn+yaA1i_t1NH%O|PgFTW()KqR|cCP*9i$qU$IbrHIzyjPnZ+ z-T(TRtlQRgI_B^({-Afi(t5;r@sRi?`*920EB~+n!N!nc#zq4{kn$bU7(%t~&Xy4h z!ncT#f%;>oLPC=eQ&(B(WOXc2nZ`3L>`y$hP@T5(aO2vXP50&hB(Dz6g1XwoHJmJ_ zJun*ADhP5oCE#kSxusR*DQnhb4H3)65-UatW#sC2Ah<4ZW$M(lNA11KOj-TQ%~%=N zC&h5Po?vjw&|T|Ut)C!fIof)qAy;FDqsi;MT~|ztK{;VDH=x*AUsL_%%-xG^u&dYP zMWr?A*@y3D1P|&N=!koE5^#w%lDVi2(? zq^)HIB4*5#0FuGir`lw}EHQUavw4AzjBH(;K1l3FeECOz{rquhR|qCwYcq*35*pL1 zb3vm&XL08YTV3$|?tEQ5C(z3D#UJ-oooHj8JhRO`>3eou2gNw@XOThXT~5uh+S0mm2gTiDn1+E66H0C;lwDLS*^4v~FrS(BrG^>!JN)EMSN_iaeJGuEQFXAMMTY>_#R|JMspo?< zJU81x)%>0Inp!>V>0};4AVi`>bksKmM7L}9WTgC5_Qh#^9Mz+ZgoE~7<0;|zI69$3 zTDgj4Zh=D#m3J{-4Q}G#SJ$1{&)@fx8IA*?fEU`K?_)<|P%4O;PHD``3YHqc|>yhIN@-5K2-p20ds=R1xNPSBK2C#181ExC_TEs3q)$xN;}qG`UZD+XnLjSE37DQXaW{_DFE{x@;n$9!7tJ|O`euEQ{iTAj{4<-!vhAV>K|{sIiM#;Dw0UlV z$hM6cEja7lz*ecX<4a)rsi@k7y;y_|lN=l5T}0>Q)$ z%NI$D*sNbhtZf4CcCS&k;uPHiu%f#kcQ2iDv6&_*)tU+tr;VPNK9}y0rt4r-e}kd2 zIeuIsc6>+Yn`Bf_Vn0J3z%jjGf_h-KS>`k9M7A2lI@^slZ`Azk2;IJo5k;23e3|^@ z^5Q?`^qzYiuk+e$&%3v-R&0vO2Chdf7;sF@7r+PBWiti~qoLSu@eeUlE7TI*jHJ;h zVh!3qR}(9^Y*KDonye0%5m=ix&&*wzjk;EBWVv*skf*!qo_Z0hK9`}i#(uVjhBUjp zKO6(?E9HP`JlBfB|G{Uq{|`RHe!*u6Jbr(y|Dk5!>3@&b|JC3B)!zU9Bu@ih>>0!h zsfhi5H});JvrsOP?9o5({&q+5%2mhiv3KFY&UffDfYwBhu=YJLi(>)$%*PbM3UDwa zId|e)ta?+_+Go7!jzn zY3u7w2Y+d3uQBQEvI-&cSdc(rSP0RgzN(zH>7kyr>G1iCVqT5@b5J$kEOn20C% z&cTSLt=1=-7vE4%tYN`TfJ#ojyeG@5GLgPA{ohzvJYz|_C`Zv@7u4nG?Wi!A&m z_KX~E9ZT0?AwuM>ZhP@&oISGpv@pl#ttZ)qyg{QAOzM7|oZL4FiXYzl3wOKYsJ|w_ z?Ag4u5`Jpo$T2?_fFWe>#Q4xsv zKx!pm&^(VJD;L2<0s>o1-W>ecZ#$)uH9U}u_D^S{e`_eD;|VJ9b00=rcIr7H#;<~m z!H>K#<3k(OAN-SK``5FA4b5Z_q_?vHTc+LIT_{ziN#ev&1s@Kks!rK(hjE#VS`*@>g034DdJ9~-9P{^%5Y05jR0 z&Hin&XAne{o&UE;?MZD~x6ll&_oh#Fdg--{54(fESfLo*_^l>?zFW`Bb9#E6h!|nxhQ$D{EEJBDrG+I2aT9Ze6*?Of`(GttJvG=*+L@b zhp{pMJM3BL;Q$d3*1;*+$HBLd;SkBaNuYM3%xR$l;d+~zjXaZUq%7tC;zymJ19A63 zDX|L-Wclq{m5b90)yCk#(6{xd5zUm#`KiG%{vz%m14O8nt0Z%X^NjUH)eb}@!iBXe ztV8eJu^ldtSDS1;i3$`VnTWj7QpbmydCu^N8dG|zVqhs~s%#4D8mND=ix;*FSC+k@ z;Gt@?I=~9P`)CBNL$6Rux#nWnY6w1Q`i>6%vF)}vki2Da%Pw6+$(2XtmFt-GlhS+= z39x$41lW$FhT|&qAR%;wRJn@*oE#0&+9$iH8na@V^eUut zEt&nnw&A6+d0eNR_1lXRh^P>uh;kdWzusB8XoejWyAc(=nK1~5)q9ZlIFzS9PF?)|0IIf2bgA!xn)}CB=|35-{P;$T%}^{Ir*v_ zJw%#rD`qKMCowV+1GHXLj>MZ5wf?r#2wnqQpFffP+Tq3Acj|l(`^9hHZsM$ zfD{n>db$-Ah6;W!o_UN(MgJS}ze~B@=^~pNX#=G*gAEUSZ#IgeJskB}KgPcC(JW(K z)47J=Dw|Wo?I}3;v_A>R?2pv_s)G8(xYd3N>FE_wS{xkf*emR!(NS2UqF?B6CaC_& zaJVvYmf6jwgC61Yf&RAAbho%jdscPt3RGlx{%MWY?nVAA)6V*ybolw4`1;w~((<`- z_b^ImwRWa|;B(&PO~!q$9}2HE(#LgRTjx?!l;wWlY|YUUoAr4sQ1@I2#(nk~Hn1C# zy!&m$iUaWpmvu&8H;FRp_bcA=aJtW|!H|~UuRs09-_iH+zh8D`9L(3now*??j{?c7 zvuY-+=s3oa$}ur8d7S^#S1cA!60qkG;gyUNe#txM&tKfJrgb$-`Mt{N<%*18l|+3G z@Z;{C)|tjl={?{mqe1TnN4}e+;G?1sZi3(=ex(~jsO?)5u|vOa}^p@JNLk zOn#oR*fjk4Y;6D3byZjbRvjvUkDr{Yi2{tLueP6ipVqqLJs^|_*fqY=2(sL9V*b(; z@fcw+#9^W>AYn=Xg}vcvnO6LWZ&f zEucCFmPSeh&60?8J*^cP&|8#m5JY}#Cte5{tHEsty3U@};yZGEE@K0LL+vfko?`0K z!*j+sfy9Ig$8yg_iE@mg6kos~tI}(9$j_&WOfJvH@Rh!$nUx#8iQ)XGu{d)!M(I&H ztQcQY`TMbgwpdLg!BZVoR8}6jpE}R1TX65UY*j3-3gK0Jb0u8rdx-GlF8F^-TCC`# zDJW&cVae~UbS{}J68=d5OC?xke0KZFrWu1&5fS&XC^WD8e{aWA{E~=Mn?8_17G)dm zta^ICeXkMSB2dV6gf_Bn;@O9}Bn#*yDv9hmfhHZUDBEy0Wg||#Y?tLl4>hct)JU^! zN{te`*A>H;^gn6ck&0G7rCMEv%1YqyHN%Zfi&sNAy zChq>@SKb#K+yl|{Y$>6r`$ntX#ZJvWv7GQd5*bZOgUqI|9EN}O6-)k~{Utn7K|Vqz zPUWA2_oO>F)In}fK)J;tu=@eN=^~!Z`7t(ZG0#mv(zMH9g50x>`Bz-7@S3<}#+IXE zG<0={v6z!qtq@$d5t3L2OH14Fu=1K;o)w|Z)fUs)ei*7D+Sq-AHXMR|`0!bt;yK=? zh{&`$HOG99eZZeceDuVv^GS>%d>TXp;h&%x&CwH0B74ULz@kJtEK|0!Pg%^GPdslE zTsfDS9;Cllc-*zBTFe*zO8|w0!;}0S^CbC9&3-ghGSh5Vv@mA9eDl!`zFVMDNXJxqwl~{3l>1xxrCO9Mc_(v zG9W&E`ouPkZ=<;)=p#zoxIYd6V?Mo#lw*{LIxi%RI))L59&;e@g!9A^r_d+ z$d@Yx)M2`v`|?3j>U)@v6|H!R$DZj{j+s6!$+kSk{wa86>b)Tuj?QI>>i+cBb*=J{ z7ECVJu|4xbOveahe`4IUVexdkEsHKV=%1>*Y>)2#m#oO+hPUE|_s^|v2R}{c-Kj81 zlWu3m^=2)g1~buq*^Gi1Os&?GDCA~g%JtPA=;d8ZV)OBE^w9$i_OwK)p(79xVt9M1+j&}$IF%?LH~i8J9en9znJY^yo2@M_=Z}wVj;*b0AaO9HV*WA^V4=jh z$}nJ38%pFc!5tp=SJw%lx6?dqEJ% z_$z83Q2Lfbh2d7?rB)ZBU$P(9jJ}}>oDgo>2y_zlAHlyw**tX_;%dm{QW=)f{MuYh zB_y$I^5WdmEXHr@o7&x;EF?{qALER&w9!6$yFbxvO=WS%S0B+IgGF7=e6%5kU>>dC zba^N*8ug0YAH!1_{Yz-Py@976()a}lA0j3#D3e!{g3L817qa|jl#KZ`KgN{kRv?J- z`xgJEF3D5-!ZqL2`MIx>M3cZkb{C=2AR0AZ!VqGomcV&a>NcXCAK#X2Z`@PaZNCz< zHgYzKAJe8sAKqH#>Nx({Wbei3aGsqaI)>7jry8xB84YK0(L-oxPX|cP#zxIs%0LSv zT3Kd?UXzDnpBpreAu;QjxroE`Ro0ZEfz~7%az*k)9~!Qmw)SdO1sn0;tiieWocCFM zSG>?wH#o3z0{P!Mw(qF3!uiOoiuX4)6v(;5Hl}_{ZW~#IC-hB42HcyexvMy@NZbP0 z^TD3X;#>HU&))ApRspcf8a*iGbP0E;5Voje`GVK#XHU7<{@Kh`kCI)Bvosj91~p?qQ`4MFW~j zeb4-ckxJGyzFsmO7hD%>C8*7zDM+UJa=T8r zf*0RIOys4wpYMI+`=-#vw% za!;QhFF4UiF91jivEC@=bpKc$jN;`=B?fbgHUDS!3qe7i$FEhijYoZnktyx!M$~Fv zl{d9tQp=Ae*Fw{#viS*C9_aAxmzAy*jx+*FwWoS_`y5Ucl+nSWIqwjnng>-1r(~~X z8D(HBoyC<3>{r*&nyQZ6@h723RP*O1-a^~`mmy`|`~Y>)Y+3h7Z2k`9cH7kt&jD3S zTwSiPd|c~EeSY#(YgdvVJFO$H-^5rWdS^%CL9mL*^y;8HoHz!zUfr-xGyJEVT*Oy^PYj1KDI_zG0q~aNpF% zFSmyl9dm{&COM}0WV8qI9{PPyUkdzwLOv^V=C{pwCoCj;)PHN#O{QaTOT9dxeYhh+ zA2$rnJKflMY@{OkY{>|EI5Bbky)na6S7!EoViWj0U$DnHys*PN7fTi$&p)9!hn-y8K7Lp>S~+~Z$s`7oJhaC=Xt zXD{il|NgseiBD#->qGwqp~p=-j~99L`m}udnhcs3;t((Dxc}6yf%_eEl_e{orc+?E zkpZBKI$s&EMmm2?=kxALJt1oQEwuOE(=PQB_&rVJ4C7YdYMR+dIkIp@*~@pH)^0_S zAa_zMK}E+ozRU5yS@{cU-*T@~gi1n*W`7 z@Uv^L=wVcQAnK#u-w;7eurLKEH7%12unbB>J;t-=u*qg7DeMt(_Eg+2Ne;;r?IU_aKxil$-s;95Bh3AUAE|79ZtI~c|0@z{dU?GOUFZB24E z<$7r$Y{%khQwkKby49vM%agUxqDBFm$sK-!IY+kgOizl+W-M``a@HKEUn6YOHcxK8 zgYM%NNztr*A^1DKz{-oX__V;e(Tcq#2%>9(8R&VZZU}9%e)znDbp6{0CmIhH&ncU( zOXi@$bot^omcib_p*S`hFFF|p1XA&qxnW*L;SX0~uJh1AiIdrdR5%7BJ^k>O(2^#B z{Nt{SOp*&s3snKB_sbU0UR*cMv;(E>zPYmKU>UA^kRx+#;JVpF^T)~%;IVAvMq3h; zL*B_DVaa;|b`-rTz0nq&$>B)dI9c{bI_%K1=|+Dxj0s7c^^;2Gu`$bfBrm+hu)qWCR{iPz=ibvVIna8CN(MeEF%VF^Zfi%fm~}Y$YM7a zn03Y=+vw!#LP2jH+|W!;phdm^I{Kh{x;eEo4^D2x0loR}*mdHkXmn{%lE`OtwI%=*7AO` zMJ1%lv6agvx!CXNQE}?iDFpHqbL1YcXsdIA@Wz&0nI0@wpux7h>b`gER-S&26=)pD z*6Sv?CgJ^y337I`OZzIP6J2i#5?KoZnmvY`z>7#KX5$w?wxX9pW@#?Jm-Yb_5ENSB zzi3LNYEGM|ih8_vLNhiNKKoNfW?>v!Tux=#vzN@0PYX>XNdSQWOKeO2g7jse)^I$i z{O>%l?2c9L=^eHfE;|Qy4cz&@aD*h6ZSI$Ju0~Vc@OPByFBa8}V8{o6aL5_H*nWR$ z8K2?0K=J`*Ox(vq1*ROK8-eolpvuK^gUm2!rcPQVJ1&+sZu!sWPC&5GGWHR#`P}3* zZL_oP&5d$k`_|f<|B>a>d_b#CM5_K@QhfH7SB7C_*9FWQhe^tY53kYS>e*0g$))5I6;$|4|3lcIhj<^M2oH{pNIcpxBzB^Fr! z87{z#&M{%-ROA>{ZEH2C|%BrZTE=fsG&CJoW3id#<^qUJ<|7TKH?09C;4d&u0 zHrRnD6sqjaIq>D&h5tERtFgcKZH-^JZuwY%O3+<;hf{>_705C6?(HeiYGF9A?*J|` zkj?X{gVY*fpg0Cd6)>aUzw6y4pUA$B8`ye#eltZbnhp}1(6DyyYJmj_{~Y0IdaUZ} z@ZKd8V!P5z+5lFol&Qng==&(JQ0O4__@MRGM-rO> zMF(;P3a~|!0k-^jEYZ@yyqGxGcH~V0D<~4aT44cgNyO%l8!#zL@y&aErQ)}$) zT9tQQW=SXE=U=~Bcj>`Yz5D!wNqbtQXb;_WlglG@m%t*WDXC<1qpAbj9Pw*%pO@}P z>a?$G#sc5`B{UJjLuPYMeyjuFcdRZ!gircij13b()UmH6rCXGCQ-sN5YqyRD{tBH! ztTcQ?fZi)vDz!y=yw#gP2ta^?l@m%01nwe9!nnQ)dA22W&2JX_1d`YKc4tUP?%98$ zVE9h+h4NGOyeU_0Fvmy4P1j;HsYy4*|* zH8`gn^t1y8mmygZ^rR&p@+6r}BM7<3(#lfU?Mgw}bW9r_wy_1|c8Rn?a{$ChEvMy` zu((y%?__4lCIY?sX!0x%hZ)?MV4?=j-8@@3Hsu_1^Lc5qR6vRx6#x`qIAWWB>+cGW zOJbieWr^?0hgn~5uR_#D%m64Qk4_+k0*E;M(+R%_R#h`hG4jpxt1lIHrI5||ZneZG z@7vQUSt)fU2b6elw%jG>WJBSQ^c{IFT${o{aHN3G991_*P%}K@sgR4mVw8b~56%4U z+j8N!A`U@$UhQ{G!3y$x+9gYB|5xL`P7lHGNe;M0KupD+*0;tvrWLDd0&}2_CX??K z3#+|rg-KE>4F~l4qS@D&_u7pC$-gX97HsMmg}8kHLqdU{eRmt z?OyEbt|xgR#l@)037*{r^S}WvAf}svV~RjO1};(^LT4EYIcVlviHuE%1M_Z$Qh;3m z+WiMkAc=E6mVB021_&V@pp{-x+Jk&AAOOLCUzxv-kZth$d-FBQ%2s%-wwjnNRG$D8 zfP|^cC*Bch5$S>kHG@1y(zwv7c2i0x*+gDbFXa;tz~(I0zlY<$s+G@Rl>>q6s=e7J z`1|xeV>LX036!o>8zHRJgm92ZF8-B#8d<$^<{g%9uckF!IZ?lt}Ppsx>uA&_#n z|6XwVtph0fU1KDflMEXM@PR~Qf%Xc)r0Sb&SZ0Z84}!o3qavd*L+=NV7#eB#Ucphh z_p8HhO9zhF)Rt#er+Ygsg@xkMqTxKxfs6fD51Rbggh9?+% z2(Q5-;)e`K6ybH!d6ptz{_5XzQ-5$>-`$&~y;Pfmqb2odW&i3Y%AB!&Zgui2TPbIc z*pGp*MM*er7-)v8E~t#$2^IgGE*%`LUYeW*>f>b}OLi28@G$JvQKhfoYmgea2Um6X zK1-p|RJU5!t@l5UWP>uxI)o~@0)t8ud9F2ycp*a@TC}O)#iIEEMuuep%B|UiyA%^` zIaDvP``H&yWiwYShBQB4S|e!q`M31)_>S7NuGtbQwxHoLv$g* z!YMJ91OW0KtXxrip=^hnHmOFf_D7Jr@ePekjJJR6!&eqQe4_Zv50rpY_H z6VxkM*V@L1*I8wVEA-tNAj>J1c|`&*T5oNH$6A=V>|{7BPgxDkTp(!kO@ zI*ee{C;+hI9`gPb6o9XmV^$*PsB&~Yo+nPKU9|gr+k=GA@@}-y3hFGASxTn-lP`-1 zsUX$Ijp1_hOW6ifPOEV|s^TH9yeLqMIBbd%Br9dtgUzlMToawJ}hCrQvvDbAwYEXoOY7#^*TaZ%S=Ecb4TpPitkS=x`e2DH*sIljmH7 zoQLK)eJcs&*3q;t%0vA(vIO;pBmth)bA?=Ae4p!c3hsu6XC)<#oiIYd*<1(4_POzH36I%_LUN0p*ygkS?J=Pm@5lm*= z2;T56|~_d_Uo771$@lsTld?- zBm(E~ix;!MC<#ag@E0nrfTfS%(~vEiJp}HGW62BC z1W_k}E{;eiI~bOkR$-_zf+qov$QZC&j4MoYG)eE`mqlw6%z~?Xx8VWk^WU1}QQQUA zSCfDrl)QIIw!t}xwBaR?DpcQU<%VAJqUFBK*W3y5q(u9_r1R~+6jNuqAKY|>!6%cK zemE*2?xWysp!68UeTOh%{iOWEBbL)>!4H#7ET#mO;2T1M>8!8;vBH?Dx|bu~4zNy9 zs~O3sRllwO*~e`CNZwW4KBw4@QPuHq)WAJ z29i63=wL?p-?5CpFW4!qBmn?E&)8u(?dZh-l&a87-oLP>J!NzRGu|G#TEPnp$KN$!%+;EoOGzEu zlWVM&onaM@ywDQ9t0%ETlCK5NBZp74437jdC>!U7^6_Dcql z*wzJ&BXLqdzy8)(F=6E6?=>>wt-xtpzXJ@Di~^zQ5pYDfk)RLN{+C6l`~NAZ5Wz=d z-7HFb;D2(di2r^P!H*~SDf_SZvfL?T?nWWPtC1~Sf2o2XSb%ZK5{qYxXD$3D76w&X z59{8QP)zODy~adNI|gb>&Wk5PgU!*o3LPS|MkYZ^d=XG}5tqW>=56pN!ajOO4Z1$P z5yCh-J@R52#My1-8P$>NY|XB0wb_0(_&d$<*Q;CWYjfv1AX%M?3|_WSmMIYcsVY^d zMh%IMh6|;(b9r#LZOt`NHYw`n%xt|%I(eeH zPnP0(;%Tk?%TTNNY+hcoz7@IMW!2()t^JhBljt>~5a`vvC(*F?n8RKhRVjJxU5gWa zx2ye$y+)dx!wiaFS}bXZ`1M0Jukf=R0ZNi!a5ZpQR zKA}~{Y+GlJQL&$Qz9gH9r!Kq2b}Dzpp1gS&5%Gs;=N49+T#lXWIU`Hoixn$GO-4iQ zPGH)!y$=k8zYSyFB6ffA*0s7ja5yM*wc=jWFZ&v$+v{Br5d zg2q2>^1CO7l}5Qr#hJ4i(?U(4!9YsVM#7A`ncVw#Rd5nU9l7}F)2&sL5w7jt*?DGYe!Sz`5JgPZpM zqAI6macO}pa?GmuXr)Yli$OZ>+oydiS$F_e=gt zul+NmLiXd@5(*S`&4h%Y98Or-B2}cJik63J6{Bc=B;&5!IE7&3lZQFbpdm#uYxy~O z59CF~hB7@>ym}fYj1V+gn56sh5Kp!YLuxF-AN#G8C@tURbSK!rNHAr@ZT9T|eS@A;X_U zMnSzFM)_@vd3qE-(Ie$#4AZ@$8=)mD3lX%4UA`(AJHE5l{Lv5t8-!nNoiWf z>sjv-8LmWy4k-r~5t$gYGV)%28@n1nmhzJAeUbm7b=hbJ>{RiRa%oY-9t8Kj3SS?oo z==-mn(-mj#f@5ick2`@J0@JW1qHhkiQw}N`#gTziH!a3U8bpFkyrS!()AAqHBTc`X zK)utBTdg?fne{WGciQauy9=*PAN?!iB8?E%x}{8(oLU?8BP#z>2nKs=Az@8O87pUq zf39`cU%sFgkcF&O$bikUfF^JYE(Q<`YyV{M!qj=VKlF9E8Gu|yZ085kErI2)h@kR5 zseIJJKt3u+VNY*#0TD>ptvIMzB6L|_Hq_gEK$pCZ{tagM`7e{J+RDXE56o|Mt($F< zn@>)~Ex8a>!HHy8s#NGf)X?H`$bZ7w^;ZDyFZKN=KqQ9fkiDp(crqIHK1fii|4bjo z&Kp2x2dgf%bN#Y?&4bwbh?hM34<_jqCK1~|WS00GDTMVhAr9)csdrvlqxEufc;m+- z1%oo7Pt*bTmJP|x;se1o^wANu-EO8Yzg|7BDdCg-uK3*b8umyWn?AEA)1~^#li5`_ zp^{>=N@-t-GH+8xY4V_jUFcw;N#u`O}C7IT79k0QIriBwRDAjyE|#gett+M*A23k=F*q zB6^M0#0Nq%Q5&qQJ`2ulpAy|eUXkQ^G)L_10RV4Hh~Oxik*Ii~+I0{RTSI?AMoi6= zgl+KU?{pej>#4aoK?zr%kQ#veNL{7RkVQR?YV!5k>oAXoWi^UQ4@QD6>tA;z@9r487#6}l= zvkKbD4(1+!W7So+bq#_P{`syDHe4Q6<966rh=RUl_JG01N7T9J5Ya=<4jpcOKSt^; ztLle>)yG>JFnQ(^|1P=KfEtFQLcbYOwPF~|*3ES>I|y(;lQwLwwCS%;zh)F;>SPXC zaOwWD`;(+SsGF?^-n$Vmq zhl3GEU}#9DlL7hsx;I$NRq?l__oz)RIV50o{@ThYH~eRD(<{LhZ<|Gc?5V72E`zH5 z?7PQ+JqswGSQNpcKLf$Qu_i}s)}Hvi=DbS!1angDV)^tFgpHN1wvgDKJJ%I$=*{_U>-3h06X*^wT+Ua=UoBMdx;;fcDLL!o;pYQJd(Z5 zf&}~UdB=mqr$)Q6c3vx9Jj;+un5)F18&@3mjlCU$Rh`aWG{WkFfNlGAMNGkvbenJ; z2&26T7!ZN3Jw%TGV$U7)-6#rA&f7CQKKEqqS*xE#2+hBJ)Rn!bncF({pAtU^pa&xFmF19hVGf zayiJ4s90-|;8Z4sQk{awB9K(!+Qg4N{b*Y1`1ScU!0Twv&C5Gd8L?J-1e8|(9VESd zw8FvLh|>c zrj1wxJw?MXXN%Oz{7e3y;x(-Id&kLp^Syduo3KurfcG9D^`!tZ5Uxt;wY>jh5K#_* zu4OI`GYCuXUHQ#Z#dIF_qT^Qu$vUvRDz`uZjaz=cIlNg^i{~`q%LJk$l{o-}=7GBR zV;rh5N-p@^{GzZyBFq<-$$7Sk`(G~XE6Zir9OWM{Qp&kVYb|U_Z+_CosQhVzBIJ5n z|iw-XOsEQVNaqbGG*|VRW*@7vYXT%0KZL!s4DVws(cpo-= zqK`%>e~E>aAcmsl8Ga4Qq$&s1X+PwzwqRx4ZvhrCTf(py_sa%CMk^)<1}w*`wf_YB z2`{~nrQzP7Gk*A%+C81oKZR$z2v#WE;9l5!?OaDB^R}ISDnQ83{($xnFRY-ZGOF-+ z4U5Lo6aa?Rc|6&E)GFF>lnCGwNy448kq0;Ei%eKDZ2naxso6EOJo^Qj4VHC>&^P2w z5C*xpZbGzBDHx)d&5W-GGYCL4-|^la4s7z$rWD7Ov;eb|u>THOjII0*?Ew0TS61LH zs{W8cb8c|QeOwIS=fi=VHfV-Fyezf#K zDanTDbzPJ|^Wo1ed)WY4zna=UjHaK~f3~i>;s1Md(x-IT&fh@Po4Sepv{61ku31l8 zw<1h%&3ik&j3;7q)er%VnWe4Xkl(*z{Q3KQNvNfrcRtDMxOU-|`$+ccmHq8?foa7o z0YAkfplnJ|_O3OnZl8Bu?7ySQi{2@wD=A}n5g41+{d4^R9ukzsgT<|{-0_lW>fkPi zIb+Pbi|#M14{K2%bXhKL11}0i&vqYe7To?c+b;ix1`|zXX4E4=OJR!AqXI3AC)t-N zDd7oAzfA^Z0~OZkI{T;vlQ~g7=V7Xa-5E%QB}M@W11&2Hl!Q*AqXH|zf=CmIg{(SB z&N;9NR*ed4h(K8wL6&m&qA;F4SQG1SFGs?i(#yMq{w-c+Xxgoyg7?8mpMp%j4mFOr zHW!bn!kd?sJJGxA5GqN+$UDr@r>25|g2Oc65!Eb}GD6fv5mb!JE0W6%x((|qsqDcc zsNp>cO5M$MG%p4!>2*OmmdE)VvWc3}k<}&I&Z#2sNU%M;OMWPYK77 z+NBs6v^_~XD30=t5+3_1Tc40Ut>D-HCyovaL28}Zokh=+n4$URW3};Xx@g^+Hv)S+ zk86FzC`BF2pLm%@ZDyFy18*1INW&fd>M=;Ec?o}`zhN*g2sb#hWrd+4xykp3i3xbo zF5hkI{(#~z#8`F70T5TCaq1wh_?x5x+$IuGAQX>JXx+YZ& z=fu`p%f1!u#mk1v!5PmkE_%?kid|NO2M}o<|Kl4JVy~Y(f3U1ND zF4R;=unFm=8z$L+u4u!mW(c)UoktJ+)bW@@9>_2XB=fo3J9rBTFU9Zm5z`7M#RHRGNlq+@9FBy+~u>(>qSRg#M}(Zl0NJQ63eaICE={ez8)|lsQLr&_q=o64J6JOq_NIz66)e4__ zgGx3ClbNchbjr4>w9>9pv>R_k(o-`Fq~RgI|FX0lM`fF&GoTwacxVs&czKQ0C={Qy z5ya!y$+PtiQ4<>}8#SDD`K0Th^8W26e%sxDc83EKSTk9^>40*h?8hz_8 znrH(^5Q$-wE3RtKi;DqydxsLEoGE~;&Izkq%;;_sRU|Hz`7m^?$4J7XROs0}}Ykq1wI40qgVg>2v)v0DR*x`dR+5`67^)e|O+nA>pW~dIl4s%R-9g%kOJs?F@ zKcTz(91ake1cenOL;N}`@2r8Fk;HW}Cn7U@a;++yj|hMZyxDd?GH>5JY18%W@L2su z?Degud?GS2kS-B}9GDCr43x!wnVU%O^sTBGMkgsAFj>XJ`UPgP&opwf=#Rr}H9qaL z0Q{}}aSWen~gri37yCn?spJAnv)TA<--oiY!vyh)B-8hf@eBxg;e zpMB97H4O6CZmHB`5^Tmm^L*Tb)Y9Jp;fy@qpYR2SX=M#vikMff6$ zUfm@Jh=`_V7(|zlW(jeOU{J(qCPo7n9Oj*|21?ABp={FqcZ9D7^ZmaH*`?kks`nER zU4%0-NXQV}8qlziO4qz_T@~t-4Vez=&Ou3Xq%35vxdFmOyNjZ=L!!GA9pxEzn7I;9 zRDV5L&PhQF0d;`fQa<ElRu36!loRT6e~rB_Tx^jY zNh_|LNkIg+gY2RCVsVg{^)4}}q0f<%Kn)^5MsxlCIR}Qxd~-v2m*pKsWOH?WA4R-R z_z3B+{Pv6QpYZFsfQf0{suLMHgg9u-^UzzllvTn!!EL#U$|ipo!_@pQeaiCkV6g(| z_r&uJs}0S)kCl3+rN#o*fFT+uW%ENr1i@njd%N5x9XRx67;ocCvUp7P*y%CIl9rvNl}aw|DL zoBfUc8Y+*F>7z4mqn2>rvz5=Xln#R&fPsw#gr-8LbEw^j68b`(>0QfGfwdBojZ5*G$=hh;u(Rh!Er}Q#Dz`HeQ^u2P`yEyazwV zD(^NlpD6TtFg5H#q{-vTl52^wY~d|Wcj)pW`2v>( z54jI>T55b&>tO&`wRQXCO5IvVp1VE+xQy1^-^I$mA=?pXtY(ylt^>z3uXY(%Zv}dk zV}JP+KVp)yh6D$#OTCTbj<`R<)eB-O$D>L3P4ZikLiO=auj9WzdG_X>=UMGX?opAG z1H!}-8G#@S1W2GXS%R@FqM(e)O<49aNkZRQL;cF1PnoMeD1`N!8%;+QBVG~Er@Q}? zcQ1kDeM18i*T19Js zQGA=mv;iV5#p|dumG_v^Jm>%_lcRXF5f%})UMoO8TF}m&4=mPOSLy|;*tKuvgIfFP zP4*79^cxX+1pKprTxNC6q*{{qQSU?{dkXR}tq~wy50>txs zj?uRHgu1r6!>fZLetI`0o^xz$eVii9+(uyiNS)j~6!F3q!A8Mw$PClHArgCBZ;^;T z!VH*0*sREuRcdJBy448aEQA_>r3l%fBzZ5q7(9Uh8a@{u^)augdU1*M(5D1Xqjot1 zKl+kFc*R#;>IztE<3XyYti4M-AnP{I_NF=3+#mfaFGqLcZz?XtoT#IF3?}${AyN6+ z%G?veO*FCuLgQv59P;uZ^aS#x)DIPoDO#Lg^5m5?a?92z;uLjc%%R&Mey932JRFmp zL(7;}J%st-UiXrrQSQma@}DQg-#?7;zgrtTw_2~|P9)V{TebCcD~5S1fDUf@-T-;V zv=Qen$9Vu43_79a$M12kz&edR*eKdDSYNK|72Jec(?U1Yb_A+gkp{_XB_Wa-IJlFG zTa)EJsJ=6h%ikWm)sWEF`LcrFb#@H)^>Vc$;G*Jd3f+h|+WfcZ~kWfIZ zz?1#$B(cuGu>aJ4q8z%da^%&eYrl8an(BySd{Z9GTxJE5Pd<_a>F|%`k5#6`DP&Mi z#u}oDe4f#pxet0LR*Z$BCCQl%ZFpMrGKe?NQ`h$C$W>@B@3On)A^=O`THx`d#_VVA zs08_WvA(}8`p%r!fxbDx86lr_ygJD5a1}!H?+IoXiZcGQN ztS~LF*A)A? z#&KV7lEUA9nJ|9PMc*KpFema`hMXo_Pi7(cXWuRL0Fedi~=&&L$k@lUK zN>_3$*W?uy#1DfiY7RR<+AIIbJMF%mr;avtXYn|ar;DbxXf;za1YQJs<OVJligV z{6|72d^+3^MBla0R`vx^joFGUu^wGI+WA$q5L{;P$(%8KQz~O!)RTb>idRXuHGlvBaO(9E9fw7DRhem5x2V2GF zR!AgFYJQE>8<|8L_hutUV_`vFu+o5!Vr9V#`W~~uK2GVhov86r`#gbZL$G{o;rS&; zuvnLPbCQI3L|wSfwa2Z$T{xR1eBlBjcGn0S;Ou0i>S7epv%fJ(F&qj_^YSJ<7uz*O zOXDU4)6INh7HGB4EQ9`3(>K`rH`mLPD}Vq+0T0)0l)$y2RWDsd^=4$M?wTzaJ-mk* z6s*f_Lf&r{tkO?}$W|@amnHx67~wv`#FSbUMVuV?w+z$MX1a+}KiRrR{1lGLYljdJ zn0BHO&Rm%3n^lj-h3EKRgfuDV6^fJwK-M0^!zKBeUiJyYr^>tgO38U(-C&h2o{HEPP0L{*JD-z(F6lO}fj@PI1=m7T>_SDt{kHW4Hgd^(_wH`r`{ z7s0MfW?$g~jU6|QmHg>?Qb?UM-%W?3h`}J#?@2hlfu$i}D9h~|WN;5G77xCabSuz9 zGuK2t)onps^7J`^=nA&bD{gQ-vh2o_Gc0!sX{e&IcT1+cI7(4Iz_}1S*?UX-p>A_t z<9d45*?}3iJ7{5hgz)v0WT013*4d*#A&4u8*KDxaqzd`e{P21|rqd6A*Rh4!)fQ`Y zac%GgwKL_@yYCD35EUMvP#Iuuk*>x~9hGj|fEQ_N`-KG)<{v|Y48-@E?yy6n_w>%d zUzPn3p3#pWm_?`xqm51>+OKwIfl&Y6$Pyt8pVbGRJIvQ3X;+u9sX%mzgWhrio>XV4 z?MrUgy9U{-wfxMu%mlH?r*v33gY{U3#RUrp$SxM~FwGH-bS7%~No$0VWUY zAq5SrEt3;^Zg@*PZ%%9f&~$QNmmW%HWJFE(KWZSsk9P+(bNleWd@FShT4OvY8@WY* zdi23Nt4qpuu!W_|U(%xUeBx7>i&qrRyu0f@c*dfKye{MIX9jTXMzD;N09CIe1$;~3Wo-W2z?2V`%vzRN+X(f z8r6yj9%PFUK!zZ9JD!)xOF3E{|Le4SUGC&N3wfW+Tq~(77085yB7N^{B;*Vv8d!DfgM1mr!999iVl<2 z`0>G2NGvbHOmOjSdgztZZ=iPlS3Ky&quuQMmAJ}wExndrc(CuGkE;wuHqA^d>HWJ1 zi{R}A)tSnZJsvHryAp)?+Lki`;)dmcQt#aW$&(2GD`qldEaT$q3oDi3rX5rH$Q9|B z><1;{Y`h-SeF?yuTSch7&q5ktq`2fUl@9p^*%>xtElez@6{u3b9z_DXq7Is8-itst z0|3yyIE&d-L+pE7Cpcw@^YC&w(pzIjD3kXW9;@0r-p+iyYaO#mjyj?!Y|!AVM2WuK z&QEy)q2}y9CGeBJrG$9jo`mSfmn#%#28;k?ac;5t|2gE`n)0{ zU>)gKR~QStG_Fdn@O@fZ7DLJoxo!$WrZ@tTpR9G6Gbt{b1RmCfm*Rt=4IAO0o!hSM zlxZpg-qNoMN34H2N|tpv8_U+hxD@y<+a7?xgKv&snz%rE>L5?JL_E=eP2-Cb ziP|oG!8Lz^$|w}*N33>QD)bY}b|Q=a6wdpGPWr_^_M6t(@R`q6V!PStf{6Y&@q*2@ z*BF0mpuJV`&sU$p%D0P7AHA+|ofN3Tr*!$0DTh=d9oW=@5kdw8og7nPb^O&$g=`YR zwA(CbqRBnW7pZj&(5X^i6b+RYJh=|`N7u00Z=e;!L=X3~CsLqn*2^j4&+wH62#>?i z=8D%MN#{(jr9Y>B-O#}Rca+3~?0Z0|<(kVgHuQh*(23!cQC!ZFr81U%5-+=8vT#7%&e*R8#E-iH^UhuLs+}v29alQK_^_6h=;XXkEX)*t?T z!=plK>RudeP>G{IA`+4?=m+{QjyF z<*+6B5gValF<8j{#n20SMS|VZABWT&AO>7^TbC^747{d`3fljP`Kzi;s_XX0L$jTX zKhL)&bYZ{0jjLETEtNF=O~wbz+Om_1M6jxty9YgdOXB_hgcy89fvtTwK)K<;MONQ- zWYCUlyB66{dvgK)<}c%juHR)vv>5W~Q<2(FiYR&gUk!nENu}Ge)kvs;?c9jyfWgBe zqURlRY6$QbuMOi2!W%dBB;@B=SRBk1lR&ZN{h|XYL@TBm&J+-9jtqdWRlD-ib82J? zpR^#p-I?~=i73mUVcFbzYgp;li-=xs1ySsgeBVZnR);J!vsFdYs#vjX-gd{m(1`=H8EFzuKL* z$}@Y0#VkOXX!KMdCWm;mgSFUd@6YD)9l?0T-PB(Ttktc*ayd%Tkv_8$%G4bPu?gBK zVld&G4*J%lvD)0^I_25qFPfP`%z8E^ydexW@|qB;1n2V^Cv!DH5=k+?h4hg=RI7=z zHgQZjEfs?FP3jJvEnpzrW?v-sK~g)z03}ExL!5w%7l*>GYu(<_{ia8a)*4%QQtw8> zVjV~rMw5B^vWjtpcyd?(V0rD~miCve2T#)brZwG#w^tNZ^ULX$Qg$`*wueY5!Ubl@ zl|5b$YNGIQ?FFeCim+#!GJ~5Fk2uljveJ?*vMm}{4F&CVvQMSnN)W&W1VR#XP8>#Z zjSfe?NGZkSDpz3Lz>QNW>EABq2=YqP2($#i@ximv2N+s;$Oo|M)|tFq;II@cedU;h zKF3}Kr}!cPw6uM09C&qP+7j`u)~%y)B@lQlk1g`5zBZLI-+Z?zbdZt__j0^A&#|Z z^6Vhzcp&|(X!_ZOs$d~k2?%khquIuFx2cyaz}frxOV$9bEIt(A!vNOGNw+3Y7tooP z8H*DzJ&S|~aq%cd^du)%6khST4~|J2*(y`SG}VVSykQrf6VOR_L%!gz0^QGpCW7NS z&jAt5obwMp7qLP5R#%Rd*jSB29X$yyWL=*5F}Wh!=)LLy4wT)DLc_u}SkPo|cg;Ur zOf^*um*4Q!dmkS$&;MH_l-V6Nr#_L;6SFhuM`FNUBLws}c zVG=O_b@bJ1@G0h*=QCLCi*a(>JA2ca2EICbCA-|`^&>gj*jx$7OarR)p`nl4bLZ2EhwpHPLNk1?Q>Wr2Tj6Y>&j zr3?q3Wf#lrIOJ{rBNz9B@-El1Tx2X?gZ0xHJCH~H^R+v`6Okoj66(2ft_yj|lJWdx zPQG(u9Wmqtq3|nfx~hcTWU~`ptBBe1_X*Ix94rjD^|}vQP0-^&@g~KDP2SOg7FTKv z`2OjKIk&3(5@{27jg-15kL_oDv>(JI$l>+VHUBuf?$02VmbmB{m5o$9`V>xM3QbLq z*A}5bxh=9$X5|G=k6yt(dbl-`4S2oJ{|)5Qgjt}G!RtU7;VFvGMjPFagCE<~E4z?x zLVL}&sYDkE+wv)E9M%mtKF6HxB|jJjK?5RvARrN{5&3{PeLx}-utt2+g|(2je2rO1 zgp-rnc#4w)hySGV@gz8io8h#ck8mIS%~^o>M>2vmf;C~E6WCgF% zalScI^XnLVC5@0!1f9QanNMq?YkEa)kYAWC1G9^n%C5A&Vzy>K$=g*W^Q6|Z~Z8S4VhHy0{w`j~@X?uQ;JUMRF@2fRo z7Z@AIgzaU4wrRVX_|ksBlA*njfFZ?Z1?!n49Qc!h6tcbO1%YAe5C8+n_gm_wF+d6x z!)aLu50d85;uT0k%`CKjDWwD0009zGi$tRSdw=oxS<#4_3qRaI9X6Q)v)&iKJI0Ns zSi~kaxmorEXjt;GUEfA}btPbLJ2&Ka?xUHRDVnG*k58P^FnsP@WOi zhT&n*#q*W|dh%p>E(yGM{m?}mex*(YXldIswCN$&Gl3M+dg)+x3h*G$h46FpfNXj%xoRW1A|#hluFX(Jz51tovMlT9 zSU$2Uigae!OHt07idg0qG=N$#!@mkHitx%0a41_7_s9wAL`tE8C}F0$hO$nFtS;O% z3{V#r0|fYax*}qc1^T-V9(_}^Cj+}A9|PlGgCT#6iQWa(jYKlus>Z>ZsD=SN?%gamh zz%SkjwY)Elfdu?-hOOw!Ri!~@^qY{Kn~{w0^=jYW_ss!)r&w0cR~(a6hKWNQFSyP# z)^meQnVX{CwX-(=yw4kD@A6Q7$ls-=EB~O+aoD43qkQR&3R(>{Vv$&BX%Sdwx6k6? z`yDsvL<}Lcl>Ox_12;3V;IR>+@Z~mt*|b@^gSx6xb47RSt!^36JRk%z1;c|T`$#gy z)ULi9yOwH$6D{2;ekCVreoAOvNl1iHSXv$V1ZRcW9hn|Q?ejlJhQ+KY>ony$%dGBh zn4OfJ2>)PT-OU1hgog7mv8{@ufw6dWG)83@^6qD%?3o20`BbeAHhYx=`RGk%up|lA zQoc>`DD0M5#wki59SC&>4I;^{l_c`ktj`98Z#wZ|tZ|KD@WZBkT)M=W#*ZjmsPOg) z19f!Xdq!ON09p*9$AKpx!ExN`Mjv*CdESBNQg$gh^e>EO3ZFLElB_QZHvR#M`xCnA zie(=y-$=hwQtZ)5-Qn5=+~P0HWeRf6TT=M>+Koe|;-Vegfj;CA=0E=YvzBFTlNDDN z-V)QWiI?(Vk{g~pm+f#YhTp-7^JWe&)hrbVLN~U6{pcNG9>)%Y92wf3i2ZymQ4#_v zz&u3J71s~BtQ^-x$u4{hKW5gMxy03%I`=kKp3~F{6CKx)||2LUl137t!jL9}z>qnKU7w*g9 zjEl(7n_nwu){5_ey62gRCxrk5^dtVduEFc-*VYUr63L&DY$mWWbm8F4n^vM2gb#^! zqrb~Qh|N&SK&gCsx>+Rt<%xIN%XO0px`lBD~6J*-#RUak0WjN z`uipUf+1XzMQ~zH{5t*1fxRKcw0Zi*?C;h5Jx=ySalbgZ1E!K;gi0h7v2i@BL>b!atZZPre)JwWJNQCcMI|5B@`)~IcMXc! z#9)+r!m$4xS2;g!9E3^9g#sJI$k=hu)RHy>HsW$O*nE1ycnClnH008u>qy8ji`H@f zSS;$B)Jlf~l(p_w&V-|*kgCXHO&PKIL7=(YqX@Jh{1Y9;74}vs9_IciKBn*Za-tBx zzute?DIzP(_#SxY9$2^XGQTT9sYJIwaqlrlEX#oWJIP; zoGuhGXag6zCcw#8dAXiq*z~Lj5#g^cJ9*TL4>%oJ*psg3>nEkUewfojL+++cr}NS5(4HY+?=SLl-%dh7B6)r)ZcA4hpO$ zGicAqx9JYXk!GSmZcH5mE(@Sn-#D1W#ey+o^aGO$U^d?;A9tkq=^yp_vp8k7gL&&hl}~~@e&gT1l}`dYjGxol z&T;_`Q$gJaZQUkw`B@;voi>xb&3J*1O*Mj&DkH*#j@d{i? zdc7#=dGNm^b6j-9)kd4Y4pCfY3<}h~@UEU4&^bLyn4|OU*#0#rG|0qdGJGNxK46{$ zdc`^zjuvv@wr!&5UB40#3-AD88dy*kF8R{8W6&NLD_O6}{=I;?u5SyLd%ys^i*Cr` zhbIFF^fhU+AJ|wl47RbyzPmGH3Gj2Tf8A`nImv4?b$;)N)){lj3SAy~NY}G3<}{_G zjG_U{tNZ;T>QM=7wmlr)41Bdq5c&$Y{AwoeDn~?ygT-O@Xe+Ec`1lD%0iH#`@ z$DAeLj8D!qJ-tvQJ&hP)K)%_(`@z3}>}CuXK^!1$+CuNI7T`wRKhGGSEN>I$(v@io zG#1_KR;Q{ZB`A)gdq1TUhFNXcKJIw-qu7Ks|J@;9^^86(?Z!-yYn{ZKrV6ofG5#6w>w&W9IryyHPZF!xmDD4i(XTF3sWiYo zD~wSX%;}qSWymg3lUhi2JCI{om44Vn0ZIff=g)!y`AllB0fj=oB{z$bNmoWHNPuH| zw{jCD}2w21e`@l}mAJ6oK#HMjzzY3#YPDH_5}BY7J6d;BV-1a)bpWT)3Q z-5;5N6sll|rcNlj_fDe)-12^3gXQ@?VK~8m`^&qkw8{9lK9U(f9bnMGG?!*&l-O%t zceXBy$_o^~1JP9P&?yiEJkZwG1I;O80b(!2ct3tJ52`Rj4S6?8~INv9twk!j{zMHer4h?p)PCE%cfuOSdkQT=8D2Ue@Lizf=*j zGnOq&S>V5kI((l3yPmo1X-v;_j?KS0P+vd8<^kiVa-&aCANB!#CP%45_=K;{@a_BH z>!5~j;37~pgP(-f{Kau22h--`_+`y?NFx*kZatnDulJR2jJ)Zath1x5_QTuGfAhkG zb0t7PxAJdf9+>(`#vyME{j{{xF?9Px1e8ZY!OX1&FiZE%#@4TAZ1 zHp;wYuH%i0!ljyS0I>|BsVY*w{Er!dNL3U}SP1rx%TYLSJJ4swJIFYSBR;6kXPvm; zK+ik{vy3kO=NY-(8ofLU9QE-BBdF^x)KCr>7ReiIQ-+8llyRpVTR?Crd@K+9gVA@2|cQ_m+vUH4B#uLv1=SCoUrxH-sWie20~a{ZLaZB7l`Da=|WuTgamC z#VVr!USlzIHB7$|dNMtzh*guFb+z}+nSp=-8Kfd|FvP<{=0{WWtxer()Lu=V!e#@2 z0Ci}xxrb$rV+B|sv@#-w7gP)%g31(ea_z1^BU5Du23arkxwPR`(=cnV z7EMu52kQhx920lJl_*zMKUDa&JEQvOO@Fj1bXuCtEST)`(3u{jXk;45RiOd3VKjH0|3f z=o~j&sfz=|#s>xq%>~A%X}u$Hx{VA0>S8$G z^m;s86gyz#QK&vl|FIe}Pj9Kw786fu(B8&e8z?#M;b7mUfN9U@w3kb}I|Xo0BE`-H z#~S5lU0PC?_r_$g=t<2qyh<>jO~YC`cNcjHoC&gRp_Y^Q?0Yx#PQ*Ik#Y)G*{77A{ zR#wH9Na0i^mPkNnAX5Gci3fsw?1Mnm)-)~-=JQp^VVn7!Pm!#^YyH(j4WuMTu1ULK zKt8fIvcOZix3DmUa9_{N97Yx5K z^iP~g&S_f)meK3^wS4Q=`*s^Y&SIljhf{9)Nl_5n2ouFCIK;#y0Hh0Rg1kZ4pU>t9 zEL074bf=4t4H~D=K^o$raG7{KpZ|Pn72Bw+FI-Jc=Ecq?59iA;8siKUvGJlMg2_)i z?yyb@2QOT_0smg2-3@HUD=*3HCZ>4JsAfv{>HH-eD{a`gAXwDp`9+l&(qd`}aN*W^ zP^5tk95PWYZiMzd0D{576wno?=OQx?Z3x0r#li^zQ;~KVMT}dXTcuo*qyETiuS*7H zNhcKqa{6L5Il}|J(g{mk(joB2kJE`D4cOvu&)c6Z^c%Av4qsGKzDkKTj@|W4L0fHB zl%8n61A&tQ-tR-p^LETLDSq?dV~RYW?ag%k1HVGvwD~Ul7lu7| z(vW35B-!+jWCJfggz{ce)c6EcfwZ*%5OWWwZxsz&twY}x1^As|NG!VPcYSIIKUjp zLQia*?n{7!-h?j6%e}4l2bW~g)3)%QP~s|xUBrsx3YtPl6e{;lcI$5k%{SYbpT<$& zSmyC87!BCC%a5(3ahEXbs)-`XU^u^_j5SIoIsAxMDyF-qlU&J{R7iDN5K3YoFy8_{ z9r|K4%aB&huoq_0yD+RsawY&qK#So$(!~U}M8^XVj51MFLeuJgrlF)H%lJJ%V{6ZT zE$ARqZAJW-a`d3(&d^e7&%O)|97IS`9+~ZE*;uBkd6Yzmmr# z=4T9u!Fb(wN%5*&NxbQ5Z8nd+MMC(XjF)#&lHCzZ z(z)_IfoHWBdz%ZN8sP(~ir%lQn)9SXs!N6E^>?GzmSCuqP2%82Gj;@E=C-n5TQckP z1i)zVpnb#{8Hh zDclcM5$RyQXI%03STQKAQXXMA#$vIoia2o`b9`4S8Fdd$Oez6%La8gy$=t1G@%PR; ze_-)NOxbOtVhZSJ_atKOp>Bi~;6Xd~=O%pO70_q<%RJh3e4az6pLhuMksmXUL1t`N z!j)ro)oymFSX^$*r?j`rIih*$&dtBQqd#E>?L&*!KX?Y+bbR{mZ9OL{1HHSzm3GY@ zcnK!O;^!}&Zeszu)h{EB1W8{_a0S5N2WBBTd2pu|z6`y^5K-|ESdN}@l^Bd4NOW}N zf~n?w{XAo(qc@mMS7fls&|N5a52-vI>Ja%3HoDK}q1kPNOGs}>7r7j{?_$E$Uws%? zM9#rxq=+ay`~P%O2z-8JgjA|2tksnZ^Uh`}Jzss50-nsOu>gm3I^kC^^x;Tna8r_ zWQt#xs2wXD{BXw*L@QffzQEE}xSaYd62f}T_pl{&x_uAm1fk4YGG;+=z);+bWP~0d z#~?k*Mql`lc$B^ z&N0*}{W;Ym=Qe>ri4S2u2qEL^$F0xS{z;lfctqu9kmE4l5>CUz4zdY_Q2y_L9g;EI zXQkbyYenvvTKTnKksNLVQ&1=Ur$6f4fN4@ww?u)A~ zY*TClB^zTxQ9pmWJ-RFK5w(ePstWY~q{ak@{_CV55aFksB*N!5c56@lI|vE%{ZlF9 ze_z1=?)<-7(C4Y{J3%H}l3ND?f_VSE#p8RJdxc#mWN%|gK_Q1+fbI&2UpR=<__xo~ z*Lz6b+=iIBEI}Sv4zF2KSej3xU8_)1k=VWGlEhRx$!$ww+c2+S(cJ&dB4OrN|Gb0c z`H(tR7*ys}sd=e1AbW|d!iq{-R@q((E__UCNgcGw{RrVrxrkg94qGlV&o{@iwshnr6T$)wlN*EK7 zdw!~!Y>pc~)WGr-o-Y_(wq)`54Me8looyU#vKfjg^KHBVpn+ts0?KI89}z{sR{%%k zds=3ZJZ?8ToC%2A$HRZiPS)F8mPQEWW@U~?vd z9;A&gZCr@E<5Pp$nPjvVi4|h?KaiPRG{Ff5v&m5ui#E~)Lj}B*+F*M`_i72tQb-un zLWg}VQb}v^oFq>3yOsL8wie^u#x;Mme96y2t zun`r%Q0np-pt&FzrwucIUG51q6!Xy>me7@^_5yaf^@GXFGtRO4u1yW)(>`ACx+NnZ zIGz}4OOaxGiH(M+W)VR`%aBK|V1GpYQTvH>G5Fu00edP{ucCdeu5TWk7@^{7vpkF- ztIQqvcvEnSm^!6Vq3ChJS?S2dz#bS0mlzu?4#vI_T=}OCLrA34NgDaZ`-ffQR zqBddJXYx2K{86D;6fWYsvLD*Sx}Va3^V4uR5H|L$Tt=_2J)`u(@Ev+CYU^DnL7C;; zdC!TaiN@L1BFdmksZ`5-rBVEl15l5DS@k8DEaBc07Coe!ORXuYeT_-3aTt!hmwEruJh%BgfN7T{z#HSE2B+(;!w*9t#^LC^2 zfe?b=mX-JQIh|S1j<5o#w3PnYf9^K=4-xPKi~NDlrg}l7mJ$4pd|Sc{sCBMR`vgKe^)A9;N6ctb^ zLh(Di8`B6Gm8*&J55Ir#tW-38n3bud$0G|Oj-eL?_ajl}7t*@Tr6hWPPkV@NU7y=E z`NNZ(_UEShDfmqABPx#L4z5ZvSuK9Non;5L*+e|nD zXMg+pL;;LfLd%hDq0^LP1pHGe;RJvn_n@L@k2GsOLg$fN;_lJ?jB{w9TKr%oSp5CP z-nFaEyY4nEa7Bh1Jn7hN<}SGHve4N32$l;&<-~XSi11@$nSZc!|A_g`ekpxvXO;h< zVnv3KfL{Z6&nv0ENqCFbw+v^4KED74t*FA^dmK6qM{MX$$dlWAwsH&IV3>5K?^7Uw<_}ut3e{%A9IGo=xlx-g?_+GEQ zaSD>c+rcE; zv-cdpib>*pPBrR`~t;tVh4%n!z(J3E=hbcgdnT#W9qV z?~)PP@V(DxDwUcdX%^ka;is&%X%pST13S%*u_1nNQ)abAvt2d9a{6H~=ob83A-Q+q z^^95~CXn1A-lc^kj&@}FSc*5rEu4mIWa$ImTwJ0nyrjuWN>v}8uhQotSj3+~JtolzzVa^SF4olwo_ z{8bq}Zi52AB;vPiaEo@!OWl8gtm3GhyxGutySYw3Q|I!;>T8-5b7;b{zmZ&zf?Th^ z%4HcY^b4w@CgR`^F>2ljfoHQ!E6RZm58*PAqpHB^mR{Y`9k9dVNEa2XK4pK=s%7C1 zZ(DDz9sw&sYoyUByIXOaK4Bg84$pjJ)}JKYtrPD0)=F!2ya0VR$45-ui5fs^WQOUwLT?>}F^GzNK%segID^LSKs znRfRvG}C2f{a~u$v#Gtl@v)cG^3sosTEsx(KRMzL=ILX>9pH72wSkU&ZfAd%v(e~1 zek_5QC<~=Eg;ADD>pOn2i6JIW?xneyYN?4bnUJ1b06H&_Sv^TIkXhbqGvz8X(aaJq z;%_!(9mJwnM+x}vqL&@`xt)Tvuyy^v?{&h|;o6Ek)yi?%a*`umz_V%j`Rm>z=g-Go zi_kA1xm;qEiv-xAE&1Eq%r|8tHb9Gc!a;Rkjzn-e)D_@!vvh?`m~^7BW{EKxY*x;L zT6(JS0ipfWZpYtmyRj)p)*!-Qkt zLR@x_BODsi2fm|IPBTi%;PFFgc1Kvb?H~jhXkSg3^OLT1sn4)EINN=j(osw0`{3{B zJf^kWXl1!Dj7=y2+C14@BmOnv@^G#!7Y@B!?x!McPFdd=h$BF5?MHSnIJkLD^ig!u zH*Dr#luCJ;eN<#jfFC`_@OkY1J3tk90$D*hQV1*@zXVH2ra{lOagZDClMq~cbv}jw z)))~6efvGw%@=JU8U0DNwH)?T2I(6IoFRiboFOY`o4a092c0YtwgY9pPIiobqxshy zM}xlulhmr1sv&m1IrnEhyp7P#qI>M8t4uq}w+Spa1uhM?yPgHlER`*qx_J5jyed;W z9OC`%)ZP}j8o)JJMq$VGvWzJB-47NSU>WH^=`kpIW@ksNLfB`tA_FXdct_G>-C85$G83)$(W$TxwL9+N-Pg?CI0)uX(H zlv7Hw!%Nr*_IGpkq4AO_r|YtBNoa**Q<@EOR*~^#Nz;HBt=fBDEt488GG=PJx^e%f zwMApb!ZBJvxAIv&OpS^H4hIa60)&~23Lp7$#HdC~dwQ>RgKkh(aFlhTVj%w~IPLM~RsXu?_Eqo?@C z$lXNfa4o;Wmfi30Oht(m#&flw4(r*{rL%f-A1{i56sGd`xGiTaY)X2Cgln>o_w{uv z2`k^?La5llndh|^0#BF2fx%|Xz|rV2yw>C9-ZQ}AEHfg(;O|e&U<*4B8~gQ0W6qObepry6MS2- zK!%mQM^n=fJGDlZMsAUt^OMylJ7dfZ-3^B5rOtQiL#Hc$r7tFk4qJ9S3_tQw1RCm7 z2p(Q7JoBfq^rRZ_#N2LmfA!988UHm86MVY3yYTlOA++X)35U68B#ymyEC{5;imuJ| zU=9^)JJMtzpHYY<1#WM1VxvQxJs?^JrDw1*%G8p`-t!sTYP;gE%A{^B)T$y|ovl`? zf>m^$Fn3x%hNKNJi=wuYl%+XSrk8_-$CdhVnL1C|M}Qrxr}Q+SPK9By(-b(VA_;xdz3K2ic%;)5Qz_0Mlm8?Pl>5 zyYT6B%sZaMq!T}H0SU|{#-^kQp{1@pnE~qid{@&52skib>?i&_WcS8Z-hJZV2l3G5ra)wjF@7} zPH~`twq_!U*umh-g<@M+81EP}ZKM<} zS;66<|9G7Y0#6n^?&NmgNM5n7HZclESsdQ`OJn*xoZk#KBq*$`^sYW6)UQgQKs}pv zgU9^dIoz)}iXZ*(bBwB9UN9$=z#N}El2TigP7MFyZF{imGdlLbV}x~^>1({*m@gj; zFwas-p2ZjFtt?%vu%)1zB$IlBVuhGBdGFdXKAy@lUNy>Z7m-jizlu;>R-?qk;W1lU zHAb93roXrR2M!VoJ>~=A75Jg^o_}M5Z@dy1<-(`+zV-3VXYl^u`Uj{Lg#GdA2bFgf z0=D$w@pi-q^Ra~IvIcP~sV(eFZnMP>B>kN4fcFoN5`e)_=PJq$f(Z_L=k1O-BoS@E zFM1>J5#lRSDF2J=`av90 zUQm~~Ig+59Gj`}uC(r!?i2u+78~&8Z;r9+jM5k$cJ?*?f0`NYr-l!E&$sDo)Ij`o) zr1g!rnF&LD#K{#UXrD0Qd;Cy2OjZ1yg6H2&TkGDlF*Y%W9S;eQEP)Rt5;{)`1h`%m z$sYgC@19a1(;OmmC;e5y)(EH9ub&b)xLJX;$!n64_`h-Z@>RYU%^rIzAB>_cYbzxcFuCd6d(3DINTzJIXVR~_(^V68@@KvQq$^2B(<`3m zo(X4M)WSb=j#;k#vK3zn|BNk)w^~U_%qpDpn|Hu}`Wa;64us#?$tgwR)6=mH-))m& zyjaoQ2o^2(OBLyaUdc3<1@kCfP=0(sW6VOesis0L)6wwHRQ^3Uk+SF6T=YT?rHJIXrIA8 zNh-vnCtTW@(W|l8R(StA*B0_6;@77ikn$Qkox$5LI?phj-I|Dj(2ELIvcct*2G9ep zb7ym#5h1sXyxZ2v`Ta(XC@LcK)-0i2vfAL%ka>%GAhk8}9D4 zY8{sj)D>rXfYzld8|XM&_f2j4Xn4f@-UJ7{7v1H_y%W{7o}4(gvvY57c0YL0Gwv8P z)L#cX_$vHxxQ*5@kZQxbDtjGH!imKfAYe_4H0ju9P*3Ty{5v9*;MgY0ErK|J@mGj{ z^4ugk#R-PF3k-kX^W%~?>dqTz|97e7!l1V2#adSf_*`8eeSFM;X^fKMpFTaC!F2j` zB>PU&W-h$?n!jCY%$UJLBi5U4(G@(qySvYIQ&g%+f)iOKtQ517<*N@-+>)Hx1cM`u zMxQ+qpYs0(KJW?c^Tu>OVymyJJy$J%yG{FlF{=30@mMpTv+eY;L{CqjtLHxJYUC6| zmp$jWCc0fl|}YVi%Z>1h(?A5pqha3y-=H|d7Eom>041-O+2e_Fp3pk zZ#C8UV@8Mjbymf76@hNNw%68{57#@OW2P%jb}wR0<#zZ>tU;Q?J}|D6@pb*Ekh|A&DV zAR-dMS~j-t;+h6okFT~PLo$fEe;_95_wVmW!mpZXUZayz=BVSn(lGX-`TzvGA9pje zq#-p>Nm%zs!?Yemu(8s^EnW^CE{YO=@NlVpI;lxAOA*nbjVJ`U49lz>hucdNZfAFYffJ?Wnv^CbCFd;-r3@B)X8gIj=5$ zO-z<0tv^_Xp1VKau)$P&X4Uh{mZV6!N}TI%8gm8 zn1%v=DdTFxdMZY(2^+eRbaf*2kPerM;EEg_8mu~j1p0L62L85VUd z)|fOqi~XRbRs5`+_rt>>z)(ZZ`(z<&wqiy+kP%9{)Lcs|IyLfmP31aiCb@<)5?3Yc zTTJ2Eo5iKdb;FUPfUjac9Nc!#A`bYlA}mV!KwY_OImP90n@!$0%hf+wRr&=%gXC77a?anhvo83ei-GtyOS`SrT!zUb=7igqhq+fm(}KipjUsmBs(FmJzP!X0#|Eo8y~W;IM1xpoZ}iZ--MO& z8Tatqjce46jk`84P}q=^ZgOgYUoc3io_wpG_x(YpV}{D`@x*iWdacPMu2_jwEx*L7 zFh1_^&4i+1fi8bmJCoqk^I)1Z&13(nC|oZ(+5KTOQDUbrJ4^EZt|5bf7oXi^{8O(* zc(%VFQeE)K_}&?1Vd1J*;&$WaJYMFBc*Rus%pyF-%CsE??%A@q zDC*SX)m64MLMADj9V_U%87mcuV$|QSvu0eIh6pU>hmcG+q@7&uK_=5=XK- zn1Aw(&Ds)ifm8qEjO3Yyx`hp>EEv`kt8(Nr!knt?$>NrCl^MAzqxkVvcMVqzhBKC& z$`~(B?aehkB%Y-Bk>cVsxh9zxYmM3~) zYn3%gQtJV;{&D@fjf=SIou6~nUt{fURQ=}q*4UX|l@2r>W zReCXpC8as1n`%UDz)Me=V>PAvUR(b!MxP1de;!2s=WF+$c>hW^>o#W2-;$id5}>N0 zs-mp0yr8V8yrd|H+mCJGJRTmX^sS$t zcm%qN-wRU}G_tzcq_ngyr1XFsxpQAMj4Z&)cphON|9dqKS3|#N&Z&UgN~8H{GzVjm zL?SU6FD{}vEj7sy{?~V5)PHA+n1I@OTzB9UA4oK#U$-$0l=I^o_+qU1hjRI8t@Otn z(buB7p<5vcB6QN#A}l)}nQ$nmPgH54x8w%7!wmJDzy2jw5vKtw0^LvE1dfF`*>3>q zCyBM`qT57?U{EFAF7XF@`B@Eq!)$Y&+Vky_XFW>ovZvGPjHy<$)=b6r3&3b>R8Q;6 z%u8h}J^GAN zgq5#5$IjnGMai5G(odXz7Vz*kT~V6FrbC4{jv=+j-?;iCmC0B_+S_h+VrHUbR9N`a z=B~?3?Q1xj0dC44Dw9}EXIn+bxV9d%4-kb+oVY0uaSufYxCXJ5BD|EXur^zP46add zDe_%59_zpS(XtS=k-Tk19QAqEjDEj`Ykdqzh!zB@q^@YY0qo=BIAD2erSu+M9<%`; z)M8>9Je?BGRNuQ@EmhFAA8w3|IhV!3MqMDhXNiaQ*>K$H1_%GOwjw#W#_Ms9O@>x) z8w-zN6k^Glg*fkktK%>Vttk->u3ri5-0IVgsuv;9oK^?woKaT;ljf1gD2?Ja@TUz3 z&^QbdB@rPPw2;?sfMrR|mLfGfzQY`O)|V=tcom~BsOB5!hdVsNX8HrK0^+Jerj#gH zyPqC1@X*9bzgvl==d02mxsCZSe&RuGAecvM?}0s!>$8y_RM*nzGHsGO zE|%t^f;VKLs0`o*jU_|BBwB2#+UprRKjSDlpWa$@E68^6iHh$;oE$sbm`8On zUp4Jc|tgbW;%5pN%f-ol2~eY9$)M(BHV9G|@E}A_c#sPuwF&I&588 zR|EUX|HXa{AgyRVoQH{Q=USn)RvK*#p1Ew??$e z7NsDN*vZsy=;pm$?4*>=Qq0Z~sW}dc`=UnMfc0Mu#H5x~BiWqYIg^2%5YLwY@!CR@M3)NE{!v;7; zFnf`?`WWJt#i zzv?D_|1yRc7MM;lW-eZWG@y9Dw>gkn&>^l62oZT~RV2xp1txK&~!Cc_caa{@nVn(gM&g3Oh@b6j0R0|2ah>76CYP zyYvz+gSn2@o`4!#8p)lLU4Cyx(N487~k`;cM=|roCOEBdPF?}NRcPZ!WyJS zi8L3|z5bx2k4&3p5kKoeh6$G%mN|2F`^TP5!|cvA*rjJH;mWi110Jbk?`;Is(cH}p zA_8^5iyF(aQFzD`FZt`)V5Lyi$dOA1y3=x*2gU?u@P>ndh;o&rALh!;keH4AImz9N zs$G-VZAdT19f)y;8E_^6pm|u`il4Z%S%TyB-=LXiKn9tnNYPA5*6WT)P9Ew6TIa@v z&YJW5RO)_+&;ARET{7u`<*sawt&4oN4vm}Sp!;pX!Z_q<$?^ClmC@0gbakzrnTaP2 z10sx&5c*%xzVO_%^$2f`;{=%Y*M(~1!{9II=Fy${$Lc{2OAuhdv0Yy^T(3a?=_hX6 z=Zc1QR=mFuM`;tM-k~+Jz<|cdK4OzSe4epKYtHgq{`h;|Cu~p&}YrE5@5-7s_~sTmUU;@i2oGGkBb2f>e|_V*mzMrx?$$; z7(yw6`<%Rti}!KRpuQYmRk4>@l&G?HQwwSF*a2mqYnBn>VH-P*HC{+)rW#4`!>7|F@}S z>WXhuTYsKk&@sMMp}jxHswGjSAhzr#FEmkS?dEAUJp19mo>j}drwm_f`zoDY!UkmM z0dVG=dN9PeS;W)P7fn(C>}jd=lpq3la+&dYp1Sm;`ieQD;mVYS8Ty6kZ<0wu_z3vn z!V=1S{>-1t0h#lar`ttY8Ty*Z^b=2o5a*b;W3AYtBK_OBhzUQpH(He%scYh^auzfdgmlL*88sCKsc!;$KpEmZ_h%~$^+dGBK<@F-!Bx7AaJ^t z7DaPhEstL-;7q4*MK_@EZCeu@Te>Lw;^_sf45J-_6T~+PHE*Or!XU_-b{e*PXkYz9 zjiL%SPt3#TSFR}4$0v)ID7)?aANnvJFVb#ZGoyL}vr+9sJR$2%q%)l)ZH4EdHZvmCefB9m$D+C`1e%5+ve=593n9u37DJe;rsbN^a9&>VW|w zDB1Hx;^~4o#;Q`KH6I@+(qixcs-lAkrsuw-Q!!Bkc-SD2&zn6&r#Tyeg^bJ4`!n+i z7GVQ7)4H2jo&?fEs#{v@#Qa%e?Q-?X3nol(Zc{*HLFZByhc3Gv(-h=E9-Eyq#S(f9 z#-MZTSaLp8v+4I^>^^R$;o~pG83M%Kz%bRY(IB-^-vvh7zvVrN5)lnRKEBwVNe|LQ z4Q9%u)%ao{(MS8|feDD9luXl#?M$CZTb|}T>_~ZZln;z|&TcwST{rO?H7S={85jt} z(Udd!0#~5z|EGN{7^i{0{_YOR0bUG`{<=DS55z3U&*>Jg zbSoz*mEb=`o6}qWO{bkkB!dO`dDnAH$5$CsRkOlTQj|c`tRUccRakZphjW&cC92ry zrv|nlRx-Bcs7MljL0H`?o64ZR)AfOt+j&i6vP9hxr0`4{ott7w!yJ|5DcdwFro%_N zWht^brLZXOtnTuZ?})NCq;1;Y`EE|Hc1EzvO?faE=ucUW7NhAsKls1$(d4cA2TDIu zEf4=&SgYub^aHy{AW-%DyPNT*tv;`mf%;`U#Zh|G$wo3tyye|kqZBPw{&U9f|7g5BcIhsTja8hox9ved$l5xq03hGB)_{fiEU7>;Rl~Eg+4R;} zsR02F@=n_mgu4U5&qcKAVMtvUh)`_JTBtx+uAWZ>EV?{}{{lD-9r zX{@8EsDfVD>Z#b!PMj$9t77^E%*^6oeD732{IC8O$~m@ingF7CZ~-Oxmo&8x+fw&> zKH_3A;16tovR%&30gFw_W9m)>lFRQ_uB*mGRn|$d>9_}1#kUzw>r*P^i7olK;FF#o z@a4^NaELY4*(L@r5F5%t1NGnprAE^Sexq1_<&pZes;C%~dIMmco(@rbxaH$dc1}MB zfvzH#tcd#Z5$GFgLe@q_KMwl!-mmjbS8IQAqCzGC@4c)iN!N5YtLC`hov9me zM1x&D%~gsS-M_#M=SXw`^V3Qa-UKi2bqZ=5<@o=N#gqQOSo~Af9st=WN}pio6ciPg z6&8PTY_ADEgdkLVxpKVA!Hn!Ti`!LxEtX`BaI{%Ui+9n24q zYhvlY3hQTWe$fSe{U|THWOVE=RJ`EBx2Yf8|9e?nRu0lm`y~MP1_r*A7tp93uitne7ZX2(9%y;VPskdQG)?RrmA5 z-r5R>DVvRSDS}bT3LZ5DiGKs|%#6VSu$Z(@Dac`B2awhH3OPwJVi#&yRGR9$PGf(o|*u--D^nkHCh2Khm_YxyT<6Z+f<-hR#%Rg?o>R^WCl^iXp6u!+5Pku%UecqVS1_bQ{yvxWm zZAX*?a$0@fDFLxJ`1}Wi*cZo_Gj3^%^8h@dnn~}x`dk`#RJ(Bc6xbJy>nla}sBN>& z!FNajdyg6GP0YZP-EI|#-!L5VI*pX|Y{^t1Jn?PRHSNK^ocf0Ty9Z#z zsWARqCDyfuvpuy`si+|S>7C^pp|je=(lUVo$Prfyn^J9^!y*~VN}Rg?o_MKBp%Lks z-ZYSZx0gj0cOn}88wU|H;>=>g-NE(hL@qM$`U^%aitUbs>^&)H^XrV%J~x)QUGDZ` zQ3l*UD=CaR`xdTF7zEBaEoiP=LEw|6CMFh5Xk}B#a9_Cv@(vS`pa@5a$${QY43C%H z5C#23v9tUwe3H%h*_CA9tQZQS7fS&?)LvC*$wHZ{1J25|>>qqg(NdKeL&F60Oko3^ zufd;~y0<`~e5+c#(<_#**pLT;E({FCR{nY50H5m$r{4mRfQe067kxVMh1G zkXrb;zJ(H^pXrmNVCf&be%0a9UUCj4UyXl#Ghjdl`*{KKwGQj``AoZp{WMbOjRxm) z50o|Og)saZtbeNF5nJwh>JRC3b-2`n%p>&rUnpKnBTGo~X8wOFyUswkzF@yP(L2Fv zt7Z|sv%083ln|^Qg6N&q{y|t#Lx>VAqPM6~5_Od*2_n(kCW2L>w|C`zeP7;ux%b08 zbLY;?nRCvZ^P4Mi4mUIpYO^oHQuYQ*u=($=_mielh;xS2pT2*ohIrdNr4~Ij`1K>> z4aO=U=S5Q!@!BM>Yj27&hTPmh^}fVc%SfE0myzcTEMcv3H*|ZQHCD;EW--<lm)_Z%lk;Ey*8IBk*c4PrX{FG7 zCLq^ha**!(JCCU;4k-{SY;+{d_MT^*l=JB>Ysa$MsVMU^1WB&-hvl}ptJBdNTQfjX zp0~L*ZY3Q8^lmWc7P)gK3OtxK1Dn-mk=PkCkTCq6@h4tN?&I-`mB#exBmE{eF`wW) z@dBi7@pr%Q>#Yg1qvlM%rz~j=#pD9^DTG|;MOoWzz9lRC&#|H(F=jXkg1Mmg>M<|$ zUDumrAdp!Eh$>XqiX$+lh@N`r@mZngeFgDaxps2Aj=H=j!ciMTE4}mLo^5rJ%8q6Rk7MttE>cUS(*1ZAc6MiICrC7Vt?5GY3gV#4&oYG#W9txns6 zOHQszw2q%AP5xa;N$^yq+q$N@O;E2R+E6H8tL; zrK@Gb4^XtzbrX#QZNX@8Z9i>`EVZOZdbu@`ONt9T+rtDIJ($d5Cto{vs^4>UK?WXS zSCrtA25rEgKPFB++&1_Jr>wI(^dblXx_(2z`+8PZMjMWO=stZHBj%G$)dMzKwLnqR zHzN3e`9WQG>%jhCNA2J~OGG8I7k&-vtNhvS`jd$zY?79R?S;kI2qC>eE*+Qe*FH3q z)5??Kox2rfHSf~E)~M`Z_47&zc(s~8Luwy9Q+P7n5;w4ZS?>pV7f~hk>h^XP=LT8{hF9)>IpUS zp{g0_0wJQ5cfxVWW86qG{Rlv@%gZtSanfzzKWs2u^DmI>o#D&aX!|b{XH&fV6eO@>J_<69q%}H(;*^L2=&Mi9g$cm zLTft$bS3&p#}S7f@}ox$FQ?H*LPVf#(#d+A1kGD4Kh=fw&DsLC6M_DW(#Ta~*GtAB|WmezV@SBr)Fe3 zH?b{HPNCa{u}1`_qG6a~{|#6AH=QXy|7ccuw5*8ZpJ7t`7;y*0OcDWxx90^gwS-)% z7j<=G_5Dp*aB*-zi2M-AF^Mb%3HU0Do>`PS?=7@3$} z{?sr9!R}4}9Ryzs=!7NU=Y#uJB^CRLSv zTyoYkI6#as`nzs(mpP>^i-{5VK>8v?a#A{L75C1!-qeXokgyksWXrB^?UcH%$k_ZE z&?hY7yu;1FId4G(_UP~01Mly}Ic%f;<#~PvHq~*uSD|Z`G3GT z294Z`8dQj6w}htwbwd_DQ7Xes6Y*X;*H*$5jHNv9R%N3Tu7lp!_bK#GBgZ~su(Y}P zN2)cB?$2;(1|VtZMDNN=)PA?nBf;X?*{l4+@tZf@00LeqgkH(Hw;vW266Ohjy1 zhQ)-)t(x9BA;i+mM<4PC7DrzJE}F7sax|b$fH*t3hr^(=q)C7xjxA1KQf(2Ggx-h{ zGB~ckeYxgz9Q`;Lj(#QQ+FlRihww!_*z#n0!k2utEcV)+!n}I}p1!^t1kcoOdz`gZ z@r2DH^cjWJn#7I$S!r5=^sDAqV|zK@9g@X4dMJ~V7k-s)hx6&>cU~ec`A4+TxPXgF zBEC$g;#s`=^0Lg_BWxKYS1u~ooS~P3eg#+_HamXh_@CWwfX!bxgn4`2Otl2dpzI`5 z8FM;OqNVoi*?j$CRkerq0${a>R5bG<6-o`@cdJ&K7_Rq z_m>Jo`LtXxd&}c^M?V82KS6pLQ{M__?W;D9PqEg*b0oe`XmNM&Jt>)r2oc72CFvTo zFJI$CJ1#YF6g`X{E9j@%Z9FyURy@g@0ejaaWX7U8b6Q@La7l=b(Os{NvzypZTF^cF0r?#@(EM`f(S=mKHrFC z4in%!hIZmJ(+K!Ii-u7#{2nHrC!pZKiP{ct>1A>nLgt{=Ph3JDs~^5E^iz|XP$R)> zL!g9Sx;*=j7_jlQ5}|S=%ZGejgIdkOheTe5!dk2yC29nA%DuPizrMuuJU{O35QW;H ztH`o|7T1j332NaP4!K#s6hAR6G zJm14R&qpW2#aU)iab;l7Tz%VDFIrEV^2A*T!pRS^zVtK;su+~;re_?NwqpWgOUK@; z!5TtI&JXvGV|TQ>EHyMkydynSb4i0kAINj0>}oTsA$_h9Q+hIliEEAb8OsAq^M19X zM(fBaSj*6P2^7@5$X6%NJyt(I&4dEoTCy5kGx;q_8T~zGWz%#hO$Zq)L=bx4ugbW{ zxCnsJfk3~eTC=-d9^E6G4xPMS&%7{? zW>NVPH=YPvmze4m$nz3}PYaaz1>OP`DAp9U^F!ZxUQ?vUYNJ~_k{!u;8NpKFc^GM) zINn`TrKGG9s0n(y|Mj?;l{1_$_%73N`37KTq%a|amzp)$)5bgLoj$dKNpZk0Rf2q4 zGEOIE_Bp^EL6kI=YfWwbRjCaRs)WpWaq2RcwNH(G7TO`r+Do6&`Kv^ z7)USzD{`8u4`t&&?SE73xjP+&VQg*UA*ipq>;b6qUzxUgCJdi`o`HXCRxh(GPlFcp zs2&|Qkv%-8{pBs)*Y0)sP?sk0bpzC`18OXG3WesKs*eGX=PTe8=GedisI5gT`~&N# ztr(()KVkT>jz~5>FVl8MLRiY~EB)=zVbio-)QW~yi{^M}!utXg zOU1QtE1wtBx+pz7C!|$Wc5R8WvHGm1Hm%&Ci8%o6JF|v-*w%RPIH{u8Z}RTGyJIHL z0?|=t%7)eeTaUP*){!}!+WT9B4S`xVqS}3j75{M_E#BQvwDC>Wnc&M)&P6iVkN-PQ&CuQbGMSyNoM;+gjcA6_vp@sRaYgZ=L-3 zTp5kVUv-671zDV7us^jv%q|LDEc_yO7oZowzir;r|ITvvmLay!C z3*^d*Hb#U|KVtK97{lRWxSM;UaGbS5vJs9essEQOOiHFav&);P_V(GP1sf2Bk2ZQj zU>Xy^T_TVp8#BLyGO;;i@}QkgVuvVuzVswSpfZi@9C`cV8LKeT{vQqA81aQ2a(6-atB4+gegz%_^Y(c T?)c*j9sXl|%bel=e$)Q|4=w%| diff --git a/dom/media/test/seek-short.ogv b/dom/media/test/seek-short.ogv new file mode 100644 index 0000000000000000000000000000000000000000..a5ca6951d03092c2f7aefd3a41c36d0e0781b439 GIT binary patch literal 79921 zcmb?>1ymi&)+P|#Jy>v;;O-vWA-KD{6Py6S3GVLh?(Q1o;BE&eSeTQ0Z{GXg%&f6B zyHC~r_OAWys+QGV)qNDq%~il4!2S{1kgkf~FlnU58JyPN#lqCy$?zSh850Zz3|t5d z>=FzNd~~233`GQF{E?a-h2L5JCBL(PgRE7}+*(BTw||L7z~2dxKy9*yZf5M9AK92c zGBYv#4#ol%Q#)gO6H_Pt|7Z;So76Q){m?pTjnh~vC5`HwalrgdIkA8Qmie0zYA^|` z5QzP^pg(cR2JV$nj+~%-Wl+Y2>Li6I3CW<7b3+P58#^qqAVM6~(ME`TP9%d31oI#W z1J5zR3CT53$As*qmOu>#yW~NBN8CdXA7~Iu3KNiHfJM0-tB)O`q^gJsSxYa07K{eT zhw{#0odq#)rhx$-!as)$wvWk!5GG*D1Q%L3RuK~lTu2e+UC$*btml&Ycf?=SU;f_} z30O@ocwi9gOi#}?bAEom!`3XwOjPmTMl+mecYU`_Vx&?avE(uv$m#-x9fsA93Ayj) zo*b$gGI&n~E#bzDMiO|>!NI{yqEtZnTLIS;;I7uJ zG$rhth)J>e&qAH>9zPCr<8s`o`SYh*<(k@m&;@>%fYe9-GMKl-4YN-AVY2!GwIM3h zXlw?*n8JzLyE#+Jt4uoBGlNQc$>u%&AZ%67oY3BtD4-4aR%h&KgBi54rRADAj7`TJ z)?+G3CXr`pvif$SynYrSFDnp2x4yg3E5?v%gg(@)3Ae%z`5v0R6GPU`r6wf}aWqwD zq*UEEHn_JpcTP67&iz%i<$(j`wkayrlCi$zJBk;BF8OH4H=_=UbWvosXc{*&4WGzfzJ2Q4bJAV#p31D5NNSG>9NliGyu33l4OozhorjKI}y}$XsQ_tjd z!q1}fWq44v(h$to8wc*%j{W?-ydk!FtN-QqTCt5$!jOv1%d$9`9nQ>O^1E!<@E3MH z?35h&D<=q9Jn+$$iGm zQm-A@O;#dlZ81Zlwymz0`Thp4BhPF$i_Riq>9(|+KJ|L(YcVXw=a2G8Jhe-T6W59a@H)WT#ju^)c6w51b|R zRfW944`_jAtK$W!B3s>?Fe2YB&+UgPnZJOQCB#w6GGD)QhpE-#c|>R(Fa=xFY)Ix^ z_N%K^Bd61wZhaRv8}r_;u0HRP*NJHWk7LPZUnxu1MTe0{N>ca?^SFrUom7FvStJ1BpkFD^ucdp)~28%;NZ07 zs=Evw$RfL(D(VX9HQRy(Ohag60HR>6F-WKM4IOYQ97}R!(+R^CS+iWeuC&pb(BUAL zg7Fs*Ua@>ZZ)!6qL;=+1)YZ9n zs?zu{ljB=`FId?ZV_4_86=aIS`bAfxFt!NDDX~{hdDl4Wpgj*1qu2{ITP?KYkac+L zPdp*h{Jc>}?E(9Q&S)?gyQVtHn*3%!P^>F#zu56PvUZ;~1O0uW0ms6aS?aEnw-|M+ zzt^MWDIJ;n((YJdq+i^00j#>Z1j1-4+hjmf3*b!&dA=||YQUVtW$*y8mTj`BLHjHs zhvtL3QA5Goi^vY;FL=qCG^GW|GcLjL?am?k$BG(Katd3H+K2s9D=cLl)6D>!-#aFi zM$7n9(DgJFCuhBB(1dS_wt$SBf-SYFb=EtH3-$4m*Yy2;jMuIs{}P=)6wc<8pMi>E zqq~2snI)^O={RiMgQ3>@P6FSS^&=yblzEQTv3$tn{Cznwm~8dW3TtbT9)b~QEm;Z~ z17-1$RNbqZpMfRoP~c4!Y37k|$>Z)pj!&*VAXAc=rrdxqZg6aDnv=v&FD?kJsV;$S znlAiki@qYVM0EkJOGgh^cAi^ebvHO#eHQ!xD0%bHBe73*{Hpe8a|BkJ_v_A}p_AIK z?3$G!EB%+|oDD`{>$mpZzOi1~?IZ?Pjzw04!~DcdRI(5?3hGI~9U3@UB>Z}O$UIZ` zRa4RDhUt9-^UHg@h*BX5`U=NxlPa+>DvrgsetIo4U2BA=+wi^EuY_7fIiZJw2`T7s zpv$+S)ff=s9fFqEeTdu%qhCx8y_yOd;^%GOMH+vP!)-D3i_g1@=8kah(gUr*HR!yz6U;!b!aMDP<7S|uQd%2b` zy?+hf8Q~Dh{S9NUltcHuSwdo<+wzK-KmuCs*mu&{w^i?Ar@Plu%)tSktu6 z4(g6`fw{Tar%h5vDT!RV%;6$ulm_i&!9;D}#cbsfeZ{`@@e7$lLesBU5*|Tm9NBTK zgVd&_6H*l=sXd`5FJ8y#T-~@HPVDS&wU()@2$PL%dIh1m@Koh=h05R^F<_4@&&68o zv%iM8SjY5qTa*?|V3pz_^G-kO$>uqCWxpEL*p_D@)>>x$dPFai{$HFu|Nn8K`g`vC zfj>kM?_bl@{~o~5L(t8qGhfi_XtX{$UmOAkBO~7nax^u0Ha0eTUq7s~1KT&7n1kWr8+^=UM%k5kZS+ zG36k9Iji_UG-Pnv1%hvS#L8tGnHN^4xo1ScIQcro-GHw;C?fHi6MMtV9YumNi z24Dywq8Y*-X~VH2*)zN43nor`HIkX-)S04D=C@AYiI7>kJPk-YvS3?Vedmj=L*MDP z=d7j00SIp<@7(tC&sNLkUZ)j!OYlqWyw-+kfRqo@U2o3MOtec&jn-}ke0SCwSykf@ zghzHKOL&bd8*Qi1je(6-Q>#DBn$2LGf!*uBCg2+zE42VADEwNBhvjuWVQu(rjiHrp z?p1BQl?Ij8^-WE46Mn{=6G_N&SLV$+Su;!E6+v(xPd%;XitQI-wB_xab)4jLcm|NBq7L=>Ro8 z!-dNd}!qNfSP1i>P*J1Ba`17w6upJa@l&aZ~-axWMir{bgDqSPc$-m=3x-=&^kQ* zp$H*$1$dUY2uw&11O~o6+HSYd1Dtg`?=QwZvU6vV3}6Q9v9}4~VSG3*@K`Zm*To6r z8S(4SepyevPhnUd1)9h_z*6D&ET;f1ROT|R<2XsH==F>{h&XeOcpo3Vc+C81)d7YOkg%u&hveJ2uvFYs+i;E$0NWdXbQIo~<%UiKl-XfohU}*($J>MaEpfo9rO*<0Vsy4tgIY(kqo?e zBE^)ZK!ew1_?Rr?3mq6LGV+PGjPS3_z8{kUf)HcF#o}e(5z{iJAYwsOF5#8oxN0*Q zu08KUzoS48Vv?o^g(dDO;)I3{dI$5+>#uwCj@Sfos5daD*TJ9?zZ>OkSI7bhWeeB5 zu2T&g0j&rTJzS|EPkpOr#=wG!4F?YlTJ$#~3>qN_syA?}*8vRgoiT_4z(&AQ{Y)hQlxhI zJ1ljQMVsDlv)yk^X(;!hIJEDw&rraR=Aqv~@Xl@M)YceLGh^a>k?$F*lt7ed`eB9- zl}?I-_*E?G`5-OIvNB+c561uY-N)cUYbU8XR{gWFw&>No=Ed_0Ws`EMn*@(l7c zS0wnZz94~T%+(hp0trNNfSk1!Egp^QvaX*v1Qh5AU%^BtRE>kRySuydA4C6V5B~ot zjfck-Hj5=u4VyGJOomoIYN1pJ$ktZx42zjei54=6D3W}MC^0sRMLb_y=!jaVoE>A&U%^#luw`@6#m%UM6|D@kAZ(xX z2;v8wWYz>gyWP669iSuJ7wA3tc$k`+<%vLQgfqlK%ILjuVwIY@Sgu~0@i~PkML#2l zQd26+IU{jjSy^_`t$j^KMjfZY(9SL*M54${+2@L&^ivR#{+m?>yVFW#1CqvU*}7%- z;YADt^ejGho())}vnM20fMF0cBF@6rEJzh0$|B(~nOz0Z1mG}{5txrW+4sApHfg-F zYvy)Pf|UscEl(Wj8f&4*UT6Ozr5 zKTD)sOc8t|%g4g~mcivD51sPyKR481KF48fz;25G;RFTeRsOM@zpCV{^K^0cHQhji zCHN(>56&1`5yD7*ao};_BLkDZE_EO3l^s{p3yv!jZy8a!;;P%_qg|oebZ+MI zopOHLI%>#^20WR1b;MWyW;Y;`t5zlY*Rt*}srC$uv;ioU;9OB$F>dE;9ejLzSZZot z1O){lP(uTRauhl30PX$#{k>{x8aFpLmn5(jnD9{V{%=BoC{SuIFCZTH)^H3FgN?1N znPQG2H75P1Jtx6d787br_;;jeu-_8lp&)+uNESD;=ac%E9}0p5^{W^t;I9@*vbbxL z5fBqLScC)=Sf0MNwrt!RgV(;yJ=I8yC0(iXxkA0(dqbtMsmVEGr&P5}jSeef(7Y4a z1QO>AHQMjegGTim&(_xFz|C&I*XJw65>?vw2qAq(fYsz;8n`BF5kCKDDbr(j)8h`S zFnbXrS^g+%`^4(V>H~UX9o5{=7VkA7u$?ED$k2i%SC|_gf3My=SG_qjVAXP*$L6@mwD6Q)97P(KKFUNoX!|O1m%W$7|a*& z0d)$(|0wK8@x0}Kn;`GDMS~W@|4k5fq){sO%|4NcDu{I;Vpy}(-}+y>2<)ht`$# zU^RBD4X^?!phn;tyC$vA8mErlHF(K6r;m&C!yXj9@kEHkEo)U$tUO!|o z8f$G0vv%G}l?$c6)2f10H)!SQ`>^SGEUlahf+WA60$&d;g0)jSu4A0xl@Annl&^Mv zLfmado0;a-e|orCyu0P_JA`Y<_J)1iDQ^oMNS2Jxk+K_X$3D}pwd*Sgge6{Ze0xD~ zWB4(jama@l=#Qy%vsormR`FK;<=Cf%NlHpgOXu6F^|#80P2YV?C2_3JU&9==7E3C> zu(A@1i3xvQ_AWpb#;<{RpVhoXmGu8ap)@o{FQY^K)ekD8EZqR9Mq>>!r9*L z{p;eQX`3r^|9PvZ(q3jvB72JUQ%kAno}rN{WtGq2UUs-W>4tbmq$ia2$ido3bDTYK zxhM8D!=7nJh=a8%rt=7CgM*zZ>C?uyDb&PdPppo$?lIkQq(KnncbN8wA&B#L3RK4T zk%K$;y#F-(322V}%m1`C()3Sg0Et7rE~ozXNy^0}jG2kSl5BfLz*9IWWyc(XkL z-RpDZg|AlXipWdKARlyh1hi<{=yV>ZIX$vbgX5`J3cjsp02{sIR+175FANGHF70y}O^YdU$&MH7acp0z&HHw0A34 zl(hhjl~rr0>!DL?sh*XUmA%p$=)G8J4TAsGO~rlskDJB$d9h;Zz=V~RNzCp-Iq{Hh zq8AOny;WKnbj?hFP+}qX)WtFI01P!46*MjT`@oD&e>MUp29 z-*RR#89F#r%m|9I#@J$|_5C}bc;$O)sSwWWdg#xDZ$3vnOU$EF_mZ6YHh;0d>${tP zvI#AaJAo84tR(YpDP-f}; zOF?0YE2*ksh|RJ|v&1ESEBIIQUxp}%Mf)GDzub6#rBhV{aoOZB#PVryr4`xWfAjyl zKK}72{VVY>HI+FGLBobJLzPqZcF|UwE0cVWa~x71#Tv`c0gL(b6<8NBRjfV^-YM zi3u@t+##F4jFgE!X(j>ipQk#PoT>iFjTnAfMm41Y2K_d9M@@<@A7F%Eu`Az;=eQ4^ zF>z{>KfnQ2F5~<$D%*1~FuShsqood_div$MLldr+c01z}TSvo1kqy$=$}VueW?0M- zWK962&B*uL&6X8~M2y|}c`~+fh)X`9V8@NNp2h*@qh3&qqZMtrGKb0HI$$)J0zTe% zWDYS}_qpZbiZ>I#<`X>6d~iYJuM;xIzKaK>m58=Fw{+SCZ~O8t@7SO2NE&j8_6nkR z#8C#!bg&$(_B`l!w*MC0*o&vrZj@yhcL>GA2f~ZpA>wYnAaEn47>_OFJptC&OHS|l z)C5lV{}3&A_x5IYZ%}D3uWCCfD+^lIT2Aufj9r)ZFl^1XY4p@JD{CwN5xO3CU|F(0 zF*c_XRV5etBgsfMdr?`+i#$2+uS##NO^SR5007-X-rS|gV<7=Epg%vfw}F8n0l*O7 zXL6kow7EvPP3&Z4>(2(0azk0vC*ei?O#jF_g_aip&2ti<2Py(3qQz)Xf~^|!j*_WEB`2Gay`|t=K*kCJe6!wJkA8@ zG#+yyRNC=>oZxIq&hW>8@A)>ER*FU(T1b1m1P6UxNObuIq9t05FmhWTZ9-K1*sVG|AqPq%pT0dO8QzS6#TTPW-d8(#SQn zsHufL@nSD3HYcCU-g_c-)U6QR>1WODjw5-&Xj&dsh|wON*u>~}t-V5(--@Y=Fu@Dx=Qz`B`JGdg&s6*~FqYf(5 zA-h9Cm}@GW6dQfYYoI;WS|u3!?i|Nz%Uf_Up*wF#c*V8G`fZ#{ukB|Sru1qh;gA zv^-;Z=nX=aw%p*>@)9J;YS7m|GrhHDZR|a5OI7?+3mbU~;T<@j@5N4C3V37SC`!f6 zt*L0<3$?Y9Rs^M4(UAvZQB>$hnL>iuP$SYPCn(zWF8v}0gImU|k!~vM^RiKIivK15 zwH?bBT^-JBk4okgszg(FH2Mf+|I9CTf$%I4a)3l*>m&I(0_WnK-VA8{0D&EpZ+6If56rsu=xjU z{{drvz``Fe{|D^;0YCl#z#q`@2mEW4J%2o>f55*IF8=YX{sDb|z`ru@{PAr50Sj*6 z<|@4eWF|HzE-&E8e4T^lz61LaS&lk+;)|{Z$wVfl;h4ptbRlHPu=gn>%>@Jm`|r0P zj9Qo<2XJ1b@8$(;oHLAXzA`^&x=g2I#Y_r>0QUJhhQJ5cD~&2aQL@QBA|AYt>Y-6xHPRF@6Uu%m*!MiMMEOSHZ81W5tjN ze`OgoK2uYJQo>UEROOMYZq(tj#ceo(f^X72m_cFW?9b2&AQY-^DA=-)0`V&bv6|G#pl@M_(WvnJH zha4PqoQmq2Gv}nXfw?e}l%30uI@kj%d?p3==H_nUbJWHKkIP^ZLO$Z*V6vG|Vg%4? zayqd99x;@d8q*pUN{J53#7drTbhs2EK3;?zcFDoXUnWW412M76Y^BUjI#!A}8n%$8 z7lGU)nX)4$5FE7>KDHD-5Y`0`2~wnh;R^N^^#m1Zk0HpU0+ST$L&zu95Fv6}=K*G3 zM7>~8r4#Z=%jdUO(oh+@LmX3m^k7=s$c>nup&yf>Z?(Q=5K(auQNHSsy9e}I8R?LF zL<@8T5+q{?`9#(k`qmk`J3G67mz#_&P&@QZ#vX%I{%{N-i5>Q~9rojt!|#{Po>NZP zxmMT(v%AAFsLcot%?Lh+T$e}*lH5}w3;z*693z?m>fjc1pj)&fNY;Zl5Hmy%!={E# zclR=&kdQ>)=@BAAhZZ?Gl3_HB9v#}=p1Yy5k&8%jdkTYnl{@$F5Fy`1WDrS1ya~w7 zEkRw#MSct^z`3GIfqEmGP7aI8-h7;L+}_^a%{Y7~Dk|y=s})i$;M2k9d9x4l?e_N% zS9ABw%xr%Cy`R^YSBK;MYpcqXyc^%L;?ES*zGephkW0wd^Lfb9lH|3?5_8*> zUsg`ZyV@al@t*R$vB`*0NU8RAizc~&V~P*v-DEy0xb^rM6Hq&J3OX`;poM+4FHnDj zkdTlc1+>6FB$3gnihZ9~eZ#n*rA=WfYgiQ|9nUDxh(5|bdHyU<^K6`SJG?asE(-bT8up=*V1$Ngm#WBQ z2(RQi$rPhbpCeZu8p%x06*d;$M4N281;2mjt_*c7GuRT~;YLY5W`t=KSPhC2zWTXK z5!&(*A#ke&y}f<8=n$-j#?e_@8%)R3&{(7N?QQ^JF(f1c#|$&rXpdFpm+uF?x7Ote zrnwQb?)#@^id)B@o;bGyFTQ@hIFE)%XJDG<1TfZqEa|OGxaY^!!)7auuLjXUFcW;+ zj|Mxpz@#jJO~K`Qp!vph=lIG){hjVZ)~SjLfb5R_1JC8Bx5Y)b^UV+Ki@1{-x-Q2{ z`r)C1T#voCQfUKw6Nt^(nH)Apqh8O_C@PUuDs-1MI&yc%UwfWCA5BOoujA|qG3|r4 zUOU?a5&4?*efcBTL^-tsm{`xI3FVOk4>*3o?gD@ZDZe^i^p{K3^D4!)A{w!*XcyMv zR1A6LG-Z+kXU#h`04MIx1_s_n$61Fd#n|b0M4AS(e8O$tL4j%|7m zhlbKt>dhu?NhV;iwi2lWSx@808 zXUx}Z-K{L2dp785xteM+pHo2|9GnyOCxuFW+;aT*ux#8q0LJYYs2HAM^{f1U~Eza|sqE~rM z)HEVq-Tcvi0qKYLeEUzJGb0DuK#+p``rpfj;U2K`lOtdOgJhF1sp^}7mnPqIpaGdA7t{;a9NDsGX zHEkE*i3F$s1=)f=CDYF#5zmnrPEpAuS)vxj33wKGfZS|B(^<3twivbqshjCORUZM0 zZ9K`KPZ)Ggmc}F1n(#Ik zw0eZIjnGLbwbSu(2YsG(=HhvZ;?HRd3dTs`V~P;eR1Nw+-cPW2Ln5J#KPJ`_4`Ck2T@k769JMykbuFLmBN;klu%O>L#fF$ zjMF#v_V!-ypEymT*AONj8(&LtTCCp6X%s%`7d~l{$4j49wNlN!GR}>XSG7Gc1u!&Q zUP<$wOMjwx0mwBqm6pslE+BO+%vw>;i?U&tlXcRRr_ZX?+gYxbbRby)m57}aEQ=>g z6$?T`7Y_L$U`v%|xpghDatu86Bn$ccl8+q}b%~^JyJbMX-{bp@TBxb1Ffi04BU&(? zVwnWKA4_=P5WU@2OUDL)1f)T~f1@O5XqdT9y15(!17EtiP8y$ltLAZ63ng2%8rmRy zQ_9RH8rlz=YqYd--_`ibx^4_auw**m_6g)~n5iYv4Pc5|GVwT{qKGUd1&5g$1H48@>C8$rzF}NZY z&&6q2*}~F>c)PNL+wNG=iC$zT!-y%(+%X;@#6wrPtu886TaM;Jc7>oAuG=#v*!86w zWtR%j2C6U56fy$w8A`R@kA0CVe7ER#e#9-ON36U`Wf05$_=C5-3_!%al>gnSCgU)% zWzEw^*>+53@l5rHeYzsJrn&IOf}o?jTS*DC-1C?5^3t;EeHvcd8;y))PF)9E)2d~? z<@WbqbRWx3s(`uf!d|*x%1+2y(*aupnhwKVGvHk#qz~Rlg4}%Kg17iw=Lg(`?oS`A zin)PwD^R;zy7R!Zpl@FV-#`L-H3U&rfnQ!{H~1(%21b!2YhqY7w~-cK_7j)W)d250 zi)|dA%%cb)_{~!1LSFv)S!oT`tBom$_-*lmhvrbQvsmOY(N_KmI_60~F28%8bfk_x z5>ypoF_nhM(warRqIsDYLD+p<2?|n)b+E(ZQY^r$hkM$bXYZbh&AH zE(|FAcrL?f(OLTXv55m=%}e@N!|w4~#ZuTOSxp6+NE+$u2wj-qWItTZq>8;te))QMnCO65T3}JLvluJGWBwbNJl4oXxIzgf689 ze3f;TeRh1FAj6hjHI<>kPigPxSs7RH6-yX>H^y}R_Sb8$&VEpHqI8T~jL9V%D4#k+ zJq2{n%sVA>8`r*NIq6X=;{zO^e(+CyAZRBh&u!3iG*pC?(|)h2~P&jppQwDZ;UH%eC(dT6ryCON2=Q6&YOfGSq%gKH$_Dt>Eop;C33co$nOcq6pKh11CWGrhfNjR+5 zmuy*Ooo4hzEAyQ4{`RT>{B*UQ>71Jw)-UFxik7LFz+zu4AI4_Bw07gJ(sHy|Qg&Ww z>kRZ+Ka|KB*IHxic$Pe|F6X|YJ0@a{vNhG4-po1B#Y+8f_QOVr!>_U{uAGxkUXbT} zz_xRkJ1weo!m@aNxW3|eUz&O4khKuf9U!%OArQIf?Ut?JwA4_aH?b@gos=C}uk9t( z%v(^z%T-ym^laH^kJ-9LxCTgHwBt+&v-TRCFwft!tQvVF2yN%gtXgTRH43kHld^lZ z*6g;eH0#*7KPI%Fb}fi*u(Q!hO+GMbGWOWmOIhzE*qOAp9nHGWyjDv|?5)nXpbtAExuUu~urZ8FPDcrf8xZOx(<9p33&D*(i&&X--F0*F8qov!_#d&harqNKel+B;bUOF`` zJGXki=GCnbU8im{$~a`tRu{m}$Er2iRldS@%zN&u2dssjqe*(T2Jp)s57oOBvHGrR zuRh3GTgrP{PRz4Yb(_pLc85D#Okb>FdwOXNcfW6waZdNLgzoBQyM5;8KbiEainR4e zIxHgSOPP*T*a+_g_G()e&7H5RXEo1jFWZi8)-73lVh6UgxygkTG+Ns|R5D`dQKikf zBbm+JN@X3H+q=(i>c`kOm$28&Xw4b_APHJ%AY`CG2wdPS`6$N}`g1&fZ^oK9=kX(% z4Y%718o`wLRxs|5jXohl5xL%7$|2C=hZWJQLw94`qkoPev0Hhbbl~#+JW+sxq*8fix0L3y`+V{0W5C zs^<}ZxdQW}o9WJsGkL z{;W8)yT5+~*CU+lAaXN`9cE6981H$82ay)J#S?k*X@ej}65ZosM)ELun4sF!(%m=TnliO+7gtI*>~82%YAMsg|iX+=;n#Ybz>$<|me=yrdm zp{D*P@_8@K;|$6Mmpv~BOTgGCfjQ4T@evm2cCIWo514ONBPj%p3BTTMG*v<+Y>w;) z+WE@21aVM4uSZZ}Tf`GANo7Q^w14B#z$$?;GJ1%t*3Q zYTcHU4KJ4GS~-*-v!-%{WBT};vR*Ido-rWQkqkB-EGZA7>*ikbM5-?_IrGxhdei0s zp+z#Y4zGtlhwMItzLf)0Qi<)mH-L2TcBolz=6BWr@oY1ejEBKEHcCKb6CmfuYxMO> zbi6#E*Oy>_lhG6Q7|)H~kZ>nfhEKLv*)WhTPC$=1WI`dK(|ZKf;(-OlzT24{pPY3= z*6RBKQqZz*UcxK{74cP~e(}Xst=eMs&%=|nvqc%Wc6r2JfqKK4PXQr`o$%6?KU2B9gTna3A{ zDR)|7{@6AFuqEw!t_Tn7CRuPkosXW8>3T&mqJcm)|Kc`k%ss3r9S=-C^8lXkEt|6~ z*9H}TdI|L9M+oRvXf4Hg0MDtZncHGK|F3Vy4Ph}W-_dekF^nIVVm7np9aqgKX+knqc}B_ zZO6NwIGqp3ej?Bca!M#TcqSGUs@Ag87(ZmF)gOT0_+k>spQTWO_Z{#~&{J60eLZU# zI;w~RnYbY6`hH8?$>0~tSXyUvrlf*Eo(MIG2)}{#;HDL1DHN4 zKRAuObdvGo0xpfB^BPxB%6W^Rw{XM*SM~kZQMaec!$!Ba_-UXApJYTBlV5)p%uZ)! zdGeQD>QCC!;ce|SQ^?%~oQ+wlaf zxNX)HUAWov1OWCI8Nb4O^i4U?d5)G?vkqeo@)SMt&H$L}teHCd%{*|nD;iUcyRE0! zYwSNuE8^d@JI|PnjZg0m4?Or!yfqFy`sHOFhU*AgI6zM~3pj_B9UP%5WR4CQZJrCT zBDH5+z6bz+(Z>k-{n8&^kMX<&wnX;>0l}YpI5lh!>tk!b82b&{09&|&S}!D;M4@^- zHU)PPr&^6W4O$J{6Je?j9rS#YSARg?b>3~%>Y~W%o4vQ0pI@EE8zgkI$GaP4j`Vb| z3MZWY0rVPV%F@$w%ay+ZY9DjYPj*VQ6|Fq&dQ^WJw)>b6XcPWgSDDECq;rd2-Xmj7~a_&fU&6ep^Y<40CJOIxlBPrq~fw%K)?+ zX{N1)Z+f47YyEa0aPD%EIjJv@vbi!e&+_g zOFucfqR4m4YK{C^Z?$%u^?Y6x-|A=fq@U)?cD8EskZdpGtscL6UaswZw6v6>~*{a4aob>C|%8Aqc+VbRS-n6tS-WN5yQL2X1y-3;f@1zaYbA?@Y zokzi4JWsas)`w$n*2nu#i=C~BN}i=Y6?)xuQndD$m%xq4QPYCuuIKp2gL}Sb+609n z`=P?;M&PJD#hH@Zy(TYZ^P1jSS$Eq5z*xbz*km%dAz6OF5onq7Y)Nm;H(Y#rxp5Tk zQjbOz6`T23r_s&1+cE82aIoA?tj3srCD?8Ioi4nHBeU{nRt5Q8z5U!1R(Y&GdtN%> z($c=#h;3n=pme9@=~B6cwJA8P-VmdPf$2fHRE}_MP5*M_(zQ6TVJ`jLI-h9oLvJMs z<795-80TJOf=?%kU+?uzOqYC#yQ=@cXEQhi-;hP1b)LbHFx`pzYQh}m#2EP*_fZ{i zi>vr`%m+??8S|!tQwJpAWY@>(Oj@2mPJfl1BMZc-=JLJo4iB#4U1#PveTo~`+*Yvk<=HSHPr*mCb$PtW9LcNEG8Xks6!thi>)iDj*hIa~7(z4Dw*;^E$ zV0Ra303KKN{_#}!(NuUI`+KkgN9yzK#B6OZYP=v<*A*d+Q~9{e9CPAiNg>XzCExRG zn|iw*6C%~P+V&_1y0FR^`pDPN=t-*3t_a~jvO@h}sl=nKWxT3ZQjXs`FS~!>SA2-=%xY^)HYz6~PJM~& zZI^st-Q~mI9Cn|Tf=q}J%NzXg_M^bg_sWS9?W8X|8_pw=R6}6-bkZFyLAS-^6T6k( zH&pS8Fm+`csoe0Kpfnq{IdZN$h0PICZ%%K)TC91OtuT4v%^{2Fv*DPaIcSfQ=$EhT z0^X9xOtE#LjPi~uaXPhx7YF7|2-rS;8Uo1`1>T`&3x^qxmg72ee56h zfV#UY=Od~z6OwMZgz9B!buZ`nbM`M=BUJX~lmH`c+4l6!(^gigY#Ld~E^C13?t)~n zJ>qxCtqqxEy{yRxY@L3KU_-`?aQK03Do#rR3@Q@^xa=eoha)c^&m`XUW?u+|Te4he zYRVugk26K*4#5LapVw2{m78tem)Lg~i^3F~8Z$B!@l&~bCG7Tqg>0(zU8Bst{J97j1-PB|`S z+p`05m^tJ)wsP2rZ5W%`@ag;g<^B2#t{<-Jhx_C9xZiKr+V!E6#19JcqTQDA5s4F`xlb~yb&0%a zI_vp-rm+e{L<~==)Krh5{MJ172yNXG8ty7~1tR^az~= zDl2`e=(oG32#Z@62)~YqiY{q&3N-Of>PV#Zll9Tq=qBm?kK8$-|9I`hv$LyM2L>}V zHoSx_tQS)vnbXv5tB;VApqV6!MiEYTh0!sFYoO=xZl_7Mw|xYKI@fURQ6C>03x-3X z3FXBWD+~F?n!92{3ygJve{VDgu|N%~#*pPBQvfYOsoV_Mf3j!}-2Fh(C9T7uq^s!! zzA05WoFuloWV%N(jL64{WF4lKsLKf`eogqgy*R@_(GLpJdo~E$j{EZApXU;8|8;o9 zGaBYfDPnF1(|r9ng}SKp{z1}w+$;;!uc^au8ws{*2sbsA&<`TlkcyU@3((^M+EuwF zKqu{o9yQAy$GS!~6Nssb2v~R}ei$HOwVZ;l11%|BO06!@X*d_GkU4BFW7mlql`1OK zF8!{bR+ZNiw;i$^<{)O>pdR*Mb5EXmvS>oPK{JqcHX0RD8{io%h`vj-LfoZ-JvU2C-aH@ zo^ZD&wS^76dKUyS3U;f`&)LF7Hbi5Ii1RHU&vp`xMz(^s_wX?Y^ai9yo6gz^QXeh) zwHR5!{#Veg!#fP>x3H<;aX-&|8*P|x$c&BRnV!z>W;dcPY-#S-*P;$%n&zt&wH9<& zp-x{Uaka_v4>~Z!@%>En7aGG&3|Ti22wLwPnZ@Q8kB%__=UXpzsrb9lqKP6p_Zoa7qM2s%Qt#j8_?Hfb4aLYsvw2Kn*p{d%Wr|%1Xs9 zY&dESugaugh+C#KFkpPC1lSOupTMaZr)YFhwx&YyYVz?FdZy&pM|fr#9?jZ6sVT!u@-=3(Gpi*01$&a!l80+)_aQLmi-#T=hHve2Q7OK50s z+2gRMualtkB@%)hXbQ@}ZsDY7dcLk>5h~264jamXwC$U_v~dLNZJ5-cV&y!TSeJ?c z$2z*dCAGFS&p6Ip2Ky$*PN|qq@q#CU;^Ot{R7dJO{z&Ol9tX3Vj;PEePFT6&(QlF( zQz5P@j~i0CEh}~R)cyqhN>;dzU5G{1(N^z~e<+#`AOChoWf#CN6>vT%F6Bqobq5zO zadDX&UC@h(li;5q@$e8gB|q=GM}&gYH$3m&{=d{BMwa3`(H#H#@J&(4@9qLW4|ts2 zY%AEmcbM<|)Van3-epsKe0ZD4Ki_L6DY6B9mNCtNYQ_I4#Gjqdv42vJ{V)3RqTb^o z4LR8xOJU4P$GbmI^D19n^+e?!@-g0eWF}#*CN$5~j$X-;?H5x-bmL+DuDtR1$fY3? z_&E`6iSPao^g-;+{;;k;kGn)1el|XiZv!%{dpG|*Gm9%w9~>YYAFn8rt`?tI`E-q} z9(`l=gB(}gl)8cRXj!ek5%bHES`7;uXIYhN~mt zW+(c;ejoC!^NZ6ZtPPD%hpaV}u0R7Cs%7*hCjMfLqaOt+T3_4#PokONurC%U?WG;L zF%(D3kKEzddWdX_lJQZuWzOR~G?E3t4zH6*nWyeQ2%b;{av1$JvlFK^N>CnJOA zWXA42`AQ1CD{M!;e~~}wM~ZBd8{OY<|Mp|@rCw>Y490&wzSd?|OX~h}Rny9eDMNhH zPi^n^8Iy~n-%h97!ZO_n@VI+tQ$ru{0-K|*QMm=xHiH*Jn*u0T`l6;(Xs5Z(fy<3- zJ|}##%1e9cWg)5oj!10wVd2LT20V;p>`(Nm&oR#cP^8n^4k5f!4dU3`(Uyy39&9M( zu+F6YAt6fgxpiJVnshCteCJ^1%2e8oqfzTibn`%(M#OPh2o<-T>FR%?4P?A)Hr#;Q z-OIAA&5}(T{++nzY}sCVpKNE?9rn5q-=9N1X1_ZxXQ95Hl>Ppgf5y9_pA}<;HA(7M z`@muB2RB+^zO-9mlfrdcE7m#v&()%Dr>%m>f!ztGVydNC7d-X1vl zquccLw|nkQ1&3S5E(dC_Dw>M(rmQZfJa#?jTl7Pd@1L&0;*el-IQnSxwCk9?$6Fh+ z)ce}3(}x82takxge40q^r?-<;C)q+5`h3QGWZ4UW-`o>-_tQi}We8Uh&@RH8*9CG} zjG;%Fa+(M|DLy9_{B?pN6`$E7eXJL)9|_!hVIwGp53l}E)PrNHo$R3;;^OF1eU6xHDqVZ?au*K_b2z+<_7s6^O2B25IFw?1-AuhYGb_# zg6lTcT2a*m#2_5PRUSe{{|e1J8QQsX+%{c?p(mQa1>bbFDt)AA8TZO)Wk${pRGw(zk&eskde2= z7$bAUksn9R;-W!%t^TUMC3D4l`++zQuK97FeVVLtn9ct65nS1DuNRp&%SV*cM*^>= z4u0$sfJzLoAqCrbxa4zz7kIve!?OHW4Yy4RYz%>|&6iTvc;HLIQQy+V_W6mm-+L+< znOTprG3)++Af5YP&3q5gl{veFw-8b?xp$k^wS1pr{X`hDy|h@<#fg_JO@YaYD54hH zRS&N3LZG;WF9Df1mIdjFi#TP7bUN`ui_Bp7 zKK83*dn~3ud`*4;FeWT%eu48{|L2& z(Y`NaHnR_Gk$R-&P))~;%eorKQ1Why+3tFj#-Dve36A>cfPW_;=?MgyhU@j|FOm8! zLA5)%o?wj9Oyv&y6AX&kaZ6PS(r+ac2I74-r!Q1{813-`-8k#Hq1DUt! zp1{l$#}*84Vmk&2jwSvD3(Td=)>px*_cFLq#MMxr)5w6RHpE^0P;c$T%~7f2F(9hX zmS&w&!_R45H0>`rJt9xFVAiqf2SuC~#Vt}2eA7;!|5Ceanm?HHD$EOKHfZ{IMP#Qy zd%C|T8g1_0fjiq8d~0p0(8!K_FBh?KZ^X+CAdUZ&qKd*e(z=7MmRwz7|!p!%KS=_mdFj}2qX&`Yc*TE)JgnPNc(-V@S%6pMr2q9z;4ulN9HiYG zj0H7qXjTCz-*Q_wr^3SJH(JnJQ5==-&W`>*eRQe4xNqWjwV$a_!xh@qEeffn6Vct) zSm*0s=le0FSMFC@d@I`F-_;_Z9&a8u@zF;kvrE2Z3p{0Nqga7t!o6~CnN70H4&4&2 z+nSI_&I;)t@E2c16#=&k?M)l0NK=JZ;K-DY+3?rtL1rtIe7m`vE`a#05Sq-a0E$hJ z2;Uif=os&=&%jx(A2~kOITzdgVn?@eE#&dlta1MC)>B}oG3Su3Zif$U=l(CQNQ?x^ zCQ-0YPe^3OMIX|9%C|igSN7wkW;egF#@vrXcPzexPV}BNNrE2suCh2jen36YW$J|4 zkzSbmOl{e9ayj*hm~y6>{qybnFA=!&SDhB`ZaM}izCLKKI<=zJJYa+c?JG&Kr&*PpE3h-P`rz%F1wA6nw{Z1A8vYy6D2RqqzyD z^DmKR?{Y_H>B%7=@u;TWp46c=Yv3nOOW-l#OUrJ^QSLIUzlTN0D~5P{ycWaJKkO6c zklC=y-GCdJy#*yekJ27t#B4({9S^1NV;|(Kq~m1nrDrcnFUPCu;K>TflFSTbPC+GFbXrwmZ@1s@S3}dT%EX_B z)zGDweMdg&4YiD13OXV^cQ?uTYjsP_t`Ba)RWv?)wOX6~`H@#M)tU`S{o1jcoJk5z zx-w^-wrYPs>uzVKN9#(U*@!Y%*5X_TN;E6K*7;;(dF0F0j9upSfw-lX*2yKsiLAE; z9AZ<--C|n-HZUIl_Of2ovqF2{o^@{OT9EB7%P;VxbWpqX?H9@QuBE4~pL@#;U01#& z{n?UFH6U1FIBT8oCh8iS+|H=)I6IqZKc9aKKXBcn!>;?fD+~P4lppbxIet6F6#4SO z$a@j<{AHm)Ro}Rtxo+1779=0-O?X7<(e<@pV~-tkpM1yHGN>T!qEE=`(iQ%FT6LasGOPnLeLZhNabX=%_5xQM`eJ4&zf z63*PWkLUJ033@LQDwERDbgg%veL?$J4_RvLE0bF~Skh2*;nu{Jf6LX)e#))LjnjDU z-$tJ>_`@)A=bIJmq5&r#a9MI6km(?|5yXOPDy-M~eTZpf{t`~8GW>Ti(D@01tI$-tv74%o%Vwy+p$vKg0Sx1H`tb~ z%RHX@>G|8?N<3;)lEi*hx6M^cR5dAN*+!>Q|eeeB(Xnk(#Wfh6d&)X_b zw8!)3-K`KPGfV*ii+{598;_M`m*kE9m)JFpSv+k*las8psoL2PqnVSHV$sPjoPg@# zrH}Q5vP+|A1ifpThmJkUMF5ZV(P2UuT;0JxpLR^n0fO!V1`CU(3%JyC&S-QvJHByu zryev4Z*5Uh&qeh*r1UYl9iKMtU=Fk<>=!`Z6~X0!HQmm{{eoa+X|lJ=o{VF2EOT#h{6wQ<>5LzH?s$*F#V7eGB;|<*W-&2Q z)cFi`*1;qD?^X}ZBgMiW40O^X(|SPq8JRh?#nJ-T5M^`oi9kA6>T(G=0g(xqLDNvM zTMT(x3iv&2pjoex1_}|?{X2rEr*lVtp(DfQJ#ll1?zx^(9lERW(pG*l3Xv0MKXj3+ zA2pWD1QnH5WT?zqytgU~_@KKuKhUxf;!K|)!3au{p=`0a{??GzKjV@dz6?4AEH?rjZVafv;1Z*&bmx?$}d`*p!&7`SC#zkczp z&AkCkeBPPpig91ZBD?61g!6;)Q(on>Uplo&A11!M&c4;FFWwoViTOCMFA7ciMQQF> z?Nr?AT$-Y(x@Gu3{yY84$GK@D1kb!3;V9!@QXTI19-`eoMd{pl2(c&nv}C*e#YB5* zhp9j?im|@&#sDa0AV@#>nG-3mHN;-GY7i;4NeiBz#r(V8G>Q$LZ(+E-EdrR|D`31Y zhlqo%w%=MCR%|-9{0*dMiCGZCmrES-uSu9gc2jmk>f%U6!Z4o3BO! zhPH!j!${L_TjjCerei?x*z9PC23~=<#UcuZ+uIDEV{QE{e52uu?JM#LFjAQr>;wvl zdlvs&IfQRv05F@nDE54tMW8)HwC90dBd>D+6AFZ0xs@^y>=~%uugeTlPxlMjA+(+F zPT#Jdc!egsa%{jGZG@(D#ID~vGoFp$qpV~J4s>o|pp*&@{p%4F{86qvCVoe5TW3bY z&pwWf11xeb)vcPOB>vLZXbPclV0G!icXVXryO=*?nO@|xT>^d&G%?|m-gz$Svi}!p z#3uh+ko7}9J$y4G{aa!;pN3h~?hNS5!g<$W)CIa3a%9Bd+!Yad;O#?#a>&qYcMd9U z46G35K5d_PYW!qzAoQrqJf?fsLh+W(tY&tPaR1|HCiz0A!@T3l-km*Sk@@VYyW>^6 zCz}q_jNxlT+Il+oJnWKJd0g%uB_aLDkVzb-!MVYFY{G10e$(`na*P7Z^_z!C|NO55 z);*~%K&{{u`|OQe<4&7w2hU|)rJdF=GfS}ff8Lx^F&3bu-!jwPe^)9l#>dXR%VA#B z*8A_8SqmjE3dom;MjG&KfZK>Fy)mfUzeFp#2JS!p&n0#rHBb1Kp6z%Zzm)5H<8dtF zrme2k$h=;O?lbH zBe;CQOHWQcF*yPLo9H@UgR(|@l3z#pe-8}Ib;mG2z%6NH|1itwu(L{YS;_)^& zJoV=M>}T)ZT`SpW9cr$wr|BLe!jCJqDIBo;YHjthiTwIbX_m>vP>d|d`il+|f^NUA zeN@M%(Up#_zGY?C;ML>d&|GM0GsGCo2z&BFk({K&)*!?zE7u0NMrd z)SBz-78S$O0G4JwKcg(0MAcf5XNw-0_pGJ34TpUG{EQKNF8cyKecJ}nZ3NWsv{b0| z>Fr6oVA67_DC>6Ex!EAJ=^YP*E8Ja(#cot4-)K_V(irnY_np1!~G8l>^ZH^zd!by$^Gb)u}25(LE^b4+wq>e z-{FYNm%ZrA#DV-}Md>}kt-qhSb9_=lRKlu6raIwOpH&9#b#bT=`dXr~!NZfe?~{98 zOG?h#p?}LCChbz^1Z4-@UTHG07XPi?dn{~}_(1@~wG0Mrgp+eW#POoy%A20?T!nQZ z>7O54bXE>Ra&paDeyjQk2;N>O^#MTGlTCcY99WKKR_0@(lFpDD9iPv3rk(6 zZb{5^e%XI1NH);k3n%sn-+z4dtv8{#2UB5tO?|d-{hS>7fwle>f%)G7$1ojNivxP8Hx1>+7Bhm>mi%174QODF~M{J(PY`Mu@b2LDcma|`U z5H4rkK_WHuw`efX(o6y0L zL&-cdO{)zuT~U-8RH0F#P_gEbu+}=MNL^B6;FoOL@aBLQHYJ}aZl(v1sJ=&{YU0c& z+HK?Sm+E{&mtI1%J2M#Zt)tb22`k3Bf1wrR8bB?og;#!?<2ohA-Ckyoaj7=NgvT0? zyw)1e>FBEUpn#(2YKzkqL6O*^Oi7!Dt81PU9=pX3Z{BUXJDh#DEtb9hXs+K5 zE{8a(^)aCM6$;hxHn-3rV=?bzPQ{qQVlcTGTQ>-o?lsu5x!U>G)1fFocrhquf^c32 zr^}qyi5~=I`e+8pE1+1A9VXE>x`y0N>2!pgInyAwK_s!Vd)`{uY2+9*#71su#OLlz zSZ$7?ROeRV^?rkCCA zCC1&9CeW9z1n_@OMsvO)z|4w!ull_b$W1_ndtdx4Vw6_Q6Ve;2gTVhV(a89&(`2aF zLz?;!AO-6i#rsvXrvC-jSpC7wW%=riX4oCIR(|PktfN8coIB#5PQCaMXZ63?XYd<8 z)%Yp@D-CJO3j!Yi|0=-jI3$d3$aZeACo7Eg;j)M(&+1TZL_h!2# z@M$kqbjMr!+nn_Ub(yQ<_e3n89_G&3M7vUjHQ7{!uM=!$*BI$~VZ|eE$Khcn`kIRR zsYf@mZ*WiW6BG`A-O+P(L|pUM_Rs&C?Xg^4D$HM(SGZ~CHf%#2?oK^k2qu(%6I}{1 zvAE{;?oDe8ldOc-uqqJ4mhkzUdU6=VuezgbGkK>pVEAjyRn^6UxU9!;=-J zVabC3CH&WI8a8aaL0eY*?$&^M)bv%?ZV1s*GJ=zwra3d#DSLfk#w zwf&(}ibhhBF4QDp2i~`J=GM+?(#T`)g3tKPxaWXb3B@nWt39((?4uW-U$Di*ub{;m z4`~_JZi1K@I6XL%nsEwJ?%=cl4!1ukEohh^*7IW9s_R|kiu?0pcl$D$lla5M!en%F z8)veDSN7qi@KWzH1$&xSnoP}^!8M_l1NS30&l%8Os7vKvd&)i+IC${4@tjNF*==?S zj}YCy9^o-WR;UfDPM`TI@vig5E=}i5pD%HR*mp-Ba)t`Y4Bzzy1tEV5gj0;Szv^na z&868n=)Ze)TgL_t=pby zd!annK0NjPTpv7w!EJiA-cvoEcAxzbqM-Fy5t4meTJdJ1Py4@53r~mLq_g@UZC$v4 zVMFILi=T#J>{hEy?Up>$UEiXF?}6=!=(>L7?o>7S-IchvTxP6W|NN?@MuG-LmxNCE z({f-(RCF1LDA-3TG5V1{swk~x(%=360>16Rc#}pHe&7B!N8S$+sx?peMX?kQ&PZ%p zN`5TRbV&BFuy4?BH`$6n+~Ceym&PY{Db9bw$uQnC z$~@Nh_Q8VAHXg0#gL&AdRzzMNcn7e$7JK4vX(#%6G^>t8#!-1#=iTb_%|8}RWQquJ zFIZj>E-&BNCY_Z31;B+fu>NyQGD_vk0&X?I2mBC4qAkF)S7p}NlhGO%OMQsBX7@B1 zVg=aQVqaAFt$%AUM;_Zu^uM(=l+5BHjkHMpHtu)Y8pRJcFi?sJ?BUy4+>j7xo>D84 zSejX21>UGO4t#YJf+&b}w(9V-DLo6C^T~-J8n>o_-Q)(jF_r5kdS)zCMYWP2xSd7{ zjKgM@_P#i~JPgwelc;{w;5FFOJ?a(g@&@mIF4Ci@$st zv`k4V=m|oRexvF?W#%X1Kj~CIuph9>u7)5)Xxy+Z3~we|tsRo!HQY#Tm;?T4up%_c z6QQG4cj6lYTx9H3x3~+<$Dk39OyP0%94%M5hi}=&;N4gv2 zOM)C$-Y-)&nD2dzl%wlr7SXhqUqtqt|{OOu{^dvf1=}7 zcdNlXP+2?H+)^1INbJ$}klc#^R}tIl=UphxKQayKBN$b!^3}EZ^o)Po3uf~)FnH0c zbyOZf{xZ#;+G=g7v&HehWdL;zy;|X|EELhfnha!dhA+wJPcGHGi5hi9jC$U~s(LOV zq4Q%wh>-%Cmr^m7GVzP*3Z}*WtkfH=-7^O3tlVM(vL=Xm=Hklja+OSAj8Cw+cew{N+c1M9dqtoc_+goXEXlqIxU?M$0Y_o0-JoZS1)6&g29)Jng z>#QA*XJKtqf_IiGQ1VZn+q@@GR?;uV4hQH>j8#25b?RI8`6e70jg}5>efX?jsN*8@ zmU^Ov9dkB5R^m)=yMFEHb)Wt+%<(f9Cqr^1#*)S7RF9=FkazjZ5T`es;z|{};)@gaN5o(kbM|Mb3p;vBK)bdvkiqkj%G4m@1cHoWqD z;Koe;#gcT9{RS^^Qt9EJT1QeYKLN+UijD4PXcj+R6nx0EExI8dllGgB8y6MkE4A}A zS6RLfkMeD~AGP#LBzCpAEFqzQVzlRvcxMtT{A{`Lt9HEZ6RdCQWk6l{HfMAiD!*9g zAMvDbxgCr^Bl_YcAk7g*eL;fh*S;t0#s75ChA{OyQ~tI2yGv(;L?LmsNfTz9?usn4 zBS6dH`hjcF6AmK*J6-U#e92S!=7k}Pm5WoPZxCRf@l2U&yi-7I0xa0_esKT1zIO(O)3?Wc2IxJH?cgu>7M?p(sR3KLzjR7 zsb˫FoI_Op_IE}V{n$m?5|m`84k{;{c*ba_{ENKf<2h3$12A>24EkWFa7Asdjd zo{+PW6Ao)9Os(k#6uc}=axoMVk7n)(tlfwD3&79r02{1UpBkB1`8+Yp89HryHVDbR zJ}@aext#R?(r+(=R{ynUxm%ee-TTwmYRv>;; z`Hn`*w`nqje=(p8oj@7O@tGw(-Lgyo(^gyb--@qLe*~j=pT0g^ql6rUOzhAM(!>J3 z!7D)XlN+M(^z`KVH#hm}inhkkg5lz#K;76bYG~;F_aYDTZ$%A7Lz~?+I?Gj0&$}l# zLn{+!r$pTocAp>O{ke23%OQXbl=4_FeAD?1w_?ZO8t@&K= z`;p|4m7~I%^$+b8%NOx4=i!s>?y}jpvd+aeBY6ttJ1?!o)v~s#@q>T=ijdosOQ&xA zjMpga;V@1oCu&Ce6mI=k1LNS?Vl<6gN4Fj&YsAJYtk)=RE#Dp+{^wGCv_2<&vy43? zFa3Ght^TfG8uqAS?EKtff2)VCpA?1S8*Cvr((bPzTwSDGK4H~7>uzgKx@yUY3iwev ze62_zWo0b@ch9VZ9c^ zy#ev<+tqZv@_pGZ`9Pc#1WC)1JE>nuboQqD|Akv#rPIGhsE6AZG0Z+y$$W1rvf4Pl z)u{v2)&CNk^LohMUoZZ5wdbzyEZ>)Bp6|Uo zz)mD@54!~h93dcf6==?rLbv<3V+oLR_z&RO+;DFh{PZ2_`9b@z!G6Q9O|Q}_#dcou z8~p5DV?RV)8}vMRARzLGWEdPbz&S`4gqJn;x5u*9gxevF`)+@jh#i4NQRMRigm9v^ zIkb%T>fj{%(zDI09Ko94hZ#JNXq0x>Y(jtIwM1#szOY3PR8Kt++HtV?4*>mDX_4v_ z)${T5yK4zkvkTAqBnFeJHh-aczKUIXZTypPMf>vD+lOJ%amPvA{k=ZfJ!Ms_;JTyO zOVvk&Baa( zMB?85ycm|vi(ZhMC&ZrO5^&^8GPu(7n0bs__Q3{4uPT9b4Gwp7#) zvYxwZ2#XvjAw;id}l~(h$lqc#$N>A_Nxc&Lv%}3K%v?d+}_-_ zLd6ga>l@1BGgSt^OcSSn)cZ9DKvD;1w$MM~yF7waZ4@Q~vR4YpHZNN0cK~4Q=qm7b zke@cG2%GNhTGE<7%Wy>9h#ZdD+zJEz%O@oJi0S2!wJ}2UXir)d39RiZfG$Qw72XIR z<3?ZkG47iN zk(DzQin%CI7ujIb%u}Q$CdB;2X^`c{q~J*!A^o^4981wgn@PHw$-_iAs5O zT^e)~18aB6^2+;~X+nsks(mL%m}~~oLQT^*9B)6;X;(lb{+M)%^GPzbd$paervC4* zTmOq|NYDR&T$3i6dAXP>b^j1^^q(BzT&%^%dYze&i_I>QKIbm#+igrraz%_HI*XTw}>gz)YScA5+27LAY%hA-RlhXLsv~rE|8(GijWJn-b2;rDaem}Z)UCnPV#_&Y`r?1?!us|vMpL#p<|2(h>6?L** zn>%U9?K0-0B=?$$%<-e3)WNC(o2(B4#%*K`$+&onjD;;}DX05g@ho zL9>zMqpX37vNF-cuA=fY)k zOWv8dS10M5dt#aQ#o^uCvrg|oFIIoUQE-`{w<3Zg4p+2;o>iR^PGJHQmCAmM2HoD` zS`%LCG?wloX^$k%ie6UJ^9+TXW^M3ym0nL+eXeDBG+kV$p;HM6f>Omh4ncC=^j*+y!EB2rZS!wMF1ba++bCtx=}P3aHk zfy7;__KelZu8efUeOKRWG!{r0eqnvak*m`(e5{(~3DhM4*9Vp8u`noRzKHeUgh=}8 z-GaxshhyF2H?CyYqy+a{DLuc1=9(`}?WW8xe{5UTD`{w}t-c&(hNUcD(RJ;Ve11L_ zET)?J=+c~GN|H4rP*SkOxKr4XzcEU>uJd|Ad+aq2EIe?J929wu9wYu;TBFTGmRHu`S%@VpL zhkbA&9J07m%$q&HCB80*`+JN}A{@FTA-O;J`W-%N`qWOv(3N_8K}@y&!YpRU#mx}1 zpBWUuAVAII4n?Gt$@`#C`fgE~cdez07gTNUT5($To}-Nk?Yxh-FN)e_-}m#)I!i=k zZWJB_Ez(-1aiGO>l2d$R70)VUrR&69Uu?Y9@i&+1yTg2TLn3Xqtjz@(b=NXPNRO;v zU-6AUtv4fqJ0hyIv7B(*QQSk{!er@(1itD6W-MRkufwU9LgTBmyh7y}y>r|_9-~Mv z@RHsF2XzgH{Wzp(1(8HRr~DW65QDB*SR?YA1O&`rVq*Bz531a8zb6w4jy=7b@}1cY zVIJs8EN_<}G~xy~xCJ=KzCO0uuQV&HaL#m+DKqVJ_{iop!G{@fyFGF6*WnOC7)7HW zqEEwhoYSVBmzqxT-g{)+GIRfj6jwBwY%$-7^(r-v78W?n(bssZ^!ku%afj9n*Y~;8 z$`N`MH=G``Q)I(O7_UtJ1b3cQ^+aVF>Wv#@pi}X zr^Ao22Wa}KjeX{RQMk|S9)BwQW`CGDj3VDlA_KtDr2{#oQO0YpLCgb?-2ohmqrPE! zFnazNgVV)CAvm8=8aas6FJ|uZ~BJnHN0LFDSKKhe{EeX0dB@9`9i;3D*Rhx zE@&mNbe$MDaGSE!-04;mHLga4^f>ku!oCkW$>WD(uzq7Th^8%y*I-*73H^grJ2h2X zoF62CX2c*FbvC=JBb`6eTNsy3r|F~ev&LO-R#(It3)S%t=t|6bMiC*_v$$)@>P>^R zxH2-mq>_+=s)Ce9Eq$79Qan30H$#yEJk%{&BsY*HmLKfd18XZU>_ylHa9M5 zmuh$ztWiyV+^d*g1?9#!z@|oxqOkEjE$9bzN*zI^c9+~RD)F<`3{$x4L|1M-!l7-H zR`GU}ShnsvKrg{&#)dCf6AFnax%$X{M#JJ@HF%~s0AyYRSnlaKH!`!g$xt^e8H}%^ z>_Hm<%lCFd2*82hXopO^$qW|S5Qzj4$psjFi;31k4Yyc<&S@aYw}#l3{-rqG=OgWA zOQxtt*Q`r5A8v=)3@`ADx9j;?$5`y8o6~ko4wqWLinu!^oPh| zlF@&1SWunT!WCi_GUO~NZ!lyqGejs%2W#A`;ThBlV}^g!Ko#{;rW&E6A}s455f>V! z#Vts`rJ`+Z1q|1XwFiv$16S@MSuIui=tnv`AWU@&>)t3d_Rg{x06Q_tbW!}<>NVcT z2(i(CsqKs-$=MNPG_VrGExLcEt24kzT7 zbIf=_>I%%Rd($;MsJB)Ak_*Uxr-FAErSut!Xz!Dke7qCyafo zXY0_z(%6TX+HJ??_yvqEs;b)93;*$;dVVLj5k59b3n z^3wa7?m4Te*;NUz8-`etP4Z5C_c~+w(C0{FJ3qU3JCVeJo=g-PUV;hr{CMIQXWbQ- zd*FYA%|Bk#gZ+K*{oMMh)6;{2zm|xXUSnYj-eq$OO`>PA_<}!VVfm_08L%{GptoKg z^#7jz=zM?Ya?7@>hrnzR=(@L9Ha<&s5ma&j+Vivh^qkRCtsf8ELVsLzE-XDzJ-QfS z(-w^F?ewB6tTlDRM$fTc;Yv$+&#f0( zCVLU_ZR0@hp0G1#YDn;!U`D#!p@J*|#=w40Q985qY5atfkK(-#GHMn~L^*fUNDgV0 zt_R&?;sT|mq)uiTuQ*TS>@?y`K)r+b)42HpKTEI1sV}O3n#bO~eZsVlgaefQx_6*U zf1d4q7+`{iMv%cN2e@(>23OjQ3P6t~5lvvLdGdHX)YIUrRH;pwCtGV|| zup6S7jM06Y{dh_CHE+A8OYejiyXwAxZ_-HLcEG^K4)DOqg*XMnqQ9fc^cU)<;G|(Ydj@#WE5%s8* z9QSmB<NrYy>g%u3qmI{3(@`LI92fe8xgpotDyOoYJ-0yN8SAM3z>2CteTQ{SHG(#yjd6Ad&78FMBYl2X0JXy zGH{bHjlShSYTL+kbQ;Pj)J`(n->+2l8-!t7L9vc4m+;Ulxn~+n6~FS<=N%&%f0T5N zh`_6R-&0>+gqbrWnK~OOK19)JrKuECseN92)VVd=+D-!9xq4WjD94?%tXQLA0@yHP zFRSlM)1@m(+E0F&m|iqTT>n?fb$zJF)FhV1*$i-Zd9wIl#mpjRn8e}^-+9b}R4KeO z&A}l$okJSt4$gFGoGlj!L?o@-N`Nh?B!`r;GHSr{sOMfTq{J`!Kf#72X3WR?PR26C ze_h4EnCIS7(bQeS}I{iNo;o6fOOrlFy_6Rw%tkB&&>)Xm>nO& z!8s9^rzL7^gLglUX#hXK6P(IM|3=5yx>^`7%*@X&>gv6Hl=r*CR`3YCsK5M`o`Vne zYilz#A~dkyV9GHr_v4yM4-r+VQaPLJ%duRdZG8WlsH8Lni?m;#>G41AVVN6+L3d>M zu-Ge|3-9_@h~YA3fP*O6i@2BGID~%9@NRm+@)2#G?IpzAi7!!l7`>BXBo$S3{&OMp zf4CWdSd4Jso9y4U%yAf^b^Vfy@VNxSZglWE=W#BoI`_ zV>9W(?d=6^kfP`UC}E*vK8ttg;nm9hQdKlB(}0fpPsV)VOI>tzTTIF9KCrGQsMWoF(-AStA~qdn_0k^e5hNDA%j17<9L#uB z*WXKF30U{FQng$ufri5a)7m0OzCqa+GzNN==P7mj(kc6EakO!vHaG09a1U;e{=G!( zw_zfd!gtPi?Us4B=g|WP){h>XF9n$j&%YsX+k{g5x@8*#LKbm?nMiZ9iR^8$oBd2l znEKuN0+Z4&>zgokxgN#QC)&He={?j`ZtOVh9x@#%pT5lK&FCX;l4{tl&dX}eVm>RC z=&(=x>!xPun}dUl0rc=13+Xkz^WGCc+YHmm4f<1eIY6ehWO}Kiyks6U;nmrY+~Z`? zLtN2h8cR~fr5Re>D<+0J-hb*!D?(<9wd2vk-+k@pu-N)Ehs9=Zx{+gRfMkzm=CH$u zmWYhV6%?Y7kQP)x&P{8^EK$-`zySkY1yd$^Kt{86!~9f3v{h$GiH%G+W`Jw8iH>fe z0mYh?M=s>fb*V#94FUIfzvgoyUijwL+mJo+4iTZ#y(x-07>7;@YhB+En+hBRSIobO z7;9Ca0Ou0GbFh3j%IM5rEb)%i$#Ebh%57xaGuS@JXW2o;YjAnFf?4QITqY_>fD_b~ zmmTJ2KTdV2VC1hhw;oTZVBtvs1Wk~b?qFI{MK%5l_UX6ji?NpQCVu*ZCzHNS8*ciOmS)hmU#_^W^o=q zp~hSO_Fo1}<{VX=Gq(!;Tak*pA3nJJp2+ooJHFC1;TnsHp*tGBp9;-uD)*RPIT+gO zp9oy0uA;4P>PJ`SBTGkP@NZNjZllm7Yj{K~YXsApZbiRP^w7p*6}*jB93?feE@xB) zva1}otM6nc&i2B=9uV-9y;T@eJD)+^Zn9>O&#>qKY4ihp(Ihb_+IwQF`E{n1)#r={ zRc1bn&^|_w%e}8w9=ndMTDLls-u_RULFva8J7H6>+Pjm(FqY%?uv zI_&tCDYw>Ae8h#8QR%MjwL4-ltn5$jFZaCTk%mI7{wlt@sw;oG|7Cmx@$d}|C?O)I{$u~o`Lmf1{yuy{jJ zqA=r#98`Z@^@gzGwVd;P;+KZGHRT`;chuo$^1bqS6SCe1o&hB_3m>bbLt+~)@kfkb z|1dUgIa-JCeR<5Ph%6z@pjtXrqDDq^aAGcmyvf@|B9 z)#3uHWhCnkNyq8vtF2RqH+m60_>W)YF>9HD+l=Z@xkZ7EYK84IGpVz9iOmK-D(p1H zGVS`(>4wcfSZ?kkg1rnrRQ$LI=lfsca^^qJSuMwh`EDwH@V?0*zf^GoM*o5cvi!Ba zTNv$4XQQ6K<;r0$3T%rzx+mwi@C;EX?h%vtI*NaCZvJCQ-u%w+>ZiM*gn4`EX)j9v z6>27NmEm}YcLXhJ+0OAli)b&1dI++Xn~qt_F^v*_d7V!x{|B*@^UrjIo*CpA9!N9^;jF~=IJ}9|6sT$eC$z$J89?)s$$vh8dCE5oWFmW{>I!GkMX473IA=EwL<2zI@6hR|`< z>+v7KCy+5Y_aeRC&fIWqEE03OGHou!c@v*O%}8d@_m>GVyz&9BWJh?^wI|Po?IpJf zM({=XTRnRa0=1d}oN7Z_c9 z>LgpBaBzCFLo9hOGSfhI=5+y_chGjE*-nj(y=O&bv6Ikg#}A z`ZbrE;XYrT4jziBuu#OgyY_KkpBfgcH%n)F@o4%m3pWEI&dk%iCt-!U1~2POYo8zQ zu`V%IT4a~5Q%vLIcAiA$Ezc2RZ+>F6+#$U@vv=dicL4g=`HF@!yx~uXJMm`H)%D;r z+nI_(mgWq4k45cUleSU4*~sM`za0?HIRENX`aXx-XGbxizDdy4$kC|H2_K$mT|Yb` zW`Q8TOZOzrUDDAPjN!Hs|Kvm`EaYyRxE``Gu&HnM35YbTfNZ%gD19DyuA97a*dmvU zwFQEh@_7orr@s*Ys!0aWO`0DphmdxZ}nA~)%6aZ|%h z>=n<8pNd{=0 zq~DL)+}1T?ryGa1+w%@ZlIsH0)~<0nc9Q8zNpYH!g%;-zqm15053|2VKoi2YEx=~! z>D+y5v-(p6@|Fi8;(jUlmy4d}VQ&iBJ2M!J> zTc`*Y>9l^nODgC>BWws6eJu2uP~k!rz1kV19Bwfw2k0i)sam1#pur-3o>_ccbo zU#iXEWeMFN?ahswW#5pJybvtb?3_n%1=jI{>62UWtYB4E^^nTyIgUE&_r%~^7C!Hb zn%aDzXa2^GTHGpFQ}#_2&2WQWz322ATl&ei6d$kc5}0?!N~|V2)hc|Ei3%2aucimE z^HuY^#{}ZVF)+VN6T5C!t3%{Vtd)t~iOuRI1@^_}39!GXE;fE>Q8*%$ZBTWmA3o}M zDlQr7fGE+WfwXH}2R9*&TZ^EwR&4ZW*?`ngyuDLgVDRF`0nHpm4rO1-1;|Y^pCoHZ zv`)pXM`yD`XHm1QAHZF+F^yZAp@9Rd74WpkL_nyDOA@KF?@h|V9gj^baRm*;-&F1K zDVtgTYJx&MN-oWR>t$?~iyV3Kydv4nLv11^w9uG9zy)o_FFuF_kH_u}up39x%Jr%c z<+{KCoX}KE38<;5nL6aMF(DCW2?7$}ofLqb6+Uc_2sTbZ+aMQPL9@fV7&owI!iP&O zt{-w9Zz%ugS+(p96$JM*5eZFO$*$r3boBDU;aJfG@q^nm3gH9~Yy!f46_})k8yY26 z!E+o>;JytuZg;&p1slhGOAoRp?fOX4Jso}g58gS9Xt>o)%g~95*aZ@bGU$N!oPyoY zw4v?oAhq--VmIN{H2~TKs>-Sg{5gf5^##@TK)R=bwh-j2ESh#d$b06C4+()D_Kaqg zRME1af_nY{ovX-IJS?UqhI;ky7B+O&BN&qDW6}fWBMvs^Yk?iYv{At>&R#b>T9IjE zzw7hmNqs!mn=+8<(`6z>x)u|jptReaY9J;Oa-;;mD(n1Q>GJK@>u{@P?N@<6N8)8a z72j52Ze!D*a0FVbi%ed{*|_41A>K>VrdC8(3lD1(_VG#l3>d{{Rs83n=-G8qq&4ce zUU$6j|L4Z=8i0Qsy}2Gft@kYKh-guh$sw(q0)%kdT(QzH=hB(l=Z`I19B%pK5uO*m zv?pY3o|=4>fX@@A(`0B%XS>~A^7;qLVHg)rOnlZlu@h8hto1hGvjc|I^w>6cIy?lM<&w34TW(C*$x?v<=WCg8hiw5`pZE> z_o%Ntt11^a@WC|Y%tK2y*K~dsHU(W1xTrSMAH4BwyTxUfvOLXW4{2v~qmwS4fcuOu0klVJ z06+RQZfS?u%joc@+bqa|GFz^Q%vn7)_{*IT_%y`}{jnR!P`o|tYivdo5DwxJOXjFq z4f*?y6rWc(X%7#HZG0_8)B!7W$MdN`5}9$0FE;MV^NN_76j%fIs6P_IHGs?3p`lM3 zwrgNw#)|)rDkYJ>8LqA{6VOE-nr*5(6-}=#qF#*930{qwHH ze{fVjrg0-|k2d^d{kP%qN_$@^PcMtNjt?H5aQ+26ZtrJ^SyeJfI;g|;HN4bxWE8P*qW7go&qymA_DzvJh`OpuGjE$cAf~V3<#Iw@H=^N+b&?9fyb{))mfa@Gr7<=_V2$Xce+8WV zftfB`DXn8FEJD;>~XuEvdJ~N9^7IjGNqd-g94>eeiP@0yeII5_`zV}lGZK?MYC)1k?1nFIue8{IFl7uWpWs=ZdmS-v zoTl-#nLiTBnhh&ABU*+P_h2i8PInT6e@OuZtNjrPCuM+?VlrMFH&25=lPM= z=e(r7rm+i=MoqBT#0?gLs{e6QZ0H_0t?}OKhrY4@tUZl0Ph;L+HzI!+T&Bj)nDbmn zd;n(eiVe9lwI~W0R#C*1Ma=;0qeRF!$qc__JytHs2_{LJd*|lDhZ3*au(@|*#sb6) z!YLczKFb+YNL|ZmSRB8bFaNJsVpK2#+nvIQc@xdkl}xy&Uq?h*i0U-e2$a0r+)rzyRxqHBaMT>E@q;y243w zt%N5=~cwCMg#C7tT|qiwsM^JNP+0vND|?pK-!~$+4_eNPBy17hgr@A5rPe4-CtMkbI-4?d1(GW*$x=g_cmKXVA zdNoJmyAk!aZY#`e*PixUg)!9$R=8`rh6&s41~U7;3`IcaH^8ib#P6jMjJ#|GddC>6 z48?R1o1qjQ*+>*ucLR7w1E9ZLK%0>bNTZ1Na{}^9yM$wV@{)W)4`}gats0!l4+%60 zf7sWL2q;sCnikO+dCIDNqgwyKKcXYZ=!jgF5_t>ON>$2s>)hzJi&435^q9>s`?1cX z?E81@YCS>^EuI2p^i6$*k!;jCSrTnH(F^of4IO#w-*+u!y3K>Ro$*}@B=B>u_yO*B zlQYq6JUdr3ZC8Vhf*af*bzaPys`)*Ut|JX5+CIp5y2QhBHStj-r08?FgiE1e7-6&K zYtUldx8agbV0?c~?j#O-m}2BITF}{q%JhGb7h5ho-G>FJ70^s((;6P;0LR)n-f1mp zGWgz15u3??e8Pl!leF|EnHw;aHJR7K@w+n8dsxS~^ z6-=>>YCc!mUG6R(OzgZDC=HRmshC$r4o+Xr3k>X2#Exc7INqNs%(PXkx^GlqTTvtq zy+ssSZU$<#DU@23qlkmd;Bl(r7`T7k%;}ct-t@{iZ*^qMCPzcm_S;ep$G>GNW}<|Y zgQcfkWJSy`#*GpF^?|RX1rN=PBAZYYTdJNK{FAnmR?WT5)CrwdJQxHJ97&M4ysx4-2pK_C9`U zxo;7PbYF1?U0(kBpjn=@AMXIE@^q?jx2uUCtm?0x#50OYHy7=-)EjGhzV!7`ce3J~ zX4@b(O<=ds9rWhZYqj7u(kS0mWxHf~ckNvGw{;Ujbh0z)WSVDAj!E3LxC^CHAHtll zak|&Q`P1*J;qOh~2(lydMnUy-?CWmd@N(=DY`f`-LVcmJ0IAyiBqb7hw zZlGla(rrBN7x6jUxtGyfBKT-RV7Z#vg(Y(Bj^1g$ld)4`n3L5W;drre;r}IN{x9O7 z^#^a`z3@%>qnJYu75-xdXFKPo|C2wD``d&0vv?x;aPm0)^W^c%Kiwqo4E(D(rUB<3roL5)Ebt>3Oh!x3Fvv ze6@!803%=`E@PTmw~iKFDT=Yx)9O7p+O^u@m#-UK1jm+4*}{(qQJ_V7fYTw1V;_hM ztKB#J_SgAS_TfwC^UzqtKCDXIcPZ0=mAllWn;W_a8W33e`||cpTTc@G3sr6tQ!~d z6BfR}aNRX7=EVf#yRjUJ;UQ)S*`zpUWi{+uPBWZwlvUQk3v9aXJ|#B%mo;4BIZ?xR zQ#Yqi|CwVFZ%!ntaCa&1na}3qL%Z=&(4)65gqQSuwDEj(tzNqDXdb_qERTtoDk-QT zD^1_xTzK?R8LqDJ_zfB7tA+2Fw_R)I%wW{6ko{15ebmY7ryk8{=X$PSSM=?IPQe~0G`EynAL7ejQc99z;Nf`F z=9sQq55HMeo2|&WOH-BOi+9Y!032dc4^j7ce9iP@k)_meE%K_-^ z;_#tN=UQz$zDI={(4r1zzI<`Qz%Ajm z9?IJjl2doPgERSL)~k1xweqz6&7jplui5b;+V(o7V3uxIbPt>A$1a)K8gB5knc$^0 zob=-EWR?Did0Cer3ETeVvczi9^_-a9fJEA?Z*Q$8-X_$Vf9g1{{RM}ts ziYS^!W6?1Q8{G^{EMFn$=qUR8$&)T=^J>TT{f+_5M2OD}ny!T+Y?ytKf*}DHnuabL zCRi(jhWJA?3zimvjY>gV{9)?3Fu;3$C{8>2*zC!U284mK&n@uxhiRs1oJh z`@dod=Er0VH^-3rMiYsg9|_}By4AG=jw)?pLB}$p@SOczvp|aot5BWZc_C-S!ENK? zFX<_;_Q#^lv*zP!JPGAW5g*T*xB0f53~eHlhC|>^zODW{hi^K9c%SD!FLx{onM??{ z>Rw?2zZ6C&(hHlh9e?Fq&TXl3$mT9Yq7f!XvcuAz$46FuR<5++bu-${Q4S@5^6UeZ zv72f)R~#&)SgdypMganlwfK1c1FN6iw^oKJZWEzTCuBXjj*)sHHz_rc3O(^S?htJ8 zG0r?hY75IT5^VrJY>oLF|AQ52MsHo{TE&^u4i`TDV4l&gdQA^IK6^~<(b3!&O~-nU z1#%&OwNGfo{&6hKmxyu5o*@_W{wWqf){LXdxGQzQjKzb>5oNXCNSps7#HN^x_+qmJ zMB67s&Y_Hb{9)Vao2l^hcpmSHvHK}G$ADK5B9y%KKl1OWBKCto~Wdk9MEy$w7E{1<=RvpGFA zqC1wd)4*P(8Ohb|FLNOuqYo6^WE2;_kQ2DHwbjQ@ed`~hC&u3#XP4-FYta; z>c7>Bt{}&1-wbiw#y&fb?(<6nHA2zQm_w^nCL10c-TVPZ1;Fl(Zn1}_u$Fb*Ze&PqeZ#8eFzX$$yMALsPQ$S$ z>y6}-HCEG(nqT$sp8M#*c^Dd?j#Hqy6MMFFjA%+EC`ot-&H~t)a8$@(ccBk)1y;L# zgKgrlN8P2K?o)O*_Hvy{fLY*?DcjY9IxaP+ah8Z7foWUi`5X0wu|+hc5=dM4SDNgA z?YH_CdYSLs+GYys>k4yX&*P32Wt?e=YzB1g!90N}G*h1bR@`_~-45YDk|Cqbw9KH{ zal?>nl1oLY$Xc;*M%KI2Zy&6VrQzw74Y{Prscm}Kk5@HW^}Ex!o-gqeQ^q+}Zj7$B z*+&KBmr56YZlj=KkpL+rV)^D)?r^Y$MewxNHewJ^9y7WtjR@OuvZ;6}@6rZgMv%_J z#2xVI#rE15sdU+k?F&SwSf)?l;oow{fJRC+fF3sql9v6$+cA;0mq zt1#X+-URyuf7-&jpr@8SU5&k1#_+JAV?1RQ&G}Lkipwa%B=tS1_GF05y)t8!s<0->CFeTr00v zbo%=)`;6W+TE|n@r56%$UbA;;yC%0*FYH(V_1~f=Hl8nbRtFr=f4Gql)n}-W?;dQ& zYi$f>FKyJkpb=*I{^X`w9M#RBEX6ljDa4yL`&woJ@;zf>PlL2>w7vSvHu5}ncv$X) zln&t;UdtFcx~6Z?8t+o_>+$Lad3e~E=nIhW0tNirUbr}O7GSt1PbqFWumY6KMD{XG zo=O#j9(r#m7gqhI0>NvVl;W-adPqPy7Vr*q{9qZ!LOa&Sq^TjTJj%AM!?qXq5eYC; zpLzqL9e8?EPy$QtkM0tpBv?~mpARMsIhC^6rxQkYiT{Y9B(d9$@I5jkmq}F#2*<9> zb$h*$1=_vhMir@IEBm0oKuAD6kASbz^+8IewAaeOdG#xqPrMplwgEqLo40VJL7Rt9 zIzJHzrQA(Z)1M`cDXT6q3F1d|g%~%lvQksdZP_$Vbq6#AH$YzKEW5*jZEu6e06uezDWh-Q&~bt(?R^!~QuExO4Ci;AQQI9|h`Hc~f_< z*F-}^)YETlT1eBXC+ng$&!dxC;-74dD}7&V1Q&u%Ef<5Prv<<5zSR|!-Hldy+}6zz z8=UK?caUr+4kzUn)Gud%Ro(VEhd4LYN2{N?RiqJgpn>DJW_r;q=F?IGk` zy1*l#>t>;!V7tJ5nvuA_Ox9r>yPc;-_6(QDkQGw}FL7yjEg>D)HBU8tw(&}7#ANoH zqJNjm;_DEIg!~E5ecAP_neXNjqR>&vnLPTm)c2=YFVMwd-@}^-4|dDOnRoL3U3C+h z;|2Cr3gbid(Dhp)O1_^~&dXvuY^xX7k8Y1$>y^(cl9XTfy!l_&@QF^cjsiTd`jhvT zE(0fRSC=60K-pzsW79U`}ZOBZq^eeDBnW9!YuFRG(J?0k#UQNAGI<- z{dFvONne9_Hg|oXhCs-ZQ7QzUJJy~)F;B|JBh z_9jw+^UAu{PFSkurI{Y<5?~P$dydR?y!Z47%r=Q`!KFTL)+zORwDCav^PT4iw8?c6ON>6X*v9WmZVnOF{P zDtmj*k{I87tAIN|4wE^*Ku5N18)|}efoO7nj^d6~1md>?TPFqyBv@adFR(x}{3AW@ z#dKnPOBAl!LFVbZK4mHqpgu~A0_q1WZkq)|6jqT}_$g8X`;lt>OZf-R6Q$UP0TI^iFcHIW%$e*)yYbI4^TQ-O7G6mwH{I^QT^zHAp$#Wg5k10HD8g!LfH>H6` zMrUc=283yKu107xJ5zdG`JC#|o>5HaC}uV54VDtxm=lE$rY-3aT|*bDh+0&FPUT<} zmYf$3XhFwi_lZ4O{gzLav}LFwwFhXV7{}ov6V!6O5e`L;67WY&DJVt{PTQA##-&wz zh{^eMA%UUHj$0F|ESENcN~cMB0d5Q*unyAnL+Jb+to~l*X9Cb`HgqQ(BlSy`y{7Ar zmrb!gV0z;5IU#x;6%WGSHQ2WS_=8=hlwxM)x{G|#u5CrTZQ*kPRJ{)&{_lO&Hi6KB zDUZHIB2>*c)Q-K#YNRd$psrexs0t)Q-52d+r|N6z9^oCuO1-as*Ja5`$Cnj3^7OTyM0N- znCb~VdccIX!{&rZA?21n^i5UHM8!Fl3O<#nyGAluM5ehf3RG0&dTQ7MTvpg6q}7;E zKvT^p)_9tk;*NE`TVPXfnPTQT71O2EGBLVcA<~V7oW>9&KbZn%Sw5ciO^q#}3J>oH z_g&~(MT;`M70sYld@`TyHV^$Pl~fTLu<8JE*^Fc6hJ5Ogb#F7zk+|k?Lo7 zLc#M0liawhaRU?ucW%eqfn&8c2L)SNqtI)pg-FF#&Q@$2uNp{bt9lYMjTpj!3|He= zHExcs9*bC}d-;}&tPI0FCx5Nz;45R16IAculP2e&B$znG{rDZ~ z=5N*446&cl!Pa~;K~?yk5SdPJ-N~^YOvksdyv$TC3JFf&2cEP}vFzzHHASzY7J1 zdA8+bJf3nXcW#aVCBiPGbn;#)YLYphWBRM>tDcSQ9nWo*PUdyXv+QR-bm+YSiw=Zd z#`|1_gJp}|9sdKE2kW;Z;2(kB=GikrWuE#13+SEz@lbn-KcCYJW zJFFEHmOOQ+sN4UuC2q7dZZBEdHYW&LbUbC2=X~+`gp>PFXzlf1kf=B7v#Puu`SrPJ zU&%64X%1t(jA-e}WL425iT#E+_F!5u>4_^k?`%@@_`8y9gF)vFNXcr-Lx@+U`SPf& zebI2DPe1e-_~7p+``OdNWV1b5Jwwar=(OE!cL_InGP=O6Ze{*O**P?Ap~F3}Dh%h4t_>S?mi_l z9phsd?}O^?_@aPwXUp+*1l_Crp>cW-CS?pZoOL1UY9U>A?LM@tCt%ZaL2?rKuQTOk zO?vh6()hgsNzSI=O;Y=53W;$Y#+vWs&kpzc33>E5QmSo6;kfOT#-jp%saik78mF%s zHxSd4{N~1Ol$lBES^db_ScTQpm(gBwJZ6vWvp?_O_y_yLgse8zLvi+WiE>ek%KDr0 zuzlEO3cYi(Kz7W`>Q=s1YaQHl$CG{PO~w2!d++6Ta|;4A`}rBI6!1VtK~xJt!5H5i zwjIp>dEb2F$w`R;-ugxJ3LaIX4V?7Tr8Ow1^lRFFtGdgUmpY{yMDNiy+RD7-BKHBW3Cnb7Zv|Q)Nm1H1|E`$ zxDRfhgEN%o6b&`LF6cpT^O&+Ez6{%60$`818trbAT~P%cH&3(D`6B`pE*lB>PKN#x zrricWB)6@%k2LO-No@(-cTz$$E?~`urdgd5_HQe3!scLm1>MTo(=cf2S^}^eLp#lv z+Wq>8VnHymQSHlZ{b3|4Z=&5UovJNCw}3|e)_oc!Q(;2b^eNzhs{z2yAczHBpkwR=V9n#Pyl%D1#{NmU4~?dbW$#wChwg4`tWf62d;6 zsNdeSae<=gfNWp{@1JHhoMCAituK){sgwsBjeM#45o5!ZtA;8%SW%j+knDA#UHD+l8-~{%*n=iuWZo zA5fKirT2eOP^1VD7w&hGwLpp|U32;M-^Zq2Y@?TN0mdzl&GIJwGuCex72Wpd^WeS6 zdI|$4xc8?YPW{PO0^bvmI>yoflNF%7#`>~K#d*U8w-mZ#x6Ria)$!4yLwHVmFT=!` zu%w4X_re9jkOO#*EIkvPCsW?!`uL#_#^ZI6Acqd7933UzOyGXWLD2-auIzUcu z#t8$g^n!()az9sn8yTI@U$3T{B@kP_UEPF%pdn}`(OY@7kQHuX-8;$bNRpc7($_{d7 zJ0*43(nk9mF?0gzO)^vS*4fN?HYg|d2x4@T=0Bc>`m&87Ro9d2+q86II9_T>XOZX< z+m%7ZG`u>AVRQRcR8^azXHQ$3G57-j?1-LVjeZ@ZB@b?gXgjQgua*|6)rbzY-U(oG##f(j#oERG;@TdpS{hUkfuRAPFD#)Oc2{lUz z#_NA_)!E$0BD{HrK>@VMsCA6r($sqI0oH36V`#|^R()qB-I==HY?xjzJN-0#&9ULR4Y2yHuS=Zt%KF^V$R%5J0pk$HWadM`cZ~ zwq;AAgG_O@xFOFi3vn%));jEvP}srxU^_# ze|UH#c)mVn#@BGSs;QFv#VM4z6&egXmxEOF1t^JrwG9f2w0A)kDmWMAzUeE}9Rd90 zM(xIdiFs}|=scjxP@i!Rbq&1*`UFXOZ=<%uu$#!HRd4p|l5&fjB8HZY&pW%kxWZRay> z!*vt>qqv8%DXssFXv8K3NiAJ%mCNlU^|YG0CAOxli%Q2MtL@`~eaDXfkNjz_xG;(T z3-^#jczC>@q?f>z!&d%p#{8~H9l9LwJPUrU{eAso)sW^zxhnxTH)2x*(=LU}DLVf3 zsj!d!8R_54AM)@~@?Gmrbk_r>zir~OL5zJD856o&nOw9$mAAEWW_2OMV( zEm58gZfP`i_fg7I0zj&Xh~DZ+X~B`W@WyCIg-Z=-2Z)3mXec5-z+2Bsw{KrFbp5vj zbrc2GT^FL+^YO}Ts0|;)zVZE9F7;WD57Ubq3lp>}OfG~QsM5B-UgcSvo2jEzPu_;I zKQ6`gnKj%wzkZ6W_ccW-ZNyaO`s^idlPire78Mn#Mfa+Dc4%9ZJgLCO|CnDHsUi+Ir z_GeG+PpA9I9N9Z$ju<)_cV6g4w$hd7hrnNPx}pNB_}S~ui&vm_x0Oel?cTL%iW)h9 zB0?po)|r|6I$_Vki+S37q+`Egf)`k8w_`JT_&b(hUq$Hp<*a(%yLZd-&PT!m%9LYZ zvi58m3v^5(zyY1*dHnQHawaeFLjI|q7}}V|b6YIwk}mbXN(H+ZGKzlF{D#c0%Z%b< zm#8p%P`C}~pfey|(e9=h(M&clru|ybp!FVi*T}vwmHB=37m%*`5*=G%MEZDbWU_|3 zN6KwB2yKD@%_xxe*ikccD>SO-TlgQ+i-ZgG$dH!}BE%iVa=w~_868M>oi1{R?K z-Hq_vAnK9dKRo^%Ik7nE!gHa&4R^SAipR!46t=VX4m5c!JpQ-@A|Ab!%Zy6BADOc!mDBPraeBRCV+B#ovXCb!i+kv5%9!% zhE+@!oDOR@bVX72=P9o;cIJZ@F%co(5t&z04urQm-5h0 zY`#KT?lyb)O<@%m?I3za!>u8dnX1d zi6xen;m%{XWu7b=l<0?#DVTe6sm0e~xiYq3F?L34+KobWvP?za_|%+;k7vK`ilb1$ zn!v(_8vAGvWL1(-FzOsiTw>@H*5~;a{7Q`9u2&5X)@qD8H`7Th=x64R4+l`33oEUt z@_C3rU{e?**rVZc!2mgykoF~DquIX-85J@>VOI}gnO5Hb!A);J0%k*=~6;tLoh&XYeiW1f@6$fzLs_eQlT>pegbnv$F zCM-r?jSSlfO7TF&v%f(!=(iS*2eC@S5FScbb`<6cwi3N_nUW3Zzt}5L|+B#eRu&NhZ8{E=M;(K!lx5c;|_#5Xr!pk22Vp3u_5p2p{U%d#->H}aLfqwVy4qL9k`gq7%Vjp z)+(rsXN}6HhjcAE}wo*<9F06y3SJYP;$HA?=2FJJ#3eflCUl zpQNmAXXvz98O&_&7C?urs%qk{7NOzpSC#v^7pM%kuwLbq?Vdsj(pE)T?N%BzV25-- z2CI1cV3_wG5~6~!kDi#q^t;8)G&1C++Fmvy@X+0x!Y6;AN^qY)DU|ayYg-A%q3`|^ zakbiU>~eKl*B-^go9EBlJn<~~Gc{lJ*#NpLU=W`>xFSFt?;Iy7n( zp8NE)LE^>3pVHVVCzHzG7EvzAU$Jj3z}uG&oxR+XHCDLpq{>V z@J}RC`%pg(wbz1m|C&5^4Y;^F5SJbub#2C|T+RH1jY_$#afH(_L{R*GZyf5Dg-$?d zBU$RaA&S%nJK+I2BKu`8Vgr`E6<3Fl%f_1R*b4~9RG(IRsF`-dG)0GKqa<$Y4%Ac9 znNmcV$^{wNGN3E;Lo7<@I6``}kB-D6wOwbv&8%drUHukuK}S ziQiu;y2K9YC{$XSncTy%z>vws;F4qXC-+h%yi1>%y0+$u07AR z_{=^1_^p2XX=m2wS9#`%6FwsV*%$@02QD>CZl)#cWn>IK%aTpvc$If#PID;Twu(VE-3xU z44)|<^GUsDX%vYpPD)ERKmH-}oPX{eD?!;A_}M`IhF!tF>UPfenYRIG&hFDF*ES*8 zjE$5mZvgs9J5O9=fzoF2AIZF>rSz3$0l2asEc+g}Ew$I?v;F5G>8%a1vVYf{!QFPU zjP~h$IdW0p>ULIJ$!mvQ7F=Fd?k^paEGe6sA_BOl?k;#h%GKOT>W0m61r62doUS+q zF)eZWZ;TOewtb#So%wfAj}1NHE86pwNf=z1le;>afAX=zef{YK=6};)nDN9w9M-&z z_PnGq__J0Z)K~RxX#6##VqYaL^VFiQtxb?)J?B4qlQt{MsR!8vy>6$Ri-0qqJvbir zqB%aZx#wgSo5tZb>+D?Kr-H~dWhyqMi#V3@%=>Ald-;BwerLy`4)w%};J_MR!+GcdKX@*n zDaQO$d_RxpURVOhOVTGFg4=n`c%jm?5D5<_7OWxXcftGY`kqD=8x}u5mDeRb!rHRP zU>Yoq#!vz&l|jv!*fx5|i}c0Y-aG|cjPO*mb;15WLtI5Am?UZ2h7E`DrVj4z?X*ID z?-Z$a{spPD?;U#}`xn1GLVD*9oykp|hNAiiwn_`M?}Qs1c2dUK&(Sw=0J>@-WnD0Ys9EDK;4|JQlW_s6D1s(!+_V^ z51ts=@HXygeqFCnJ?c!vE)tO;OPs|O4#+63=*}Xvm4j`Nqbd(*64Oe;=5%k5K+m(@ z;Y)s_3Y&@3PK!*!r+yD&Qme2#1Fw`~FG?A_ zAC*{NK&l4=Vc}0gi6eL;q~aHq;Lx~2AVLyrHR|mHBmz6bZXP_3A z{q)Jnae+!;PqbO9HnPO*P1F2TmEoxURmIe6GYXCURe`GOH!e0zWUbzZ&=<4t-#fdMpy|`}9>XYYtpvVp$u2xEW_dPA?|7A$0raYdX zT#i4aA|1PS4HNy0Klry3KkXV`_MjaI!Ehg=Q)8qb2FYtmge?V|MB@cbQ~>vGw4GlY}2}n&xD2%r@b! zRf%kQsaAa8vFLp}h6#IfU3hdBq3#i{8|J$~SWYqIC4k zjS3yIyLy;4BW0vGc~V<%N&&GzLO4X~jD??_mBRRbVF(9>EpPt_o4n9=V}JPazRnu| z;L+#ff$>^l?YZ}Dw|-A4-VsH}W;bddK2GwH zybq_pk(m42+`{wqe&%E9>?hYf-CL!x`zt%YMgo1_odyNqb!YxmWGS!v@*F07vP;RA zaNpxAi*AgQKK#utjlk}s@?%y{s@>=Cc~Y%##?8?Q98W2+aj z$Q3&68#Zly4WL4xc?rT_vAP$w8T|Wqp6;fsTZajZd|qU1F71$ysLD;cEM= z@hhQJX{^R!DAHWt8F%EQc+UlozTcw03H}xCyTd_8aOiUDNQ;TBq>x1*l2uL`|0XlS z0oE%q$rr)ptXE^_?h1UmSjP*81zpA0y*IzlnI>_u56n@Exjm>fy8JUlbHCz~ zv#r#}>c+A@5i~r{GxHDMQS~DOMgyL1FV^F%|I`0rfm=_Da|IeSH%fm&`*=s>WM50| z5)u!u<=76?Z3GY?tTnoKSiCwd0&4#?Wvu`Ur4(+FYJxs7H2jgH1eCn_Ja$Xs;Rnj) ze|x~WUu7N>Wh$3{1oOPYo52dbKG^F?WHzKAqfZdR%Cu3j3l9?u`{TZCbna^j(cf{J z`Ey{e1ol}U)6N{37rOfHt{rpb^PetIdIr4!C3++0{KNOBi0?_^g=TEOz2W!Uny0)i zEmU(NGu7&XU%ipZ-)!OXXUKJ=FcPecox_p=b#E0edd$PyR2l<3;<+DdG9qkB2{Q?WSZvSY!P23{0`+ z!VoSaqDTE7XXw6T?cfF-lH<3AgKfGV9hF;Rhq_>&;oIpWY&wM_Q_vo*p-2h!|ArA; z0nXJl=up7b;rq5bl3k@8?9U;X?0OCU;-|fuTkypJRlL&?R2V(?lj_kN$Hc3#4 zt#l)7d!!Zp1HPIMUce_o5hFUigS|riu5DuV!C3sor>px$YTrLhYmFq0;%~z){qePH zS{!c}8Y=VM5NS-|)Im?*P}67L&>p>`uVeuAiTtJkxALS01qM|qRk%S=aX5!GmxmEG5s_u+ z$xl<#yI7;T_^I~#hN|&vqzv@LBa3V+%;PJ~gkqtI+#CmO!&{zmd1W}|R8mN9*#=ou?IJ1$63ZU+yAm3wV3}v+RGxTRb7So5&uz+UG^dh^EO}O0_9swUrLWLkg zU`)?(@IH7G2M@m0x207-l#R_csdBY=T?2B!V0N)@#&ss_v;{(|>lW|9w5g4$`Aw`0@{7(0d1dH!e+8)CJYX2;0TRuwuL73288)t%0ks`_DL|=tmUXRM zFyX1yR4EVv5T(wPh!BjmY5u2mCNdjBGp#3#XvH46%2`b_9y(aiM848Y(UvlGg=AIf zxmormZv(oHHO^B~B{e6t&m%~t6tTII@9|g0!)l}^Oq29y;A=lLun?RHE^|%;H5^0^ zz#gDM4ow}rBqgPwM#vk`oIIs&CaT1}Cf3qiqswBSmDDk9{a#&2Kb-f5g~+uuE6?V9 zvDi8>)%==%$%!4?$IVq#m`*4~xy{gqgp$0yIE`_OpB$96@5irLQE*>OZE0rECpgr# zaTA^>#TAD9AY#P00-BhbMk&f5d$saz)X_0pRh373^q}f3xvKpp4B^XKQAr*yFBED0 zTzvi!DM;shkZLjx1@hNZHOJygL?HJ3r}-o2*(dgIf4eZVU55zXY|dP)=AQ+?FGn8; zy+nR-^?wjO{_JIO`V+;!)d%B=vBCI5KnOrxj)66pN!&$IDo4EdBYZ#>@?E?EycPWQ9J*A7ld zeG{~O^;;yC|DH;(YwU%;9{)!7gUCy3G~>gOFtx~{Z>OF3(o1b3OOdd%2dm$;EMn(G zbvFbCn}1c9WmK#=YKB#m4ML(mAnh2VqRMdv9PVT@(6iru%ZRewMf?5x%tU065ZT;+=eVGZC?=b8A1PLv5nhx$oMfNAS_> zomTaI&W9fo!fSm$*`D9Hs>ykFYJ&5cH6g~gaTlr;Z<;>nVCz;ZJw8{xCGW+ zWJp(|?Pm!;yic&COi#;08BVn@iJ7b_HvI=6u{c_d*JkyAFFspiSK>+dk4FpSdGFP^ zatVS`+2;HP%fQA(jZiGb(Y5ju8!+-FuWt=iKLHw$X6o(VLISC`YA;`hz))E z%R(warhx%$OsYzv~h()@(j# zg|Gj9(d=O!FaI2yddr0HO3^*{ct;o zMgz+pAi}>3Q!U9CryW@v=jo zFFc6c;sk(rf({Z`<#wMH2u-j80ZQL~v%1OV(4g)t`?sIy)_5-fKu7$e#4mJ2;+J0a z9n=@aKTp9P7U&KWK)_exhZZB+Xx#ln>l2Xsyv)IYTV%gKqhLM!M<3-rP9C~y&tn;R z|Fr(lgA(550O~5Sk%Vs`1gzZ`1K(4=l`1e3MO1 zI6l;T>~rmzLSd$J2jfd@+e&L9;qjke@Q;mB%yXh_95uey+>yG}SvB?fu{y>5k$mqqy)W*fF zL>CS-QR!skrtF}qrvr_-S$#Y99hzmBOsROymo{0xSWR5m7qL=`R{Y~OoI1QTHH)^5 zNmH9QyQkGyZ(oMFVHEb|F%1p>Gx8`c4h>#aN3X^^xa91VJ*ZdQYM7q)iC8CMvJnfw z*R=ug5IiJ{@cfzM8&V<~fK)%Go2+_HXZyo+Cz<@p1sm zwB}Y1NqDM93D79T7lKnyG2d?ve^D#%&ngKUuSlcxe$O2;WqH2XjiuNS1;t9Q*#~Eh z%!S;uMdOl_&-gfh8#iJG>{9`{xvJay0oRZj%mCYYI;1J}_&)R*<;54tB^~D(m(5t$ zhPwSbhKpY?C;w<2-F-8U!-6lOE$Yu>NW)Hso`JUgLnbu4-X(+0rW`x>RrHZ}8ijZ> zf;CoYZugw7FAXr?ODWZxa_UO5@K{CG{lfm zn%z`l9K7hD@P*`w?!Nmn0wjsfy}8otM+S{t^e3I-{SCSVn8)dOxp4L>vokz`hT(qNhD!|B?YPHt@SEEjc84?$UHWNp* z15j##Jx`t%?HFv>nQN15fn`)Vxf>hEs`LywkITmPht(O4r338~hAb?T7uVakF%0%w zMVnOGgvpfBCkAn&^rj1B&S#ae2PW9|CqE$3cHMSCwNH@KbaPgE=S#I)*xH&v>mvTi z55=LCLjQfrm+YNs5ZN@e2CW%k4YxmhgFCN6mz$9$jKZ1#tz^A*O3GLJ8rv4d7Dc4| zKcp?Uhg=jdc|qW^@Bcb+upds>w;fY(Ht^k5dw&K6AMeYWjKg}8j2y|8l0LFUgm2O}T6mC3can)mU%;lku5 z+s)Wnfh5UMyH(yurCr0aXJNvCFmqI$M|&`HuDN$<-GilfjdfssE+Q#Z$9zkTca|l3 zT<$@-cV}X~5gR+PKPaF3vRC__2WrjwTAa~2C0ObOvSI&g@kj4XCV(Gw)1Is$1ia}17C-RZwDqO@iBVh>y9&$knFN-Q&#c^SD*Ee z%^8E9JGnnL5*U@|YRrKdKWgcKi@OiIf4~ph9(;0b3+S`b>63goM%uq|;mcpTIf`w0 z!MLS6=^`_*;18D{?TPz^lxE@K`!P+{cVLpw*GhYRwXL0vhvV9cnT>%H9@@V}q$oNU z{T;q)-N5?)cFH(6w6ckTd=)Fgb>xeVXp8K2Q9opir(kC|?rB&#O`epHAIW}nccD3( zbXlzB{dUUZ3J74`1WzxTQbS`PuI}F`!A3xWRYE;iSB_0ISYMq%Tmng88Ay5nDG zQ@-Smu1E2Pe^GAO@<(hHu|gq6=)o?VAule-pT8x4>w~d2_k+k*t$vBxa7-x|2vFCn zi7Q$aKj*Njlq_b*MN~@Z@VLhXbHsTN)fL3#N@N&N*}3p1g2w6ats8LTAAXJ_VdIEN z{y`^J8P-KwL5z)V1E4K-$R?A`3HaG}+LOGom!uFHmP)|#S0%C&Tjat?5sazq6SHH< zEL!xl+0}<>*vmdXNX=P8L*iw8XX#4gZ6M)#WP`h-%k1rDTh*UZOi1#|ccahD)*bs< zBWt=G*Y|nH7tFU7OrrqG6ryO|L1h%f2yNB1Be7i+1SFbRCAZ#Ne&PQ%u7+PIN>Ot< zy;-BiD(IG1sH^s~do^TvLn1jhdikU-15K zga^aR)ssfFBtnT!+zSj*I+N=o!C9cKujGriU_sVD!{MVBIu~?oq5q({wH+0$>2pj; z8|nGP{~G~1U-)}gD&?M!j|`(N8GX2~afmj$wQD}q&%z8u7jbZ8Z;f)0+ZV#UO(LE$ zzt)c6{Bv!*;?%Vx;zNm7?#Mo{?(E^~Jm9jdA5x zfKw|#!at^U22EdljZKuV$gR2)whJ_@^6HPaTQEfJHxsk}ta(Z17KYjN8Z<3$H7l0k z@uF%gB2{A{nEXm2!b7`)w6qqhiuYwypfe<@%d#fRKjNx=(fR#rDRk~gcI&T*e zJRz1?-RvJ@(gC$Inr|*qr-7GSCvh*}03pgqHcEXG3#|rE*c!WSRPG0(?L+Ncy-e*k zmnVtDU?t2#uUCG;p))KEK0-A?#*{X|@eqh|V_96}P0_DjRt-b`wyP}L-r(emBG-mO z)?m{?luUn>nib8N8ve>=a-)~MDS59M7N2{Br&%|bp3oQ`XsAbr(S`v)+bx3?CO9V9 z;rsA@@pulb{!)6rd6?X^Wj5W zhy!qAI27$QfG#kcnQksyvbqt1ke;3%NOXjiOnhppRcDNo$KQw~r=0L?-F zp^NErTI4k^OGI+rBaLABRk}XA3TB~kCw(ww7^Y7#uZbrv)P=&3yI$)ea<-Gb-6i*$ z@EU3!z~z;rACCvvMQx&K{~S)A8uJb3nwB?{wOKbea-03v=CVvYBOmRNS{N z&JJGm_|XYeRn4nwepA}qh^V6hc>L@~Rkf>paCd*LZb(L+vQhQ8|c+ zA28nkzaeuJ*ZkpJ(fP#{0KEj^^KFMEoZPe72~+)VC2HuH%>&9NS?hz4;Gex1z9+3u z&N`hxKDBaTAmF@x%<*X1!#V2BC6_)8@zW7G;X41kJE^X_mKMCZPq$j+UD>)%VKMisk5!fN7= zSsLxkalpHdAI#VcxCN_oFh}^_kYP9A`K&vY6Q+Wq>i^o_7c^N7=AK$n?Kv2CwRuQ* z1x}%^PTs-LhpMu_x%!Aqu)lUrlz=mFwvXKu%$}6oUe&pl{pSPuqsAJh(OK zPVFbYHP@*g(kp|F5Dkv~0sm7!-ofVYIWB;lZ;#(y3E*uv1{kDQlNtZ=a)l=XDhL=r zN)kvE!l@rGsyk#hn$zIhx3w_ugTCtH_9kB8@{(K1LdRj&9@Mz7VLKxf9F`qu`?GVG zbzwa6_{r;c99hwAStrk>B(r|d!*sgPg{3>`fgj+zfrkj*sJ5s|+XrlMA9clAv=nI< z4;1ele4-ULxD3w>aXA%O*QuJ+9@6M2ke$LxBE3(*|c81ryFi5&hQand9PxjHKj z@~?y}a{m1?d|n_6by)dSp#s_bVT=_obboC>>2$Do?~#MxIJkgieW3V| zKQV!trM?e$*73c5Y&59$g3-o>-y%~Vl1Odhx@TRgN)zE5c@;-bGVRU!RAph>S;Jvb zy_P@!eNcJ<<>~5qi4A6xSH&L=$n*~rKfB%Cd59nh^4}GbJy)K$@Nwj4*MZ_Lj?7Ki zyg9bNC%v|&Gomaqp~ckkhvbp3##;{(v{}n2bZ0Aua8cW--P2em?#U9`ws`DM&Ysrx z^>>>IITk&4S%TM$)x%))w-MZG{8)d6!s_6z7=7f4WML)t( zFzyQ-0QPBx9HHyz=2e^6o(cAws;zdKGBSwh|Q4iM| zRK-2qk^Z?B4XJ$54#aVE@G_c~Y_=J(=4VIH)JtJsK1T=IlhRF%jW+V_i#U% zae9$}!wbI@ZWy%wd<*bp>t>#|%7_u!j%4mdrb%>qwxTkS1^u%pIC2lx;fH_H)mc$M zWBLs?L{OF;-0pXI1%1K)REzrD4(L7LSL81zZtYX-KRW(45o!&UFR{CPaes*z6cdT) zy%(H&u!PAwcFt$X^;RiN&2`hw@IQz5J9d<g7sSlz;2is3|eTR-67h?Y9bE`TZE=z!he(~*nx0D{V?3dAXu{}z`D}>(f zik^ed40AW`I}U(E=Dc)ELq?)F$GDr29xRwpwcP&!^pKz74Ls z@zj;_y>a}8BiP&3)!wWOxHvedM4F%0#>{2e);FYkJJ?XioX}h8QCdx?^VP$a+E22H zz>!S*U0n2$Ex8!wIM~=Mt2Yn}r^4KDZsQweo^n!SOLi#pSWgdWivR}!#o^LB z{;#Rv-nzk##v-COQmdA^A&I5S?%X)l=qusO+uV6wwt{B z0Iv$1GcUY+BQBs1qoF>x&1Z~Hc&*i<_0ho+xXM`rz>M|~@jsPJQHXAtj!Sz7>FYjU z_HQ?H@1GlX6nfjaC&2z5>hm|Oq;rD(xf&TOq$0QE2G^2g$efCYG=AWfN*Y7yY17C9 zBib{Z$ZLKo%R=C%Jli3Rspg_0ON}qvK@(x0#3_SsK}f! z{OW#pY~q1C4q|Mm6opK0>ennaIL)K3Lz*(CHI^2ORB>x9^%&w4uetn4DxAdye+#`nlX)1~X{8O^RQ}~I84!k9`ic=C@+H!|*LV3>D z8vYcT)EmkV13!8F9pePAS(UYBnc zx4=Twzy8)8N~^{%1bEv-{;V4kTidVG-A+-|J)`QPL-IErzqs^>o^;XYv)w^(0p|54 z#F;?qOW2B>zHpJn5>T*HZw;h$i}pTW6%Xi>bR(i%D>{@HK4=oBDil4RR|bEW7LR)C zEhKs8`fDS79EB;hTgnY&SeR}IgKX(dG-9-4-`+@!?! z8yQ;DTSV}K+4Kw5`!x3;9WAG`dfZsPtu*=qAe&!Aw-eW_-fNZKL9$2Eac<}6(ggK{ zC^nk&7U1hcK5?q3uIJWBLAP+>X9ZZVlqWDY88x!Z2%q}zc|8F@WatzO=E3^wRSSE5 zY2)_o0<6uUqy%hOL{4+}y?>agw$t?N0#cLu)+KPVTbR4r*Qxa?xDjBaK&%nNL$(pm zm2XXFgs#Wgxi_jV`0c$DPH=pLk0hum{DAA_ZmzU(*P8nG@7g^c5C1`_yI6SbwBad& z#KV>TkQ4*iK8*-sLic}raUgv{6D4&&sYrwYpS9<15N=9279_|{#=JE5_FMT%wFa=~ zoS}pD?H{4a-?)o;~%5uWSKRGi-L4U4+&;UEvfJ|zavsTA)v*c^U~o+hZS^f?M6%3w*nZ2H9!Kc{n^1QHf8G;3ZE z*^0Il!1Dh^lr6e*>9bK#G30Gr3lM>BX7{crg5EG7{z7K-_F1=Mvqs0X?)US7P+}0- za2?RA){02!Z;6BPu3U&in%jfk)_K0r8T>cWGchSqC`EG+j-XLsMFKBU63 zR&f@RarM;{W98VO8CYf$si8N%%(y>p8m_v722!73{C()2y_!|pS=ibW1tjhQW5z$Jg7Ua#)3@;;fw>QrG=?(KNcz3tVRtigM}_GMZ$ z2&m-83vB9O?7#RBx~9ynE%Z0|&|pv5Et!jR?NepIZXl`b@n&{NHLDBAAYvT^#V)MX zxIDH@3enCoGLY8CESlk9h69t|fgVpQLV8Lqf?_oV-t7K24C1X9R6YzQlxTuNuvrr` zk2PD>F8X*`gxPH&a)a8Wss{=ELfG`|=`@5tk96X6Q>cSiJ=BEgvbdAv29q>J13av3 zl4?A6q#%r&iW7m_A=+f;OGM0%dPcBXRV=`EaNa8m;QUjxBH2PjgILe93&w`)0>z zC(m%mu`6n#d&HAo#{}{ifJ=MtuY3&m#V>tYm%s1%K;-zZz@KJGZ#iFIZ(UZ${^k32 zy*N-F!ue8A0T8HhvVs!iqqQLZ`+a$h+|;2`_V&{i&&aH-$|$eTBeQWzA@8)a)q)sj zlsE1F^=fWN#!^`P7@e>iWfJy93ikyim)-dyLMGcc#u@~9Uv5>GrMod@oI{m&fxlot z@CJvCf{D(9?0hahj=_JaZrJgqpfHV-9pLnu8Cn|&*R!Q=&fuz|1mxVwxzDM?$<=ix z()x=3l1Yos*Rz#7Gxqtx;>l^TX%v%v@I<=Ee#q@h+0#C6btIDC4Vz3XM_<+bcbHv@ zRUMiWZsU?E2RFaHdOE^>IK%G(dvmUUmP2%Vs(%uGo+y!N$X~Rg-l1=SG1Web8!@j$v_B z_1(AGtE$+d-G}ZUSL>$CVlte5zqI}twFppyU;lO9`uUl1d(Wq%ADNPpsHxVG=YzF3 zNCjaI%$V>%mjCT}Z0EP$IWr*NJh$~H>9nUm_s6+Q2V*ek@Z!-id?UYoL2^l6zDNQ| zQiQwb+e4BS)sQN-7P_~(7={>kCp-@@!Je-pxv27&4$yU`k~s9IMmGISN4%v|Gdkwo z(JiZoH2?T>*=t?Yz|S9i<7(YXua#!sga9e$58LXZgAJyboFQAc%dJ(cYICPG^C)1y zC>wD-Y*XWq}WZPE7#7lmMW$q1Y5Vc16{_0oh14qEa8mv zHjkCBSE{!89zgdVcE|h|4#>*EMu_USZQk@$o0q5Nhn){Q+W@^RKZbi2X%4<4o$5Ms zpfMm%^f!k%xs$b)x@6!y=g6gH3;?j-_Ge;FFNw8)vq(6~;I-cKgS{Uw<2(H5!3;u0 zz{A3bcRPXc>=sSzhBi!@ysRKXJg0ux@u$}>Y~SCRtCej6*}ewwgw%(_#ma}FWyg3z zMxYmzBkuowKe0Nkv;?{A@X)I$AzI}JyI{5XnJu>-PIoA$H5`>u%O1))9(mU3sxDW& zgT2V?+lQDWehA>7U+&2Zc+<2=f>N)VXai-?QuB7B<}f?$cKDv{R7MN**wZ;ys6Ri{+niBR2{<{8=0=ViUXHuD|hnU zXh#A)+8WiQJp37Nw><1hEY6D_x!e4Sg=@YnWtL6R37{W8$uK6G4{~3&3ahvknm>^T zHuv^Y?0{w)XPPz>9Luz)isa)6*Y23G2wyRI(7_rLWw)cV8*2;7zynHdrXMmUHg#CZ%pT!B`>8Mc$0O)$9h|fd+}PXqsBv zu6&M!>WH^s!M7uR^AAYBH~o`}nv6bv`nyDd9~NN#A+V0Yl*05# z3Pa29R(z9t{3^k@0V$xh`0e5diq!k|O~QQw?GKv|>q>m3%f~~x^HltS>>JFh!+vYS zQ)h_|+UQuZ_724A4#C)~1OLyE)bE15DS#GhJ<~1IzBPA-h#Af}$w-f*tz;B^-iYz* zg3>6Avp+S%MweXS!n9;Q*LY7nyNT;l0U2FTq(RIiZ&WZGdnxTh9raOxoF!rWF>7wK}~#6=Bd zhk4bimO5rodcaq&fm6C(LvALE7I~T=QC0>*b7CTl1ZqkH2zUppTZGjJ*g4Q*wBwPf zRU!>AWOl=D+v^%3V8HP0BrUTtlU-C5C|?!PeL0VjJX38mz4?P;3vJ3af}?>OAj44* zbllDlKke__?GsBHN>x!smehFdALJxY)2Qvu_gT}fk8S6f*&PAtNPuw1OJX~=J=6cT z*9%2bo%!Y9Ec_;Gx*a;d(_XL|r8-0wE)ZR+<#S+}94|*hsGP5I zMgu}8tUR!3)7rMo%&@0{=?-?Sk$76wNI-CLV^9F8g09jWW$}R@`9a8-@VF^u$?a&U z4Dv!FYt$xOXP#n~Hi_t<{6{2%7iVlUSDS#%DxQJs6FzSTp<9r-K;ydlEp&+V5s4zS zmoBP|ZrJEa?@mj`?i_3>Ozo*_ZI)U1Ia>u6XYTtr)|b{dD<-GW(c0DrQysF39difN z#^wqpV#aHMGD%m*ujB%mgevJ;l{L90f)>S*dv}!yo7aEQHojFoyHm@fX&BJv;RW?O zu+Iyb-U_ufU&xpCu<9m6Ka`a|U^}ACOgdBo)3P1Ld0-wI>n5P)^5Rwnx@752_&U?U zQB4u?6^FcJrDz~cZ`!r6O|>kVrZ2<&&)7H4>rba=LkQ%u>J5;*b5Ev`_6epH!R$%^ z7L9VdjHNd=BD5M2-<4|wW*}L==_KUFdL^0U8C&HFL^L&Q)WrnXX;8JlTQcuiTa7Jl zj+6IWk=y6BNR@*@xJa?D>W8 z7HalMqY#FS@+a?O{@n{ldy~IG?cI`RUOiAergX}i1u$EkHgt;q^~AL0_~pwS_u9L@ zQC4C@kLqA2V9$+=@@8pHp z%lvJuUpM<{bZ$Sg$dPy+dGhasa}( z;wEp7YE~3<&pSJl_E(xO;jUO=KO-ujAv>e54^?%_XCNqUPR*m5wNP&%ODM8%$qPQ? z8oS_MyShBrS$pY#nG+}c*?FzA-7UfK{Z$ICul?ZbAT4xb#!-5T*2-bGC92lHj6Gvn zYB7nHD~S$BxE@-R-DmFk8uEk1v|@xgaPR#2V-Q*RrOXTp7eV_7?T z#X?d}9)4GAP15Ck>3z9=aQBSq89ZNYF?N2`pZ&%8F zYGyq8*y~QMe_dd|DNBsS!644Xk`ej=-o@aQ+L*7F7rNu^e-itNb={XYEVc8#6JPwD z6Z)rB=r|OjD7;K&yH=lz)SOFKJeXKp9};34Og(YyqgrVi-nsse-&dKSFz!H7$T6Hh z`|uVagFkNhqn4?XN?bw=z(6+tkhE}-`7*pe`@Tm#sYfQsH?lCMxiWLV$=$QUvDlk& zzj2rUaPyaTi8GQNzjEhgYsx;fSm_4MvDiE%JRS>hR}NR1ar+To?Byts$leOmTzM7w zI8dZ8QX*$ueysx)xC2^_YQH3&zoEj7zwj@PEV#{8>s9Y}csKK`_17HS-B{;uic=^C zPl~^ecKOD|{LH2PaO&3;zDkay^WhPWM?_Yn76^0t`Nerft5;hx?7oMl5V+FsUXL&F z9qpuNJic=sOYLy(Q#+m5u@jqN+Tdy&n37FD@Yi8z4z2SUi>>C)a)5*i=1!zY%K9jp zS}dm$ZzpGvEMUI-f1I&!G&cgMYO-6q z+?P{j|7@F)s@Wwk+B&aXekQROxK}zU>tCbBU)Hmb2AT@`mi?o8_dl$kr-!Z-09GtB z9}&UFQz1LPwGHEb@~jm_z~G=eo^Cb@HEyb94f`~oYibOLjJ#8onCWEdwhx3pWcfJ{ z*g+V~U5@6Y`4&Ok!ZTd%`#N4@%OmmNqRC(HksypukSD4J#E-&g;7BAK!PTua|xA{?EPR zOI&a5kK)m=Lr_R-a-7?}Zi1gJO2bfj2@Dx>oOV4g^sM@7egEh5QHj3H_uv&)u(Oaym-d@hlp#_{o zgo*r1j?>SAC9Ch~)XeVh_QM-$G{j8g^Mq;hIW*$*Q0et8cNSa-JG(QfuTDj0dpuhR z2IsrE`4u?=z^Ep0;(pa;X*$%CDKn4LSs(n#(_rE-vNtLz01G9)E#>))X$6><(FWXeq5k3* z9Jm4dh7d@<@@xn~9x|J+2hXS5kELthVp9T?nO!|Zya${x|jXVNUb*H(hZ(YcuKlLuST6XD%7 z%1Af#2H42Y>fXqN3%E>m+BMJ34c#c}rMjh!y;U7-u)TP$Sgx{xrR=HVf@7_;H>>py;` z8;?P!R%N;72kL4mcw8F}CD3ug`B&Hb1HY46v=(w-^U~S7baGkuHjLUQ9O*o4NIgR_ z2L5bZefu`lpsPbXVV3GQWq~yMU!~uXF3#n{BmL6LfEV{Wg?e8fE6zV7l@gWsev+G^ z7<&2auV>HFEp}_FPQb6Ncvf2A)-ttMfw-*eLAkbd(4Q<*-_oXR6Ox; z{c6J5#NjBO1=rJ}T-ooG>;H4zt)YF1`3($t{f*y5nR0j%_H>_sqb8PadoWrY^*ru} zyUz8!o&TWKMG=@un;&`H9yy9J!D?SF^aqc!NPZ3G+U+P8Zp&PhX6H3hfp zC}eC<0Fw!Bb&D6h;NA4f|E@B*?wOAd)~g#lLrdEAP6?>3%nJG16y$eKviKE1CE%`B z(5L*?V^9;arW$Vs5Zw-IUEM!f7euZ%OW^4E=F4F6i!%-|jLX==3onec9*B<(TepiU z_5U6YH|$@d-yBbRA^7xjxSL=D2k2{dGe!Q!VU?REEB`b1CL?NpwOo01`Qiz;)xb$c zY}|<0(}FzTg-wDV%I~*@z4I&!J^2tg#FoEB{oZQ1=hvnyedZkg$NH8NtMtgZv9Y_S zQnt!&*TXz@&@77U5Ht{dglRAme5Lu2-)cl(reYf5Kf~X7;^BylD; zQ7ylMJ~aHAsMpYr)}GVvPI;PN>(*`$t%H9pGpl*2hU?O}asSoYZHE@U(%UM#+i?N% z8A=0;G5cWU@Gta}{yDjS@pv@k2RpH%F-6{-lhyAeVr@{|MyzI5@3`_j8AEBagm_+l z0rO!e6T(k-yY9Yz&q23|@5nvL_FE&r?sL5+4-p_*Z?fFJUEy0}W2m1}a_EQdaZ5Zi zMM{v-&aeT{;^ohuvW6GVA@!niOLh0JSlrl?@D&s4u-5L<`6D;w`CHbk@d}62#osbU zlt3Pt`YHp9pMaTIw!F&?q3KM?a53D^>X zgSU@|$^Yik;)jc!6kxLjlr-ac3E@l3zmN{?gJW!kF3?J6AR}BT&Mbch=#{&~@f*`h zA!7DMFoy;GW^uBAUE-eC{-3JeJ)Q|a{QvGOpM+A$Sve)AoX;eckV7OnS8|+@$ZTUO za!4rTJk%U2ryLivEjb_OeAw8^X@+gsY|i_6{OozydCFAV(d;!?U-rkcT8ekD~a+R0vm&a9j|W&NZ`{%@U-yf@E0%6*%ggt{?H zXK1gQ6go^Cn`qFTHl5HN0>Q{-DIP7Rd>=SzYwb;}VA>+z@#Isys56F=&{tm_E z6Jea^`r^1UQe;4b$n)2r#uAlJE(qxH*LI+(7-di$3)P$1{Wxrmd&@1;QMjLpOsN+i z{@O6oicmPP; zuCMIX$}qqJR~JFvL#z-jeB?E$=|!6mAl-Q3s&=GI(j>P=+2r+8^C*O zml0zfmF2wEYZoe}s)ZKd6G%aja_x7S{Q3(mB~pGY<0d;|akm>`my!xcG)CeP*dIjc zhKVeETeElIFu?Bnr4jeCvHIe>gyc=>-o|{|Uh+uDkGm0C*GB|Z7ui?Yc2L>;QqAv0 z-!3sTfJ~CtDh;4YLCca7gK#QEF4O4drQB7V56)X$AK$sStDJTj>f-b*hd>qBB#fx7 zqHz^nzlqIW^QrxUi)vo^1vY(CJfo7fH-k+JM9C0N78n@Cpl(GlQ)Qc)Tnf^!~g zt03k?s;!H=CsZhB<(ij=Myd<1HW~hFs;$s0Eh0Oj^$_473G+m&?FzZbN0EWJqI^Sy zZ0#3n5b`^XWa*sImzU7Moc>;L9y(!FL9NR)^C2qK7a=x*+kOUzU_1809|DBneqT*| zrDvJa{P&iXme*F$GD9y&HrVh2!|rMhWOJJ^FrxxoEWT0!x?j{!>MAP1s%B zxrdwrV*x8c7ENY(P&U=?LWP}Wk`_?~QyOUDY92J3)&7G~i%QRYU)LnrFq(qjajKFj zA4h>J#v`@M-Jy&1QZAc4IDk=Ok}kn{gy90uVna5nnYjqYOarTUI)86T0-Q+r7^yWSB%WhB=4J>{V}H#D!vF!%k*-poBPtsizC?X$_55C`rVVpPku^ zeE8%0|6gPJzn#tTq2M8=dMfwfWl5Vkbn8<~h>*D#`^EDKEn880*+!n6V;Vj;eBNP> zr$<~#IRfxvKfC8Q{27(EPV1Ca>K-+-I?;N$CiDHTilGLmC^t7m#^a}eSyDW;j2L>XV0c?o6miHd140^h9u8g$4uaQxu=Y)ZC^NR z2c#7mLG-Rmc3FKjj~QfYY!z{Yv?4Gi z$=%xEVH+$rcWT6i;Vp{yX4$b*D|z}&B5&rO1r7eL^*OS$KC+buyAAU*$hGX9YfaXq z1*9!#S$1Ly-`@2d8G6$KB$ZLW9^|dQokI{1T<>xbzLA99L)deN95Jl#J^gU2SgYHk zXf5YHw^PO3zJXgA(kW2r>ZN#BNjBe;EeqWJ)1Zgd9qK^{4fyd_LRUz$oeq()BUnzr z;*Nlv=%iJQVq%fEn&3Irltdo+u%O+k0sZP%I_k0^tRkhl1~pr==F;2~`ag&8ryt3m zes1V-Ct;!DggEMtgx0?w!F7Aiq4@i>j+Dn1`kKtA(MzHEMjtd5vCc6$tYc?ZH1>j1 zFNyWXHBR7vFa%$`wHxe%8{OltGgUEW<8#Q!O2Gj3+-&#vE+4_i2C4VjW2U;CtBFzf zFWrwTGw$y{vz66I0xN?7vml+;A-0^(*^Km^D- z`?RLXuMms={*y%2=sTA7Gxc))OIOlG<3`fM-RhWshVnH0-F?3DNb@64Pi9E#-3*7` z)5S*-t-{&Q$IHL6)g{pGd+3NYXjTt*t9^-y=;m2Ne486vaXR<3+a}X0H+f6*(LL>r z^>X*{+9~d$a$#K~1u-lpP%gN)M{yk)fKBr>d#mTN40iQ&{4xB#CIX*6Qc-%|NN*glkrMeA^L z+lii#9Nw3UO1%XSKNrSEePFLQk^}@O$KH^{;BW5y{=xlyzu6>+X^*Zx*=NbR@TVE? zqJZ&A>R?YTZcpxf%78uIBfOu-3@ShwehOwUhkY9ntmB@MyxrK+H)$GJTxwEZ+jLO3H3JbpTA;KHC3{%ylA``5C$!!80N{ zUuy7q&_upBqS4&?RY_#G2F}a-wQbW`u>)s#po6Q4%A_uF=Auk@n0;~oxA*5i^E31OT)qBC5lNPOf2s}rbpFw)O8_K$%0!h?;(Dm^k4sdRF>W+^l*5`C}~ z6n}ARxNmX2kS@OVH;qer-nFlfe(2J}w*_!)Gr zcW28`+ANg;qdj}9Zs$Si*Y?QH%vcKtr|^t<1}(yiRSfN) z_;lT^7xq0aUtWPKQxRUbk9N#v`-Q;+Klyt|yD*J?+4NjCYzGr*=P{M3zBtdA0T=75 z&t?W0gpKXQ9^8jsr|Ph$z-YH9>6dh)j8(G4Ux{bVxAnuuk&v04T+;K+;fDGu1!spG zwq{AKlGkPQxQFz`{Sjv*7bL*?`sQf<_x6S^$BWE$>Q(Wg1IKGC2?jy5y|tfpZ>iYw zfN;?QqnA|`w1y9pOC8taZ_T2og`C{nEXE>J(S(WKeNCyvsxPb%s^og*m_20 zb3OHeT*vcTr2H)_}jF^YAw3GEksbt1sr>W`b6T* z2JJUM=XA#9%mlNV)qYCymp8A^rZ*mc@%jwkwcW&SWSzuW!u*NL9}_$aA4`?EcU={h zi8(&@2Y>ubxr9WFsdfQdv=$h#;kipkB5dwrl2*Q}9Lc7>Po@iF3$g)G%F;<^ffg^G z7>X=$ywU%4jY1-QveTqDZZSCLp;VMlWe9J8_URBu8vm4bgZ)Ea7q*7E^YiVd_ z+R_=Fgg=Wl@)|fMUH;rjXW`hDQmKXhw3TvBVb}eZ<0jXZviFa+Q4cd`Tz(oUPW_Z1 zXsdOK!(Q#3oVy>CmYjV0RYc$}&&Wsu=Jd&$!jsY)Lmh0wr@%}?Gxj<0?4(Eahggb& zZNwHbV;pntjnWohQOb{zhiJ8(4Ym2L=by`2JXZUdoHy-yvU7?WX~EWX<@_YAB)0k#v$-_)}4Jy-DCbxB4Z^H~GWijbo{Tw1Ww1(dQ&yPW%;#8Zz8+MgPzfb%;a*C)JzO3Yy9? z6t8x>Jv-OJ^LOT>xrk~w`}zZjZ_3zW{Pte3UHcfHqQU3YboOTYrwzd1KMk)RxtNdIz^21r)a(FE&KPg9JlEcbe~=Ml?_BZ7O4QwsH*nHs?8=*dA;)QVc^44Xu7!l(>d(*7 zyCX)6Vshpcl+^S0?}2sSir;GXt2Z*Z;dOYHie7g4iT`d%cUzl8g9pDVdTLdcwx|Ec z&xik+(AUdp{0sB@9_^uY#z7!tO}9ee~lyGpC2BD?sMjlbe>#cBX;&% z-ErO_;%fUPp2TfF#8z@XZ%6+N+^-r)OKGC)(u+7A{!WK6A}57kbrNbr@qAat+xQ`e zH$>yA-g?trPsQ7pzwpWQ(6QcjiQDUQI`Lo%MT5Sk(bvLZLJ_yuA~*+WqZa3V*@#6* zEw}fwldqOf2glVFr5M z7b}#o>TwT;o5!_5CZ^3jf<2ejwl6|gET>UX@-O$D@9Dj9xOH?Kw})Nywq1RP>i+TV zrt!f?7^_EUBd6dYQ~RCF*}reU62=OLtFEz?`g%^w;0=CI*1x!fMxE?o)m!`fKsQnn zJW}G%dlfv68t44?A+@o&sOaxOc+uK`l`H0eFc_j=SDW@|$yF(fPjKr>n55{E3o?5` zMGOTQKW*F~{yXMA_m;=*hc~2ym#YzjbD20gG(%5cxtq)Ilof7k4Mu_^jW=AI2dE^} zRuuWy5NPz;Nsju~G49}#bT;E-9-^hCexa~&I`}wI+8EnATbmvx$c|UpD(!ZTLT=<+ zUc}gu3Z}Y3g1XComrYzZXk9s!q#MJ}A4vMo3;?$SG~%K}U(?wy3~9{` z3f%8R1+xyI8f4@&mTlU}YVI!Vz^wg`egIFC6Fa?TSLxH_klQUINP11zDaivH3{AuPYw*{4C#BDP7?7LYE2`WqwK285STb=O#g-4?~728 zKx0_DdInGsk!k>Omnf;IoRO<}%_3%3`A|gIIB|JYdpR;QB(c~_lt>@QE0MeM zz=b(;+aBPxbh3}2wo`J~^j2U*u*+TV`s^IS%#OL!!oO_WKh2quuc?wDr=497}&Q zWf@3fgUT!9x&k!MxXk_V{&Z&r&BvYUheKkUw(k;P4~lcQ#rFVa1WoaJO#To3?7-wl ztOiO`U>ZFqkCbA7hmQ8*13leWf=Yu#mXYSlYz=m0Qx<-+9H(7@o*+!*W_J`pP}-)i zv|jx=51A1+FxwpO!JP$xWSHO_tuQnYs(OP8&{OC@eU~$6%~mp+2{Na{mf85}mFZ4v z983!pYQFLVo+M9Ryn{w>V|q152os$;Rc;E(DdRbXctF2=a*}uQD{}T`c{mB^CNzvx zRW21lw}F)P+fmqAR=(1`h{*h>Y0%ZZNH|r*@_{1pmjDEAXJ{_lkh8m(p)rAjv7mKh zW$D!@;qlBeiCien-i12!+47JwgisfYf-L44j~w{rQ-l~q0^WKBSc2Z6q=l6;`_XV9 zIb*olC2fr{w-w*)?~I2?KDd_%G0|XB(F9`JOUPK*tL$YWDaj7pD6i0eFMij&V%*9Q zFayAecu1fSne?;-e*DI!Q_q;Nh0khA(fcO9aC?&D9KBzD0_$QQQ(qCbVZ~an3e9IV z)7}GF?8Be;XIE?yB5MKaVzb$)3>xw98pmoU%oA-uJOE=~xSv(a&MhVY!B{&FBgu&& z9rUJgg5PExb7ac}^0Bn1*Vf`u+0XjYwc^Lo{PbAjqh2jl_zTe^unUxtFILkzPXhQF1>!Ohu}3?jPrQC{ zMEKi^h*Vxefm5EBmdP4dCf{R{p(V&zIO3 z3X?%`fK_dzV0ukPlI9t|A;;4gxI6k>6OHC)_}~3lv4Xid>`bDe&KPB3pi=g~83)K- zf34KIO=EUz`-B?Ta?mgV5pKf#kD3=s&A__)jwmN3O4(f1^ZLCPn2WeiGRP=^A6bla z&oa!FpDVHBrHK@$^WZI`3f+5wOI00PS;Bh4d%Z)hsl*gXqcdwwx;q6=z>6N@mLOBV z-;~^8nY0dns(h1FO2RMY&=?de?ua;?to|7!X4qwFZK51ZyrC6nDsaup~pUP*Np@THyppc*X{8v zGan-JZ7+Es3A3kroYdB2guzPOs)PP{RK-t!%kAnHR6Tquu4!zD8`M46E)M)?y?Fjd z*{NmYCsP&+{CADsU5;}KyL#;gzht@%tb4=%>*eQZ#bBeR+LY4gzlrH*gDXmBaz=Mj zp6$o-UXEG51LA(g*pO@uW$`Tj{-oyjivP`yq>pOKMW2W5d&ZNBc$ClJt(?Y^T!{cf ztnQtpcZ#p3xXh&m@_@(AXs{lTAB(86T@2-Ft=(-o9$8@&WRF4t3rWBRFJTO|flx8L4YwokUn-T&D6xV`V`qCF~pv!K;!HH&d-{g{||k2gj3 zeb&m4U!Q)q!itACE}?vHDR0YR-l~VK=IX?;%|CwAI@c-3w(*~=kj>GL zrmUy(+EynNKQh^FaFOTII7$gtE}3&sLD+LS*VNhn9&me@di)A$=EA3C%BdoyFZN*w zN`BNNFzyV4l5VrshrIzLGphCK}3#1qpThi+zs$tY_6*ucJim3)ow#Q|}&@ z>JHn(iEnHF+vJ)qVNEP^`34a^o>%eGWthlq$-O*CJ3N;d>!q6&aZG zpAP?n?vOzGl;pHlvQ>k<$u{Wef9X)e;yU(+fAWQnxmW%kPfbnfy6eE#UGgv}X;N4& z(-c`h@Mv;GF>^0`eqJ|^TzDRl-E{Wd5ADV6ehM%3J!_{zu#JJ{} zrT!Pv7$B_fFEYGtZlNEx`<`#n-FusF6|Bqd>=~3-Jfyp(6|CbQkQ_y0il615bnyW< zxSeH@#e0NmXFgt%yMF0JdT%-^8y!2Hwp!z&xu|Z+4-Gda*<0EGIqa&yZ2kxz+yHqwkUX@oq zxDP^(G+7cm^3o}jQ1C=u`{1YPDDLz%EcWN}Ni`4# zh#a76vvVOOYCciG(sXrnP!U0AGJyDO{@cwrxfclAb%QRcscHH9;cmKNQ5>Tvy3%&q zJXV*t&qMb>H#Z83!vr#Y+T{jFo?YB!Dx!;#bIs&7-97pqEHL6}%ag}{v9O8e#zphM z$j&{>V~t!tb>!WxIWivVh~Lia)9U$TT@Z)wGP`1bccox0WNOR!(?GA6gizR5qh6$F zH5>o(-WL?&p25K%ds0%&5`O#6*BJk=ji+c_jeYaU#42rdp4t8fo3M2@aQ;e9`Z$5sFV!^oQ( zvzr>#`q|?EgWh$s;H@g1^V@rmQy`A2D9u?n`$7$y+HgO8XSz3X$d~#|H(#W&;%Rnm zJ-(3g$&=<4->Kmqvo^3+PLYUpN~!S~8dlrI8+tPt%_Bi7vOcc#wxl23 zfQONlHkv6Kq{BEyfepRm`n?dFpdXg6CMqF;Avl0`Bj|g9FEe9*WI_w2R1EB^bw&5( z*UwUPhX6Q_G5`P&<&JFZ2Qo(hI6KG1%)pro?bysJhdF}d&Cpz%$g)MLa_a0#WaWex zKHAywIwtr2uAgUr8*=1sEtpYSYiVdH;k}N85Gy@AN6{4v*(J>M*}VD+HpOkLx_P__ zj~bZC^(O_WHM7>|EnU`ovWLcsi}35j3TF5#_jP`> zEC)I!Xslw~tqC&P3Yd!1$p;!k#PFz%TU9pD{_mZ$F2o+6j?M3V)J-tvSLkzgEuf!; z%K9FW3QPk+jN;Y=G4cT!b*rEYpVCNc8SrEzeo~MsR@{*929c z?YeWwWCwa+rLFvwu5%(cg6|VP+d($JOQgTt-jPAGH$e7c5|NG&C@IIQSbol(X6^{D zUjX-}XH27>-M6g8clWO}Wo*v6L6tbVB}_KKd8^4dv)p+jMA(|B_(=T%MxVOk6_j0s z4APuU>o2neC;$Lf)bW0mqSNE+7Zg)>zr$nV{9@97&5!G98C9fkedCu@I8#31^K$`U zu3_k*VN}hCdJ*sl&-+kwP@0HN5AUeIW^q>9NX0a*r6i^kL07^W?qF!=yY&6}(pciV zZ7)bl8&AJ9eSHz}sIK1e_w1B!T6#iY-@zGQJX0`RMB z{Z|BY-&)KnP2S_j>Y;m>E$9Ajj5lqrr0^!c4(_~P zHXI6Z@PZ-15$`@vs0*=6aUI1ST=04@T9Y;K1Cw;XR0=@ziHjeP<5`qrqLJE za!)gFg=|0lFxi;g44>5UoEL|TLQK9z`CDn!Yw?Jzt~%!EgCv0#tHvU5kxTq07rszy zZn#w@dkf%yG;#-9;RNXOBl-BW(nL3N9#{5#^o_c37GeD*5n;qhD+Bi;3K4rZ-0N32 z1?3Chf{vZp#Ll!#2Jp9y7S9?c9J@qsFPJjL7MlDMtUu>>E4j%^#3|3|XQp1&D@P-J z@P6`Y0ak8$;(E<{nAPlQRjES5a!^X}a`XOA{wP`b?&jww1qv2~uDJf=EvVdS$`+4* zRyL`3JNWjEyHf>3RZNYbTB2D^oa6N>&r8Ea1^JPj(o@Ui6EhMYZ=IC~1&)0P;~4fz z8yfrFIn(9Z=eqCRpTZ2YCqegO zM&XOXTmbcl2|UHQl>i}{vWT>-vJcjwbI&^-Qhi(TiqyfgJHZQYmqFI*q;ClWR>`PT z-8RGCnccP6v+-=M&Kh-Z8&1^rmyxzxnt&7PF+L-W%(_{$y&q|kh9bzwhfE!5eB}tV5No!5jG^8Q)ki&(@ohBAO9SloSq4f< z=u)TX?C=tj#jQhtsgce>fBW%chkIUTQWAXMM1Bwe>@ftA_#d!J8>h7T^v82}Nw;%# zUQ5z_44~|wd@nu$KQWgsjjcrMV9cL(%HfaM4?Ms5x$~8LaAK(TPe-c1aQ@LUzXvh-(RN@7?`JUz6B{ z{U-gpu_iQu?w+ZA-2BM(3635st-jt8Z%A*M0M(s_wKF>R`wTXC!)|o*@Fbx;aH8w- zQMf^mF7Js5`>j11D06vLB6AWyV}ixMXTZLxaT*y5s>`5jhRkh3DOk5~8Jdxx^eS*g@iLq}V+g&M z3zJ8Jqh6I%E-}l(7op)O0O?Xa(#6@WpckGuL)P4dMLq~E+#PNr-5($A&_3^B zGX3>aGtwnE%|uJbbicACKL@66%6qz#Zi@31g9IvT*md@YJY^cm(8LfFF)Q8J&2qcT z9qwWpHNjzS-_BDP@J8CQZj~cOol|W)VOi7>f~AL^S7pi!&V9q*Y+MQ)B0?dY+lcOW zL`yMg02eC)1%2pV3{pql^<)NgVp4LZa#ky^Tat1ZeOu!h3d9}fG4u>`FVd#Q!=-YO z2bo!%Xd`lfp9EL$S3*OptCV|ho@cfa)9W{NpIQkWt2(&xuI6bmZKeO$J(h-n0| zJBr=U!77RT8)Nlf^`c%j)F-o<9Erq#{{^AT%qx_FN~#FMUB!N0Ar7>qlm= zVP)MO7QtY2qlfvtL-$K-z*o>n|Htjjp{p|mW~Idye#KR-kr>L>N5Xb?Mv)*g)h*9m z%>80B&e~^wvw^_OmW~&IQ4E1K@+IZ3KmBz2_YbIzC)g>;&OEW7&v76?4{`EqW)3-3 zS5zJ$=W{FQiQ)%*9%J+*DCF^f#viojbEbn~?~%mF419nla_Il?ogQsg_EPuwG6fh^dWvNh=l?H2DvljzayDtzmm&W8B5x)C-6qS#RtbZsiM@y#J zKxfQ6jyp9sr6;-qN`mn3B$lfrG4 zI40%6%EeUP%ql;sMHt3)?KY2|Rj+hzuD#=5CT(8!rA^F6 z&}aGZPCM6fDaK7d*{6kfLGnT4~o3!cakJTPga6TE302i&5M{hRL_PGSI`@o-l z;GQq4`Lh7jqbaK)7OcI9Ji!WBO>4>z}Yw?xyH;t>*o<#(nG( z_P4rGn;Fv>xw$ka!ydGsR8Yb0H_)M{A1ot>pGW7Nt#}LDOUFQ0&u8w!4s$=e<=}^f4?`iHmTT&u+;^`@%u2 zt-y8&`jR#|q#XVZk6P7{>Q1l~fj&d{{RvlfcXeoz0A~KYd;$ZFZw1Mzi1WA7Kb99C zogGwjnK-x-6*Mno5Wc?J9HQQ#`|L7JvIQ)9Q}QJF0CGZmP#iwJO*p;fs#woE?Q zA~C=AG6#N(6%UYGRr0oBJ@Jya-rkc5Sye#y=2&OrH$X=6n&;K zWe@XjUjUjoLbzXM=<)ccm+xqaby-c&VoxKZRQ`@r!c#iabX*&`!xBCE*4VDjYp1+*8z`+X1cy$;~_MD0#-DWOM{;fFVO(-ix&MU)hmU&?vkogta`lL6DYGZnkQ2s2B4pBze# zR_JJQu)5QZKRvj-)xTKg9L3xd;r)25H^CD*;%)N=A8fK`@ zpDhT(hp2EUWQNp^R=UoNtqZLg-Z+q>Z4&H_szBPxOXJ^!i(W2jr()xTF0X`Wo zD)9bi_X1!+U@#g8=nSu`ua_bVvY!KVL2(4F0-=zL!ev8 zhFrVi>rv-RfEE_13~oMj9PKDANE9rWS8ApAYRh;0=2Nn!(#n#Q{-=czEQI(F~}4K zm8tq-!OYBeObzKkRwV5%G3Y=_;buFm)pM+8TjkVNm(m8FbneP8rAjqd$BzF4-inP} literal 0 HcmV?d00001 diff --git a/dom/media/test/seek-short.ogv^headers^ b/dom/media/test/seek-short.ogv^headers^ new file mode 100644 index 000000000000..4030ea1d3ddb --- /dev/null +++ b/dom/media/test/seek-short.ogv^headers^ @@ -0,0 +1 @@ +Cache-Control: no-store diff --git a/dom/media/test/seek-short.webm b/dom/media/test/seek-short.webm new file mode 100644 index 0000000000000000000000000000000000000000..36abd1570e6afb1d97f93ea3819e19763dae40d6 GIT binary patch literal 19267 zcmd401CJ&^(>6M`cWm3*v8^53w!LH9wr$(??AW&L`~IHyd)||i^AAoZ-Cb9@Qq|Q- zr*c){itiPJg8bh>BoY<~D)RQ9`4|Wx@)QUo5)|TLW^5-C9tb898VH815@7LPRapd7 z`D|Aqdim~XmFf@-=}L2zn!r8z?wJ1|Ow~FYm6{+>=Kn%`mG1w6GI!Vi>!sws&i?p%5h3}2SUDqibB^DP>@18d%*-0X|6lAMSbWV=35fY*C0 zAo|qfJ^#6X*WVVP4-5x%1NOE>zxSS)F7_gKU-oKuU;Hcm>jBl*e?J_a1s{N0z8n6P zKy5(pIruH&58g+(F4IkTqvS*VIgudHP4K{f!e8dy@5cgg^z-*1{>4On`kvsgfBt9l z%b)wZct4l-$S*wr@`lG~KZ}3TH~t&%``gl8zP|yW|HuD}=%@d=?_Yn+UIO9k*FL~t z8SBCSD1Q!!?_UpG2CCdFebyft#9?Otgnyl#)DK9O8DIiZf97AFzRGXPTRa|sQGG|g zl7O3c*=O)?(f9nP{xO4_ett6+s^f&*40?>TBd{Vt4-vYP&Yk`mN zrvUJ8s<*v+!9)KaAM)?!kMS3S%l^jv4Z#lpm_I6j=?Cv~@5ABVe_ikgnE%D`()&qw zZSm>#7XJlw^dn|21|PZN*qSfEHqwHWnXG9xD>6S@vA_Nvg!Qxr8MNQZ3wxMB5=CwaKDs36oT zxZMPzm8VoLaj7Y_T7F6xJG{kSt5WiRLv1$JR4dqiIXx&GkPXhrp{t8YMH4++buuxEpe-%3atCV#c;-AoydwHN%d_kRF>Qk zF*%hG^a6Yql0R-gE{q9hO53rBr3mDlJ89i#yD6$j5!rUkxnj2Z zzI!4c|KuXIF5iE0mr9vKr6LYg?Kn1^yhJfvvn#OtyCENhBT#B6#@RU}pGSS#3DV%0 zdH_2?h`!xd&3(~lajJU;`2+3sEl2x%yINF~QZ%=}MYL07tXG7le^lRhDuD%uv^Oj= z`c7yHPg0u#Jj+pfEHW^LDFE*8Gs5vMN4QDCENp5#eU)^!T#dl1dozrn%A4wQkHDNZ zqDl0(?ek6ix(R^m_+(VSEWXNlR??Yn+BzxcKek z?3H~Mv8^c=@uqSDyB(!-9c&0!Ys$3 zUo(xZ=E+nq!Lg-uKp-&1)5fot-fh@%^yACWr%7qjI*x0u=REMk+Lk}iK4}~-b0VRs>Xg;0j08LERy^=V+L!Tjj)Z<+ z*d$Y;{|_{u0*j9YFD#(5GE}5A@Gkymahhq`mnXOxI>GlsW(Y}lmY2&_Pi{=f?<>tT zGkU;q8>UW+8Q0W_vU*1UOE?J1mvG(3bFX*gKyMR1Y2*ZaWoFOC)`4ln!cvJvVbfY6>w<&B)OcYdo)o>|n`tWqI^V;v# z_)e@;qmA6Q&qv(MN4~19Y6XHV*c^Vk8A2N|M{tROThr@>6|}-ET`A(9vqERi7TVQ8 z+dKD(_qGmwq?I>{7a4!sbwu@f6*>NDZW>a~z_-UpUFg zI1=ByopUaB`AQzUw4{!qMh?E5<(XO^DjDsR5M;oYsJ{#%7Hd zcKzNDUTEEM_KoGbVI$@+r$qfxtN0Y+M4Ip19nJ}PQM zTidRog)U9uq^>?^Wn%?MnT2H@Y*|v_OG5Ik*0JQmNNu9Zs3d0bIW!s2^dUH`XXV-V?`Qxb`90-VkjapZ85wsg=KhHMqibJVWykRZOF1A<9|PA z9o~;9E1_dDZ(@I~%Rot(0nLz+l2&7+`K;5Y@Q{~DqZu(n__Vkb`wO-q-aU#K!oJEZ zsZ5*TtFlfNB#RLccc9{>4K~pj2&;P+PNQ~A_*b(jIjC?3XMn0kt8trdUa@HnUavo| z&~R?^SfXb0_rseD7>}#(dsv~_`drNr<_l7~!neKsQNVmi=Wnl&>&iA$FMRryd5OW4 z#YaX^hthT-kvD6Mj3u9{AFR25*OqJRqmbf|FScHB(C$}MzTMhmRkP6Zy)aU{ul$Bi zDLANn87q%h> z&a_xLkTAxw!#GIZK!0Dk41iDx5@uCSo@N9w?A&pDGw-0VoZJmw)!xKA0-3H{S882L zb5wl(^v~#PC6VaP_7`Kfnr>D6QPff$z}>ff79G0YQU}bC+)3o8?cMiD7rwPtkOg3P zXrWDD1t=?CzRpCdKghpxb*}h%q+y0=_&z%F>8XOY9C+Uziigl-|eXE09;jMtaTTd=D^_tqk zcev^G20P2M0PsdrHa0plo*tC9qw04BAu&(sN$@!yVlf7OTMI#L4pyhny%z@sL~o(q1yQ9FP{6}73q(@ zjUnE7$CRe#5iUez8I8jxB?}3-g%GlU)b-#Na43;dy&G!ZVIzIht7!FchfO%D!q=e4 ztE9gpqu76MOq8+35X})@#6+INN)?NP-5T6OlHpOVygQJvaOT)Nw@=ZMhS0^0E7f5F zmicZbPKL;=r6Z2^kan<7+v#uNaQe;Qfd1j$R5K|YhQirT?)=jXh>5SCghDm zLa@l~6JmXL&l`38q0%rP@hqu%xM+TyaLvbPRb#U7qG+U3H1>ID-E}Jpxg-$J&UjBq zrHzULcZjS6;$yMU7yQv0 zgaa3%V)OU>4{}(Q<*D0CI9y*h<50{$N$2tjH_4mO-NzCAjy6N{3)1FQ6Ix#DKa>(u zOE8Uui_Ow@8b~$ibb#lIoRm^)?M?I?$C^Z4%GZ+c_gT#+=C2rEKvL%Lnq3%N?l?jqNz5P$BFy5)fFLT z7Tpu5<$+l953LxZ?IS}Mr}Nd&?e~G_5~OW9>~ur4gqwm(`YbiDXIoMe%#})BduuY5 za!%EuzhPeqxIv(?%EkV*z!3RIzt|PiC>QI#ZLTj1uIC}fMmnuCRgV{*+Xgsy1tQgD z&SwY;@J&Lj3K&BfqUmNKEw+;?t9u`YlSi_D??xr-7Jc|gs7hk_xjc*-Ad(a>6(Xhn zZ13q0e#Lh7ytNH{0+(2yw}yZWrwB0EOi9DETuA9M5?3_$G*D0SimaBBqQPQ}{j=c4iGH z3iayl0?_G4R}$C_?ODu4CR+FA4u-GC25Li}xr<5xwNu$ddH2`o5PlCEl8uDBx51!0 zewd1?ra2?<`ThzaN#HR-?1X>5t!$FX-gV= zS)9At$`PkK6*}>cnn1ZBmMlI7BEYa>PjKVVj3tsHmxh78hF!%H^#N(FNb8ZN@J!@` z+qRY1D&x9o>T<4r7w>9t_I5tFxYe{%f22J1N$^RchDS^GJY1C$F6qgEp+IH6dMU%g zGHSXnbLwxpuc8wV$t>S!U^!gtkJ?%E$TFh16~zu~&HiSg7C7 zhtIRDAFK8F_H>-cEx|GO7^IO8MfrB48^Ma%FsO~N616a8{Th`H-IU5&reA=rlo0A| z;#g^*Od0uzbYfuyJ0!Jp&eHAS@Gksj1Yo-|K@AWEUc3#?(`myqT`}3drVb+MC@SY z_FtT27N5}OxV0_y5u})I7=yBui>^pVh}_K@FpIBwv?{pBfq5TZC5Fe%Q~%CW|6a|E zCu}UeDf`@xd6=@+Kb+U3?O`20dFzII#Z#Jzm5126Aj=B56Ol(9BH z%y-w{V##OG0kL)L8L90rJCdRjrGHBFVA#YQhb55=2((64y=TBhe}vnNbkh}J61*73 z$*T|cwPZ41R#T%`byEBIsIffSG=5`q!f5L%}ZQbwMV zRXm)~PnZcLFt`A#{7T5x9UKUHweR{yu<1h8L_(6Qu-GMW*yFzQkAcj_s(QX$`N;ZL zZ-kf@vg2)|bpy)T6cnB#-AaXsBMS`ce(W1rD(0xy*Qe;3joeWM+f3uCEUL;wq}0Lg z72%7_6c)F?fw4+OMQlw1DX2hoezO$^0X|4kd1OkNb#c0CLj8N+1kjKg-`p zZnrzDzy?CxpwdO|Vn>r~Z$%zN^S#KfwnSHGu7}vFt1j-R)Jo@ln;bkf-zfU>&EH`6 z-}Edy=d%nE2oM|>S#o+<7it73SNYk8Ci`@2*N4OZmc-*29!UtjH2v>t&5oBFy-np4 z#Yp);EdDXIjPJ}-dQnA-tbKYgftzi(lY}oADaNm+<=K98d-wnAv>vMy7g(xQ8%xdQd!3e^fOjElMd$3owiW1Y~NBE^mY|Q`Bqg z_uIRT`0tH6uK#U;iDoop*;N>kMc?VXVZP4zf)J|8EKpWbUrqR)GqADhiV{Lgh~i&T zrCTt6%>YI?6fVu3zpOIqLFMsjzGpL^J#ScBznYDyeo`Kb;p_D!IjQ%NVd=m)dw8~I5Y-M5XK<$NnlAxJv`y2|*XwwZ`uaimY z_iK24Aq7;pcMIfDQw}VGrZI;wVGHUi&4=~OyZ2jauC%NJ%;!7f*9=!rAs4`>3InvX zXvVEgCSr>6F#pDDye_)=0JPUU*O%l+3@qClhj1_nf@YH56y};eEu?gR89Ey&xOA?t zn%LugWsTKG;;t3rf*XHE0*HfGT+U)}i-|mn;>YXIN4He`tP$A2(hKip0{Ko5d`fII zv0Q$9CaFYL{y{2Q;0gfO9kLt5S`D<9Ev7ica9p}5Q&gB0vBM8^z(P)>aL8}Blg>$7 zM~|)0NJ&@WBnR}Dd9gJr)Ff)$^X9l?<(vD6s^gA(;~0sP0}f;>@W%6%&Vi~Z(7;_`u2+U48@X}08wcNcgt7#yVC z`TQdio6dsm=rceapJDyi64n~c&vH1eFlE%1gM%bQtud2c6bRiWs3>J5bL!%0SL%!} zg{yb8|Hw2w+imi4-E9%B6S1#CjY)~tFoc!9Y~1$^Gj6jR=oevQWd?E2yFfjABNh-! z(zJ2f?eL+v(RO(g^VT`@XuhRCBatWv4rz!}*qOSY*Zf*+4chaUsmuUA0pI?ZDmTcO zyAam2Jn#&e84a~;rk(U5!fNa|6^}RycZzNZwr}Zx1}SH(QP!@Pi6zUhVmC28Rby2;0dQTQvx4ca8avN}`~`W4ijt(8guO+vlt1t03=sPXBZss{#UfCM#b3aNuUk!&2)& zd4_JgH+6VC#5EqHU6S-=7qf`M@nC*sm1Fen2S&?I`_03}OxGBEogOk1`R&SF$&2lG zi!k;FhhGXBG5x`iNu4ACX`(+Qc!b{*^2Y0CtUSpl|GdGb3L#!rSC%-Cr(ah7fGfjta zAXDm~ww9}B8p>ezhhDEmS9(eqf9K9}C0uV2_{kzidkQ6s;~tc)11JKv36_^1`r#02 z?J4_Y_tC7999lDyl0gp878NZat_)V-n#Y@O3XUAzvbC#H3vQS91v&|q7g06jPf`vq zHC?_V9w}l0lYMubt!wc|_*}rRfAT$O?+k%Hr4#gxf@|V*aMkNdJ z|9OgSBWxi#V5l{+hBhc3Y7b+kND@gZ>%qu|*e@6^Y8FY_VIb6nznYQDTs7=8loGFH zcDW0)iuIzzGC80QUu%8lm(FH7%Qf3H#6ASn@ zS@0&|GHgJ+FA)Nnh$IEFTFqZDKGz6cp1E;tl>Gt3BgG1O*LU;Aluw;z+J6dXTG%WL zf`W!LVWPd%`722yG45mYSHk+SE-3L0gaAxd&faRP@k1Oo7?Ga}S|`P{VpNS$h>V`F zQO|AC`6?%@JfsH#)Yl#LXI1?cXI{H+FCLO!R@WsRly}|y?&YERE$Ctv4?MQM1w@^v z^-i3#>^l9?La=yGvCS5rctVC<_UFsY4w>o$ibL2jm^(>1Z@Xn5Svk_?$ADh$W)XhU zsR^lGuBSB+-(WIzC*xyn>s)G;!;qqV`>C@tYwb=!=(8~nzzlt>6Hq{mHfM0lrz4)u zlm6E$OU0&2IYgcIwsGhrt>8EgN>@4_9I)729de+d|D9mv2CG-RMz9m~i9s?9Ok}3U z)8DCV6`ej&JhL7g2Xrv?LfdeG^e>#b9k^5qnbZ3 z3ApZv;L?^uuOJuC!Bf*l5ev5}4yk@%(?$K8sU$NQ>Lm#gW^!cFLbRW(2YF&v{ zAs%Lc*}v$m**480tiNYWIiYQqhDxM7Fz^&nL> z{e8yh-6yq!Y3;2IC^1>Dr@=h!HcE;y%qjpOr5mAZ&eqR!2(>OBo#a#P*St`N@_ZaULSN$s@M5jf+6SbTCK_X`^`1nPCNjHe` z*=T}g2Rnafr%R~2VX;JeAP5PF5+w)}$~Fi#?EIwnJi4#oH}bpyB~#_c+0Qr0_bL#$ zDEXhhm;>%l*lIV>BJ0mtKk&WcFdPW1^S{prezyRD?@?akK%gblvjOl&4F~`>p8b0D z|HuadFTY{@9e`f{DUvg_-!%gFGT_L26v^w}EKQbekwm9{;!Ba!>+ov?o?$$B*4 zCuLMcVfW~7Ec@HSf!aAC6D3k03IA$gAvG6H_eGc2&PbA?SERtaO0`TBs<{M);j)D@ ze;0eqoUN*hzWJ?ZrP<*-BGZsS(=0`0i`)F$$}d6+p{e(_`zzn`|bZ$rM4Ah$wH(-i-??k!R8PIyZq8;WPhezW4V|1BmMicyi59F=a&D$%I)SG zm-t5zt91g5Th0vc#H+jx;f#F=9xZjHg@YjsSBK<@^$SXJ^=WGZp`a$hw)Ijq{%+vw z-(7MPVGU0HkdnoVpkExzsoF7^lXeU|3omz`s^Xp?d#_0ZPquUzYxlvtE6a$Oh8k-l zu8c~Sbl_fNY+1L?TN;NOoaB=bL__630xkcUENoUpEmD$ae0$#XiX3lY{B%svHIVtT z==py7CyC!%)zsw)Pf&*N$sxP&ju6`AHlp(cb`R4*2ph|5Ax8|N`M^x)3I1`pVX~x& z4$hXAXce4L7*5S5eswp}?c(qVU#{nI$)?S#I%inRZWTyou z7}HP1%5IH`kg$g#%3A(-=hQ$WO*DH#A~kZ*oc^*9YmL=FiNE;5lu}95w7LGMF5DKw{GwA*skB_mA*zOjHaV7)!nn z_THh$g>7qR^#`19iyV(H+BgcajoI35JP6}z*6t`D^LLEdHDMpSBl}#ID~kOve-?=? z)tftlwM^s9?Qq|u*ptQ*y^p@@vgcdIgL)WXBxXWS`MdO{Hah*IGe|g_q(Z>VSw54$ z*2@|^%MV~3UDLD)m}A6UQ@m=LcFw9R!k%M2heaXa>c&x zNa9DZKw47eh#p5AuI5)B^JuzVF(6wBbZU$ps z?UMW6&?O^(<*{b0B=aU~_0u`MYfkPB`^~$|@NHNZUI9gxPvVbo zXldi-$FJ3jp+t(9EfFX@HsJ&G+ZFSj_Z1uwklWj9-B}k9*(RZj>6b3ut ziafx-VQhD@rNb~yBdr6N`8==8@g?l|?HwWy5vroY>hqB0712(?tUDNdMXC*q`y zDr-=^4*u!-(P;8E_BysA z4poe+q?OWVBapjMbt0Guilm$rq)({0ZBk!pLJ%BTA9 zwn@t@Ddb1i19Px+50nT6h9Jcf+<_pXAdR^H&0L5vVZd_^CBWZmjIqEo)DfIM9MDhE zPEn8s%6n(fen(%kiJC(k2$2=ZQAsOJB>Aif14QGUX~2f_;VrB^|R~YKr(dJx5;|28Fp4Q|JLzs1KM3X;>0XD ziz?!vwzveBJSd~GGLx=8eD&85f$R&)4}OqS8<%N);$LHG%uFn0OE$vX^NhLAF1qAY zC!x=eq=R|wN6K-=;CcJ=0o<@1g4nnZ;jepxe?h9m(2L!Fk8~Q=W*Nq5rSqZ$o*@O) zrB4>Y6k7LNtx+mhZz1>l99B{QPZ2$~fb1P8@Jd6I`BTxnCZl#{k6leMG zBm&gqlcMWmVY$mS8T^KPphy>%<{oRwUW|s`gu+|~swU*t8nh0no#hfVJ)zgvu8iqG zhMij1wMsEqw{B(QXstziRo{asqx9h>sw^=*I!p-<`b(0~gaM4ni0X>s!X7~6TphjZ ziJDkbU40+F zZr`m`>*)*14|vLBLP3qzXb!?RXtOObP=_gff?u$AG(DJAdd9yc{4!Qgb=#J7yuFBq z1p^(pu0+LYyPz=UDP^)=kT8g95O0oI1m87xyMlKLsZX6u?;y^cE|#ultgoKvO+JD!yVPX)u@9 zD1?G?6|!bM2`Dx#G7O54Uw$XF=S!KYQgNB3cQfl$yHhWQ*+Tv}3PmR^?9Lr??HKNm zlT#1!%vkHAk~=Pq;h6NT)ImFKrH#pbb(YMroYnTbR;PAAk%OsgpvaA+PZYkTL^a}C zveC{kUzop))6vM#I#4=)~Q^ccBvnFj?$fBoX8)q7kJsssOuvkHYq9tjiV(uxeO({RI#><*Ovri%c9 z^f+A}OuHR^5Gj#&_WF;EyO)1B@$i}((T~1Nh1x$@>Ede1-)S1Wp1pY*og(ya@Z=I) zCIVj&>i`wI&jdXT?l8f*1xFTj7lO!)KDMwo8b36pd4|9ilWvUVQ|04g3bN6_r zU_9Iu5vy~E)V0GgJ^l#ZY756wO%J>LP1=Jfj4#i~l}1Y-fqRD~dF3f!@~^}ASp;V{ zhFrpM?cF<=xva&ZIWd{prkbf9UaQ-EKy&V(HNS(I2;inQ3!+ti_Qhp&|!mkAV?uTr+L(0*iuGC*S{ zkY(X;)CjXF?Q=evag}gGvi5n+lX&~4cJRvSt_@OR12p{v+}a^XNrD8TudrrU+{bFp zPD%Rdn3|+Nu{+vF8g^A!9JB)_5TW)YXpBoR8k7Ku9b}T}9oLNz%Nwajji;trRF@lB ztXP675X2OO<$rSr$Ug8=%lBA!mS8#1pb*~;ym@bo+T}ZK2XXge_=~N5mz&+2zHhqU z2lpQ1Ok2h3qDxk5Xy8wS*X{bEi(f9V#%+9s$LB#yOWl!xo>N?s_yRKiw=d%(xWyDm zY#06ciG|syM4e`YlKQBK<2=LHO4e9G6)^+8R*P_c`bR!TPpHU!N+BLw04;!VBAAe!QzR<#qvGH8?~Z!r=NBZ>+4;!M#HeEa3q-DbNfT7Xi6C8{kPK)O zBp9rZDPpn)zAPFFe8^AJ+z&9J3oyOA(Dq{5D1IcEYqPP2rk}Sq|g}|^01N&mQ*yEtrwL|+@^%-s(|X#S&If8 ze84JJbNDUm)(G1^+zF+Bn&(OUvkqz#0^YX_?)3az1p{SW$SP{RQ^{Emw!XX;EiY$p z7L}kPKeeaa8dsOy9Z~UJcGL8~c6DKqyF45LbOd2VAtG}bX%!|(3yfaFjkqnDTa4n2 zS_^zbyFFPJA9?5oUuoVx6x@002?N##FMvv`URuXz(TQuGPcnXF(QNJeH3V7<_&{-@ zOu02!`y^-RGI-?-{5&o+o@EII4YY-@{PpEPN{X4U>i&IZ3-aCEDdO2_SiDGGJPep8 zM~}ClOXj`_TxJ+9E9#%(DSezt)8fE8G2lo@ehXep25jDdqMyX59wxSeW^}GjwGlRW zAyTLL*KMg@9@?eN=gdD8D+MWv48f3l8R22ufJ`s8#Q1`!QOhqU+jk%NAgFTP<=VX| za^t&dShE%BDX;aLxL*vSGA^2z79S%w^&XJ}Vcn;T>>Nf*K2+IqP-qJ;Eg_nomGJUk4oo>lOT+wx zM?IS=({T~1Lr_Aq#W7>H7|4mZ2Z|YN0FUX9Dhrd;l2iEiijCfHA*cINbcfZ8QO@YD zL6y5vWCiC!(8n3{KOk66zICxbm)45A z&&0i~nPQ1fg>lI8;*Z_q)np{tIgNxUXjEA2KA7LS-_!@Af6^ze-I&u9{R{sv+V$n$ z7{gw^9K69UIAi6<;kjV$q3moA2I9z|jEJM-48P zSexKAeUNEpaa+bAh!pr+v9Jkm62}`lf2cG7s}T=(N{((*heQ!gpQ$r&=ue!BHq-!A zN;^-(jF*~t+Ok@X?n2huxK8S<>Lg5O39U{5_TOqzqXh);ze5_<>rrS718L@Oj?BUE zV~YX8Lq|V-VK<6omp{=dRuW_wRdb5xVfDh`OT2X@D?e-KvzU3mzlj3n4vMn|QZtn~m|cdSxf&jm6h&8LWrCxxI?^?J zJ}}3We7N_~-{;*vI^}|C`LFiQpU4XhGF@p~f?qEe)A?!a9aQ7a0I^E@SG+rZSJZcB z_JH|cK4s-Sf3!{No|f*$fMN-PK#))nRGj~^3{Z*ZxnkA%I#)zoF7Gz}fC=P(1XI`$ zD1x>Z!9(GZNJ$aXCms^?fpXw`tW_Q04H$B^D4qisb%SfUtEiFxM{w?)E#tb zLQmMwKkIc{3qO4C9YjBQt+eulHIy5oOrEq7VXr0@BCrWSCDqEf>%Y9r^3W$(flbR; z!oBYX&lNWHj(@^GS9OgMbw{$k^Jp1?G%fSGlKVg1ZdAxgX!F(R$uOK_k(I0%rz%px{t13&1OWsm z6}n`D)N2s<$B!cvNz1=H(-dwr1#mRy;Z6@orC zy*t7bJ>>OSe8UKyWJD<-V`t8y!^aJl*(_s!l=~`z98MzY*(xBLo5wmWhU%R>;_~~a z8a1XO|Ei9d8rnMalvXyP3mLak4>-a}Y-`BNa6f)Cus+A$G&%rBB(5Fq=xilA&MJCr zqV;jn^st8SQHkFL&ksr2#C6q6V%*gTtGvO^;^sIq+0+_Lu{F<|K6SR&=n#_SltBn^ zkJiZ!TdyNtEI5kc|MwF|HtB_D(9&<1&3tfuVApOa6)QeL4aGbPEir;`wwedOP%7-K zWSlpVY}@^K1jlroAb1|FQU9UF90MV~zIrla6F|h3qb#v2j^rWb5Gp0$F^BT_3tzht zJk5@XQavTPD=IpGiVI)xQS)(pDu5YKF&6ALX>|6Dp}^Bv7_8~CU#&{n&8E2%X*EWL z+?#jX!y~!yao9F+92`@{Aya7i&XeC#&L_z7uNsbi|3`hjPEG`AGbxS-2Y7E_gZ0p=uS9~WMUX^^Sl`)q?|Gz&+lmtsb&lIv2lF1 zGfqSFX5o3(LL^+?AW3g+UIKC|cm?~QcA)`1Q<)p-x2X`ui0d1 zl1yRg1gYFGJ;JBCT2BS6Dd`yTw_@pqEPslVE+U?N8_}5xQRWf!9FBSXpmJnNw!_O2 zEqrWOH_NZUzgrN*zR5|DrmH*Y#>csbLg-^Ldad?LIt>Yl2lMyQJ|;8F(GVAze}Fuu zNcwv0WH@kK<=jIk&;eoF>$&5Y(eXlsg9#JRJO`{8lbHPP;Xdk)rr9A zX0ppYbUmq&&5l-=SgV?XkCjrKFJA4f6vqn8EhT8UdAS)2EH*>&zhq*NkVZ%YB z7P(!OI0_6@y{7=j*Q? zTX3=C5k+Qm2#yv0Qk-(_J{NFJ?yCMpx7BlTqFH=wh%89Vckd*@y+~n0+E(cRao@%t zhQ}%1PPef~!L-#qo}SQHY11dfq$vZb9RrmuYW|nLVXBZTaFtxP-={t@M5}eMYJ?>n zreZ8-zqgzJPuLq=cvPC!7(bUw>upp=mvVjbnc}TsDJN|_btgHW#%|CwUWymvIz;5) zX2UnwwS7IgTTl2p)UIrpCvp&@>aTSfrFNUz>sgPYoIbw;9rzoej05mib(bqU<%NPn zr8Gdz+@X4|l6oGY#ojrtI6wIZZaLRk-yzs%KDOOJtIgnN21JZ%+bqZA^FKVhO=Okn;bRNr*MGz%*S5wJ*f+1a90Np>qRd z?ZfUoo?2pI>efq)FBT z7YB80yu^8;2_40>dOuOJK(O|7#W{(b0RzqY^<{W8Vt@tyghj*zJBYWdKQEDiF^)%ipfgDh*lj$jfL?dZxY`oR2aLurKi|}Ff z$VAMK10tPN+I>!(XRJivZ3+oAbpDp#>4v=8z5aXENEo_o+8IHiTwLy;+2!$e*56%|KO^exjROB?_*9jqcPN;c1{+azj#Kx zI++QOX!qjW7KtiLP7X<>e{Om)v|Y-Ta_Q+8e_io$U?5Qn=hf2q*E%C*w{BL7TxhEA zn|Ec$Yn5>^pFspdIZEK0HC$Pa<02=m+nr#sCrG-B%S2ob*(Xb)vpc=T@qehm&DcH? zHw(@s+wXN13*um6pbg%#09b)#;}IF=*+3n9$z`QxBMWUcA*uY!%tvc*WRvwS*=nX| zm$qwJH3gUhiXCt|H{T3g5^db)&hE|tR$D@1eTpkH+wG!>ijj3c^(PhPMadF1QUM>7 zID>95jY&I@fFe+ARy^{MK4dHD2_96~tgKzYhdeT~feC5NRkctOK zXy|b@3;3kDobR!%toxXR(tHp z?X+aunLf_^D;(p^lb&Fr5Q#rL)?r9xCi9N@<{o#R?T2y152h}WPaHA;P@r`53li4; z1!N}j?Xz-*1eH^XXOwWWx9mU|8HdWYQAs4$!*Mx`F+PB$6LJSBk%qNv8IWvNCr##x zt2CNR9v+pXD$u%<>24Fn+1T0cU@tnV(K@+JRy-4_XA#LSfLs03KUV?myzHGw{dQ6; zEK_n=_|4ZoeT?;BGcz76+BdT=;8|mQBCkbEJ|L;;C+Rbl*3I43m>FG}Az=Ys!?Bn9 z6@wC{cHQ;y!A>A-2*3OUS;%YX0?|uavqO}g<-QX|tzKG}<-VQVlSIJOKFDoc)9z26 znSYh0yOCd@!SZO-Niz$y(>Xe9Am`!!ajac%d?=MFD0Nz2QWF82;g|EPZ|F{tct`5N8X(1pxU3O8l!x_eFdg|cr#c6S z?LBV_)fKF6?Do3k?NyNKdN?OD=y1FOZtNF}OW?mfwUQomsEd0<=U3@E+I)9oEc;88 z&_2g^l%g48Pq-ZUm#{`)i>7>u2eMXL#)IIXz819$leDg98Lt=MwoG?v4rg7yXC(`v zeN=4%zRZ`Mq7W?=;0$Ek3F(m~vA#NNU{v=*&VTNm1w^yu^0qI%#N9@4x8$X_rff-s zcs`8A!^TGl+X)%h~vU-{KSSmfS_tz7I7}hv>h&g znVLc_BPwalvPgFOY?ygOx4zg>;2LFUa^D=Aq>~%#+;Np}$Km|K1^@V00JQp)B$bzj z8r_~47W+>hLp%^<0_5R;83qW>#`rUc87L@fjlWRha8^#0>Ww^YT+`A z2@rj4;oXCle>(RY=pI);pgaypj)?%>_i?A=d7O0?q>P^I`@ll}I+%&G)0Bpw_A!N{ zML&*KW?UVYBrMtiauT+)z@X@55A|P(DXjyu__D-O1YZwuLDsLzJK*l!;eY20Q!YqO z_%EbY@02l3aXo^lQGBo%6Ek*!3d{S0MJvjf3sf|J`I5mE5UFO_bj-QJOI_H7k8viZ_?WU!3vfAJvnEx6zcExsK~Yo3Bm&?-O)S zH7Gut{9$cvcGN!fvkMQMFRDgJ_>{Z@jF4-uA-vy@Fj3GCK^91ow&Vg7Fp_KDzY2S% z(ew(LDIhKubKujz?8o`it0M~ilDk00qxnL#y1>&%Jy1WoS8@rBW>%EzVOIm?SwZuC zWJ(k6kn5Ik<-{p#It~r*5E4qRxK*%iTeagplopW0<+nP)}y#`w~ zb2%yy7rRdjt8{qXZml)H6Cc6e!q_*&XS4CcCQqw}5l{?okNAhn2pcR#{ChpL16(Qyo~to=8YFTCC-wevqr%Yo@wutVz1LkjQSG7~~<#)$NG z(l~p;U3E;0~@az;h8H9g<7Cu^FVSYWQ7Mk~8@x zNn)-n?RCn<>zQ8=5s;{zf1{Q|;`y1Cj_x9~Pxpeie%O{#xWPkYvlKT~Y-Pia2h)}4 zzP`s-Q+cq(t~$?`Q|=S9hAi+&nqI=_$Ddxs2nGk+Bt${}DLRVN73KL9jjG;j~GN8EJEfV%I+ylJ5qr%;0SSgjWlZ4(I=7HSkc7RjL)|R zpZeWHZ-z`bs;a;E6)VF~{+|FI3gPw6GvisLQMA~F zdUsM^JALX!hVs4orq`mbZ^COkla4TdAw5Z{QhfjqNSjyCG9bN7bM9-Z^Wp*cJ*ujd zYGf15socR8ik&TP_r_8uf0GYrD0V!`I(9ZYUZA|!(AJYd&NTA7g{u0U15)6!{(sMa7j(?%d<6D*s%ys8alOHg;H$v z3Tdo}54*}-zHUElQ#Y^85tq{Rbrl^T)b2gi0<4b|>)UkDj6WisZi~r%F9$LvPC>;G z)~XN5;pGpMHj@33IuvIyj0#@4mjI1RbKP69b0GP=YgQhiwDFIVIq9XEFr8_}u|e9C zR;!y`<^?eh7Ue?gPu!7q9bp(8w`O{W)F7yf`{-^_3~NBWie+7J*>oAn8wRQn_+I;n z8pb?=)+BP#Exkb%t<0-K1SHabVoa}fZ3}ZV4t``itWUEZxdFB{xW7#YEXmDIrJ26_ zb5Bawr_2Al+KE$0Iu#Ps@^HNUYZ=>GGl{cOAO3(!@H}HN!Z_)?!?2lArZ;1dmV}G00t186ks(zpZR~){`>v5&g(|+|F^@K9BlppV3Iu)f2iIK+3Qz>N9;o<*<0z+4Gr+9C09ZcT z=_9gNQ~%>GRn7;#aQ2-1_+Ph2m~NiJ{yHH3;h(CWrm4WKQgoaDWgEsw}3k($C zjf!u&2){Q0jsR^ZSo#=I^f067VMox;5j{wTu$Y6_1>_7t%O0le{Pnrp8Xy>n&>xK7 zz{4%%R4+O1mF*sAuWXhvxiJL>Hp+8KX=@{R;w~@FDI($h#PjM=Ri}qAk!l~(cRBj4 zaUNIcF9poum>oxiDEb{cfp+{DwPo-TXuTfk{1iAOWp_K6ixX1 zB^I-390u>^b0K6EwT^xgBD$#))lo1e*W(qUdX}oiVDA1jS;X|Rj8)eIm34Xe(tB8GA;oDB0udbE{Je27Oq@F7 z=LL>{9|@M;>HOv9>%=f`u~VP$A4gQ3h!Ljp2gQ^8-D8Rq00dI}9_lckcG3-A_=ywlo3PL?N47NNGFaH*mHC z;v<4yuV!%MQovf^8g}i{lo!9(XSulIw@L7=@esC!HQHJZOh|df+u@~qSA*?Wr=d!1 zk9r`#-9}I8OY0!^>l?ZDLAfXs$$0n5s+rIjHHIJ(u9Ni|evKpx#{eb2(1I`^x8BcdZ6~wNJUPA@LJ6DEuz@pqxtU?-$wuGBG2<)Wdqn){evz|p} zGTvIQ@dJye()R!0NH!uroxRO+6KV5)|-)YbheqmXEBm4>{{Cvh;HI^W_K;Tkn@7$L$3FYPucUx9k7!I6P% zJg193R&uu{3QDaQQMZ>jj+LjfZ2HYZ6b@_ifc>8ge_Y{v<18b)fjUw2QPIv47MqBI zi=3l)jVhjkueD><0n<=vcF-bIo8?u}ell206faL5_F;Ty8r5w8dX>|Oc ziMwFul24f6#zq@L|Ahr`0{N`#5y%mx=f|NI_M|ly8(}&xP7EwFt6V@Aed_1aI3wJk zBN_T}NQnl6B|d>e*WC>l|6yU!VVYx1SpbY%*!=s@#*sucXD z&#p6o$u{EHItFF*xgMn5rpYeE*&AN-_&=-3a$*Lh6MiH|BCNM_LZdMy-K3xw5+BPy zU8Vp_V+G;;#MzG{5<88k^1Tbvy8=a=?Gmfr0x~(W27aA9`Y}as5rm;7?tEJI)ls+6V&qd7+Da z4wI=fnalxEzd)_g_kZ*IqEL+SLQ&|0xV`fO79i|kqt$J#_?VN8UZ2BM+~cmh?YRP@ zk}uLc;N9|uveWEE3WOqza0lZ;?+ZSLJRJ5tEB71M2UeTI(*v7<%w99!5G4WU>ix>| z{WmP6j(?(Zm8MoK5m7ffCRbSEwbePY=B>}^OPq8>LlK%m-t;w}c}A~*_8f}#ieQtq z!zpN)!A4MsZX5C?ub=Il$o_snx|@`4y?-yQ--g@h>qG&=Dw7AI7=_P|%Cv_Ap0F`} zEnQ5WP&ZI_^gkm?IwpZ=hMscUyB@VT!$2Q}qUCpmdCm!qT(!C7%eYMs0Z2jahh_Rr z->kczX)@WK4_;H2QX&Kb1l2fyhe=9Up=jlDUP{vp@=IYhxG)`1g;Ma+AybXuAT!JT z|4{MCw*Fi6d=ENoe(H&6XqeOMY3J?by|81)UR#n+%%Cp~JQRebT^JY_K;#3{SFPsv zoX8z+OkX3m55ih2w4u7bX%k5-oWpy+5mynmmX7e?vc5BWfQ&jXF;G0cELu|3xma<9 zf3sHn)sU?Siq z@^A*vcHS@EWq}Yj8IEUCDK=n8nA!&WksvyPcNSU&-HP@@2N96RMW(hx`1Cn?3i}o# zU7H7!V&7|RyieSb1SCC!;NDE1TP!*&~QA#NKfe1+GRYZCb zK@>r%bO+h8Q#tRdhtd3%YLJUw3^&Nxm$tzxylfEV`B?VXi zUmQ@JqQN9BT%UO7+T!`3C7(zZDb4se$o)Tw{=Sv}8m#;)+?Ygz0=m(lJTxGH&x;E5 zcEQG&+nXCIN1;K2i&4=aQi0jrU)}Rn7!afhy<_@&H~l5>YSab(IirQHpaGm#BN_lu z7@a66aAAkx;JlI$7rOvJ=8Nq6tmZlf=8`*()$5EVP#}@-NR1cv&#I5x**wZ$@IL;~ zl=Le^ueGzYg*bXcAB{_EUyv62_;L|kY3(~~*JCTDOiHD9&+|gUOvN|w^RbvN#R_hVPea)H$fhYq4$)}ISJ zuUxm!A=VZ*su;Oh&Jmr@(?c$ZD&7CMwJN!8+5DRIC6NmoQ)+&*z>iagVfJ!>cD z35H4jU^@G0h@3LZed6cwoKo`3&Ep@lA@8U`E&a2WPmv9ZK{Kiqv~Rm3OD5~-w+*EV zVk$xo*(0UB*d5Hm)5@saFdyMWrlWAq0jRj^F`xHJz?zZ4U*bZxJ4b!N-~|VRBr^7J z+5i)Eaz{1;AJw&Hnkn^tGz+vX3i zC2zguVW0g-5eRv%|&;eH+J@Sd+(%Vho3a924VHt4`J7nqH&_kbtt) zy3Vv_V=F*A+4lP!q;#QcX&aYY^_uh6#|G-WO_OEemz|j1&8-zPk)Bp(_T&Y4Hu4d* z&4890Kg;n|D0t6pl_&VfmAfF0oJ^J`e)dhzwuNuH6zEvXuK!6t1)V|KQe$Av7n<T2l=-+n!;wlL+;uA6Cz?M39+R^>dJGW3}d5^z8X$0?{Gst zsT)nWNQGG@;fP*7^Z>;u^JFN?t6~e>&T&JB;)4hAm&MX;w{& zzx~9H99*qDkN7TSAs9Re4)OeY9oyJPP^)W4;NjWd!t?nvi-U$lg_sQsvx`+X>ss)- z3L{xlX^GJ-zD^;dT)}fijauw=YgBfd$6D#W)XDS?k{t*x&bM;rLtun9U2dEPKNmO zB6kY1K9Bl)-k6d9aBoypM{l-Sn*E=^z>b;{%MTrR^m1uB6T_ssQ>SUEGrx!;o9L9Y ze!Sd!!(5uEJE-QEB%>l>g}H_)LS7{a`{scwqe-{SKGRz>Hff)z53CdFB)8iGjq!+V z9L7S)^;E2XOW32YFh3-2^qRRsl~4(4^`;(nue^C?7$@`-IQG0!bFcofmT{AiL=`2tcI8{8t@IvLqu1AI8%0KC=XFqRD;2M=Udt)kv?iZh(CxzN?4cHc06Hx2pc2Zu=6R zmQfcvdlaiPpIsQ^vuE&m2*G4@d%(boXPgTgGFJj4*VTUdQxZ^NG%)p7I_zvQ2*I1V z!0KH|0%~TFk>dFR%DUnMrzwl^#YkKWW-Tv{HT_Xied19pIAi4dH#yc*uX`njTcaO_ z9k|`JrGi6Ws<|k!Br<3Hdg=H1?urI;s9H757iJ8{Wn>T^MpqQe>#Id8zM5L*_uN-J zXf2_F=eu~ZE%$Pc$1*pwW#M~+>6T{Z>$KfRWyK<@mlMIX+0`5Ke0HAE9j{d?e0AWt z@zd&DXmiBfeYuB6L^BE4lwrtYPbn3E-g}mrbD)X#jqE2Qq_;4)DgrjYb09+Dzlzq6 z?+;a_xO6VsiUYfCnj;S-&^LL0#lmZGFxhv?r3K>-9YoT`f0gtGa;6cROY$4HR zyJIp=MGj@Io=b=3Zg&~T7;NYhDsLSL!9mQI zwI7Fi25K;_0^+3cx1{CDgqy>#vQ217**tWG7vuCExdkP?Q)g-Ezojg1BkOG`e$Jv{ zx7MM_wJ>SbBsL#Iqk4!BR}z)-&hwM)utWoVVNA_0|4Bw(#;QG z0Z6I?IuroTJ4`?T%d!X3Go0#n5)b3y6YeP^%E{m9F9Iceb>AAQwZ~bOJ(Z=P7a{>% z0~*lymr6}-I|qOr0KkgiM)|%ATyv%p?5$V6SQmEe;?&7ZNps9ir)QB)5EL?cLHHI3 z;69=Om;W*$f0&x<;q}f&C*};VDra?vN(G9768%TmZ>6$X4-0>+-I7CfsOx*v(ECg| zSxdcmc3h6S-sZqS*{I2T=k2s*GA73FK`elSWTSzYKZf~iPym$^llL4704$C6(5`!Z zmko4bZukDNWJJ(W#TCDp>`J+czt63*7flpN3b)=UV@i{Q6)aok=2UkrSa`4R+DM>$ zNKtJRBQf*FjnT~25jykW0$PKP_Knpa;kE3XL0#d_Fd3slw#P57`mqlj9qRHGVLGRM zT6M*vt^J-HVCNz-{X5GjBm3LW132|dXrSzG($*aSqg&V4cD4?~1bY#%Cut6_dFQA{ zOr)c3uL*g!(e=tjt^COcS>F?5YH8DP4jwyu{`O$4t23JStA|78**+OfIS#oKp$WAj z3ws>7Tg*uylw%srIdI_vrGl)n6I~zPH1#mARnw@Rpg1UB%TV=bTdLx{b~_z7Rm)S8 z9`0FV$FT$J2}KcJ1jr9v556pJJcgiYvn~D5MR@}D1#aeWuB@w!k!e%oWRBk!LVOD? zrV7q+lDRXe?tbAH7e{Si3OKxzU*4vWA!_Loy?pc_*q>v26Yfc7syfWP*Rzx2LP2_V z8hCPtcD2am#SVl#ZgDy&S>W_bh1OEll2JNe%#H734bNg4fZtvE-%gXMIr%jjs89Iy N57@YN&yJq4tsUFu?$|bWY}?qu-F-jb`@{VYZbx)SWyguE zb1Ji|qN_V`#kY$<0RJ6CB4I!fk>|hX9S~gP9tbTG6yj-aVlNW@*9--MVygyP{ts#b zk0PJtCPXja5v^Jkf+1aDp;`^xmhXu9YhkL@+NxFufiVBi#8>V3XBuB${9iA{|Lg4k z-`9VV{*SLX?Mg#1l8BIeV62?6hXn^GBRdNt3p2B(@c-9#Elx0c+C+8HyjYl~9f~zq za*7v=j1Yc z$a}u}&i`Ri>w`e7+Jis?)&4cq{uIGc8P3baHo#sFR_X@xGRQDMOxqR8GH2!IL(z1wz5?Pw#r5*_t92KApJ$<_WJhz?Yyq&)k z2bN@$$ancM1$|+?JDz@SLjzW8-}3>?hF?!HH+)LXL0|7y(Hs=8kIsEfvq->FKQ_bW z)q5t{yqKwIHlLACxY`fshj79b7Q5sQlFkhG{m;->>Ow?ouI z*MT#}D9TD*v$LW5A9~lp^9CiO@KUscd;z~Eu}Mc9t=@j)3`=K2*g#G3F$gU+ecX@3 z2*lA5A@o0ez4Tjc^_>lh9UYjIkkWAIKL0_9YRFD_za>vxv+w_sky*6jB8UDm=q(eO z>a`*nWT(mNswtj>b*arO?xL&n6pYyiVNtU-6-#}Q01Fg0@Dt235&7D?XB4mTEkENR zbmj{VCRw-}(^V8M#^0Y0Xu>!EAje>L`VcuwA&B}E!@q( ztNUlBCA6k?=R;@3b%Cq+;o_bYHuh$HLHxcdIJ4hmLdv!s-etEJHhpE zg1${SUH9TRspeuh&PehMC9Z%fU#}!LHgY|dJx}i+r|&13kj z-JmXYt9A@|{9KR43y+d&-{qr-Q$|hz_I&jY4zm4OJgcu1x}jGgJw!r3mLp{(+!wOu zf+>FH)~*^lw%wOiKX3~pym4BY(^(zpYAC`(#|OpdP^3x5unjD?y!2k_li*)uRjRk? zZa+M$b|PXX)W1LWBdXd=h3E{Ks8F0_3qOfCEnY$s0M=9!1N>!hZIZ-3U;J-d5VGHF zR$0^A1#II%{6FcPw6m zs&?m&Cp0?&r!U(`^4Tw!t?k|}{N>g~fZ875KIbm7587O>x|)IuPsZu;p5utFBP6RS zBmWw+PO6+uH_WMlKJm$YIU_s!P*=A;vih?GVwi{%rKcd0xiIU}LNIaF8Gy+-gt5ZU z^_PNXHTBD++*@IYHv;ZT#B$A(8p8{-rrV=X0S_DP3Jq-HVK(@K3Hkj7ME@oE0heNrBNNeM4IA{&L6B3d7o^pNH3g3Tr#p} zg0JcAIgia9k(Wp%CZrVkDg*qsHBeJ-BA3cGVj>u@2A&}#Km;o%GjD?&5F}k4hnwOc ztcxc3btr%7ZdXOdYWiOF#Q4Y8M7|wo>cKpf{8=VI_VYjay0f_=xtfU1HDLvAufM1L z*2dQO7UE!8U$zLfv)`4rYv3DX?_s;Hyd?iYb28GqexA4f1PH zM0m)q%{MK{F%RQ3TlrNI#dE5LKlgL!OhedO;p>?C;}>iNQRX}Qfa*;e7I~{#&SzC| zrahB=X~%;Wr2GcvLbr0jM3#8V46jU#@2jjjwm+95kJz`Nyfa<&<&-BP%?*qkya<=d z6J?*}W$0k-5kq6IfS0a@iv!rzs>I{PFGDZ$y3Nr5gu>*OPCUZlEYmH!*0WfK zyeFI{30n_d8&&N%cyQJ(YW5VpHScxRp(fOzovrxZpyBVP30z}_U6bpjMWt@0LuDW_ zl&MoHH{_%CbV-(rb%}(fyRQ#q?zZnyRKl;r4TXp6^m>qpX{O=LE`Jh z+$-He8iH|RcTc!%X8lCEiQzUw(T?jAl@1HJ(GGqa#PXCS`d+Ntud_+NZdq`NVdugE z`t)vjy<0_H0+iBC&N1ZhV>29@>2k{?=Y0J$GLF5b{KK9jZPZWpXcbY7PZy&#UJqOd zfD`l!_#(q;rk56NLec%oC|wx@S7{jjekJSdmCSqqa{Ee@P@UdhD-4})lk%u{!~=aB z#g%|@=#D`^K4=aeDrJ%}jc#fVaG>|y5-~}jFZ6{Ouk>ZE)&MPq%Xa^AX-4Cwcyn3+ zAG{^F3_;P-|Ff`-NJqS-BU@FGbt$87%F8pKEcrU0#0K~5ypx@c?4a%-)#tLpRaZ6w zFDSPxZ)LDTFp~rNXt<%L1A`*I!SxoM>E6HEW0j1xIyyOvLbg{%yL`xu96z?-j0yup z(R~41O9r++Qa2&xVrM2~ij%0w#~!8>5~Ag4*N$SIs^m;%z2J z5_OO>*G~L*%YkPNN87@cV5V28q*jfTdOqR>Y=MP27W+E6C#Ud&^^vjrCf?d9#Zb_= z+JhYt57Z}WBNrUfgBcWSaq)#qU!OQW42Yfjn^cno;%x{U=)&&oYvwpZA3TousKMV} z;DkdN*>q&=J2e*;^>H{k=lO^x>ohfbhybS|Gw{IzA?wz!d@60tgN8xjVcF>;Q%QQyJps1^-B3f;;b8_q;%I3;FNO~To9~2Cjk5Zl@I(4I# z3@=CPXr}j(SLNkLcs)t$HuvVZ_I@iP#q&qk#sR2v0t9cOt@*sYW1VUbx_JzvXdC8@ z?m*VZ7C%8G@a@i(&!oZ1`eJJ09#;`TIhj5nb zoc8v7MQ;;bY898aQ2?UsFL!Y()spHbjp}*EWe~Hd!cW-IOF1ht!*-^#~bV z@^3h|p`n~FLhWR@BNMUeQ(uwGWRvMY&2n!;6UU!h8gncs!4p<9=Uq72#krNCC2l;O zlmx(vUnfD4EV7%g5mtRu>*;*GX=l0P%sDjb$u#56RqbGMpV9y%gO7ZtJ_ zS>qIcQ)YJ5q4~MgLV0gRAthp{QK*3;?%=mLf-cF6Lp&>a*}@t^umE-FCzt*kb9Jm? zCv?y5^=}q8r7FSI+Y-=t*2qvT`Rgv2ORly$_nn6E{`otP6Uav!rQl4mVw=AY!BXhD zdo*po+m5KrjI}1R9T0WT9yP&^2w2Byi|uhLLK!2Lr9R`xdiUv=rR2x1uMyPmS8HZI zoB0XdN?aa;82S2^H0~;Q(b?IuVjDLtKhzvCZK{C7@()rl+ z*5f>JnZ{GXafo|zisqa&ct>5Hhvefq*!34|6(do#Xlb#QnT6^ylD>__3quNU+@oe6WIq?w#g?QK73g+=vnUpx(XQQxqh*?$PNwg5j-Chjz!NEn zLd8fIBcET#5R+{q<&!ChEF^PZn&jGR8x?m;E_I5rOwm28DFqZNw73pKbBTG!AYL8> z@Epi{K20mWDIX%)nt1)>@7PyErD;9QRsYk{1O9MAv6wR zqKky$@X%p7PltJ`%3eGWiYL7cMVYwpsFSCeU=mlu68r_ayRM_Ij@dhl3#5l2bdC%0 zdfe*W7#AK2M<<<0U4UjXGLto0UwgS&&{D0SY-w%Z#|(6crP^|jq_FfjIoFEl23 z=s>R%cN&3Z5Wv!7jqDSv;}wU2AbfKVm!>U_(|0nlb{1#FOU#2+KcurGe5Afs3krV9XwVOSsTs8p}jVQooVrB zt>{8sk$Q`ld%%=iXC7ZJJ-aD?Ge&KUKq-r9-#Dc3VYkP!SI(CTs1A{0v3*4%`u_et zHqWZYv{VtR_sV+kwy=zQwK`lh_e+Xj@WHHAd)*H&46-xczCNczQCsI0tBJy`E>>*5 zCAOsM@Y1pvra9}l9%>SurQO<)HczC3;MWDq>AGq@2-b_prkwz~1FwNe3C(Brz)uj$ z%(3sHETK8Oyc}8|$`{myTema~DL6YdYv$9?6ejNpOIO;J11G|B>?2-WTabve{(3*8 z9qC%^@U+9pKbKAUOu|@4CB)nPxGr~SZ_b;P`tRd&(3@PrR$%Z#qvUOOW*~Z9?{rOw z+@ln9{$xspTqWRp(g)s9iZ(KvtJg&xzTYw*ivy`|p+e@ao7T4S@NS-%@v7j3id5|i zfJ=C76er&wIX?h%qJx{8J{>Vq?+OoN@!d*q@08}VjkPuW^zH+vx7nzikHPVfJsNW@ z&SpreT9m#HiQLX?ufxwR=GzE5*D6|TWmCXXAQ_Ju*$sDIA56degNyHpRUnH?2Sco+gxgIcKCz4NPu;vWKmOy{GBcocO5H_}u(g}M$pWcJf&2#9z z;j#fLN>ZRAwlzHlcu>u2;(Q#|d-Yf|K^XKt8-2Z-h*pF`Ub+gA(s=JJNIy*Ul_bL*(u%H&-&d)e*>G+OY;9Cdzx&B}r>Pc)>y4h;( z);}Ej&_zI&+SxIvNmA`-Z&^MdVJN&{)RadUMKQ@0Axzg*Ie3l791Z$!??-6Ig*9;V zan>%bbCAtT0ykGVVm}uQ;jr#u_)cZN$o}rLY?|g#TQn{M486CXX1cYbCsNN(Eb8zo zxPEom7P(b0Q1A7KN&adiK`nlN9R$(mykxc9Y<#pmd`|AxqDdK%ErD^hV?;H_SBP@n z5iq$H;cw(vDsVa-Vadw@Pt}(uo0P`5z5`QSMy;>rd5N*5&1?b!+w0 zU>rn*TuP(C3HiX|{;Zi@!+juN#sIpduvef0oJ7=viD%+){w(4`YdLQ4T_Vi0JFS(T-P!WLd}QmO#WPCI;6I z)1(YUoPeLIH1(5a$(%>^ZgBNz*(Z+*!QGKe#ig^@X*4O1S8uvPt@4!P4|`SN8OD+~ z)n(7cG`RD{1Ixo_Y_qWmMJZ6Tp=gH+`yUymMBNvqTKmQHnr_8txhi31P}x-$Z)$mP zHEX7um6;&~6BP&oc0sQhh=h0B@HEHIhx1@s$b0c|ONhloW7|SViwH~IeVuozKZ$hq zha#f>u8!y66Hv`wx_(%f)~1ch&g)2Bf^iy+FDFoRLVUIRfk8nJg_hpl-dTqQAq{3y z-I1W%bP{q3=~3RUwhfM*)rYCAb7|c#5BwNpU=19hw2joi$*6BBPQ-`4>h%CeD9LLOhR|+1+LeVAYJBr7v24Mb6sL>7g%y(VbAG3wAt%`o-u?D*}JG+8W!K#_>G`q@?Bu%3ZeQTLLgodUe)v z=Qlpo-B$i2bgqQOdnw61;qKcY$W>ZQU*#F&b1>D?y?3=qeY2SkJ3d0i_g10&R`Ubx2iPs4q^ZlPu8!$?p!1g7zm2A|XC+f%5!~5U( z(33zN2Y3{C9CT1Gtq^!{JQWg}{`}C0_X+oBeYXrX$}P*6UsI~V=Ay4M-lg?oiN5Yx zaAIhN2Y|}WLvmJ772t6ryIrlXEC170MwX2I zC)Ls`4h341DTD3r;n4~@BqL6NPxXs0vIUC!I-rw}h8I*9bh3upl7=`dtC zo@8`!RT!(XMT-km;i`(4FB#!s8D0UT0x;`vWPwmfZG1V=|?)7-0}z7 zZC`P`!m8a`-0UvVx|P}~dncGFry+7lJrz;@L#|IGA1zpZVi|$TaCQQMFXs28EsFU> z@j$~+)Ya4Szr*2>K!M=J_vvMA)q9CIHO~02B>|e_k%phn!+8kDgDCh z6V-VH53C?Xp**)5P3qgY0)Ld9V4yuN&HV;gccLnWbm`Mkh|mLP+31>EyBOCf=6=0~ zvknVvKLZJ+#=#uUGE1d8M_&U}<5t3lA!!>!_%cCZK3Z^7Q`#V_XbF#mk4jFmCNbX< zvzjd}&#ZLHlBxq(&$j2=$M&rC9kCn2-*5LL+3UB}+|U15bZSFV!DIp7KguK>ht~YIef-r&droz^_+(y$JnE@qBSU~q zC0z$D^*Tw?*eUOetMy*G;l52lTRRIn?SzKw&|W0?HJn_+6P-V_px^NyFFakgNA*Wo zL0rR0q5&fz8$HKL<(AhGBczSXGVC)3hpCVf$$ogs%!zIux8B+??-hr8eI9!ne$U1v z=H=>bMwm}6ew-0)aJIu#q1%{Ap$3LD;!#SRm|pIWxa;Mf@>e<9(D_w9QYTk@85N5?)U&0*S}t0< zGV4q`z1`fGqf?+x$n6=ca{YQy=Vne#2Jg@yTyo?#%M4};p9%6V&aoPT}#c?)En zwryZSx@8#i8NCM`TZ6}y#vZzHGazv`ZR@m=u1Hxj*Muy&Y=9a4_hf}dFN(`gzeT7-D3Omw zEVJnR?fgt|u|?eg$?|Kjvr;m`zAwsRCW-a@1OPUXC=uF_Ad5&!=l}1+PcyDoh8l0r%ye}p-V4a_I)fT%6?ty zU>3pYDR+26I?qpd-tp|r&FkPdHRQE$@(W*?&E;=?X4~U~z>*5JOso%4ixQrn>7Q&g z1@w~z?uOieB0ESH%;{kewKTB$z?wJKbJd^%@fTV(B0s(v+oNwyFS7Aw@LkBD88 zTVpKzoNEjPwkTCrM5=c%?Q@>?>xeAnn58LVXdgmndZ^c-y?PO-1`Nz7I6zLYRY^vb z355zs1zF7EPfo`xYS7T6hYy*CUz=bS;?EwQX;DAAZiLPt1wSNn#gZ;x$y@4~=xq42 z%)P5IGxid*?jC5cSGOeFZOAL|&L6aS4#|I?jZf%Qf6Q}$j5BS*{7e^Dy%9jK@|vsM zIh^nQb&|lLZQSDu^ z%=|-su2lRSYl|@yS3%q=kBWmt2E4GQD)+su1qB7`8+?P%m;2!c6Kl++OJKSItIK?r zUREj9&+UreJ1`5N`Agk?MPtaxMO@8|XeP5+QI?9)=hPbK*Um#3U($hHbi};ucsBjb zI>54)RDa2tX8Nzu8nAL>J;Sr%j+$0l%k3etmo@_b3mYj87mf~xX`wAAfQ33yIjQ8h z*G2D}#-5_j?zP?cM+~Q@=@i!X$?yY#@GDq64%y-;z;8I`?zxGJN)iNuB_5n{?Pr6e zvGMUm_rfwVmQn4F{(9<_EF?FX4{6^WDkseze{00N@_?`;$rf)0J>>c){VN`7eWoA- z2ks1R;S2Td1d-dCor$>URpSzpI^x%4@hbBY7L6D9afo=_rTd3Y7A46v^_*e7`A3@C zmB;R=tsT8NBeE1@bpl!q?}DoWXY4Z6t}i-*aVNObUKX~nKXSyA^aN{xiGmQBosgfz z?Tu;{8lTp?1C@xlM80-#nph!#i^zYaB#7&{m2d^$Uc2gM@f)kVYV#c6L6x3598I)W3!2{_$hG<&U?+a9k|cR_Lim9ol5v%&+u-K<|W%4l_a-wVaTB` zZD6(VCTIesJw)u|8Q$ekxSS#IWg%n+a`;Za)Au7`M?#O4IFaV)q`)9Q;xr zTxdtSgDMuxFp*bVOukXw^b1|O`@X@?* zb0EAJ9<4M6X<*kmlcJ9atuF*L(8_lJ2XQP&j^j={grqzfs)UYX~U$ z;1_tdjE*XZ^*KcWR3KBbpp0<)V!ZKhW<65_b|@Ii719x^7?5A_y8WYb7BqfQ@B?o? z`6~q%FVveDvTySKUt=Efe#qNIWw;`Fb3@T^M?qoGtSSLjg8cN=f#S^EuuWDo)-Em` z#U+lGCxMtt>5{UR8ZfHg#h2(<+=9qvnN!eA-+F_4J5r{knllo}g}^^GeZ&*Bq-f+y z^z&io>q={M)Vz##;%!^zvc;-yBmP`$<49T(6-js zkZ=DeYUd9F+MJTbBc7m&RZ(794w8u+!7mVA+J!oo3#f)RKjL`vqe(H9@GJJAAcwG{ zu@D)q{YXo;)FdLSwH7SZ_dA>h*_&$%E3Cc<@pJftncaN+Wg}sLn^?yRClkQHR-&Z+9JLTHoGN&ssy5Qv7L$N%EhY9O^vcDjL1&4AM4z2J zBXxOKT1P2IH=L8O&5~Gu9cJ4a-V{N{68b5ETV<_xB9hQb$lR7@tlIGH7pKWAeXq*= zfxX|D+OtE14E9eyt@C4vfgGf@--t1uJw{*aeyj!qhW^>-l?TDkcR<~ZY4a$^=iAp6 z1J@(wQIzwB^+i-vOE~122lK(odM%61Zt)7A;HLRT{rkM;;UU^oP~^; z(FcMznF53XikD|Y2w}gXVszP9rQdG8p|#-}z~gbA%Jh2!-G(=HwWw7w3c`h+%(~mPn4Nct%CXO>Z_of&)z?j=IzzA>ss-w85L@(ry8) zke9gX1i!4h39{G{aifsR>`3&a*$E^IYrt;D`N~|Y-GIlf4~J+($Po1;9B58t?BWv8 zSAs#HG)8GPCjp3C1mIEFDyuoeIfd`-+=sD7ApGUHuyH1ff?gCvB>Y08Q|6o+^oc;c z8trZG7G8u)TW*B)TxH}&@mAh9%2z#AI&-yJ7kB&^Fkv}t?+NBVV$Y8Fty9AF9Ij*d zLXAn4W=b-5>Fe_%%K1p%%BtMhO3gggQ1BN)n1U#%iQbBHYKJuPNbuYZ@>+i4uWJz_ zF#1BqBi} zNzJciLSr|hXH^1Q2wZ82>-sp%0MGN|nm7agt%4tYYkbO_t> zBuMbPtBbz0B?x+py@)_l^p741{Eg}9At?jZO@lTx8qU+Iz-~KcuXfttI@;k=XAWo46~=|zLO>FN<_NQdQ?_4lGn9Z z88RcelDmV02i*OBIIdUU{Q88<@Px8@`+T*m2U5%pN#>55VPksq*XF>=!JAqb#7O}M z$rJFR6wO88%`Y z!E$Zzka$XPfEu}L5-_;%z@x9NpF-H2#wK3ND|qBDHfdEa&B{Ymn36N0VCZAaY>a@& zd5T79VVPe(xQA-OmfC~t-lj4T|5^>HfQ7^j={0I56CoaOSY(ymGx1T9x^t?Lq{&Vv zJh`bvpt$OzGZw8&b>l)m0fpTB#f->-wBZdWfQE=>VgPq(GrF}vb!2cPtO6U=+vi*c zFMh@#9SuQYG0UzlqI>qf`qkdhD{P6`fage&nLg3}S_7p%&n{C27Y{vZQP$tmdh@*162!w?V>y{}RV2E^-aPVo#1%oI)Dg zc9;0WTm?B{*ovZ+5LGjAzoMdZHK)wSH3X->glp+C)gXj``D0{n5`G9nWvEp9X|qny zJ{P~fQqj{=V5r|5wu?@L0r!A(?ps5(FCa2=$faxVN_xu7B=*Q12JFnt-OFd_cN#;5 zq3m>JXZSeM&>7xR;hp%QJvsuD*{uaB^5K!4V)6A2grAJA$#*M*Ybh8z&oK$Sips9P z6FOk?fx^6x#VyT6_N=+ZUs9G`!$mauILy&iB#2{U@o23HR&;Mb%6uL%!a|45_f2n> zp_IsD{(KD z@()XW9=GA<0ZGw*yF$DHwLI4-1z#Auh(@!JkP#5F5x_H-a?iNx1 z_K-AHS6m8mjRUa}mJmFfoZ$$vHNI^za9$-uKK8tTu}cwB|Hql7#1xo0O^~+$qhU+D z$Ng#Vn6t=|+@~)huRGB~Y%(ha=AN?$HoS{&%9IIbj$HHVix%E;ztWJ zh>LZLN9`Gh!;6kfuf`9)Y{J*>+^s)XvT9<>SxAfht+(Lct6?<4S3et}JGQa1WXqeY z`qD>IS$8?fnaWl`ScMmzH7 zI5lz$36cIpW&ECR3t84SALUjc>=N*x-Qz;2O@eQe9aOo&6xSI&%#wq{t2S5 zY)FQ!-3F{Zj9i28;b)fzI|Ty!bLocjXaG1hdMt| zRv(@*;zlTGs#o9rsl<6E_Y}-gSGzoMOIoODXU)+rHf+a1|k#7C7@nIB7nfMeD~f z`*TPavpd%(RA2xGX+?R!aLtHl72OC)H>?8bkbN4n0rHC5b#gtao zAI_~tq$rT4H8mzaua#y4H?fiM-bdYE^&dxuG3Hw1L#!cKxIK9z{q(vBSyclhokMmw z3CVDr?$B)%^#L+#1JemS`jo7QZW6Aht8&?hP_m^q^?1p9ESA8-tFbex+ebe8Mi;Zv zh|62?shuD*kNj#y_Qi&Jl4Dj&Qk*=}jfodc${#s*bgZbt9A%Cde-8(Q^LSHC`aMr5 zVX_i)=^iW^3HGRUy|G#eNCwzc@a&0}sLGM;a=wGX+mfa6&Em(G2He|=ZBw`8v|K61 zb44?ofw1RaeDsZrv++!r+{{f6uqAYz`1{g?rD(OYl-Ry!mxBnj3$gf zr^Y55Z5MGh_wgUSazR^Tz7#p=QSEqU1@iF{j6cIXz^WI}C{f~Zg`3zC;RU7{k_kZV z!GUu8cMBLY&EenX$+Bbc%Wp4fgw}X_V|)XR zz`&Sf9@n9a$rzty2r<3RlJgZDt~Pf}1bIXGv{}_y_>QEd*{m04yo^HO=(N!ld}4}^ zO_R1(ASufvQJs~a5`~iacpB)oPDtBwRxamZKf`4+oi%h=bHeaWUsC&ni=<s-hPV5)ipZoU<7co~fu*=Bo)ml&;V4j-k#b zA#*4mNb~_nS*b1RMmz5^Jbq}G|1LF7^oFNGmFcoDe;Q3an)ji4q+a5=KT zmwS2U9^{8P=Roifs9ypPi@zrK>r(c@z*ckaxL&Zi4m;T};ifPLPe7DPj!m!$1)1Zf zErA|q&r><4U*mCaYn5QUPIWV_MtP`8jO8jzhHl9kW^)d1Xh2NOZb3F$zVe{yVeKmR zys#^QOuT%xkI~GPx6QN-xyA_9L2UF zyk%vbrN&$(oWpMI&@IpUYw{1JU=%FAoS59lw*Dy?x`ctzIBv(cIPx-QRN1^J4M@ts zmPEt`Kdkq;#D<>2Ka}_mu^%lIW&5D2@D$YC^Hi!zsBihwA!!*;M@-yriAG{)bH?)fJBUkZ)5{Nw(!X^$`&qdUeE`(vbYMv#j}N z$dw(@g!2jT6;zlX>H_O&8twAkqYIt)X z7_z+Bjtw4~rP}2YLKTilH+OY5T|I=lF3l#Fca%? ziQo>w2t$-SqN zJg`iemhe;ODJTIVBK=O1Ka4emtJnuWFRod8={bUW|J639;gnZlFC$~Lk4@N(7B(fc zhJI(!XJ#axPz@FO6!q6R0`cM^2egX+5-JWn^VrST)gP^e8a5xKfLuQ2i~%J#bpvj< z@3NmdIYI?JLrkGZaAYZ%uSJins4NcraHYi*sChYe7GP!tl8xH2&?qr*u0PaxWu(;Pj=bc7sF04bJK3JBP zP#3q%a{lalV4)3f?wKWhnwNp9P=XL#M6bE{NsNW;Y&{rJ2FAOv9x~NW>Z!v|?CKaW zwvKN>&e(iqsZmnh7SXB#G)mE>^K1yK^^w$5`IOwr3f5eOr>5E`tNnK#yeoE^Xnv}@ z`J7NKGWnz$_`I|h6kc=WVU`vnK$#lcDDr127!yB6f!uNWsNZT$^0kHD)U$Eb%ndf9 zxh!x86wOY$f45#*D9^tSTrJ@iy!1R$oUl_tCAkGLJ{%@yd*!VXTs#Q~(1pv#WBQzy zzqes2(J;?S1c>`p2~n|P8Xe%_(%cojN5#Uv-^II_=wMdJwtU&l!_kk`ysh_1sxg6N zdmf7Hw_=uxN|Q|+?Ao8+i*#Q|Ws<0shb#oWxqW@n|I$iE$8P#+_VJFdfla`7f&Gy# zhA%<9@J#!ZM)awV-x?|#Nd!>5K59RahfV~tlvy6~Y#KSQhkx)iFrcequ31C6kRM0I zJy&-#MZ+wQz~ihU9qs1uth)+toX`}DgZj{Bz{D#z^GK{(CWvtTQJiNORUPqpyNr|G zKtWwX2d*K3AeecaQm-47!M2XJyqy?im47%saNcBkm##v6k@`Sd$}=)`Qhse4=aRRy zEDdH@r--KqmfR|FNe*#8@VmM`}pq8 ziPBu0Mys)8fB|hcwF9+U<4MTd*7Mf*nq;?*b z@!Pd5s}7{S=*{|M4b>?onKbOJeZkL+Ulg*_KRGmS2p~6UILUhU8O5HhiI52m&}ZP| z&cr|0`k0xX${Vlr39;+kgABrS!nmCb6IQ`jSe562`g%|0FaY9~(oNbUs*%8F)xjQE zZ>f`MX1^pC%pVqfLu&qJjP&ccblmD5>FdfukaQ#js_O96BBPf!=SXi5eJ~5sh~hMR zF_WC%{osg%VgAgr_%b*$)q?wA5bg1jYPW<4-hY-{2Bcmt_dkL=oD|QIQU{3aFxL<$ zG3-F^6FoH;9c$cxCu9#$O^~+x>|dCzDn%MMj9(%5hJ?2AI(}DY z+|3P&B95c}QTT-(wH*<`dC!F;N0hHS#sW;Qk+S<&4|jyNR#c z>`y?cxDn^txj*PilS@O3Lk{~cgKygg0j#FM5m@+vfY6ZuV-j@spsKVbEF2d-ct4Lt zT|04QT47CQPUk2pNgKUeM-fT*#NM2AaOgi^AU!EbNkJh_|&1C(!2j;knarS z>S8xc{xDg@Z;{5rN{|~Bto-WQZ<@gtR>SjCzxdV$4siN}>O2WT=sME7(^h7U+fZ@J ziQgZRg@K;Phn&lBMBxY`nG(>RU2JAlHXu%_vCgV@k;Bs$CHi?p_r?o6TrRV&2^+)T@mJVqL~c8LwoR{4eUUUyTxd! zcVqdX@vqX3?;q?iBm3<4?F>z+l;Ma7>7*rh&>q}Uk%q*MnyOi4kx&2-APxABn%zHY zPGflqO2Ysvx@4XZ8f7x{w3p6v)Gc~sl{CSCnzl1*XyPm<+LTa|1dC)p#V=yeF2llx z1=(7T4IkPG#%=g4%`e7dIpf*rr$~NpqbTEFJ@j^t8hdTeQzK8iE2AM;a&V2p1f&fD zAgm>$TkcC~zD0#W0HuFCL(Cgprp<X)*hUDIq%G z`S6N79-EX#^ujdf*BHGUtJa&2@qm98+b$By0s?IRr-l8m76_vUAppSWk3t0c?H762 zZ>UAV8@h?*se?25E!>fp+$xhLx>u5bUEp=sGIVS^;{w4TvH04SSwVs_hQPMjZMtEr zKB2%7yaYJ4z6%rOg*go0+cULmvo2WyvI;C#rz;^2?16>!;I^u_bpy{H`PC zt!QUK{;9{VlzsKRkrq8pw@N-nCu`upuzCH{kRbQ^-lD!L9xsd{|MGZqxy1)-^I-Ix zGBp+@KSNw3lmP_9{3n81?5_wgBLG0}^_moqHK3)JCN|Iz!@HxPY%9LqGB~2srrx;} zy;jn(6-@U;2`ay13Zb96kIlzcUJo$Jrb}J_XJdCf!&yE`7FYv<*#4548_%ez#C33ER(0``{WZMKCmzU96Wjjypw9A^Wp+|7 zt=PXv#r#unJ)v*s_Lv{Y_F~5}GK^5b&iSX7FIeMLvb^%2%KU$rL8!1muOlP)v|Gg9 z_34hqC`Jak62!AdLho~K^1NKBo+{WDahG9m>_*^GZVIr`cAtogK0Ub283b=_-lFseK{_Sr|7>CXLnE8P-~1c(arz<< z<1ZF5^LWE<>23ZZk6|xFmZmjJU_g;|`rp`qfd50)mF%I6{}37=>I0b-mq30es=;n6 zgcAwFjJXHU6bW?!K~VlDSJ);H0RQ(_ONb$+B9!gurY zC3#{^?PH2J77eHPs!?+iq)iF*og_|+yPxyyDZ`zwTCRhrnKw8n57FnFeCAs!k_3Fh zZBBwfPK8HSe_)Hm;O2Biz~BE=?kRgN!#BrJvDO$-sk|F46LoJ;y&pCs9!mNR8R!|O zRQ$=mO~VAbwr`%gz;lk4T~7p%MELE|PuISD^U=~Lgm=Vk>3AM^1N?o~K(PO*oB$D0 z@f@63kR%P<0$$?S-~9${{zZkoJEz*K^S6HUFO2>#tUtW?9WJJ*VuzsD2NM>KXlb}Y zcu?zxIpiKrK)q$B=miME_P<0`(+&JDQN^;hF4*BWP7s^EXZ7t1lM~HcGt>prJaHAG ze2^R!Z$8@}z08Y93zB;>B*C~+1s1IljI*Ar$POKS7DBL`!@(**L(PVLKmoDqrD@k| zmtb?242EDLb=V5&JqDDMnqhzuImU5-qM9HOp})Hjo$S_;mGK8(4+QL%qKpKT$>5Hgo=S6YX4(uqzm|usZ{>eWglU$&W^y>!~9{_k2{aC zU&hC#l4eIerX|NB6bxR?i^2Zp4FU4UoYCJ}X7ci6VUjGlutcg-hEA7Btf^n_a18fC zPRB)swbZg@vv=8qz4Oi+6AGUes;UiNMof&7YS_`BvMMEPaV{}ZVtdb=GMJ+)fYJpZ^ID4xlof=t;IKH~zv>_aUI^D>v zU--r_P zh#e=jv_p5tk!fEy(An-qYL{i3@wM>(GS2C^!V(m%kjUI4@R6w7h^`AF^vT(7ysRI%A(i_5*nxfr=_c4i?Zvw z!;sPlNQX4iCEW-^HzFY2Al*51$Pm&ULrQmt(%s$NAYB6A_&(ncxX-oL-uuM8);`xU zzYexo;#Y^dXV@kEb){TTFu_@z6EUfEYjc-XI@pZpkFWDL5jN8Plbk`i^yglP ze7P)DMt9)Ebe(BlEgl$xPwe-ltRkW8BR{&nz$QeAjGbu{0BsM1^MSFVN~E)LUllgb z{MlKWMTqJ_P^L|e#H?p7gj{bhrP(-5T8VX4m`NyX7R5KWp7Wm43CpzzZ4D0E7YG*% z`}|W(pdCBvmv}%a0n^`ST?s|Rt45~baFmPqoNGpP@cGylq5qvpoT48q888LLsM{^vV`YP}`LRwGfjdL%p&ZH$OZ z9TUQl_xk=rm@ZPwGwjgcfpGaSo|+T0!TOo!_JdSB22vO=d2a41fR6$FG{n)dDopo8 zQXQd)3>ID;<+uri)Z+5YhLlP`l+OHK?jB0Mxu}t$iR(s^1C2JfX@7>n&bBr(a(o9Z64I`&eTS*OYJ!wJ_^)yUQhxYR7 zXEmXZ2?!5=eR|NG9P3S;i0~hd1JiPS+&5N{H^{)y{y?}U7-Y9}jrTvP8@vgQubAo^ z{%|y4sYxzY6Sr_mUhr}5n;um%Kd6ObKDLlCf`1o?`Fy_*d10`QbMv6;T6%{3sE#dx zb_c?ZfGxum%9gS|YJK(cJlaI9wGh-~Qd;w;Rpwq+S0`8GP>u2)Kyps@m+2^KYd;(YEFhCOp!=dZ|=t=W;wx0ea^`HsA`I8a>F^FJSgb_K#+gDu17{S|d9*Wz7sPGdgTz+x$SeqRWWv#w)N*HTek%#AIbDhZqPriNV4hKMc1A!=D%ZL{IHw6H) zMvl)lnE;EL_6j3~C~-^w;dYE8oHy^B9UdO*qDKio2TZ&#QI1MTireMq5q^-Z3>lJM zD4P&3kB8<207(I%aDXI2_OD_91iC^1K(TKCU;BB`yPy5}!5IuA3nT?wMkQ)kZ4!K? zZqOuHMK{Me)Ob;|Ru}klK}@B9&gqWUQIz}C?_7z{My%w5Q#V>5@kP%S()rRHt&E!n zs|p}H*fN^(W#OL3n=uL^S21^WZnOwD7Hs+#!H`CY19$&YOPYoR(NqTYswk!IeNc5z zgB4LH%_bGY(|x5|2s{zpp=wgkQPu$A{1GAA@5k}(=f}R6DsYG9lKpCY1VePN z7XYAwxh;v)QERVMdS+^aJ6&2S4!_**bisuW=t^bTD5n##%oS=m-+i%R>BV?p=(DrT z*Ev?_9t&0J6~vZS4aWnFkP2QIXfo{1ZqDyD)O_GQ40VN*bYsxQmN>cC-==U#``cC9 zaluX(d6<7_7Q<8W43EGqTJ9&>{B#hcfVfO~G~J}XyO+`E zFn$}rjdK)4#sxaUV8!cA`lUBZp&P!C$epb9AZevR6-pGm@Jej??YcAT)Ih5h7`R(7X zgkW{OR+p2;_w(5a+nen+7?L|}vBdve%+Avj?M3Q?T&MA){`(Vw$ZlwNUL+Edr%x^lcy zojDq9uJ&20<8`FihRDP&QBfb(ip=hHFagK}s?f{Mx#7#3#!LL>;gG65ufu0V=9fnS2rzQh{JlcX+G=>)!BtOz(_h{7k8}Ar$ zHA>cKD=G^Lmh`nR4q61S9$%!!eujV)LQ;MhR{D##qVh`C%0t}Ky34dbrmae;pFyF} z@BJ|L((b@O!5u!vW=Sfq@a)RuyX%FU3FK7w7SrbKQztg!#RyUFAmsPsPZ=E3dz)^E zvNE*KA-Z}9APl;-v$sVR2Nue7mAP};Md*ss(uoqJ-Pk}MH$z4hjJ z!5ozvFodJ(_u?|EsH+aKn7^tmjcgN~RkL#p`?OWa+ka{pq0&{gUUsvq74Tdv%T9Ue zi*IvH^R3>@$2yi8T*@OZ!9#ZA1kbpum4Vh}&CdhoAAx*2YwPAZl8LD>R+|fq_RuqO zuopV_K~ZOo%Irr=DIne82}nvp8tg5zAAKbZKU~maeY+j2{T`d6)Y;=*gKZ_2?eBuU z+s2z|7X!jGPKX`ZMSEOip8{G;uh{`PK;frLC#$P}Cor!3fReH< zqRDG~QwrGqhMgY@{k{JA&^5oq~uHG_qCo zi7eX)K-bY+kSyX9XK!Cl$WEG__DP^ZTB!?DAeV1a+@&mS=wq`gQV`w64M_(*jaX0g z7}Ky~$TN2MLkzjrN(ZA#5&w$GyFV9_b0kk6xifo2`*QJNxpNAo8h#{CAv*oaR5EaIs;tBlPp9%Zy~Cz-WfZalojq*p&53?fIyIVH*NJAR)c z_9pkwt=L>_LIl6KFoN1Ed0AWl46(ICxx z!T1Yn%eipEALuBRRXN3LMLyDpo}iIn!5>t>ja8%vV`)BFk5YbuoXy1Y+!$|%Iy zmTKa-k>zqUzNGWmbjHiDBBLgoRkOyO;a|s=8mNsQMy7Xq-}gB-(d6;4a(5DP4P7mV zlvf)w&TwVf+V;*iB8^$IZx_U2*rD;hoC~ z=@4lUwa+*W-Cn%BC`OYCTe(l&ArpGh>k`o`h9eYFCIM5k$Qg1n5)VshDHEM03e0sfgG$>*9fzVm8vI;DKzWL(`)b}Z{& zFX&xvYdLUwZdqK;m9B-|_Yij9j>@jFL*BiU@L*I%vtBztbR()n|! zHF9;YC>T7*o%b_C^_at~Bc^Wtwx7#%Hcw|EanFQR&0GgnB4rFg-oW4G>}LqBPM znL;!k7{kV^iz_*`yfgo-Zh~rt2#0RHc?0B%Zkx~;+(|faeO?rl;qwH*naJpA*kqTatd+UiSZG<+`*yBQLBaDGE&Ol#CPqFxffz)5lY2S@ zGMw;i#1p&$TG9_YjXkLX5Jouh(7;%ouO@1Y z?cbGdT5(jZMf9JkZI{QAZxCPH5ZcN7<>Th-w@{iQozfHDQL~yMh9A3WJgueTNO4azYNepi#`HQPvVJ z%u@E#;}fFzMZE&N9{P~V;e;jhWxPVP>05|aW8pCzce@m2u3aj2zW^M6!&m3F)R(I&!4K8u=thz@G*VrK2SqA|i{T2o!@QpmK&piO85`!(DX6t)2J_dN3x=7eLJ#2|M#GR)6ljDUPY)ZWrHetEKf=6|~P0q~4kZrahSOS@}tViqfdSjMQ5^1Gfn^GE3emWJD#>pGg5oB`Oj*4^&8rq?O;wPJoR*d?BV# zB+lRu;`5<-Cd?Dta%|5HUR&{ewV}1jhYpg;A4STjlY1Ll@#d$yzlIqEJxo9N+i@H3c=c(?Jb-e<2c zT&{ck?|a{N_475Vtl);`d@_SexMQfIBhV3Fls%M4tQRbh$8MJY=)Z>yywKD z$q?#!jw!Y&%wAcK{Uy(xpUC3Cr$RG`e=79L-d@})lbqv|GGST&2g0!Thu*AbpE@}- z^4}o+LT!dNmGhcrjyJ4TfyB&bzCI&l0eKEe!kRju!Y4(}*qzjit?jiG#lJy?(-a-` z1N>Nye7jLE_{*r@+n)tz809nyzmyN#It7LjN2)zppQ}QC}fVEOciyw=s;kDqI26jH`gJT~};b1iIr*L*F&ck*j&%Ly-`2OVflI>Gb%AJSf& zhK=j)&+R7mA=R}OzhWu^t7Y}20fNn~+$_d-t;)sAgw_$7UcbFYv#>uIKi<0Z&Se*g zC~QEIr(1S4<)+`#&FxfwZ~V9cK^f9oRq}d#=h_qef*|;HzYT8wS0yDdSS@2# zGBa^-Gx2lCiC!abL)#Zz6dCgRnN$wR1 z*Oa~eHr|-*&XE&)eqM~&#K)c?qi-4{YGd(N4MnWz4WYJNVVAHw%)Vrl^h>fTa_H?O z6q)&C9pP_zLI&4Ya;2S2__a3Lmr*$^TB2L!F200iFHxz=(Lds{z!RMZznyKu==2<*=%<&!#8*(2bVw~E4BKCrzx|oN|~XMTUG*B zc}3%tc(y!{g?Y8IhL0V=`#`&lPe7D3kjde-rck zqT)4pig$$@$p*1kVf4ueM1E~!FxJ&s3b8ukOVf1GMd!-}&7o$@BTgZWKUXt@pWKB> z<;s%TF4d#V!$$vF79ypQK{fw)-Y0N&vs#oRl&`ylC=LoSF$h@G5v>_Jq-)t!b}xjo zTBe93h1W{6z@LA29otXn`5YE58Du9NxxFhlZ2Mlg96`vn#(4NgFB9FHKD2=vPTizO zF@!C^U@=x5%$n^91WJJ|^P3eF>U|Q~ek()f{u7@9P-{r3PZxn5?C3J8tA-HmHvq_di7Zm4lPa1{! z^}4h6Hti`wNJc0DO_LB+@t6tOq(ivDsjJ##AiW;y$!t4UT)I^{yjCwnxuFK5Vdx1mK$G2Nc0?mxav$^+x8GMo?-FK;cZqgs>#YRr{eX9X6CCw@FK8A_CMqAcEDs-aaS zj2|iKYlrV2e|4-)9sKaekZ(Sv-qcb5LJ&W|N+Dak@;}Vrf0%V<6hY^kwh!jFX9w2y zBAU_921q*z5V6e551QJ^@mt>J#m7Ojk{39uY;5eHdaj`TNF4c<^7${(S607*6s4e3 zfxraVKttK0<UnmPi{_ary2K5 zV*lj0VwfDqO9!%Q!d$IIjjrOmlJ0OC_9*_5JJN*?XtLGQ*>%fb+JV!6!VixZ81|xm z93j$CFqXhN+Kj_;vfeIzg_!}sHrOEXtZFm6E0;Jp8N4b)HYHpXofJIBlEcW<*lM4p ze6`ptyXypL{8}0){A0uwCW`~;agYd*4zZwOO##5}|8lDVj&<;cSiNV`f>o(5A!z6C1KAJA^J5kD0Ve)b=?2$=kgr{^9TJeIUb0l#D+O2@t ze|qQy*bwqS)vfVe5nVE_5pZxbt5=|7ouO)P3IVW%~%+9`5k05Dsy|Zog!^I@oDFHGmXs zO>Z|zU?;f&_sD8_g02Y|g1)nqV6^Ok9s?tP|4gZ1o3J8sI(HvH+3whpT5I(!7q+%xpb%QTobPQTt*?Gw8?f=tMjH z<10Q=m^--lM$o41{46~q-{>5=qg13fJzM!Xq-v&$4a(5{0C>dz*h>9l>!2sb9n!YO z1rHc_1(}!boN2#Y^w^Dc7FrF`+t8Q(?cKeyLkyd)_$1No542OmQqyCqvH4pm&hpfPP*|AK|dK%im@6j?-*1E~bsP(lX-;n87$Ids<~3qugx`I8aah@7^A zmAnJ`>uH=4=&3R)zBtV}LA;G6kbH@DmTy4z_PpHTa`}YFH7`;$@{UxTf=|#aew1D4 zXdpZ#*s_=OH1JX!+#AH0;91Y_i2z#%;r>HeW@3nYA* zUbq=wM^nDBY5&vt{T2tvc9oXaV{vQyYz18ifT#bj*t!2d;T#Ej5>;mg!8g^EQirre z-zWyju<*2mBmQ0?k`rNoCQH#J!4cI$&&ofu#*Ei*7sc-yH>I$S?_ze%{-$`xl@hl< zNv*Cqz+3=$Zm?y2lB#f2Piz9ka%FG7$20x{8wX0x5ni?1)q+4*wQp+bC+&NVg+Go zv#G`&ZbfgH0zz#b{5&oxZuJ{5NM=V-)_)n18ixjh4bF0xh7vj-2oC~VmZUAXqsD0b zO~jyCDlkhACCu@#AGGn+Bu}M1Q=AgiUSuVDJK^Ln0!pq^sferg65T_U7%%QwZ%d z$eAyq;=aX#`yPd|anZzgH1QPMr;m*dT>>5vn(9{_@Ri1?b_hBj0RR2JDM&^c0mUHkEuUu0Xle;w_fyxu7}5_BWZc+1L81a;$^Y>yGAD*6!G)F3I2-W@WS@l09y-V%>YJ@#O8WG2Cw+e)ispBLQNZZeC!1B77Hk z!Ox%YvQBiZX}JzxGP_a&v`s9YAfVy@?PRG>=y--Tay!rfIpoeTsgan?Z{%*q)k?o9 z0W1!sHq7er}r)Rw(JxBavcLPxz56xkp*6$o9#mwOr z!PqQkA^bKNTq(aV$%s)ZRt^46{(HsY{~r&)X^p83KyHkLy%TW}2)FqsfbstT)_C07 literal 0 HcmV?d00001 diff --git a/dom/media/test/vp9cake-short.webm^headers^ b/dom/media/test/vp9cake-short.webm^headers^ new file mode 100644 index 000000000000..4030ea1d3ddb --- /dev/null +++ b/dom/media/test/vp9cake-short.webm^headers^ @@ -0,0 +1 @@ +Cache-Control: no-store From cb8b1119da13fe1e7b81f5827515b58833ee5d2b Mon Sep 17 00:00:00 2001 From: Rob Thijssen Date: Fri, 16 Sep 2016 12:06:00 +0100 Subject: [PATCH 002/117] Bug 1303305 - Support in-memory unzip on tc win testers; r=armenzg MozReview-Commit-ID: JcGymDuh2s9 --HG-- extra : rebase_source : 98842dda643bf37553e035d52adefcbaa07002e8 --- testing/mozharness/mozharness/base/script.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/testing/mozharness/mozharness/base/script.py b/testing/mozharness/mozharness/base/script.py index fa24b16d70ec..65806d35dee1 100755 --- a/testing/mozharness/mozharness/base/script.py +++ b/testing/mozharness/mozharness/base/script.py @@ -629,6 +629,9 @@ class ScriptMixin(PlatformMixin): 'application/zip': { 'function': self.unzip, }, + 'application/x-zip-compressed': { + 'function': self.unzip, + }, } filename = url.split('/')[-1] From c574b38335de72a0332443f8771dd3948b223dd8 Mon Sep 17 00:00:00 2001 From: Andi-Bogdan Postelnicu Date: Fri, 16 Sep 2016 15:00:52 +0300 Subject: [PATCH 003/117] Bug 1301333 - mark XPCJSContext::Initialize as initialisation function for XPCJSContext. r=bobbyholley MozReview-Commit-ID: HYj244xg1VD --- js/xpconnect/src/xpcprivate.h | 1 + 1 file changed, 1 insertion(+) diff --git a/js/xpconnect/src/xpcprivate.h b/js/xpconnect/src/xpcprivate.h index 3a317435d3c7..6e55b616e72e 100644 --- a/js/xpconnect/src/xpcprivate.h +++ b/js/xpconnect/src/xpcprivate.h @@ -593,6 +593,7 @@ public: private: XPCJSContext(); + MOZ_IS_CLASS_INIT nsresult Initialize(); void ReleaseIncrementally(nsTArray& array); From 76c0ae810563625902784328117eb0f617612d8f Mon Sep 17 00:00:00 2001 From: Matthew Woodrow Date: Thu, 25 Aug 2016 15:48:35 +1200 Subject: [PATCH 004/117] Bug 1288618 - Part 1: Use gfxVars for CanUseHardwareVideoDecoding so we can access it in the GPU process. r=dvander --- dom/media/mediasource/MediaSource.cpp | 4 ++-- dom/media/mediasource/moz.build | 2 ++ .../platforms/apple/AppleDecoderModule.cpp | 3 ++- dom/media/platforms/wmf/WMFDecoderModule.cpp | 4 ++-- gfx/config/gfxVars.h | 1 + gfx/layers/ImageContainer.cpp | 3 ++- gfx/thebes/gfxPlatform.cpp | 23 +++++++++++++++---- gfx/thebes/gfxPlatform.h | 4 +++- gfx/thebes/gfxWindowsPlatform.cpp | 7 ++++++ 9 files changed, 39 insertions(+), 12 deletions(-) diff --git a/dom/media/mediasource/MediaSource.cpp b/dom/media/mediasource/MediaSource.cpp index 85a0850fe94d..acaefe0277c1 100644 --- a/dom/media/mediasource/MediaSource.cpp +++ b/dom/media/mediasource/MediaSource.cpp @@ -30,7 +30,7 @@ #include "nsThreadUtils.h" #include "mozilla/Logging.h" #include "nsServiceManagerUtils.h" -#include "gfxPlatform.h" +#include "mozilla/gfx/gfxVars.h" #include "mozilla/Sprintf.h" struct JSContext; @@ -78,7 +78,7 @@ IsWebMForced(DecoderDoctorDiagnostics* aDiagnostics) bool mp4supported = DecoderTraits::IsMP4TypeAndEnabled(NS_LITERAL_CSTRING("video/mp4"), aDiagnostics); - bool hwsupported = gfxPlatform::GetPlatform()->CanUseHardwareVideoDecoding(); + bool hwsupported = gfx::gfxVars::CanUseHardwareVideoDecoding(); return !mp4supported || !hwsupported || VP9Benchmark::IsVP9DecodeFast(); } diff --git a/dom/media/mediasource/moz.build b/dom/media/mediasource/moz.build index 99c9b2fb92e0..6ded1875d8f8 100644 --- a/dom/media/mediasource/moz.build +++ b/dom/media/mediasource/moz.build @@ -41,6 +41,8 @@ TEST_DIRS += [ if CONFIG['MOZ_GONK_MEDIACODEC']: DEFINES['MOZ_GONK_MEDIACODEC'] = True +include('/ipc/chromium/chromium-config.mozbuild') + FINAL_LIBRARY = 'xul' if CONFIG['GNU_CXX']: diff --git a/dom/media/platforms/apple/AppleDecoderModule.cpp b/dom/media/platforms/apple/AppleDecoderModule.cpp index be4104557ebf..9976c86abd74 100644 --- a/dom/media/platforms/apple/AppleDecoderModule.cpp +++ b/dom/media/platforms/apple/AppleDecoderModule.cpp @@ -13,6 +13,7 @@ #include "MediaPrefs.h" #include "mozilla/DebugOnly.h" #include "mozilla/Logging.h" +#include "mozilla/gfx/gfxVars.h" namespace mozilla { @@ -53,7 +54,7 @@ AppleDecoderModule::Init() sIsVTHWAvailable = AppleVTLinker::skPropEnableHWAccel != nullptr; sCanUseHardwareVideoDecoder = loaded && - gfxPlatform::GetPlatform()->CanUseHardwareVideoDecoding(); + gfx::gfxVars::CanUseHardwareVideoDecoding(); sInitialized = true; } diff --git a/dom/media/platforms/wmf/WMFDecoderModule.cpp b/dom/media/platforms/wmf/WMFDecoderModule.cpp index aa9373628425..61296fd18ff4 100644 --- a/dom/media/platforms/wmf/WMFDecoderModule.cpp +++ b/dom/media/platforms/wmf/WMFDecoderModule.cpp @@ -19,7 +19,7 @@ #include "nsIGfxInfo.h" #include "nsWindowsHelpers.h" #include "GfxDriverInfo.h" -#include "gfxWindowsPlatform.h" +#include "mozilla/gfx/gfxVars.h" #include "MediaInfo.h" #include "MediaPrefs.h" #include "prsystem.h" @@ -49,7 +49,7 @@ WMFDecoderModule::~WMFDecoderModule() void WMFDecoderModule::Init() { - sDXVAEnabled = gfxPlatform::GetPlatform()->CanUseHardwareVideoDecoding(); + sDXVAEnabled = gfx::gfxVars::CanUseHardwareVideoDecoding(); } /* static */ diff --git a/gfx/config/gfxVars.h b/gfx/config/gfxVars.h index 69ff7dae17fd..d43fc6ce8ab6 100644 --- a/gfx/config/gfxVars.h +++ b/gfx/config/gfxVars.h @@ -29,6 +29,7 @@ class gfxVarReceiver; _(UseXRender, bool, false) \ _(OffscreenFormat, gfxImageFormat, mozilla::gfx::SurfaceFormat::X8R8G8B8_UINT32) \ _(RequiresAcceleratedGLContextForCompositorOGL, bool, false) \ + _(CanUseHardwareVideoDecoding, bool, false) \ /* Add new entries above this line. */ diff --git a/gfx/layers/ImageContainer.cpp b/gfx/layers/ImageContainer.cpp index d3c83ab914ab..aee0af761452 100644 --- a/gfx/layers/ImageContainer.cpp +++ b/gfx/layers/ImageContainer.cpp @@ -21,6 +21,7 @@ #include "mozilla/layers/SharedPlanarYCbCrImage.h" #include "mozilla/layers/SharedRGBImage.h" #include "mozilla/layers/TextureClientRecycleAllocator.h" +#include "mozilla/gfx/gfxVars.h" #include "nsISupportsUtils.h" // for NS_IF_ADDREF #include "YCbCrUtils.h" // for YCbCr conversions #ifdef MOZ_WIDGET_GONK @@ -503,7 +504,7 @@ gfxImageFormat PlanarYCbCrImage::GetOffscreenFormat() { return mOffscreenFormat == SurfaceFormat::UNKNOWN ? - gfxPlatform::GetPlatform()->GetOffscreenFormat() : + gfxVars::OffscreenFormat() : mOffscreenFormat; } diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index 11e0e9093f80..1eb04b62bb90 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -2092,6 +2092,18 @@ static bool sBufferRotationCheckPref = true; static mozilla::Atomic sLayersAccelerationPrefsInitialized(false); +void VideoDecodingFailedChangedCallback(const char* aPref, void*) +{ + sLayersHardwareVideoDecodingFailed = Preferences::GetBool(aPref, false); + gfxPlatform::GetPlatform()->UpdateCanUseHardareVideoDecoding(); +} + +void +gfxPlatform::UpdateCanUseHardareVideoDecoding() +{ + gfxVars::SetCanUseHardwareVideoDecoding(CanUseHardwareVideoDecoding()); +} + void gfxPlatform::InitAcceleration() { @@ -2131,11 +2143,14 @@ gfxPlatform::InitAcceleration() } } - Preferences::AddBoolVarCache(&sLayersHardwareVideoDecodingFailed, - "media.hardware-video-decoding.failed", - false); + sLayersAccelerationPrefsInitialized = true; if (XRE_IsParentProcess()) { + Preferences::RegisterCallbackAndCall(VideoDecodingFailedChangedCallback, + "media.hardware-video-decoding.failed", + nullptr, + Preferences::ExactMatch); + FeatureState& gpuProc = gfxConfig::GetFeature(Feature::GPU_PROCESS); if (gfxPrefs::GPUProcessDevEnabled()) { // We want to hide this from about:support, so only set a default if the @@ -2161,8 +2176,6 @@ gfxPlatform::InitAcceleration() gpu->EnableGPUProcess(); } } - - sLayersAccelerationPrefsInitialized = true; } void diff --git a/gfx/thebes/gfxPlatform.h b/gfx/thebes/gfxPlatform.h index 822441a9c652..fd7da22b7834 100644 --- a/gfx/thebes/gfxPlatform.h +++ b/gfx/thebes/gfxPlatform.h @@ -456,7 +456,7 @@ public: static bool OffMainThreadCompositingEnabled(); - virtual bool CanUseHardwareVideoDecoding(); + void UpdateCanUseHardareVideoDecoding(); // Returns a prioritized list of all available compositor backends. void GetCompositorBackends(bool useAcceleration, nsTArray& aBackends); @@ -752,6 +752,8 @@ protected: static already_AddRefed GetScaledFontForFontWithCairoSkia(mozilla::gfx::DrawTarget* aTarget, gfxFont* aFont); + virtual bool CanUseHardwareVideoDecoding(); + int8_t mAllowDownloadableFonts; int8_t mGraphiteShapingEnabled; int8_t mOpenTypeSVGEnabled; diff --git a/gfx/thebes/gfxWindowsPlatform.cpp b/gfx/thebes/gfxWindowsPlatform.cpp index 3133cc0886d2..697c90ef0f4e 100755 --- a/gfx/thebes/gfxWindowsPlatform.cpp +++ b/gfx/thebes/gfxWindowsPlatform.cpp @@ -380,6 +380,9 @@ bool gfxWindowsPlatform::CanUseHardwareVideoDecoding() { DeviceManagerDx* dm = DeviceManagerDx::Get(); + if (!dm) { + return false; + } if (!gfxPrefs::LayersPreferD3D9() && !dm->TextureSharingWorks()) { return false; } @@ -2025,6 +2028,10 @@ gfxWindowsPlatform::ImportGPUDeviceData(const mozilla::gfx::GPUDeviceData& aData } } + // CanUseHardwareVideoDecoding depends on d3d11 state, so update + // the cached value now. + UpdateCanUseHardareVideoDecoding(); + // For completeness (and messaging in about:support). Content recomputes this // on its own, and we won't use ANGLE in the UI process if we're using a GPU // process. From fb5b16533de25dd541d888733488f57acf7e9b3e Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:43 +1200 Subject: [PATCH 005/117] Bug 1288618 - Part 2: Allow allocating D3D9/11 Images when we don't have a recycling allocator available. r=nical --- dom/media/platforms/wmf/DXVA2Manager.cpp | 18 ++++--- gfx/layers/D3D11ShareHandleImage.cpp | 23 +++++++-- gfx/layers/D3D11ShareHandleImage.h | 3 +- gfx/layers/D3D9SurfaceImage.cpp | 63 +++++++++++++++++------- gfx/layers/D3D9SurfaceImage.h | 5 ++ 5 files changed, 83 insertions(+), 29 deletions(-) diff --git a/dom/media/platforms/wmf/DXVA2Manager.cpp b/dom/media/platforms/wmf/DXVA2Manager.cpp index 67111a76416c..7fb37690d256 100644 --- a/dom/media/platforms/wmf/DXVA2Manager.cpp +++ b/dom/media/platforms/wmf/DXVA2Manager.cpp @@ -428,9 +428,11 @@ D3D9DXVA2Manager::Init(nsACString& aFailureReason) mDeviceManager = deviceManager; mSyncSurface = syncSurf; - mTextureClientAllocator = new D3D9RecycleAllocator(layers::ImageBridgeChild::GetSingleton().get(), - mDevice); - mTextureClientAllocator->SetMaxPoolSize(5); + if (layers::ImageBridgeChild::GetSingleton()) { + mTextureClientAllocator = new D3D9RecycleAllocator(layers::ImageBridgeChild::GetSingleton().get(), + mDevice); + mTextureClientAllocator->SetMaxPoolSize(5); + } Telemetry::Accumulate(Telemetry::MEDIA_DECODER_BACKEND_USED, uint32_t(media::MediaDecoderBackend::WMFDXVA2D3D9)); @@ -752,9 +754,11 @@ D3D11DXVA2Manager::Init(nsACString& aFailureReason) hr = mDevice->CreateTexture2D(&desc, NULL, getter_AddRefs(mSyncSurface)); NS_ENSURE_TRUE(SUCCEEDED(hr), hr); - mTextureClientAllocator = new D3D11RecycleAllocator(layers::ImageBridgeChild::GetSingleton().get(), - mDevice); - mTextureClientAllocator->SetMaxPoolSize(5); + if (layers::ImageBridgeChild::GetSingleton()) { + mTextureClientAllocator = new D3D11RecycleAllocator(layers::ImageBridgeChild::GetSingleton().get(), + mDevice); + mTextureClientAllocator->SetMaxPoolSize(5); + } Telemetry::Accumulate(Telemetry::MEDIA_DECODER_BACKEND_USED, uint32_t(media::MediaDecoderBackend::WMFDXVA2D3D11)); @@ -795,7 +799,7 @@ D3D11DXVA2Manager::CopyToImage(IMFSample* aVideoSample, RefPtr image = new D3D11ShareHandleImage(gfx::IntSize(mWidth, mHeight), aRegion); - bool ok = image->AllocateTexture(mTextureClientAllocator); + bool ok = image->AllocateTexture(mTextureClientAllocator, mDevice); NS_ENSURE_TRUE(ok, E_FAIL); HRESULT hr = mTransform->Input(aVideoSample); diff --git a/gfx/layers/D3D11ShareHandleImage.cpp b/gfx/layers/D3D11ShareHandleImage.cpp index f3fef238d6fe..ac43d6a32ca5 100644 --- a/gfx/layers/D3D11ShareHandleImage.cpp +++ b/gfx/layers/D3D11ShareHandleImage.cpp @@ -25,10 +25,25 @@ D3D11ShareHandleImage::D3D11ShareHandleImage(const gfx::IntSize& aSize, } bool -D3D11ShareHandleImage::AllocateTexture(D3D11RecycleAllocator* aAllocator) +D3D11ShareHandleImage::AllocateTexture(D3D11RecycleAllocator* aAllocator, ID3D11Device* aDevice) { - mTextureClient = aAllocator->CreateOrRecycleClient(gfx::SurfaceFormat::B8G8R8A8, mSize); - return !!mTextureClient; + if (aAllocator) { + mTextureClient = aAllocator->CreateOrRecycleClient(gfx::SurfaceFormat::B8G8R8A8, mSize); + if (mTextureClient) { + mTexture = static_cast(mTextureClient->GetInternalData())->GetD3D11Texture(); + return true; + } + return false; + } else { + MOZ_ASSERT(aDevice); + CD3D11_TEXTURE2D_DESC newDesc(DXGI_FORMAT_B8G8R8A8_UNORM, + mSize.width, mSize.height, 1, 1, + D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE); + newDesc.MiscFlags = D3D11_RESOURCE_MISC_SHARED; + + HRESULT hr = aDevice->CreateTexture2D(&newDesc, nullptr, getter_AddRefs(mTexture)); + return SUCCEEDED(hr); + } } gfx::IntSize @@ -115,7 +130,7 @@ D3D11ShareHandleImage::GetAsSourceSurface() ID3D11Texture2D* D3D11ShareHandleImage::GetTexture() const { - return static_cast(mTextureClient->GetInternalData())->GetD3D11Texture(); + return mTexture; } already_AddRefed diff --git a/gfx/layers/D3D11ShareHandleImage.h b/gfx/layers/D3D11ShareHandleImage.h index c3b4ff371495..16eb8bd3edd7 100644 --- a/gfx/layers/D3D11ShareHandleImage.h +++ b/gfx/layers/D3D11ShareHandleImage.h @@ -50,7 +50,7 @@ public: const gfx::IntRect& aRect); ~D3D11ShareHandleImage() override {} - bool AllocateTexture(D3D11RecycleAllocator* aAllocator); + bool AllocateTexture(D3D11RecycleAllocator* aAllocator, ID3D11Device* aDevice); gfx::IntSize GetSize() override; virtual already_AddRefed GetAsSourceSurface() override; @@ -63,6 +63,7 @@ private: gfx::IntSize mSize; gfx::IntRect mPictureRect; RefPtr mTextureClient; + RefPtr mTexture; }; } // namepace layers diff --git a/gfx/layers/D3D9SurfaceImage.cpp b/gfx/layers/D3D9SurfaceImage.cpp index 4375ad4f531c..a8f6adb028cb 100644 --- a/gfx/layers/D3D9SurfaceImage.cpp +++ b/gfx/layers/D3D9SurfaceImage.cpp @@ -18,6 +18,7 @@ namespace layers { D3D9SurfaceImage::D3D9SurfaceImage() : Image(nullptr, ImageFormat::D3D9_RGB32_TEXTURE) , mSize(0, 0) + , mShareHandle(0) , mValid(true) {} @@ -55,15 +56,38 @@ D3D9SurfaceImage::AllocateAndCopy(D3D9RecycleAllocator* aAllocator, // DXVA surfaces aren't created sharable, so we need to copy the surface // to a sharable texture to that it's accessible to the layer manager's // device. - RefPtr textureClient = - aAllocator->CreateOrRecycleClient(gfx::SurfaceFormat::B8G8R8A8, aRegion.Size()); - if (!textureClient) { - return E_FAIL; + if (aAllocator) { + mTextureClient = + aAllocator->CreateOrRecycleClient(gfx::SurfaceFormat::B8G8R8A8, aRegion.Size()); + if (!mTextureClient) { + return E_FAIL; + } + + DXGID3D9TextureData* texData = + static_cast(mTextureClient->GetInternalData()); + mTexture = texData->GetD3D9Texture(); + mShareHandle = texData->GetShareHandle(); + mDesc = texData->GetDesc(); + } else { + hr = device->CreateTexture(aRegion.Size().width, aRegion.Size().height, + 1, + D3DUSAGE_RENDERTARGET, + D3DFMT_A8R8G8B8, + D3DPOOL_DEFAULT, + getter_AddRefs(mTexture), + &mShareHandle); + if (FAILED(hr) || !mShareHandle) { + return E_FAIL; + } + + hr = mTexture->GetLevelDesc(0, &mDesc); + if (FAILED(hr)) { + return E_FAIL; + } } // Copy the image onto the texture, preforming YUV -> RGB conversion if necessary. - RefPtr textureSurface = static_cast( - textureClient->GetInternalData())->GetD3D9Surface(); + RefPtr textureSurface = GetD3D9Surface(); if (!textureSurface) { return E_FAIL; } @@ -72,7 +96,6 @@ D3D9SurfaceImage::AllocateAndCopy(D3D9RecycleAllocator* aAllocator, hr = device->StretchRect(surface, &src, textureSurface, nullptr, D3DTEXF_NONE); NS_ENSURE_TRUE(SUCCEEDED(hr), hr); - mTextureClient = textureClient; mSize = aRegion.Size(); return S_OK; } @@ -80,14 +103,22 @@ D3D9SurfaceImage::AllocateAndCopy(D3D9RecycleAllocator* aAllocator, already_AddRefed D3D9SurfaceImage::GetD3D9Surface() { - return static_cast( - mTextureClient->GetInternalData())->GetD3D9Surface(); + RefPtr textureSurface; + HRESULT hr = mTexture->GetSurfaceLevel(0, getter_AddRefs(textureSurface)); + NS_ENSURE_TRUE(SUCCEEDED(hr), nullptr); + return textureSurface.forget(); } const D3DSURFACE_DESC& D3D9SurfaceImage::GetDesc() const { - return static_cast(mTextureClient->GetInternalData())->GetDesc(); + return mDesc; +} + +HANDLE +D3D9SurfaceImage::GetShareHandle() const +{ + return mShareHandle; } gfx::IntSize @@ -107,7 +138,7 @@ D3D9SurfaceImage::GetTextureClient(CompositableClient* aClient) already_AddRefed D3D9SurfaceImage::GetAsSourceSurface() { - if (!mTextureClient) { + if (!mTexture) { return nullptr; } @@ -117,18 +148,16 @@ D3D9SurfaceImage::GetAsSourceSurface() return nullptr; } - DXGID3D9TextureData* texData = static_cast(mTextureClient->GetInternalData()); // Readback the texture from GPU memory into system memory, so that // we can copy it into the Cairo image. This is expensive. - RefPtr textureSurface = texData->GetD3D9Surface(); + RefPtr textureSurface = GetD3D9Surface(); if (!textureSurface) { return nullptr; } - RefPtr device = texData->GetD3D9Device(); - if (!device) { - return nullptr; - } + RefPtr device; + hr = textureSurface->GetDevice(getter_AddRefs(device)); + NS_ENSURE_TRUE(SUCCEEDED(hr), nullptr); RefPtr systemMemorySurface; hr = device->CreateOffscreenPlainSurface(mSize.width, diff --git a/gfx/layers/D3D9SurfaceImage.h b/gfx/layers/D3D9SurfaceImage.h index 6b5832055fbf..4927525147bb 100644 --- a/gfx/layers/D3D9SurfaceImage.h +++ b/gfx/layers/D3D9SurfaceImage.h @@ -64,6 +64,8 @@ public: already_AddRefed GetD3D9Surface(); + HANDLE GetShareHandle() const; + virtual bool IsValid() override { return mValid; } void Invalidate() { mValid = false; } @@ -72,6 +74,9 @@ private: gfx::IntSize mSize; RefPtr mTextureClient; + RefPtr mTexture; + HANDLE mShareHandle; + D3DSURFACE_DESC mDesc; bool mValid; }; From 32054a681a9356bb2fc58d95b2d6eba2e1ede706 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:43 +1200 Subject: [PATCH 006/117] Bug 1288618 - Part 3: Avoid accessing MediaPrefs from the GPU process within WMF code. r=cpearce --- dom/media/platforms/wmf/DXVA2Manager.cpp | 14 ++++++++++++-- dom/media/platforms/wmf/WMFDecoderModule.cpp | 5 ++++- dom/media/platforms/wmf/WMFVideoMFTManager.cpp | 15 +++++++++++++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/dom/media/platforms/wmf/DXVA2Manager.cpp b/dom/media/platforms/wmf/DXVA2Manager.cpp index 7fb37690d256..ea51eeb862ed 100644 --- a/dom/media/platforms/wmf/DXVA2Manager.cpp +++ b/dom/media/platforms/wmf/DXVA2Manager.cpp @@ -494,7 +494,12 @@ DXVA2Manager::CreateD3D9DXVA(nsACString& aFailureReason) // DXVA processing takes up a lot of GPU resources, so limit the number of // videos we use DXVA with at any one time. - const uint32_t dxvaLimit = MediaPrefs::PDMWMFMaxDXVAVideos(); + uint32_t dxvaLimit = 4; + // TODO: Sync this value across to the GPU process. + if (XRE_GetProcessType() != GeckoProcessType_GPU) { + dxvaLimit = MediaPrefs::PDMWMFMaxDXVAVideos(); + } + if (sDXVAVideosCount == dxvaLimit) { aFailureReason.AssignLiteral("Too many DXVA videos playing"); return nullptr; @@ -902,7 +907,12 @@ DXVA2Manager::CreateD3D11DXVA(nsACString& aFailureReason) { // DXVA processing takes up a lot of GPU resources, so limit the number of // videos we use DXVA with at any one time. - const uint32_t dxvaLimit = MediaPrefs::PDMWMFMaxDXVAVideos(); + uint32_t dxvaLimit = 4; + // TODO: Sync this value across to the GPU process. + if (XRE_GetProcessType() != GeckoProcessType_GPU) { + dxvaLimit = MediaPrefs::PDMWMFMaxDXVAVideos(); + } + if (sDXVAVideosCount == dxvaLimit) { aFailureReason.AssignLiteral("Too many DXVA videos playing"); return nullptr; diff --git a/dom/media/platforms/wmf/WMFDecoderModule.cpp b/dom/media/platforms/wmf/WMFDecoderModule.cpp index 61296fd18ff4..7cf787f4cf3a 100644 --- a/dom/media/platforms/wmf/WMFDecoderModule.cpp +++ b/dom/media/platforms/wmf/WMFDecoderModule.cpp @@ -61,7 +61,10 @@ WMFDecoderModule::GetNumDecoderThreads() // If we have more than 4 cores, let the decoder decide how many threads. // On an 8 core machine, WMF chooses 4 decoder threads const int WMF_DECODER_DEFAULT = -1; - int32_t prefThreadCount = MediaPrefs::PDMWMFThreadCount(); + int32_t prefThreadCount = WMF_DECODER_DEFAULT; + if (XRE_GetProcessType() != GeckoProcessType_GPU) { + prefThreadCount = MediaPrefs::PDMWMFThreadCount(); + } if (prefThreadCount != WMF_DECODER_DEFAULT) { return std::max(prefThreadCount, 1); } else if (numCores > 4) { diff --git a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp index 0e2a9b5a19f9..202068655236 100644 --- a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp +++ b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp @@ -180,6 +180,14 @@ FindDXVABlacklistedDLL(StaticAutoPtr& aDLLBlacklistingC ClearOnShutdown(&aDLLBlacklistingCache); } + if (XRE_GetProcessType() == GeckoProcessType_GPU) { + // The blacklist code doesn't support running in + // the GPU process yet. + aDLLBlacklistingCache->mBlacklistPref.SetLength(0); + aDLLBlacklistingCache->mBlacklistedDLL.SetLength(0); + return aDLLBlacklistingCache->mBlacklistedDLL; + } + nsAdoptingCString blacklist = Preferences::GetCString(aDLLBlacklistPrefName); if (blacklist.IsEmpty()) { // Empty blacklist -> No blacklisting. @@ -304,8 +312,10 @@ public: NS_ASSERTION(NS_IsMainThread(), "Must be on main thread."); nsACString* failureReason = &mFailureReason; nsCString secondFailureReason; + bool allowD3D11 = (XRE_GetProcessType() == GeckoProcessType_GPU) || + MediaPrefs::PDMWMFAllowD3D11(); if (mBackend == LayersBackend::LAYERS_D3D11 && - MediaPrefs::PDMWMFAllowD3D11() && IsWin8OrLater()) { + allowD3D11 && IsWin8OrLater()) { const nsCString& blacklistedDLL = FindD3D11BlacklistedDLL(); if (!blacklistedDLL.IsEmpty()) { failureReason->AppendPrintf("D3D11 blacklisted with DLL %s", @@ -431,7 +441,8 @@ WMFVideoMFTManager::InitInternal(bool aForceD3D9) attr->GetUINT32(MF_SA_D3D_AWARE, &aware); attr->SetUINT32(CODECAPI_AVDecNumWorkerThreads, WMFDecoderModule::GetNumDecoderThreads()); - if (MediaPrefs::PDMWMFLowLatencyEnabled()) { + if ((XRE_GetProcessType() != GeckoProcessType_GPU) && + MediaPrefs::PDMWMFLowLatencyEnabled()) { hr = attr->SetUINT32(CODECAPI_AVLowLatencyMode, TRUE); if (SUCCEEDED(hr)) { LOG("Enabling Low Latency Mode"); From fd9a067c7e74cf1b9ef8b1689b1360ba5a0a58a0 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:43 +1200 Subject: [PATCH 007/117] Bug 1288618 - Part 4: Fix some namespace collisions in media code. r=jya --- dom/media/mediasource/SourceBuffer.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dom/media/mediasource/SourceBuffer.cpp b/dom/media/mediasource/SourceBuffer.cpp index 6412f478892e..dd480574a18e 100644 --- a/dom/media/mediasource/SourceBuffer.cpp +++ b/dom/media/mediasource/SourceBuffer.cpp @@ -23,6 +23,12 @@ #include #include "TimeUnits.h" +// GetCurrentTime is defined in winbase.h as zero argument macro forwarding to +// GetTickCount() and conflicts with MediaDecoder::GetCurrentTime implementation. +#ifdef GetCurrentTime +#undef GetCurrentTime +#endif + struct JSContext; class JSObject; From 616f2003f20e34aa47e33da458d419f7ec10b188 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:43 +1200 Subject: [PATCH 008/117] Bug 1288618 - Part 5: Add IPC serialization helpers for some media structs/enums. r=dvander --- dom/media/ipc/MediaIPCUtils.h | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 dom/media/ipc/MediaIPCUtils.h diff --git a/dom/media/ipc/MediaIPCUtils.h b/dom/media/ipc/MediaIPCUtils.h new file mode 100644 index 000000000000..14b8ee7514a7 --- /dev/null +++ b/dom/media/ipc/MediaIPCUtils.h @@ -0,0 +1,48 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_dom_media_MediaIPCUtils_h +#define mozilla_dom_media_MediaIPCUtils_h + +#include "ipc/IPCMessageUtils.h" +#include "mozilla/GfxMessageUtils.h" +#include "PlatformDecoderModule.h" + +namespace IPC { + template<> + struct ParamTraits + { + typedef mozilla::VideoInfo paramType; + + static void Write(Message* aMsg, const paramType& aParam) + { + // TrackInfo + WriteParam(aMsg, aParam.mMimeType); + + // VideoInfo + WriteParam(aMsg, aParam.mDisplay); + WriteParam(aMsg, aParam.mStereoMode); + WriteParam(aMsg, aParam.mImage); + WriteParam(aMsg, aParam.ImageRect()); + } + + static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult) + { + nsIntRect imageRect; + if (ReadParam(aMsg, aIter, &aResult->mMimeType) && + ReadParam(aMsg, aIter, &aResult->mDisplay) && + ReadParam(aMsg, aIter, &aResult->mStereoMode) && + ReadParam(aMsg, aIter, &aResult->mImage) && + ReadParam(aMsg, aIter, &imageRect)) { + aResult->SetImageRect(imageRect); + return true; + } + return false; + } + }; +} // namespace IPC + +#endif // mozilla_dom_media_MediaIPCUtils_h From 74b953d168c43c7e9e57dee3eb42fd278b9d3dc2 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:43 +1200 Subject: [PATCH 009/117] Bug 1288618 - Part 6: Avoid unnecessarily allocating a TailDispatcher for XPCOMThreadWrapper. r=bholley --- xpcom/threads/AbstractThread.cpp | 22 ++++++++++++++++++++++ xpcom/threads/AbstractThread.h | 10 ++++++++++ xpcom/threads/TaskQueue.cpp | 6 +++--- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/xpcom/threads/AbstractThread.cpp b/xpcom/threads/AbstractThread.cpp index 04de050c7ab9..451b317d8d26 100644 --- a/xpcom/threads/AbstractThread.cpp +++ b/xpcom/threads/AbstractThread.cpp @@ -94,6 +94,11 @@ public: return mTailDispatcher.ref(); } + virtual bool MightHaveTailTasks() override + { + return mTailDispatcher.isSome(); + } + virtual nsIThread* AsXPCOMThread() override { return mTarget; } private: @@ -101,6 +106,23 @@ private: Maybe mTailDispatcher; }; +void +AbstractThread::TailDispatchTasksFor(AbstractThread* aThread) +{ + if (MightHaveTailTasks()) { + TailDispatcher().DispatchTasksFor(aThread); + } +} + +bool +AbstractThread::HasTailTasksFor(AbstractThread* aThread) +{ + if (!MightHaveTailTasks()) { + return false; + } + return TailDispatcher().HasTasksFor(aThread); +} + bool AbstractThread::RequiresTailDispatch(AbstractThread* aThread) const { diff --git a/xpcom/threads/AbstractThread.h b/xpcom/threads/AbstractThread.h index 4391ba20e989..ca6ec1b84240 100644 --- a/xpcom/threads/AbstractThread.h +++ b/xpcom/threads/AbstractThread.h @@ -66,6 +66,16 @@ public: // threads which support it. virtual TaskDispatcher& TailDispatcher() = 0; + // Returns true if we have tail tasks scheduled, or if this isn't known. + // Returns false if we definitely don't have any tail tasks. + virtual bool MightHaveTailTasks() { return true; } + + // Helper functions for methods on the tail TasklDispatcher. These check + // HasTailTasks to avoid allocating a TailDispatcher if it isn't + // needed. + void TailDispatchTasksFor(AbstractThread* aThread); + bool HasTailTasksFor(AbstractThread* aThread); + // Returns true if this supports the tail dispatcher. bool SupportsTailDispatch() const { return mSupportsTailDispatch; } diff --git a/xpcom/threads/TaskQueue.cpp b/xpcom/threads/TaskQueue.cpp index 58b85f4632e6..ee6caf39c721 100644 --- a/xpcom/threads/TaskQueue.cpp +++ b/xpcom/threads/TaskQueue.cpp @@ -138,7 +138,7 @@ TaskQueue::AwaitIdleLocked() // Make sure there are no tasks for this queue waiting in the caller's tail // dispatcher. MOZ_ASSERT_IF(AbstractThread::GetCurrent(), - !AbstractThread::GetCurrent()->TailDispatcher().HasTasksFor(this)); + !AbstractThread::GetCurrent()->HasTailTasksFor(this)); mQueueMonitor.AssertCurrentThreadOwns(); MOZ_ASSERT(mIsRunning || mTasks.empty()); @@ -154,7 +154,7 @@ TaskQueue::AwaitShutdownAndIdle() // Make sure there are no tasks for this queue waiting in the caller's tail // dispatcher. MOZ_ASSERT_IF(AbstractThread::GetCurrent(), - !AbstractThread::GetCurrent()->TailDispatcher().HasTasksFor(this)); + !AbstractThread::GetCurrent()->HasTailTasksFor(this)); MonitorAutoLock mon(mQueueMonitor); while (!mIsShutdown) { @@ -169,7 +169,7 @@ TaskQueue::BeginShutdown() // Dispatch any tasks for this queue waiting in the caller's tail dispatcher, // since this is the last opportunity to do so. if (AbstractThread* currentThread = AbstractThread::GetCurrent()) { - currentThread->TailDispatcher().DispatchTasksFor(this); + currentThread->TailDispatchTasksFor(this); } MonitorAutoLock mon(mQueueMonitor); From 64a71f90da854f3a1acc2e38e1f81f02d2deb4de Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:43 +1200 Subject: [PATCH 010/117] Bug 1288618 - Part 7: Initialize AbstractThread in the GPU process. r=dvander --- xpcom/build/XPCOMInit.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/xpcom/build/XPCOMInit.cpp b/xpcom/build/XPCOMInit.cpp index 381de9d2f2c0..898f1152029b 100644 --- a/xpcom/build/XPCOMInit.cpp +++ b/xpcom/build/XPCOMInit.cpp @@ -692,6 +692,9 @@ NS_InitXPCOM2(nsIServiceManager** aResult, NS_RUNTIMEABORT(jsInitFailureReason); } sInitializedJS = true; + + // Init AbstractThread. + AbstractThread::InitStatics(); rv = nsComponentManagerImpl::gComponentManager->Init(); if (NS_FAILED(rv)) { @@ -715,9 +718,6 @@ NS_InitXPCOM2(nsIServiceManager** aResult, // Init SharedThreadPool (which needs the service manager). SharedThreadPool::InitStatics(); - // Init AbstractThread. - AbstractThread::InitStatics(); - // Force layout to spin up so that nsContentUtils is available for cx stack // munging. nsCOMPtr componentLoader = @@ -801,6 +801,8 @@ NS_InitMinimalXPCOM() return NS_ERROR_UNEXPECTED; } + AbstractThread::InitStatics(); + return NS_OK; } From 356ce39110e65d325c1b77ea29b2d49d28ecfe9c Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:43 +1200 Subject: [PATCH 011/117] Bug 1288618 - Part 8: Add Compositor API to create a TextureSource from a layers::Image. r=nical --- gfx/layers/Compositor.cpp | 15 +++++++ gfx/layers/Compositor.h | 7 ++++ gfx/layers/d3d11/CompositorD3D11.cpp | 60 ++++++++++++++++++++++++++++ gfx/layers/d3d11/CompositorD3D11.h | 3 ++ gfx/layers/d3d9/CompositorD3D9.cpp | 28 +++++++++++++ gfx/layers/d3d9/CompositorD3D9.h | 3 ++ 6 files changed, 116 insertions(+) diff --git a/gfx/layers/Compositor.cpp b/gfx/layers/Compositor.cpp index 7532a2ee9097..a35ecf096428 100644 --- a/gfx/layers/Compositor.cpp +++ b/gfx/layers/Compositor.cpp @@ -119,6 +119,21 @@ Compositor::AssertOnCompositorThread() "Can only call this from the compositor thread!"); } +already_AddRefed +Compositor::CreateTextureSourceForImage(Image* aImage) +{ + RefPtr src = aImage->GetAsSourceSurface(); + if (!src) { + return nullptr; + } + RefPtr data = src->GetDataSurface(); + if (!data) { + return nullptr; + } + RefPtr result = CreateDataTextureSourceAround(data); + return result.forget(); +} + bool Compositor::ShouldDrawDiagnostics(DiagnosticFlags aFlags) { diff --git a/gfx/layers/Compositor.h b/gfx/layers/Compositor.h index 5a433082af26..bb65f31fe0c0 100644 --- a/gfx/layers/Compositor.h +++ b/gfx/layers/Compositor.h @@ -203,6 +203,13 @@ public: virtual already_AddRefed CreateDataTextureSourceAroundYCbCr(TextureHost* aTexture) { return nullptr; } + /** + * Used for OOP video decoding. This should go away when we switch to + * using PTexture (bug 1302918). DO NOT USE THIS FOR ANYTHING ELSE. + */ + virtual already_AddRefed + CreateTextureSourceForImage(Image* aImage); + virtual bool Initialize(nsCString* const out_failureReason) = 0; virtual void Destroy(); bool IsDestroyed() const { return mIsDestroyed; } diff --git a/gfx/layers/d3d11/CompositorD3D11.cpp b/gfx/layers/d3d11/CompositorD3D11.cpp index f6e289254543..d99ee2494cb7 100644 --- a/gfx/layers/d3d11/CompositorD3D11.cpp +++ b/gfx/layers/d3d11/CompositorD3D11.cpp @@ -27,6 +27,9 @@ #include "mozilla/Telemetry.h" #include "BlendShaderConstants.h" +#include "D3D11ShareHandleImage.h" +#include "D3D9SurfaceImage.h" + #include namespace mozilla { @@ -447,6 +450,63 @@ CompositorD3D11::CreateDataTextureSource(TextureFlags aFlags) return result.forget(); } +already_AddRefed +CompositorD3D11::CreateTextureSourceForImage(Image* aImage) +{ + if (aImage->GetFormat() == ImageFormat::D3D11_SHARE_HANDLE_TEXTURE) { + D3D11ShareHandleImage* image = static_cast(aImage); + + RefPtr tex = image->GetTexture(); + RefPtr device; + tex->GetDevice(getter_AddRefs(device)); + + HRESULT hr; + if (device != GetDevice()) { + RefPtr resource; + tex->QueryInterface((IDXGIResource**)getter_AddRefs(resource)); + if (!resource) { + return nullptr; + } + HANDLE sharedHandle; + hr = resource->GetSharedHandle(&sharedHandle); + if (FAILED(hr)) { + return nullptr; + } + + tex = nullptr; + hr = GetDevice()->OpenSharedResource(sharedHandle, + __uuidof(ID3D11Texture2D), + (void**)(ID3D11Texture2D**)getter_AddRefs(tex)); + if (FAILED(hr)) { + return nullptr; + } + } + RefPtr source = new DataTextureSourceD3D11(SurfaceFormat::B8G8R8X8, + this, + tex); + return source.forget(); + } else if (aImage->GetFormat() == ImageFormat::D3D9_RGB32_TEXTURE) { + D3D9SurfaceImage* image = static_cast(aImage); + + HANDLE handle = image->GetShareHandle(); + + RefPtr texture; + HRESULT hr = GetDevice()->OpenSharedResource(handle, + __uuidof(ID3D11Texture2D), + (void**)(ID3D11Texture2D**)getter_AddRefs(texture)); + if (FAILED(hr)) { + NS_WARNING("Failed to open shared texture"); + return nullptr; + } + + RefPtr source = new DataTextureSourceD3D11(SurfaceFormat::B8G8R8X8, + this, + texture); + return source.forget(); + } + return Compositor::CreateTextureSourceForImage(aImage); +} + TextureFactoryIdentifier CompositorD3D11::GetTextureFactoryIdentifier() { diff --git a/gfx/layers/d3d11/CompositorD3D11.h b/gfx/layers/d3d11/CompositorD3D11.h index 695b0d6e6f86..247c50a491e2 100644 --- a/gfx/layers/d3d11/CompositorD3D11.h +++ b/gfx/layers/d3d11/CompositorD3D11.h @@ -55,6 +55,9 @@ public: virtual already_AddRefed CreateDataTextureSource(TextureFlags aFlags = TextureFlags::NO_FLAGS) override; + virtual already_AddRefed + CreateTextureSourceForImage(Image* aImage) override; + virtual bool CanUseCanvasLayerForSize(const gfx::IntSize& aSize) override; virtual int32_t GetMaxTextureSize() const final; diff --git a/gfx/layers/d3d9/CompositorD3D9.cpp b/gfx/layers/d3d9/CompositorD3D9.cpp index 33360d7ce0ff..3984dfdbe745 100644 --- a/gfx/layers/d3d9/CompositorD3D9.cpp +++ b/gfx/layers/d3d9/CompositorD3D9.cpp @@ -18,6 +18,7 @@ #include "gfxCrashReporterUtils.h" #include "mozilla/layers/CompositorBridgeParent.h" #include "mozilla/widget/WinCompositorWidget.h" +#include "D3D9SurfaceImage.h" namespace mozilla { namespace layers { @@ -202,6 +203,33 @@ CompositorD3D9::CreateRenderTargetFromSource(const gfx::IntRect &aRect, aRect); } +already_AddRefed +CompositorD3D9::CreateTextureSourceForImage(Image* aImage) +{ + if (aImage->GetFormat() == ImageFormat::D3D9_RGB32_TEXTURE) { + D3D9SurfaceImage* image = static_cast(aImage); + + HANDLE handle = image->GetShareHandle(); + + RefPtr texture; + HRESULT hr = device()->CreateTexture(aImage->GetSize().width, aImage->GetSize().height, 1, + D3DUSAGE_RENDERTARGET, + D3DFMT_A8R8G8B8, + D3DPOOL_DEFAULT, + getter_AddRefs(texture), + (HANDLE*)&handle); + if (FAILED(hr)) { + NS_WARNING("Failed to open shared texture"); + return nullptr; + } + + RefPtr source = + new DataTextureSourceD3D9(SurfaceFormat::B8G8R8A8, aImage->GetSize(), this, texture); + return source.forget(); + } + return Compositor::CreateTextureSourceForImage(aImage); +} + void CompositorD3D9::SetRenderTarget(CompositingRenderTarget *aRenderTarget) { diff --git a/gfx/layers/d3d9/CompositorD3D9.h b/gfx/layers/d3d9/CompositorD3D9.h index 5fca10994cd2..86521708dfb5 100644 --- a/gfx/layers/d3d9/CompositorD3D9.h +++ b/gfx/layers/d3d9/CompositorD3D9.h @@ -45,6 +45,9 @@ public: const CompositingRenderTarget *aSource, const gfx::IntPoint &aSourcePoint) override; + virtual already_AddRefed + CreateTextureSourceForImage(Image* aImage) override; + virtual void SetRenderTarget(CompositingRenderTarget *aSurface) override; virtual CompositingRenderTarget* GetCurrentRenderTarget() const override { From 3aff28e2876f8df9f7edb61529a959189d8d9bfb Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:44 +1200 Subject: [PATCH 012/117] Bug 1288618 - Part 9: Add a new SurfaceDescriptor type for video decoding in the GPU process. r=nical --- gfx/layers/client/GPUVideoTextureClient.cpp | 51 ++++++++++++++++ gfx/layers/client/GPUVideoTextureClient.h | 45 ++++++++++++++ gfx/layers/composite/GPUVideoTextureHost.cpp | 63 ++++++++++++++++++++ gfx/layers/composite/GPUVideoTextureHost.h | 57 ++++++++++++++++++ gfx/layers/composite/TextureHost.cpp | 6 ++ gfx/layers/ipc/LayersSurfaces.ipdlh | 5 ++ gfx/layers/moz.build | 4 ++ 7 files changed, 231 insertions(+) create mode 100644 gfx/layers/client/GPUVideoTextureClient.cpp create mode 100644 gfx/layers/client/GPUVideoTextureClient.h create mode 100644 gfx/layers/composite/GPUVideoTextureHost.cpp create mode 100644 gfx/layers/composite/GPUVideoTextureHost.h diff --git a/gfx/layers/client/GPUVideoTextureClient.cpp b/gfx/layers/client/GPUVideoTextureClient.cpp new file mode 100644 index 000000000000..41021f6bf43e --- /dev/null +++ b/gfx/layers/client/GPUVideoTextureClient.cpp @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "GPUVideoTextureClient.h" + +namespace mozilla { +namespace layers { + +using namespace gfx; + +bool +GPUVideoTextureData::Serialize(SurfaceDescriptor& aOutDescriptor) +{ + aOutDescriptor = mSD; + return true; +} + +void +GPUVideoTextureData::FillInfo(TextureData::Info& aInfo) const +{ + aInfo.size = mSize; + // TODO: We should probably try do better for this. + // layers::Image doesn't expose a format, so it's hard + // to figure out in VideoDecoderParent. + aInfo.format = SurfaceFormat::B8G8R8X8; + aInfo.hasIntermediateBuffer = false; + aInfo.hasSynchronization = false; + aInfo.supportsMoz2D = false; + aInfo.canExposeMappedData = false; +} + +void +GPUVideoTextureData::Deallocate(ClientIPCAllocator* aAllocator) +{ + mSD = SurfaceDescriptorGPUVideo(); +} + +void +GPUVideoTextureData::Forget(ClientIPCAllocator* aAllocator) +{ + // We always need to manually deallocate on the client side. + // Ideally we'd set up our TextureClient with the DEALLOCATE_CLIENT + // flag, but that forces texture destruction to be synchronous. + // Instead let's just deallocate from here as well. + Deallocate(aAllocator); +} + +} // namespace layers +} // namespace mozilla diff --git a/gfx/layers/client/GPUVideoTextureClient.h b/gfx/layers/client/GPUVideoTextureClient.h new file mode 100644 index 000000000000..edd9e90444ce --- /dev/null +++ b/gfx/layers/client/GPUVideoTextureClient.h @@ -0,0 +1,45 @@ +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef MOZILLA_GFX_GPUVIDEOTEXTURECLIENT_H +#define MOZILLA_GFX_GPUVIDEOTEXTURECLIENT_H + +#include "mozilla/layers/TextureClient.h" + +namespace mozilla { +namespace layers { + +class GPUVideoTextureData : public TextureData +{ +public: + GPUVideoTextureData(const SurfaceDescriptorGPUVideo& aSD, + const gfx::IntSize& aSize) + : mSD(aSD) + , mSize(aSize) + {} + + ~GPUVideoTextureData() {}; + + virtual void FillInfo(TextureData::Info& aInfo) const override; + + virtual bool Lock(OpenMode, FenceHandle*) override { return true; }; + + virtual void Unlock() override {}; + + virtual bool Serialize(SurfaceDescriptor& aOutDescriptor) override; + + virtual void Deallocate(ClientIPCAllocator* aAllocator) override; + + virtual void Forget(ClientIPCAllocator* aAllocator) override; + +protected: + SurfaceDescriptorGPUVideo mSD; + gfx::IntSize mSize; +}; + +} // namespace layers +} // namespace mozilla + +#endif // MOZILLA_GFX_GPUVIDEOTEXTURECLIENT_H diff --git a/gfx/layers/composite/GPUVideoTextureHost.cpp b/gfx/layers/composite/GPUVideoTextureHost.cpp new file mode 100644 index 000000000000..6d26147a7068 --- /dev/null +++ b/gfx/layers/composite/GPUVideoTextureHost.cpp @@ -0,0 +1,63 @@ +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "GPUVideoTextureHost.h" +#include "ImageContainer.h" + +namespace mozilla { +namespace layers { + +GPUVideoTextureHost::GPUVideoTextureHost(TextureFlags aFlags, + const SurfaceDescriptorGPUVideo& aDescriptor) + : TextureHost(aFlags) +{ + MOZ_COUNT_CTOR(GPUVideoTextureHost); +} + +GPUVideoTextureHost::~GPUVideoTextureHost() +{ + MOZ_COUNT_DTOR(GPUVideoTextureHost); +} + +bool +GPUVideoTextureHost::Lock() +{ + if (!mImage || !mCompositor) { + return false; + } + + if (!mTextureSource) { + mTextureSource = mCompositor->CreateTextureSourceForImage(mImage); + } + + return !!mTextureSource; +} + +void +GPUVideoTextureHost::SetCompositor(Compositor* aCompositor) +{ + if (mCompositor != aCompositor) { + mTextureSource = nullptr; + mCompositor = aCompositor; + } +} + +gfx::IntSize +GPUVideoTextureHost::GetSize() const +{ + if (!mImage) { + return gfx::IntSize(); + } + return mImage->GetSize(); +} + +gfx::SurfaceFormat +GPUVideoTextureHost::GetFormat() const +{ + return mTextureSource ? mTextureSource->GetFormat() : gfx::SurfaceFormat::UNKNOWN; +} + +} // namespace layers +} // namespace mozilla diff --git a/gfx/layers/composite/GPUVideoTextureHost.h b/gfx/layers/composite/GPUVideoTextureHost.h new file mode 100644 index 000000000000..f7b5d89d797d --- /dev/null +++ b/gfx/layers/composite/GPUVideoTextureHost.h @@ -0,0 +1,57 @@ +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef MOZILLA_GFX_GPUVIDEOTEXTUREHOST_H +#define MOZILLA_GFX_GPUVIDEOTEXTUREHOST_H + +#include "mozilla/layers/TextureHost.h" + +namespace mozilla { +namespace layers { + +class GPUVideoTextureHost : public TextureHost +{ +public: + GPUVideoTextureHost(TextureFlags aFlags, + const SurfaceDescriptorGPUVideo& aDescriptor); + virtual ~GPUVideoTextureHost(); + + virtual void DeallocateDeviceData() override {} + + virtual void SetCompositor(Compositor* aCompositor) override; + + virtual Compositor* GetCompositor() override { return mCompositor; } + + virtual bool Lock() override; + + virtual gfx::SurfaceFormat GetFormat() const override; + + virtual bool BindTextureSource(CompositableTextureSourceRef& aTexture) override + { + aTexture = mTextureSource; + return !!aTexture; + } + + virtual already_AddRefed GetAsSurface() override + { + return nullptr; // XXX - implement this (for MOZ_DUMP_PAINTING) + } + + virtual gfx::IntSize GetSize() const override; + +#ifdef MOZ_LAYERS_HAVE_LOG + virtual const char* Name() override { return "GPUVideoTextureHost"; } +#endif + +protected: + RefPtr mCompositor; + RefPtr mTextureSource; + RefPtr mImage; +}; + +} // namespace layers +} // namespace mozilla + +#endif // MOZILLA_GFX_GPUVIDEOTEXTUREHOST_H diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp index a2f6eea1574a..accaa8394a37 100644 --- a/gfx/layers/composite/TextureHost.cpp +++ b/gfx/layers/composite/TextureHost.cpp @@ -19,6 +19,7 @@ #include "mozilla/layers/TextureHostOGL.h" // for TextureHostOGL #include "mozilla/layers/ImageDataSerializer.h" #include "mozilla/layers/TextureClient.h" +#include "mozilla/layers/GPUVideoTextureHost.h" #include "nsAString.h" #include "mozilla/RefPtr.h" // for nsRefPtr #include "nsPrintfCString.h" // for nsPrintfCString @@ -232,6 +233,7 @@ TextureHost::Create(const SurfaceDescriptor& aDesc, case SurfaceDescriptor::TSurfaceDescriptorBuffer: case SurfaceDescriptor::TSurfaceDescriptorDIB: case SurfaceDescriptor::TSurfaceDescriptorFileMapping: + case SurfaceDescriptor::TSurfaceDescriptorGPUVideo: return CreateBackendIndependentTextureHost(aDesc, aDeallocator, aFlags); case SurfaceDescriptor::TEGLImageDescriptor: @@ -301,6 +303,10 @@ CreateBackendIndependentTextureHost(const SurfaceDescriptor& aDesc, } break; } + case SurfaceDescriptor::TSurfaceDescriptorGPUVideo: { + result = new GPUVideoTextureHost(aFlags, aDesc.get_SurfaceDescriptorGPUVideo()); + break; + } #ifdef XP_WIN case SurfaceDescriptor::TSurfaceDescriptorDIB: { result = new DIBTextureHost(aFlags, aDesc); diff --git a/gfx/layers/ipc/LayersSurfaces.ipdlh b/gfx/layers/ipc/LayersSurfaces.ipdlh index 7e9f8d3ef653..ad17fc0d1a28 100644 --- a/gfx/layers/ipc/LayersSurfaces.ipdlh +++ b/gfx/layers/ipc/LayersSurfaces.ipdlh @@ -98,6 +98,10 @@ struct SurfaceDescriptorGralloc { bool isOpaque; }; +struct SurfaceDescriptorGPUVideo { + uint64_t handle; +}; + struct RGBDescriptor { IntSize size; SurfaceFormat format; @@ -142,6 +146,7 @@ union SurfaceDescriptor { SurfaceDescriptorMacIOSurface; SurfaceDescriptorGralloc; SurfaceDescriptorSharedGLTexture; + SurfaceDescriptorGPUVideo; null_t; }; diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build index 22490e83f525..c7968f5a78da 100644 --- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -131,6 +131,7 @@ EXPORTS.mozilla.layers += [ 'client/CompositableChild.h', 'client/CompositableClient.h', 'client/ContentClient.h', + 'client/GPUVideoTextureClient.h', 'client/ImageClient.h', 'client/SingleTiledContentClient.h', 'client/TextureClient.h', @@ -144,6 +145,7 @@ EXPORTS.mozilla.layers += [ 'composite/ContainerLayerComposite.h', 'composite/ContentHost.h', 'composite/FrameUniformityData.h', + 'composite/GPUVideoTextureHost.h', 'composite/ImageHost.h', 'composite/ImageLayerComposite.h', 'composite/LayerManagerComposite.h', @@ -322,6 +324,7 @@ UNIFIED_SOURCES += [ 'client/CompositableChild.cpp', 'client/CompositableClient.cpp', 'client/ContentClient.cpp', + 'client/GPUVideoTextureClient.cpp', 'client/ImageClient.cpp', 'client/SingleTiledContentClient.cpp', 'client/TextureClient.cpp', @@ -337,6 +340,7 @@ UNIFIED_SOURCES += [ 'composite/ContentHost.cpp', 'composite/FPSCounter.cpp', 'composite/FrameUniformityData.cpp', + 'composite/GPUVideoTextureHost.cpp', 'composite/ImageHost.cpp', 'composite/ImageLayerComposite.cpp', 'composite/LayerManagerComposite.cpp', From 88b6a1b9dc14c7de4f9c0100b944dfa6dda18bbf Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:44 +1200 Subject: [PATCH 013/117] Bug 1288618 - Part 10: Add a new layers::Image type for GPUVideo. r=nical --- gfx/layers/GPUVideoImage.h | 57 ++++++++++++++++++++++++++++++++++++++ gfx/layers/ImageTypes.h | 8 +++++- gfx/layers/moz.build | 1 + 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 gfx/layers/GPUVideoImage.h diff --git a/gfx/layers/GPUVideoImage.h b/gfx/layers/GPUVideoImage.h new file mode 100644 index 000000000000..fec7df1c6fea --- /dev/null +++ b/gfx/layers/GPUVideoImage.h @@ -0,0 +1,57 @@ +/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef GFX_GPU_VIDEO_IMAGE_H +#define GFX_GPU_VIDEO_IMAGE_H + +#include "mozilla/RefPtr.h" +#include "ImageContainer.h" +#include "mozilla/layers/GPUVideoTextureClient.h" +#include "mozilla/layers/CompositableClient.h" +#include "mozilla/layers/ImageBridgeChild.h" + +namespace mozilla { +namespace layers { + +// Image class that refers to a decoded video frame within +// the GPU process. +class GPUVideoImage final : public Image { +public: + GPUVideoImage(const SurfaceDescriptorGPUVideo& aSD, + const gfx::IntSize& aSize) + : Image(nullptr, ImageFormat::GPU_VIDEO) + , mSize(aSize) + { + // Create the TextureClient immediately since the GPUVideoTextureData + // is responsible for deallocating the SurfaceDescriptor. + mTextureClient = + TextureClient::CreateWithData(new GPUVideoTextureData(aSD, aSize), + TextureFlags::DEFAULT, + ImageBridgeChild::GetSingleton().get()); + } + + ~GPUVideoImage() override {} + + gfx::IntSize GetSize() override { return mSize; } + + // TODO: We really want to be able to support this, but it's complex, since we need to readback + // in the other process and send it across. + virtual already_AddRefed GetAsSourceSurface() override { return nullptr; } + + virtual TextureClient* GetTextureClient(CompositableClient* aClient) override + { + MOZ_ASSERT(aClient->GetForwarder() == ImageBridgeChild::GetSingleton(), "Must only use GPUVideo on ImageBridge"); + return mTextureClient; + } + +private: + gfx::IntSize mSize; + RefPtr mTextureClient; +}; + +} // namepace layers +} // namespace mozilla + +#endif // GFX_GPU_VIDEO_IMAGE_H diff --git a/gfx/layers/ImageTypes.h b/gfx/layers/ImageTypes.h index 1a3eb6b565f5..c3a2fc65e5e6 100644 --- a/gfx/layers/ImageTypes.h +++ b/gfx/layers/ImageTypes.h @@ -97,7 +97,13 @@ enum class ImageFormat { /** * A wrapper around a drawable TextureClient. */ - TEXTURE_WRAPPER + TEXTURE_WRAPPER, + + /** + * An opaque handle that refers to an Image stored in the GPU + * process. + */ + GPU_VIDEO }; enum class StereoMode { diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build index c7968f5a78da..98098c041357 100644 --- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -25,6 +25,7 @@ EXPORTS += [ 'D3D9SurfaceImage.h', 'FrameMetrics.h', 'GLImages.h', + 'GPUVideoImage.h', 'GrallocImages.h', 'ImageContainer.h', 'ImageLayers.h', From d4df25998c4d68d029ee8758cd32194c17599a82 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:44 +1200 Subject: [PATCH 014/117] Bug 1288618 - Part 11: Add a pref to enable GPU process video decoding. r=cpearce --- dom/media/MediaPrefs.h | 1 + 1 file changed, 1 insertion(+) diff --git a/dom/media/MediaPrefs.h b/dom/media/MediaPrefs.h index 8e114ca3755f..59fbf1b551e1 100644 --- a/dom/media/MediaPrefs.h +++ b/dom/media/MediaPrefs.h @@ -101,6 +101,7 @@ private: DECL_MEDIA_PREF("media.gmp.async-shutdown-timeout", GMPAsyncShutdownTimeout, uint32_t, GMP_DEFAULT_ASYNC_SHUTDOWN_TIMEOUT); DECL_MEDIA_PREF("media.eme.enabled", EMEEnabled, bool, false); DECL_MEDIA_PREF("media.use-blank-decoder", PDMUseBlankDecoder, bool, false); + DECL_MEDIA_PREF("media.gpu-process-decoder", PDMUseGPUDecoder, bool, false); #ifdef MOZ_GONK_MEDIACODEC DECL_MEDIA_PREF("media.gonk.enabled", PDMGonkDecoderEnabled, bool, true); #endif From 9dee8747d737c6b8fcf33655eb0fbee192d00bf8 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:24:44 +1200 Subject: [PATCH 015/117] Bug 1288618 - Part 12: Initialize WMF in the GPU process. r=dvander --- gfx/ipc/GPUParent.cpp | 10 ++++++++++ gfx/ipc/GPUProcessHost.cpp | 2 ++ gfx/ipc/moz.build | 5 ++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gfx/ipc/GPUParent.cpp b/gfx/ipc/GPUParent.cpp index 0148f922d96e..8d7446a941e9 100644 --- a/gfx/ipc/GPUParent.cpp +++ b/gfx/ipc/GPUParent.cpp @@ -3,6 +3,9 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifdef XP_WIN +#include "WMF.h" +#endif #include "GPUParent.h" #include "gfxConfig.h" #include "gfxPlatform.h" @@ -74,6 +77,9 @@ GPUParent::Init(base::ProcessId aParentPid, VRManager::ManagerInit(); LayerTreeOwnerTracker::Initialize(); mozilla::ipc::SetThisProcessName("GPU Process"); +#ifdef XP_WIN + wmf::MFStartup(); +#endif return true; } @@ -273,6 +279,10 @@ GPUParent::ActorDestroy(ActorDestroyReason aWhy) ProcessChild::QuickExit(); } +#ifdef XP_WIN + wmf::MFShutdown(); +#endif + #ifndef NS_FREE_PERMANENT_DATA // No point in going through XPCOM shutdown because we don't keep persistent // state. diff --git a/gfx/ipc/GPUProcessHost.cpp b/gfx/ipc/GPUProcessHost.cpp index d1214a0e8f66..3e2b68611c62 100644 --- a/gfx/ipc/GPUProcessHost.cpp +++ b/gfx/ipc/GPUProcessHost.cpp @@ -13,6 +13,8 @@ namespace mozilla { namespace gfx { +using namespace ipc; + GPUProcessHost::GPUProcessHost(Listener* aListener) : GeckoChildProcessHost(GeckoProcessType_GPU), mListener(aListener), diff --git a/gfx/ipc/moz.build b/gfx/ipc/moz.build index 6bce9a48ac40..1abeed33c964 100644 --- a/gfx/ipc/moz.build +++ b/gfx/ipc/moz.build @@ -47,7 +47,6 @@ UNIFIED_SOURCES += [ 'CompositorWidgetVsyncObserver.cpp', 'D3DMessageUtils.cpp', 'GPUChild.cpp', - 'GPUParent.cpp', 'GPUProcessHost.cpp', 'GPUProcessImpl.cpp', 'GPUProcessManager.cpp', @@ -59,6 +58,10 @@ UNIFIED_SOURCES += [ 'VsyncIOThreadHolder.cpp', ] +SOURCES += [ + 'GPUParent.cpp', +] + IPDL_SOURCES = [ 'GraphicsMessages.ipdlh', 'PGPU.ipdl', From 7756c8a512ab9caffe771cdded769956aec35f89 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:25:33 +1200 Subject: [PATCH 016/117] Bug 1288618 - Part 13: Add VideoDecoderManager protocol. r=dvander --- dom/ipc/ContentParent.cpp | 7 + dom/ipc/ContentParent.h | 2 + dom/ipc/PContent.ipdl | 3 + dom/media/ipc/PVideoDecoderManager.ipdl | 20 ++ dom/media/ipc/VideoDecoderManagerChild.cpp | 117 ++++++++++ dom/media/ipc/VideoDecoderManagerChild.h | 42 ++++ dom/media/ipc/VideoDecoderManagerParent.cpp | 218 +++++++++++++++++++ dom/media/ipc/VideoDecoderManagerParent.h | 47 ++++ dom/media/ipc/moz.build | 26 +++ dom/media/moz.build | 1 + gfx/ipc/GPUParent.cpp | 7 + gfx/ipc/GPUParent.h | 1 + gfx/ipc/GPUProcessManager.cpp | 29 +++ gfx/ipc/GPUProcessManager.h | 3 + gfx/ipc/PGPU.ipdl | 2 + gfx/layers/client/GPUVideoTextureClient.cpp | 2 + gfx/layers/composite/GPUVideoTextureHost.cpp | 2 + layout/build/nsLayoutStatics.cpp | 5 + 18 files changed, 534 insertions(+) create mode 100644 dom/media/ipc/PVideoDecoderManager.ipdl create mode 100644 dom/media/ipc/VideoDecoderManagerChild.cpp create mode 100644 dom/media/ipc/VideoDecoderManagerChild.h create mode 100644 dom/media/ipc/VideoDecoderManagerParent.cpp create mode 100644 dom/media/ipc/VideoDecoderManagerParent.h create mode 100644 dom/media/ipc/moz.build diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index 005efe8ed960..9273c20345c9 100644 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -1059,6 +1059,13 @@ ContentParent::RecvFindPlugins(const uint32_t& aPluginEpoch, return true; } +bool +ContentParent::RecvInitVideoDecoderManager(Endpoint* aEndpoint) +{ + GPUProcessManager::Get()->CreateContentVideoDecoderManager(OtherPid(), aEndpoint); + return true; +} + /*static*/ TabParent* ContentParent::CreateBrowserOrApp(const TabContext& aContext, Element* aFrameElement, diff --git a/dom/ipc/ContentParent.h b/dom/ipc/ContentParent.h index d579e5c377e8..8192f61a152d 100644 --- a/dom/ipc/ContentParent.h +++ b/dom/ipc/ContentParent.h @@ -271,6 +271,8 @@ public: nsTArray* aPlugins, uint32_t* aNewPluginEpoch) override; + virtual bool RecvInitVideoDecoderManager(Endpoint* endpoint) override; + virtual bool RecvUngrabPointer(const uint32_t& aTime) override; virtual bool RecvRemovePermission(const IPC::Principal& aPrincipal, diff --git a/dom/ipc/PContent.ipdl b/dom/ipc/PContent.ipdl index 09b6eeb1775b..3703183c1238 100644 --- a/dom/ipc/PContent.ipdl +++ b/dom/ipc/PContent.ipdl @@ -56,6 +56,7 @@ include protocol PWebBrowserPersistDocument; include protocol PWebrtcGlobal; include protocol PPresentation; include protocol PVRManager; +include protocol PVideoDecoderManager; include protocol PFlyWebPublishedServer; include DOMTypes; include JavaScriptTypes; @@ -788,6 +789,8 @@ parent: sync PCrashReporter(NativeThreadId tid, uint32_t processType); + sync InitVideoDecoderManager() returns (Endpoint endpoint); + /** * Is this token compatible with the provided version? * diff --git a/dom/media/ipc/PVideoDecoderManager.ipdl b/dom/media/ipc/PVideoDecoderManager.ipdl new file mode 100644 index 000000000000..1f95771c3ac5 --- /dev/null +++ b/dom/media/ipc/PVideoDecoderManager.ipdl @@ -0,0 +1,20 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +include LayersSurfaces; +include "mozilla/dom/MediaIPCUtils.h"; + +namespace mozilla { +namespace dom { + +async protocol PVideoDecoderManager +{ +parent: + + async DeallocateSurfaceDescriptorGPUVideo(SurfaceDescriptorGPUVideo sd); +}; + +} // namespace dom +} // namespace mozilla diff --git a/dom/media/ipc/VideoDecoderManagerChild.cpp b/dom/media/ipc/VideoDecoderManagerChild.cpp new file mode 100644 index 000000000000..d6260bda0448 --- /dev/null +++ b/dom/media/ipc/VideoDecoderManagerChild.cpp @@ -0,0 +1,117 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "VideoDecoderManagerChild.h" +#include "mozilla/dom/ContentChild.h" +#include "MediaPrefs.h" +#include "nsThreadUtils.h" + +namespace mozilla { +namespace dom { + +using namespace ipc; +using namespace layers; +using namespace gfx; + +StaticRefPtr sVideoDecoderChildThread; +static StaticRefPtr sDecoderManager; + +/* static */ void +VideoDecoderManagerChild::Initialize() +{ + MOZ_ASSERT(NS_IsMainThread()); + + MediaPrefs::GetSingleton(); + +#ifdef XP_WIN + if (!MediaPrefs::PDMUseGPUDecoder()) { + return; + } + + // Can't run remote video decoding in the parent process. + if (!ContentChild::GetSingleton()) { + return; + } + + if (!sVideoDecoderChildThread) { + RefPtr childThread; + nsresult rv = NS_NewNamedThread("VideoChild", getter_AddRefs(childThread)); + NS_ENSURE_SUCCESS_VOID(rv); + sVideoDecoderChildThread = childThread; + } + + Endpoint endpoint; + if (!ContentChild::GetSingleton()->SendInitVideoDecoderManager(&endpoint)) { + return; + } + + // TODO: The above message should return an empty endpoint if there wasn't a GPU + // process. Unfortunately IPDL will assert in this case, so it can't actually + // happen. Bug 1302009 is filed for fixing this. + + sDecoderManager = new VideoDecoderManagerChild(); + + RefPtr task = NewRunnableMethod&&>( + sDecoderManager, &VideoDecoderManagerChild::Open, Move(endpoint)); + sVideoDecoderChildThread->Dispatch(task.forget(), NS_DISPATCH_NORMAL); +#else + return; +#endif + +} + +/* static */ void +VideoDecoderManagerChild::Shutdown() +{ + MOZ_ASSERT(NS_IsMainThread()); + + if (sVideoDecoderChildThread) { + MOZ_ASSERT(sDecoderManager); + + sVideoDecoderChildThread->Dispatch(NS_NewRunnableFunction([]() { + sDecoderManager->Close(); + }), NS_DISPATCH_SYNC); + + sDecoderManager = nullptr; + + sVideoDecoderChildThread->Shutdown(); + sVideoDecoderChildThread = nullptr; + } +} + +/* static */ VideoDecoderManagerChild* +VideoDecoderManagerChild::GetSingleton() +{ + return sDecoderManager; +} + +void +VideoDecoderManagerChild::Open(Endpoint&& aEndpoint) +{ + if (!aEndpoint.Bind(this)) { + // We can't recover from this. + MOZ_CRASH("Failed to bind VideoDecoderChild to endpoint"); + } + AddRef(); +} + +void +VideoDecoderManagerChild::DeallocPVideoDecoderManagerChild() +{ + Release(); +} + +void +VideoDecoderManagerChild::DeallocateSurfaceDescriptorGPUVideo(const SurfaceDescriptorGPUVideo& aSD) +{ + RefPtr ref = this; + SurfaceDescriptorGPUVideo sd = Move(aSD); + sVideoDecoderChildThread->Dispatch(NS_NewRunnableFunction([ref, sd]() { + ref->SendDeallocateSurfaceDescriptorGPUVideo(sd); + }), NS_DISPATCH_NORMAL); +} + +} // namespace dom +} // namespace mozilla diff --git a/dom/media/ipc/VideoDecoderManagerChild.h b/dom/media/ipc/VideoDecoderManagerChild.h new file mode 100644 index 000000000000..0310e2e46f1d --- /dev/null +++ b/dom/media/ipc/VideoDecoderManagerChild.h @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef include_dom_ipc_VideoDecoderManagerChild_h +#define include_dom_ipc_VideoDecoderManagerChild_h + +#include "mozilla/RefPtr.h" +#include "mozilla/dom/PVideoDecoderManagerChild.h" + +namespace mozilla { +namespace dom { + +class VideoDecoderManagerChild final : public PVideoDecoderManagerChild +{ +public: + NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoDecoderManagerChild) + + static VideoDecoderManagerChild* GetSingleton(); + + // Can be called from any thread, dispatches the request to the IPDL thread internally. + void DeallocateSurfaceDescriptorGPUVideo(const SurfaceDescriptorGPUVideo& aSD); + + void DeallocPVideoDecoderManagerChild() override; + + // Main thread only + static void Initialize(); + static void Shutdown(); + +private: + VideoDecoderManagerChild() + {} + ~VideoDecoderManagerChild() {} + + void Open(Endpoint&& aEndpoint); +}; + +} // namespace dom +} // namespace mozilla + +#endif // include_dom_ipc_VideoDecoderManagerChild_h diff --git a/dom/media/ipc/VideoDecoderManagerParent.cpp b/dom/media/ipc/VideoDecoderManagerParent.cpp new file mode 100644 index 000000000000..0eb786ff7e26 --- /dev/null +++ b/dom/media/ipc/VideoDecoderManagerParent.cpp @@ -0,0 +1,218 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "VideoDecoderManagerParent.h" +#include "base/thread.h" +#include "mozilla/StaticMutex.h" +#include "mozilla/UniquePtr.h" +#include "mozilla/Services.h" +#include "mozilla/Observer.h" +#include "nsIObserverService.h" +#include "nsIObserver.h" +#include "nsIEventTarget.h" +#include "nsThreadUtils.h" +#include "ImageContainer.h" + +#if XP_WIN +#include +#endif + +namespace mozilla { +namespace dom { + +using base::Thread; +using namespace ipc; +using namespace layers; +using namespace gfx; + + +struct ImageMapEntry { + ImageMapEntry() + : mOwner(nullptr) + {} + ImageMapEntry(layers::Image* aImage, VideoDecoderManagerParent* aOwner) + : mImage(aImage) + , mOwner(aOwner) + {} + ~ImageMapEntry() {} + + RefPtr mImage; + VideoDecoderManagerParent* mOwner; +}; +std::map sImageMap; +StaticMutex sImageMutex; + +/* static */ layers::Image* +VideoDecoderManagerParent::LookupImage(const SurfaceDescriptorGPUVideo& aSD) +{ + StaticMutexAutoLock lock(sImageMutex); + return sImageMap[aSD.handle()].mImage; +} + +SurfaceDescriptorGPUVideo +VideoDecoderManagerParent::StoreImage(Image* aImage) +{ + StaticMutexAutoLock lock(sImageMutex); + + static uint64_t sImageCount = 0; + sImageMap[++sImageCount] = ImageMapEntry(aImage, this); + + return SurfaceDescriptorGPUVideo(sImageCount); +} + +void +VideoDecoderManagerParent::ClearAllOwnedImages() +{ + StaticMutexAutoLock lock(sImageMutex); + for (auto it = sImageMap.begin(); it != sImageMap.end();) + { + if ((*it).second.mOwner == this) { + it = sImageMap.erase(it); + } else { + ++it; + } + } +} + +StaticRefPtr sVideoDecoderManagerThread; +StaticRefPtr sVideoDecoderTaskThread; +StaticRefPtr sManagerTaskQueue; + +class ManagerThreadShutdownObserver : public nsIObserver +{ + virtual ~ManagerThreadShutdownObserver() {} +public: + ManagerThreadShutdownObserver() {} + + NS_DECL_ISUPPORTS + + NS_IMETHOD Observe(nsISupports* aSubject, const char* aTopic, + const char16_t* aData) override + { + MOZ_ASSERT(strcmp(aTopic, NS_XPCOM_SHUTDOWN_OBSERVER_ID) == 0); + + VideoDecoderManagerParent::ShutdownThreads(); + return NS_OK; + } +}; +NS_IMPL_ISUPPORTS(ManagerThreadShutdownObserver, nsIObserver); + +void +VideoDecoderManagerParent::StartupThreads() +{ + MOZ_ASSERT(NS_IsMainThread()); + + if (sVideoDecoderManagerThread) { + return; + } + + nsCOMPtr observerService = services::GetObserverService(); + if (!observerService) { + return; + } + + RefPtr managerThread; + nsresult rv = NS_NewNamedThread("VideoParent", getter_AddRefs(managerThread)); + if (NS_FAILED(rv)) { + return; + } + sVideoDecoderManagerThread = managerThread; +#if XP_WIN + sVideoDecoderManagerThread->Dispatch(NS_NewRunnableFunction([]() { + HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED); + MOZ_ASSERT(hr == S_OK); + }), NS_DISPATCH_NORMAL); +#endif + + sManagerTaskQueue = new TaskQueue(managerThread.forget()); + + RefPtr taskThread; + rv = NS_NewNamedThread("VideoTaskQueue", getter_AddRefs(taskThread)); + if (NS_FAILED(rv)) { + sVideoDecoderManagerThread->Shutdown(); + sVideoDecoderManagerThread = nullptr; + return; + } + sVideoDecoderTaskThread = taskThread; + +#ifdef XP_WIN + sVideoDecoderTaskThread->Dispatch(NS_NewRunnableFunction([]() { + HRESULT hr = CoInitializeEx(0, COINIT_MULTITHREADED); + MOZ_ASSERT(hr == S_OK); + }), NS_DISPATCH_NORMAL); +#endif + + ManagerThreadShutdownObserver* obs = new ManagerThreadShutdownObserver(); + observerService->AddObserver(obs, NS_XPCOM_SHUTDOWN_OBSERVER_ID, false); +} + +void +VideoDecoderManagerParent::ShutdownThreads() +{ + sManagerTaskQueue->BeginShutdown(); + sManagerTaskQueue->AwaitShutdownAndIdle(); + sVideoDecoderTaskThread->Shutdown(); + sVideoDecoderTaskThread = nullptr; + sVideoDecoderManagerThread->Shutdown(); + sVideoDecoderManagerThread = nullptr; +} + +bool +VideoDecoderManagerParent::CreateForContent(Endpoint&& aEndpoint) +{ + MOZ_ASSERT(XRE_GetProcessType() == GeckoProcessType_GPU); + MOZ_ASSERT(NS_IsMainThread()); + + StartupThreads(); + if (!sVideoDecoderManagerThread) { + return false; + } + + RefPtr parent = new VideoDecoderManagerParent(); + + RefPtr task = NewRunnableMethod&&>( + parent, &VideoDecoderManagerParent::Open, Move(aEndpoint)); + sVideoDecoderManagerThread->Dispatch(task.forget(), NS_DISPATCH_NORMAL); + return true; +} + +VideoDecoderManagerParent::VideoDecoderManagerParent() +{ + MOZ_COUNT_CTOR(VideoDecoderManagerParent); +} + +VideoDecoderManagerParent::~VideoDecoderManagerParent() +{ + MOZ_COUNT_DTOR(VideoDecoderManagerParent); + + ClearAllOwnedImages(); +} + +void +VideoDecoderManagerParent::Open(Endpoint&& aEndpoint) +{ + if (!aEndpoint.Bind(this)) { + // We can't recover from this. + MOZ_CRASH("Failed to bind VideoDecoderManagerParent to endpoint"); + } + AddRef(); +} + +void +VideoDecoderManagerParent::DeallocPVideoDecoderManagerParent() +{ + Release(); +} + +bool +VideoDecoderManagerParent::RecvDeallocateSurfaceDescriptorGPUVideo(const SurfaceDescriptorGPUVideo& aSD) +{ + StaticMutexAutoLock lock(sImageMutex); + sImageMap.erase(aSD.handle()); + return true; +} + +} // namespace dom +} // namespace mozilla diff --git a/dom/media/ipc/VideoDecoderManagerParent.h b/dom/media/ipc/VideoDecoderManagerParent.h new file mode 100644 index 000000000000..71a7c789e162 --- /dev/null +++ b/dom/media/ipc/VideoDecoderManagerParent.h @@ -0,0 +1,47 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef include_dom_ipc_VideoDecoderManagerParent_h +#define include_dom_ipc_VideoDecoderManagerParent_h + +#include "mozilla/dom/PVideoDecoderManagerParent.h" + +namespace mozilla { +namespace dom { + +class VideoDecoderManagerParent final : public PVideoDecoderManagerParent +{ +public: + NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoDecoderManagerParent) + + static bool CreateForContent(Endpoint&& aEndpoint); + + // Can be called from any thread + static layers::Image* LookupImage(const SurfaceDescriptorGPUVideo& aSD); + SurfaceDescriptorGPUVideo StoreImage(layers::Image* aImage); + + static void StartupThreads(); + static void ShutdownThreads(); + +protected: + bool RecvDeallocateSurfaceDescriptorGPUVideo(const SurfaceDescriptorGPUVideo& aSD) override; + + void ActorDestroy(mozilla::ipc::IProtocolManager::ActorDestroyReason) override {} + + void DeallocPVideoDecoderManagerParent() override; + + private: + VideoDecoderManagerParent(); + ~VideoDecoderManagerParent(); + + void ClearAllOwnedImages(); + + void Open(Endpoint&& aEndpoint); +}; + +} // namespace dom +} // namespace mozilla + +#endif // include_dom_ipc_VideoDecoderManagerParent_h diff --git a/dom/media/ipc/moz.build b/dom/media/ipc/moz.build new file mode 100644 index 000000000000..b3ce8e7b517d --- /dev/null +++ b/dom/media/ipc/moz.build @@ -0,0 +1,26 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +IPDL_SOURCES += [ + 'PVideoDecoderManager.ipdl', +] + +EXPORTS.mozilla.dom += [ + 'MediaIPCUtils.h', + 'VideoDecoderManagerChild.h', + 'VideoDecoderManagerParent.h', +] + +SOURCES += [ + 'VideoDecoderManagerChild.cpp', + 'VideoDecoderManagerParent.cpp', +] + +include('/ipc/chromium/chromium-config.mozbuild') + + +FINAL_LIBRARY = 'xul' diff --git a/dom/media/moz.build b/dom/media/moz.build index 626ed72f7362..823c5244dcd0 100644 --- a/dom/media/moz.build +++ b/dom/media/moz.build @@ -26,6 +26,7 @@ DIRS += [ 'gmp-plugin', 'gmp-plugin-openh264', 'imagecapture', + 'ipc', 'mediasink', 'mediasource', 'ogg', diff --git a/gfx/ipc/GPUParent.cpp b/gfx/ipc/GPUParent.cpp index 8d7446a941e9..fd9689de1f23 100644 --- a/gfx/ipc/GPUParent.cpp +++ b/gfx/ipc/GPUParent.cpp @@ -17,6 +17,7 @@ #include "mozilla/layers/APZThreadUtils.h" #include "mozilla/layers/APZCTreeManager.h" #include "mozilla/layers/CompositorBridgeParent.h" +#include "mozilla/dom/VideoDecoderManagerParent.h" #include "mozilla/layers/CompositorThread.h" #include "mozilla/layers/ImageBridgeParent.h" #include "nsDebugImpl.h" @@ -257,6 +258,12 @@ GPUParent::RecvNewContentVRManager(Endpoint&& aEndpoint) return VRManagerParent::CreateForContent(Move(aEndpoint)); } +bool +GPUParent::RecvNewContentVideoDecoderManager(Endpoint&& aEndpoint) +{ + return dom::VideoDecoderManagerParent::CreateForContent(Move(aEndpoint)); +} + bool GPUParent::RecvDeallocateLayerTreeId(const uint64_t& aLayersId) { diff --git a/gfx/ipc/GPUParent.h b/gfx/ipc/GPUParent.h index 6fefb731d660..552d86d07b8e 100644 --- a/gfx/ipc/GPUParent.h +++ b/gfx/ipc/GPUParent.h @@ -41,6 +41,7 @@ public: bool RecvNewContentCompositorBridge(Endpoint&& aEndpoint) override; bool RecvNewContentImageBridge(Endpoint&& aEndpoint) override; bool RecvNewContentVRManager(Endpoint&& aEndpoint) override; + bool RecvNewContentVideoDecoderManager(Endpoint&& aEndpoint) override; bool RecvDeallocateLayerTreeId(const uint64_t& aLayersId) override; bool RecvGetDeviceStatus(GPUDeviceData* aOutStatus) override; bool RecvAddLayerTreeIdMapping(const uint64_t& aLayersId, const ProcessId& aOwnerId) override; diff --git a/gfx/ipc/GPUProcessManager.cpp b/gfx/ipc/GPUProcessManager.cpp index 74cacfeddc42..699fd6b0ebb3 100644 --- a/gfx/ipc/GPUProcessManager.cpp +++ b/gfx/ipc/GPUProcessManager.cpp @@ -27,6 +27,8 @@ #include "VsyncBridgeChild.h" #include "VsyncIOThreadHolder.h" #include "VsyncSource.h" +#include "mozilla/dom/VideoDecoderManagerChild.h" +#include "mozilla/dom/VideoDecoderManagerParent.h" namespace mozilla { namespace gfx { @@ -617,6 +619,33 @@ GPUProcessManager::CreateContentVRManager(base::ProcessId aOtherProcess, return true; } +bool +GPUProcessManager::CreateContentVideoDecoderManager(base::ProcessId aOtherProcess, + ipc::Endpoint* aOutEndpoint) +{ + if (!mGPUChild) { + return false; + } + + ipc::Endpoint parentPipe; + ipc::Endpoint childPipe; + + nsresult rv = dom::PVideoDecoderManager::CreateEndpoints( + mGPUChild->OtherPid(), + aOtherProcess, + &parentPipe, + &childPipe); + if (NS_FAILED(rv)) { + gfxCriticalNote << "Could not create content video decoder: " << hexa(int(rv)); + return false; + } + + mGPUChild->SendNewContentVideoDecoderManager(Move(parentPipe)); + + *aOutEndpoint = Move(childPipe); + return true; +} + already_AddRefed GPUProcessManager::GetAPZCTreeManagerForLayers(uint64_t aLayersId) { diff --git a/gfx/ipc/GPUProcessManager.h b/gfx/ipc/GPUProcessManager.h index 66db7e121632..b7a8011c3de9 100644 --- a/gfx/ipc/GPUProcessManager.h +++ b/gfx/ipc/GPUProcessManager.h @@ -37,6 +37,7 @@ class CompositorWidget; namespace dom { class ContentParent; class TabParent; +class PVideoDecoderManagerChild; } // namespace dom namespace ipc { class GeckoChildProcessHost; @@ -92,6 +93,8 @@ public: ipc::Endpoint* aOutCompositor, ipc::Endpoint* aOutImageBridge, ipc::Endpoint* aOutVRBridge); + bool CreateContentVideoDecoderManager(base::ProcessId aOtherProcess, + ipc::Endpoint* aOutEndPoint); // This returns a reference to the APZCTreeManager to which // pan/zoom-related events can be sent. diff --git a/gfx/ipc/PGPU.ipdl b/gfx/ipc/PGPU.ipdl index 21e6daf9a827..49d4cec8ad65 100644 --- a/gfx/ipc/PGPU.ipdl +++ b/gfx/ipc/PGPU.ipdl @@ -8,6 +8,7 @@ include protocol PCompositorBridge; include protocol PImageBridge; include protocol PVRManager; include protocol PVsyncBridge; +include protocol PVideoDecoderManager; using base::ProcessId from "base/process.h"; using mozilla::TimeDuration from "mozilla/TimeStamp.h"; @@ -56,6 +57,7 @@ parent: async NewContentCompositorBridge(Endpoint endpoint); async NewContentImageBridge(Endpoint endpoint); async NewContentVRManager(Endpoint endpoint); + async NewContentVideoDecoderManager(Endpoint endpoint); async DeallocateLayerTreeId(uint64_t layersId); diff --git a/gfx/layers/client/GPUVideoTextureClient.cpp b/gfx/layers/client/GPUVideoTextureClient.cpp index 41021f6bf43e..0e2d25345be8 100644 --- a/gfx/layers/client/GPUVideoTextureClient.cpp +++ b/gfx/layers/client/GPUVideoTextureClient.cpp @@ -4,6 +4,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "GPUVideoTextureClient.h" +#include "mozilla/dom/VideoDecoderManagerChild.h" namespace mozilla { namespace layers { @@ -34,6 +35,7 @@ GPUVideoTextureData::FillInfo(TextureData::Info& aInfo) const void GPUVideoTextureData::Deallocate(ClientIPCAllocator* aAllocator) { + dom::VideoDecoderManagerChild::GetSingleton()->DeallocateSurfaceDescriptorGPUVideo(mSD); mSD = SurfaceDescriptorGPUVideo(); } diff --git a/gfx/layers/composite/GPUVideoTextureHost.cpp b/gfx/layers/composite/GPUVideoTextureHost.cpp index 6d26147a7068..fc3c3bcb289c 100644 --- a/gfx/layers/composite/GPUVideoTextureHost.cpp +++ b/gfx/layers/composite/GPUVideoTextureHost.cpp @@ -4,6 +4,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "GPUVideoTextureHost.h" +#include "mozilla/dom/VideoDecoderManagerParent.h" #include "ImageContainer.h" namespace mozilla { @@ -14,6 +15,7 @@ GPUVideoTextureHost::GPUVideoTextureHost(TextureFlags aFlags, : TextureHost(aFlags) { MOZ_COUNT_CTOR(GPUVideoTextureHost); + mImage = dom::VideoDecoderManagerParent::LookupImage(aDescriptor); } GPUVideoTextureHost::~GPUVideoTextureHost() diff --git a/layout/build/nsLayoutStatics.cpp b/layout/build/nsLayoutStatics.cpp index a7e44b9d90e0..1c1a66adbf0a 100644 --- a/layout/build/nsLayoutStatics.cpp +++ b/layout/build/nsLayoutStatics.cpp @@ -67,6 +67,7 @@ #include "FrameLayerBuilder.h" #include "AnimationCommon.h" #include "LayerAnimationInfo.h" +#include "mozilla/dom/VideoDecoderManagerChild.h" #include "AudioChannelService.h" #include "mozilla/dom/PromiseDebugging.h" @@ -307,6 +308,8 @@ nsLayoutStatics::Initialize() MediaDecoder::InitStatics(); + VideoDecoderManagerChild::Initialize(); + PromiseDebugging::Init(); mozilla::dom::devicestorage::DeviceStorageStatics::Initialize(); @@ -390,6 +393,8 @@ nsLayoutStatics::Shutdown() nsAutoCopyListener::Shutdown(); FrameLayerBuilder::Shutdown(); + VideoDecoderManagerChild::Shutdown(); + #ifdef MOZ_ANDROID_OMX AndroidMediaPluginHost::Shutdown(); #endif From a64365e7ad928359c270fb3c21cded8d8810b789 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:25:41 +1200 Subject: [PATCH 017/117] Bug 1288618 - Part 14: Add PVideoDecoder protocol for individual decoders. r=cpearce,dvander --- dom/media/ipc/PVideoDecoder.ipdl | 75 +++++++ dom/media/ipc/PVideoDecoderManager.ipdl | 3 + dom/media/ipc/VideoDecoderChild.cpp | 208 ++++++++++++++++++ dom/media/ipc/VideoDecoderChild.h | 71 ++++++ dom/media/ipc/VideoDecoderManagerChild.cpp | 21 ++ dom/media/ipc/VideoDecoderManagerChild.h | 5 + dom/media/ipc/VideoDecoderManagerParent.cpp | 22 ++ dom/media/ipc/VideoDecoderManagerParent.h | 5 + dom/media/ipc/VideoDecoderParent.cpp | 227 ++++++++++++++++++++ dom/media/ipc/VideoDecoderParent.h | 66 ++++++ dom/media/ipc/moz.build | 3 + 11 files changed, 706 insertions(+) create mode 100644 dom/media/ipc/PVideoDecoder.ipdl create mode 100644 dom/media/ipc/VideoDecoderChild.cpp create mode 100644 dom/media/ipc/VideoDecoderChild.h create mode 100644 dom/media/ipc/VideoDecoderParent.cpp create mode 100644 dom/media/ipc/VideoDecoderParent.h diff --git a/dom/media/ipc/PVideoDecoder.ipdl b/dom/media/ipc/PVideoDecoder.ipdl new file mode 100644 index 000000000000..b44e0f753d3d --- /dev/null +++ b/dom/media/ipc/PVideoDecoder.ipdl @@ -0,0 +1,75 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +include "mozilla/dom/MediaIPCUtils.h"; + +include protocol PVideoDecoderManager; +include LayersSurfaces; +using VideoInfo from "MediaInfo.h"; +using mozilla::layers::LayersBackend from "mozilla/layers/LayersTypes.h"; + +namespace mozilla { +namespace dom { + +struct MediaDataIPDL +{ + int64_t offset; + int64_t time; + int64_t timecode; + int64_t duration; + uint32_t frames; + bool keyframe; +}; + +struct VideoDataIPDL +{ + MediaDataIPDL base; + IntSize display; + SurfaceDescriptorGPUVideo sd; + int32_t frameID; +}; + +struct MediaRawDataIPDL +{ + MediaDataIPDL base; + Shmem buffer; +}; + +// This protocol provides a way to use MediaDataDecoder/MediaDataDecoderCallback +// across processes. The parent side currently is only implemented to work with +// Window Media Foundation, but can be extended easily to support other backends. +// The child side runs in the content process, and the parent side runs in the +// GPU process. We run a separate IPDL thread for both sides. +async protocol PVideoDecoder +{ + manager PVideoDecoderManager; +parent: + async Init(VideoInfo info, LayersBackend backend); + + async Input(MediaRawDataIPDL data); + + async Flush(); + async Drain(); + async Shutdown(); + + async __delete__(); + +child: + + async InitComplete(); + async InitFailed(nsresult reason); + + // Each output includes a SurfaceDescriptorGPUVideo that represents the decoded + // frame. This SurfaceDescriptor can be used on the Layers IPDL protocol, but + // must be released explicitly using DeallocateSurfaceDescriptorGPUVideo + // on the manager protocol. + async Output(VideoDataIPDL data); + async InputExhausted(); + async DrainComplete(); + async Error(nsresult error); +}; + +} // namespace dom +} // namespace mozilla diff --git a/dom/media/ipc/PVideoDecoderManager.ipdl b/dom/media/ipc/PVideoDecoderManager.ipdl index 1f95771c3ac5..143ce026251b 100644 --- a/dom/media/ipc/PVideoDecoderManager.ipdl +++ b/dom/media/ipc/PVideoDecoderManager.ipdl @@ -3,6 +3,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +include protocol PVideoDecoder; include LayersSurfaces; include "mozilla/dom/MediaIPCUtils.h"; @@ -11,7 +12,9 @@ namespace dom { async protocol PVideoDecoderManager { + manages PVideoDecoder; parent: + async PVideoDecoder(); async DeallocateSurfaceDescriptorGPUVideo(SurfaceDescriptorGPUVideo sd); }; diff --git a/dom/media/ipc/VideoDecoderChild.cpp b/dom/media/ipc/VideoDecoderChild.cpp new file mode 100644 index 000000000000..a233d2091844 --- /dev/null +++ b/dom/media/ipc/VideoDecoderChild.cpp @@ -0,0 +1,208 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "VideoDecoderChild.h" +#include "VideoDecoderManagerChild.h" +#include "mozilla/layers/TextureClient.h" +#include "base/thread.h" +#include "MediaInfo.h" +#include "ImageContainer.h" +#include "GPUVideoImage.h" + +namespace mozilla { +namespace dom { + +using base::Thread; +using namespace ipc; +using namespace layers; +using namespace gfx; + +VideoDecoderChild::VideoDecoderChild() + : mThread(VideoDecoderManagerChild::GetManagerThread()) + , mCanSend(true) +{ +} + +VideoDecoderChild::~VideoDecoderChild() +{ + AssertOnManagerThread(); + mInitPromise.RejectIfExists(NS_ERROR_DOM_MEDIA_CANCELED, __func__); +} + +bool +VideoDecoderChild::RecvOutput(const VideoDataIPDL& aData) +{ + AssertOnManagerThread(); + VideoInfo info(aData.display().width, aData.display().height); + + // The Image here creates a TextureData object that takes ownership + // of the SurfaceDescriptor, and is responsible for making sure that + // it gets deallocated. + RefPtr image = new GPUVideoImage(aData.sd(), aData.display()); + + RefPtr video = VideoData::CreateFromImage(info, + aData.base().offset(), + aData.base().time(), + aData.base().duration(), + image, + aData.base().keyframe(), + aData.base().timecode(), + IntRect()); + mCallback->Output(video); + return true; +} + +bool +VideoDecoderChild::RecvInputExhausted() +{ + AssertOnManagerThread(); + mCallback->InputExhausted(); + return true; +} + +bool +VideoDecoderChild::RecvDrainComplete() +{ + AssertOnManagerThread(); + mCallback->DrainComplete(); + return true; +} + +bool +VideoDecoderChild::RecvError(const nsresult& aError) +{ + AssertOnManagerThread(); + mCallback->Error(aError); + return true; +} + +bool +VideoDecoderChild::RecvInitComplete() +{ + AssertOnManagerThread(); + mInitPromise.Resolve(TrackInfo::kVideoTrack, __func__); + return true; +} + +bool +VideoDecoderChild::RecvInitFailed(const nsresult& aReason) +{ + AssertOnManagerThread(); + mInitPromise.Reject(aReason, __func__); + return true; +} + +void +VideoDecoderChild::ActorDestroy(ActorDestroyReason aWhy) +{ + mCanSend = false; +} + +void +VideoDecoderChild::InitIPDL(MediaDataDecoderCallback* aCallback, + const VideoInfo& aVideoInfo, + layers::LayersBackend aLayersBackend) +{ + VideoDecoderManagerChild::GetSingleton()->SendPVideoDecoderConstructor(this); + mIPDLSelfRef = this; + mCallback = aCallback; + mVideoInfo = aVideoInfo; + mLayersBackend = aLayersBackend; +} + +void +VideoDecoderChild::DestroyIPDL() +{ + if (mCanSend) { + PVideoDecoderChild::Send__delete__(this); + } +} + +void +VideoDecoderChild::IPDLActorDestroyed() +{ + mIPDLSelfRef = nullptr; +} + +// MediaDataDecoder methods + +RefPtr +VideoDecoderChild::Init() +{ + AssertOnManagerThread(); + if (!mCanSend || !SendInit(mVideoInfo, mLayersBackend)) { + return MediaDataDecoder::InitPromise::CreateAndReject( + NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__); + } + return mInitPromise.Ensure(__func__); +} + +void +VideoDecoderChild::Input(MediaRawData* aSample) +{ + AssertOnManagerThread(); + if (!mCanSend) { + mCallback->Error(NS_ERROR_DOM_MEDIA_FATAL_ERR); + return; + } + + // TODO: It would be nice to add an allocator method to + // MediaDataDecoder so that the demuxer could write directly + // into shmem rather than requiring a copy here. + Shmem buffer; + if (!AllocShmem(aSample->Size(), Shmem::SharedMemory::TYPE_BASIC, &buffer)) { + mCallback->Error(NS_ERROR_DOM_MEDIA_FATAL_ERR); + return; + } + + memcpy(buffer.get(), aSample->Data(), aSample->Size()); + + MediaRawDataIPDL sample(MediaDataIPDL(aSample->mOffset, + aSample->mTime, + aSample->mTimecode, + aSample->mDuration, + aSample->mFrames, + aSample->mKeyframe), + buffer); + if (!SendInput(sample)) { + mCallback->Error(NS_ERROR_DOM_MEDIA_FATAL_ERR); + } +} + +void +VideoDecoderChild::Flush() +{ + AssertOnManagerThread(); + if (!mCanSend || !SendFlush()) { + mCallback->Error(NS_ERROR_DOM_MEDIA_FATAL_ERR); + } +} + +void +VideoDecoderChild::Drain() +{ + AssertOnManagerThread(); + if (!mCanSend || !SendDrain()) { + mCallback->Error(NS_ERROR_DOM_MEDIA_FATAL_ERR); + } +} + +void +VideoDecoderChild::Shutdown() +{ + AssertOnManagerThread(); + if (!mCanSend || !SendShutdown()) { + mCallback->Error(NS_ERROR_DOM_MEDIA_FATAL_ERR); + } +} + +void +VideoDecoderChild::AssertOnManagerThread() +{ + MOZ_ASSERT(NS_GetCurrentThread() == mThread); +} + +} // namespace dom +} // namespace mozilla diff --git a/dom/media/ipc/VideoDecoderChild.h b/dom/media/ipc/VideoDecoderChild.h new file mode 100644 index 000000000000..ce68c2f692da --- /dev/null +++ b/dom/media/ipc/VideoDecoderChild.h @@ -0,0 +1,71 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef include_dom_ipc_VideoDecoderChild_h +#define include_dom_ipc_VideoDecoderChild_h + +#include "mozilla/RefPtr.h" +#include "mozilla/dom/PVideoDecoderChild.h" +#include "MediaData.h" +#include "PlatformDecoderModule.h" + +namespace mozilla { +namespace dom { + +class RemoteVideoDecoder; +class RemoteDecoderModule; + +class VideoDecoderChild final : public PVideoDecoderChild +{ +public: + explicit VideoDecoderChild(); + + NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoDecoderChild) + + // PVideoDecoderChild + bool RecvOutput(const VideoDataIPDL& aData) override; + bool RecvInputExhausted() override; + bool RecvDrainComplete() override; + bool RecvError(const nsresult& aError) override; + bool RecvInitComplete() override; + bool RecvInitFailed(const nsresult& aReason) override; + + void ActorDestroy(ActorDestroyReason aWhy) override; + + RefPtr Init(); + void Input(MediaRawData* aSample); + void Flush(); + void Drain(); + void Shutdown(); + + void InitIPDL(MediaDataDecoderCallback* aCallback, + const VideoInfo& aVideoInfo, + layers::LayersBackend aLayersBackend); + void DestroyIPDL(); + + // Called from IPDL when our actor has been destroyed + void IPDLActorDestroyed(); + +private: + ~VideoDecoderChild(); + + void AssertOnManagerThread(); + + RefPtr mIPDLSelfRef; + RefPtr mThread; + + MediaDataDecoderCallback* mCallback; + + MozPromiseHolder mInitPromise; + + VideoInfo mVideoInfo; + layers::LayersBackend mLayersBackend; + bool mCanSend; +}; + +} // namespace dom +} // namespace mozilla + +#endif // include_dom_ipc_VideoDecoderChild_h diff --git a/dom/media/ipc/VideoDecoderManagerChild.cpp b/dom/media/ipc/VideoDecoderManagerChild.cpp index d6260bda0448..01cff6b88513 100644 --- a/dom/media/ipc/VideoDecoderManagerChild.cpp +++ b/dom/media/ipc/VideoDecoderManagerChild.cpp @@ -4,6 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "VideoDecoderManagerChild.h" +#include "VideoDecoderChild.h" #include "mozilla/dom/ContentChild.h" #include "MediaPrefs.h" #include "nsThreadUtils.h" @@ -87,6 +88,26 @@ VideoDecoderManagerChild::GetSingleton() return sDecoderManager; } +/* static */ nsIThread* +VideoDecoderManagerChild::GetManagerThread() +{ + return sVideoDecoderChildThread; +} + +PVideoDecoderChild* +VideoDecoderManagerChild::AllocPVideoDecoderChild() +{ + return new VideoDecoderChild(); +} + +bool +VideoDecoderManagerChild::DeallocPVideoDecoderChild(PVideoDecoderChild* actor) +{ + VideoDecoderChild* child = static_cast(actor); + child->IPDLActorDestroyed(); + return true; +} + void VideoDecoderManagerChild::Open(Endpoint&& aEndpoint) { diff --git a/dom/media/ipc/VideoDecoderManagerChild.h b/dom/media/ipc/VideoDecoderManagerChild.h index 0310e2e46f1d..40daa514eee0 100644 --- a/dom/media/ipc/VideoDecoderManagerChild.h +++ b/dom/media/ipc/VideoDecoderManagerChild.h @@ -18,6 +18,7 @@ public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoDecoderManagerChild) static VideoDecoderManagerChild* GetSingleton(); + static nsIThread* GetManagerThread(); // Can be called from any thread, dispatches the request to the IPDL thread internally. void DeallocateSurfaceDescriptorGPUVideo(const SurfaceDescriptorGPUVideo& aSD); @@ -28,6 +29,10 @@ public: static void Initialize(); static void Shutdown(); +protected: + PVideoDecoderChild* AllocPVideoDecoderChild() override; + bool DeallocPVideoDecoderChild(PVideoDecoderChild* actor) override; + private: VideoDecoderManagerChild() {} diff --git a/dom/media/ipc/VideoDecoderManagerParent.cpp b/dom/media/ipc/VideoDecoderManagerParent.cpp index 0eb786ff7e26..045893c277ae 100644 --- a/dom/media/ipc/VideoDecoderManagerParent.cpp +++ b/dom/media/ipc/VideoDecoderManagerParent.cpp @@ -4,6 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "VideoDecoderManagerParent.h" +#include "VideoDecoderParent.h" #include "base/thread.h" #include "mozilla/StaticMutex.h" #include "mozilla/UniquePtr.h" @@ -159,6 +160,12 @@ VideoDecoderManagerParent::ShutdownThreads() sVideoDecoderManagerThread = nullptr; } +bool +VideoDecoderManagerParent::OnManagerThread() +{ + return NS_GetCurrentThread() == sVideoDecoderManagerThread; +} + bool VideoDecoderManagerParent::CreateForContent(Endpoint&& aEndpoint) { @@ -190,6 +197,21 @@ VideoDecoderManagerParent::~VideoDecoderManagerParent() ClearAllOwnedImages(); } +PVideoDecoderParent* +VideoDecoderManagerParent::AllocPVideoDecoderParent() +{ + RefPtr target = sVideoDecoderTaskThread;; + return new VideoDecoderParent(this, sManagerTaskQueue, new TaskQueue(target.forget())); +} + +bool +VideoDecoderManagerParent::DeallocPVideoDecoderParent(PVideoDecoderParent* actor) +{ + VideoDecoderParent* parent = static_cast(actor); + parent->Destroy(); + return true; +} + void VideoDecoderManagerParent::Open(Endpoint&& aEndpoint) { diff --git a/dom/media/ipc/VideoDecoderManagerParent.h b/dom/media/ipc/VideoDecoderManagerParent.h index 71a7c789e162..3e2289cab4b5 100644 --- a/dom/media/ipc/VideoDecoderManagerParent.h +++ b/dom/media/ipc/VideoDecoderManagerParent.h @@ -25,7 +25,12 @@ public: static void StartupThreads(); static void ShutdownThreads(); + bool OnManagerThread(); + protected: + PVideoDecoderParent* AllocPVideoDecoderParent() override; + bool DeallocPVideoDecoderParent(PVideoDecoderParent* actor) override; + bool RecvDeallocateSurfaceDescriptorGPUVideo(const SurfaceDescriptorGPUVideo& aSD) override; void ActorDestroy(mozilla::ipc::IProtocolManager::ActorDestroyReason) override {} diff --git a/dom/media/ipc/VideoDecoderParent.cpp b/dom/media/ipc/VideoDecoderParent.cpp new file mode 100644 index 000000000000..2b9509e675f1 --- /dev/null +++ b/dom/media/ipc/VideoDecoderParent.cpp @@ -0,0 +1,227 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "VideoDecoderParent.h" +#include "mozilla/Unused.h" +#include "mozilla/layers/CompositorThread.h" +#include "base/thread.h" +#include "mozilla/layers/TextureHost.h" +#include "mozilla/layers/PTextureParent.h" +#include "MediaInfo.h" +#include "VideoDecoderManagerParent.h" +#ifdef XP_WIN +#include "WMFDecoderModule.h" +#endif + +namespace mozilla { +namespace dom { + +using base::Thread; +using namespace ipc; +using namespace layers; +using namespace gfx; + +VideoDecoderParent::VideoDecoderParent(VideoDecoderManagerParent* aParent, + TaskQueue* aManagerTaskQueue, + TaskQueue* aDecodeTaskQueue) + : mParent(aParent) + , mManagerTaskQueue(aManagerTaskQueue) + , mDecodeTaskQueue(aDecodeTaskQueue) + , mDestroyed(false) +{ + MOZ_COUNT_CTOR(VideoDecoderParent); + // We hold a reference to ourselves to keep us alive until IPDL + // explictly destroys us. There may still be refs held by + // tasks, but no new ones should be added after we're + // destroyed. + mIPDLSelfRef = this; +} + +VideoDecoderParent::~VideoDecoderParent() +{ + MOZ_COUNT_DTOR(VideoDecoderParent); +} + +void +VideoDecoderParent::Destroy() +{ + mDecodeTaskQueue->AwaitShutdownAndIdle(); + mDestroyed = true; + mIPDLSelfRef = nullptr; +} + +bool +VideoDecoderParent::RecvInit(const VideoInfo& aInfo, const layers::LayersBackend& aBackend) +{ + CreateDecoderParams params(aInfo); + params.mTaskQueue = mDecodeTaskQueue; + params.mCallback = this; + params.mLayersBackend = aBackend; + params.mImageContainer = new layers::ImageContainer(); + +#ifdef XP_WIN + // TODO: Ideally we wouldn't hardcode the WMF PDM, and we'd use the normal PDM + // factory logic for picking a decoder. + WMFDecoderModule::Init(); + RefPtr pdm(new WMFDecoderModule()); + pdm->Startup(); + + mDecoder = pdm->CreateVideoDecoder(params); + if (!mDecoder) { + Unused << SendInitFailed(NS_ERROR_DOM_MEDIA_FATAL_ERR); + return true; + } +#else + MOZ_ASSERT(false, "Can't use RemoteVideoDecoder on non-Windows platforms yet"); +#endif + + RefPtr self = this; + mDecoder->Init()->Then(mManagerTaskQueue, __func__, + [self] (TrackInfo::TrackType aTrack) { + if (!self->mDestroyed) { + Unused << self->SendInitComplete(); + } + }, + [self] (MediaResult aReason) { + if (!self->mDestroyed) { + Unused << self->SendInitFailed(aReason); + } + }); + return true; +} + +bool +VideoDecoderParent::RecvInput(const MediaRawDataIPDL& aData) +{ + // XXX: This copies the data into a buffer owned by the MediaRawData. Ideally we'd just take ownership + // of the shmem. + RefPtr data = new MediaRawData(aData.buffer().get(), aData.buffer().Size()); + data->mOffset = aData.base().offset(); + data->mTime = aData.base().time(); + data->mTimecode = aData.base().timecode(); + data->mDuration = aData.base().duration(); + data->mKeyframe = aData.base().keyframe(); + + DeallocShmem(aData.buffer()); + + mDecoder->Input(data); + return true; +} + +bool +VideoDecoderParent::RecvFlush() +{ + MOZ_ASSERT(!mDestroyed); + mDecoder->Flush(); + return true; +} + +bool +VideoDecoderParent::RecvDrain() +{ + MOZ_ASSERT(!mDestroyed); + mDecoder->Drain(); + return true; +} + +bool +VideoDecoderParent::RecvShutdown() +{ + MOZ_ASSERT(!mDestroyed); + mDecoder->Shutdown(); + mDecoder = nullptr; + return true; +} + +void +VideoDecoderParent::ActorDestroy(ActorDestroyReason aWhy) +{ + MOZ_ASSERT(!mDestroyed); + if (mDecoder) { + mDecoder->Shutdown(); + mDecoder = nullptr; + } + if (mDecodeTaskQueue) { + mDecodeTaskQueue->BeginShutdown(); + } +} + +void +VideoDecoderParent::Output(MediaData* aData) +{ + MOZ_ASSERT(mDecodeTaskQueue->IsCurrentThreadIn()); + RefPtr self = this; + RefPtr data = aData; + mManagerTaskQueue->Dispatch(NS_NewRunnableFunction([self, data]() { + if (self->mDestroyed) { + return; + } + + MOZ_ASSERT(data->mType == MediaData::VIDEO_DATA, "Can only decode videos using VideoDecoderParent!"); + VideoData* video = static_cast(data.get()); + + MOZ_ASSERT(video->mImage, "Decoded video must output a layer::Image to be used with VideoDecoderParent"); + + VideoDataIPDL output(MediaDataIPDL(data->mOffset, + data->mTime, + data->mTimecode, + data->mDuration, + data->mFrames, + data->mKeyframe), + video->mDisplay, + self->GetManager()->StoreImage(video->mImage), + video->mFrameID); + Unused << self->SendOutput(output); + })); +} + +void +VideoDecoderParent::Error(const MediaResult& aError) +{ + MOZ_ASSERT(mDecodeTaskQueue->IsCurrentThreadIn()); + RefPtr self = this; + MediaResult error = aError; + mManagerTaskQueue->Dispatch(NS_NewRunnableFunction([self, error]() { + if (!self->mDestroyed) { + Unused << self->SendError(error); + } + })); +} + +void +VideoDecoderParent::InputExhausted() +{ + MOZ_ASSERT(mDecodeTaskQueue->IsCurrentThreadIn()); + RefPtr self = this; + mManagerTaskQueue->Dispatch(NS_NewRunnableFunction([self]() { + if (!self->mDestroyed) { + Unused << self->SendInputExhausted(); + } + })); +} + +void +VideoDecoderParent::DrainComplete() +{ + MOZ_ASSERT(mDecodeTaskQueue->IsCurrentThreadIn()); + RefPtr self = this; + mManagerTaskQueue->Dispatch(NS_NewRunnableFunction([self]() { + if (!self->mDestroyed) { + Unused << self->SendDrainComplete(); + } + })); +} + +bool +VideoDecoderParent::OnReaderTaskQueue() +{ + // Most of our calls into mDecoder come directly from IPDL so are on + // the right thread, but not actually on the task queue. We only ever + // run a single thread, not a pool, so this should work fine. + return mParent->OnManagerThread(); +} + +} // namespace dom +} // namespace mozilla diff --git a/dom/media/ipc/VideoDecoderParent.h b/dom/media/ipc/VideoDecoderParent.h new file mode 100644 index 000000000000..3ef21e75f70a --- /dev/null +++ b/dom/media/ipc/VideoDecoderParent.h @@ -0,0 +1,66 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef include_dom_ipc_VideoDecoderParent_h +#define include_dom_ipc_VideoDecoderParent_h + +#include "mozilla/RefPtr.h" +#include "mozilla/dom/PVideoDecoderParent.h" +#include "VideoDecoderManagerParent.h" +#include "MediaData.h" +#include "ImageContainer.h" + +namespace mozilla { +namespace dom { + +class VideoDecoderParent final : public PVideoDecoderParent, + public MediaDataDecoderCallback +{ +public: + // We refcount this class since the task queue can have runnables + // that reference us. + NS_INLINE_DECL_THREADSAFE_REFCOUNTING(VideoDecoderParent) + + VideoDecoderParent(VideoDecoderManagerParent* aParent, + TaskQueue* aManagerTaskQueue, + TaskQueue* aDecodeTaskQueue); + + void Destroy(); + + // PVideoDecoderParent + bool RecvInit(const VideoInfo& aVideoInfo, const layers::LayersBackend& aBackend) override; + bool RecvInput(const MediaRawDataIPDL& aData) override; + bool RecvFlush() override; + bool RecvDrain() override; + bool RecvShutdown() override; + + void ActorDestroy(ActorDestroyReason aWhy) override; + + // MediaDataDecoderCallback + void Output(MediaData* aData) override; + void Error(const MediaResult& aError) override; + void InputExhausted() override; + void DrainComplete() override; + bool OnReaderTaskQueue() override; + +private: + ~VideoDecoderParent(); + + VideoDecoderManagerParent* GetManager() { return static_cast(Manager()); } + + RefPtr mParent; + RefPtr mIPDLSelfRef; + RefPtr mManagerTaskQueue; + RefPtr mDecodeTaskQueue; + RefPtr mDecoder; + + // Can only be accessed from the manager thread + bool mDestroyed; +}; + +} // namespace dom +} // namespace mozilla + +#endif // include_dom_ipc_VideoDecoderParent_h diff --git a/dom/media/ipc/moz.build b/dom/media/ipc/moz.build index b3ce8e7b517d..8ce841ca8c17 100644 --- a/dom/media/ipc/moz.build +++ b/dom/media/ipc/moz.build @@ -6,6 +6,7 @@ IPDL_SOURCES += [ + 'PVideoDecoder.ipdl', 'PVideoDecoderManager.ipdl', ] @@ -16,8 +17,10 @@ EXPORTS.mozilla.dom += [ ] SOURCES += [ + 'VideoDecoderChild.cpp', 'VideoDecoderManagerChild.cpp', 'VideoDecoderManagerParent.cpp', + 'VideoDecoderParent.cpp', ] include('/ipc/chromium/chromium-config.mozbuild') From d57dae2c04d0a5af1668a2f90be34356612305cc Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:25:41 +1200 Subject: [PATCH 018/117] Bug 1288618 - Part 15: Add media code interface RemoteVideoDecoder. r=cpearce,dvander --- dom/media/ipc/RemoteVideoDecoder.cpp | 145 +++++++++++++++++++++ dom/media/ipc/RemoteVideoDecoder.h | 85 ++++++++++++ dom/media/ipc/VideoDecoderManagerChild.cpp | 11 ++ dom/media/ipc/VideoDecoderManagerChild.h | 1 + dom/media/ipc/moz.build | 2 + dom/media/platforms/PDMFactory.cpp | 7 +- 6 files changed, 250 insertions(+), 1 deletion(-) create mode 100644 dom/media/ipc/RemoteVideoDecoder.cpp create mode 100644 dom/media/ipc/RemoteVideoDecoder.h diff --git a/dom/media/ipc/RemoteVideoDecoder.cpp b/dom/media/ipc/RemoteVideoDecoder.cpp new file mode 100644 index 000000000000..3f30d90a10fe --- /dev/null +++ b/dom/media/ipc/RemoteVideoDecoder.cpp @@ -0,0 +1,145 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "RemoteVideoDecoder.h" +#include "VideoDecoderChild.h" +#include "VideoDecoderManagerChild.h" +#include "mozilla/layers/TextureClient.h" +#include "base/thread.h" +#include "MediaInfo.h" +#include "ImageContainer.h" + +namespace mozilla { +namespace dom { + +using base::Thread; +using namespace ipc; +using namespace layers; +using namespace gfx; + +RemoteVideoDecoder::RemoteVideoDecoder(MediaDataDecoderCallback* aCallback) + : mActor(new VideoDecoderChild()) +{ +#ifdef DEBUG + mCallback = aCallback; +#endif + MOZ_ASSERT(mCallback->OnReaderTaskQueue()); +} + +RemoteVideoDecoder::~RemoteVideoDecoder() +{ + // We're about to be destroyed and drop our ref to + // VideoDecoderChild. Make sure we put a ref into the + // task queue for the VideoDecoderChild thread to keep + // it alive until we send the delete message. + RefPtr actor = mActor; + VideoDecoderManagerChild::GetManagerThread()->Dispatch(NS_NewRunnableFunction([actor]() { + MOZ_ASSERT(actor); + actor->DestroyIPDL(); + }), NS_DISPATCH_NORMAL); +} + +RefPtr +RemoteVideoDecoder::Init() +{ + MOZ_ASSERT(mCallback->OnReaderTaskQueue()); + return InvokeAsync(VideoDecoderManagerChild::GetManagerAbstractThread(), + this, __func__, &RemoteVideoDecoder::InitInternal); +} + +RefPtr +RemoteVideoDecoder::InitInternal() +{ + MOZ_ASSERT(mActor); + MOZ_ASSERT(NS_GetCurrentThread() == VideoDecoderManagerChild::GetManagerThread()); + return mActor->Init(); +} + +void +RemoteVideoDecoder::Input(MediaRawData* aSample) +{ + MOZ_ASSERT(mCallback->OnReaderTaskQueue()); + RefPtr self = this; + RefPtr sample = aSample; + VideoDecoderManagerChild::GetManagerThread()->Dispatch(NS_NewRunnableFunction([self, sample]() { + MOZ_ASSERT(self->mActor); + self->mActor->Input(sample); + }), NS_DISPATCH_NORMAL); +} + +void +RemoteVideoDecoder::Flush() +{ + MOZ_ASSERT(mCallback->OnReaderTaskQueue()); + RefPtr self = this; + VideoDecoderManagerChild::GetManagerThread()->Dispatch(NS_NewRunnableFunction([self]() { + MOZ_ASSERT(self->mActor); + self->mActor->Flush(); + }), NS_DISPATCH_NORMAL); +} + +void +RemoteVideoDecoder::Drain() +{ + MOZ_ASSERT(mCallback->OnReaderTaskQueue()); + RefPtr self = this; + VideoDecoderManagerChild::GetManagerThread()->Dispatch(NS_NewRunnableFunction([self]() { + MOZ_ASSERT(self->mActor); + self->mActor->Drain(); + }), NS_DISPATCH_NORMAL); +} + +void +RemoteVideoDecoder::Shutdown() +{ + MOZ_ASSERT(mCallback->OnReaderTaskQueue()); + RefPtr self = this; + VideoDecoderManagerChild::GetManagerThread()->Dispatch(NS_NewRunnableFunction([self]() { + MOZ_ASSERT(self->mActor); + self->mActor->Shutdown(); + }), NS_DISPATCH_NORMAL); +} + +nsresult +RemoteDecoderModule::Startup() +{ + if (!VideoDecoderManagerChild::GetSingleton()) { + return NS_ERROR_FAILURE; + } + return mWrapped->Startup(); +} + +bool +RemoteDecoderModule::SupportsMimeType(const nsACString& aMimeType, + DecoderDoctorDiagnostics* aDiagnostics) const +{ + return mWrapped->SupportsMimeType(aMimeType, aDiagnostics); +} + +PlatformDecoderModule::ConversionRequired +RemoteDecoderModule::DecoderNeedsConversion(const TrackInfo& aConfig) const +{ + return mWrapped->DecoderNeedsConversion(aConfig); +} + +already_AddRefed +RemoteDecoderModule::CreateVideoDecoder(const CreateDecoderParams& aParams) +{ + MediaDataDecoderCallback* callback = aParams.mCallback; + MOZ_ASSERT(callback->OnReaderTaskQueue()); + RefPtr object = new RemoteVideoDecoder(callback); + + VideoInfo info = aParams.VideoConfig(); + + layers::LayersBackend backend = aParams.mLayersBackend; + VideoDecoderManagerChild::GetManagerThread()->Dispatch(NS_NewRunnableFunction([object, callback, info, backend]() { + object->mActor->InitIPDL(callback, info, backend); + }), NS_DISPATCH_NORMAL); + + return object.forget(); +} + +} // namespace dom +} // namespace mozilla diff --git a/dom/media/ipc/RemoteVideoDecoder.h b/dom/media/ipc/RemoteVideoDecoder.h new file mode 100644 index 000000000000..29d508b2d012 --- /dev/null +++ b/dom/media/ipc/RemoteVideoDecoder.h @@ -0,0 +1,85 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=99: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef include_dom_ipc_RemoteVideoDecoder_h +#define include_dom_ipc_RemoteVideoDecoder_h + +#include "mozilla/RefPtr.h" +#include "mozilla/DebugOnly.h" +#include "MediaData.h" +#include "PlatformDecoderModule.h" + +namespace mozilla { +namespace dom { + +class VideoDecoderChild; +class RemoteDecoderModule; + +// A MediaDataDecoder implementation that proxies through IPDL +// to a 'real' decoder in the GPU process. +// All requests get forwarded to a VideoDecoderChild instance that +// operates solely on the VideoDecoderManagerChild thread. +class RemoteVideoDecoder : public MediaDataDecoder +{ +public: + friend class RemoteDecoderModule; + + // MediaDataDecoder + RefPtr Init() override; + void Input(MediaRawData* aSample) override; + void Flush() override; + void Drain() override; + void Shutdown() override; + void ConfigurationChanged(const TrackInfo& aConfig) override { MOZ_ASSERT(false); } + + const char* GetDescriptionName() const override { return "RemoteVideoDecoder"; } + +private: + explicit RemoteVideoDecoder(MediaDataDecoderCallback* aCallback); + ~RemoteVideoDecoder(); + + RefPtr InitInternal(); + + // Only ever written to from the reader task queue (during the constructor and destructor + // when we can guarantee no other threads are accessing it). Only read from the manager + // thread. + RefPtr mActor; +#ifdef DEBUG + MediaDataDecoderCallback* mCallback; +#endif +}; + +// A PDM implementation that creates RemoteVideoDecoders. +// We currently require a 'wrapped' PDM in order to be able to answer SupportsMimeType +// and DecoderNeedsConversion. Ideally we'd check these over IPDL using the manager +// protocol +class RemoteDecoderModule : public PlatformDecoderModule +{ +public: + explicit RemoteDecoderModule(PlatformDecoderModule* aWrapped) + : mWrapped(aWrapped) + {} + + virtual nsresult Startup() override; + + virtual bool SupportsMimeType(const nsACString& aMimeType, + DecoderDoctorDiagnostics* aDiagnostics) const override; + + virtual ConversionRequired DecoderNeedsConversion(const TrackInfo& aConfig) const override; + + virtual already_AddRefed + CreateVideoDecoder(const CreateDecoderParams& aParams) override; + + virtual already_AddRefed + CreateAudioDecoder(const CreateDecoderParams& aParams) override { return nullptr; } + +private: + RefPtr mWrapped; +}; + +} // namespace dom +} // namespace mozilla + +#endif // include_dom_ipc_RemoteVideoDecoder_h diff --git a/dom/media/ipc/VideoDecoderManagerChild.cpp b/dom/media/ipc/VideoDecoderManagerChild.cpp index 01cff6b88513..9934e39cc217 100644 --- a/dom/media/ipc/VideoDecoderManagerChild.cpp +++ b/dom/media/ipc/VideoDecoderManagerChild.cpp @@ -17,6 +17,7 @@ using namespace layers; using namespace gfx; StaticRefPtr sVideoDecoderChildThread; +StaticRefPtr sVideoDecoderChildAbstractThread; static StaticRefPtr sDecoderManager; /* static */ void @@ -41,6 +42,9 @@ VideoDecoderManagerChild::Initialize() nsresult rv = NS_NewNamedThread("VideoChild", getter_AddRefs(childThread)); NS_ENSURE_SUCCESS_VOID(rv); sVideoDecoderChildThread = childThread; + + sVideoDecoderChildAbstractThread = + AbstractThread::CreateXPCOMThreadWrapper(childThread, false); } Endpoint endpoint; @@ -77,6 +81,7 @@ VideoDecoderManagerChild::Shutdown() sDecoderManager = nullptr; + sVideoDecoderChildAbstractThread = nullptr; sVideoDecoderChildThread->Shutdown(); sVideoDecoderChildThread = nullptr; } @@ -94,6 +99,12 @@ VideoDecoderManagerChild::GetManagerThread() return sVideoDecoderChildThread; } +/* static */ AbstractThread* +VideoDecoderManagerChild::GetManagerAbstractThread() +{ + return sVideoDecoderChildAbstractThread; +} + PVideoDecoderChild* VideoDecoderManagerChild::AllocPVideoDecoderChild() { diff --git a/dom/media/ipc/VideoDecoderManagerChild.h b/dom/media/ipc/VideoDecoderManagerChild.h index 40daa514eee0..dc594ce7f5a4 100644 --- a/dom/media/ipc/VideoDecoderManagerChild.h +++ b/dom/media/ipc/VideoDecoderManagerChild.h @@ -19,6 +19,7 @@ public: static VideoDecoderManagerChild* GetSingleton(); static nsIThread* GetManagerThread(); + static AbstractThread* GetManagerAbstractThread(); // Can be called from any thread, dispatches the request to the IPDL thread internally. void DeallocateSurfaceDescriptorGPUVideo(const SurfaceDescriptorGPUVideo& aSD); diff --git a/dom/media/ipc/moz.build b/dom/media/ipc/moz.build index 8ce841ca8c17..2e78460b581c 100644 --- a/dom/media/ipc/moz.build +++ b/dom/media/ipc/moz.build @@ -12,11 +12,13 @@ IPDL_SOURCES += [ EXPORTS.mozilla.dom += [ 'MediaIPCUtils.h', + 'RemoteVideoDecoder.h', 'VideoDecoderManagerChild.h', 'VideoDecoderManagerParent.h', ] SOURCES += [ + 'RemoteVideoDecoder.cpp', 'VideoDecoderChild.cpp', 'VideoDecoderManagerChild.cpp', 'VideoDecoderManagerParent.cpp', diff --git a/dom/media/platforms/PDMFactory.cpp b/dom/media/platforms/PDMFactory.cpp index 5bd783cb74af..375c78e0e15a 100644 --- a/dom/media/platforms/PDMFactory.cpp +++ b/dom/media/platforms/PDMFactory.cpp @@ -47,6 +47,7 @@ #include "DecoderDoctorDiagnostics.h" #include "MP4Decoder.h" +#include "mozilla/dom/RemoteVideoDecoder.h" #include "mp4_demuxer/H264.h" @@ -322,7 +323,11 @@ PDMFactory::CreatePDMs() #ifdef XP_WIN if (MediaPrefs::PDMWMFEnabled()) { m = new WMFDecoderModule(); - mWMFFailedToLoad = !StartupPDM(m); + RefPtr remote = new dom::RemoteDecoderModule(m); + mWMFFailedToLoad = !StartupPDM(remote); + if (mWMFFailedToLoad) { + mWMFFailedToLoad = !StartupPDM(m); + } } else { mWMFFailedToLoad = MediaPrefs::DecoderDoctorWMFDisabledIsFailure(); } From a2fe4a08d4c78388c09d8ffbe1e901573e45e1f6 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Wed, 21 Sep 2016 21:26:31 +1200 Subject: [PATCH 019/117] Bug 1288618 - Add a new valgrind suppression entry to fix a false positive with CPUID. r=njn --- build/valgrind/x86_64-redhat-linux-gnu.sup | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/build/valgrind/x86_64-redhat-linux-gnu.sup b/build/valgrind/x86_64-redhat-linux-gnu.sup index 6796f345322c..d253a3a4e69b 100644 --- a/build/valgrind/x86_64-redhat-linux-gnu.sup +++ b/build/valgrind/x86_64-redhat-linux-gnu.sup @@ -185,3 +185,26 @@ fun:glxtest ... } + +######################################### +# Uninitialised value false positives # +######################################### + +# This concerns a false positive pertaining to Memcheck's overly- +# conservative instrumentation of CPUID. See bug 1288618 comments +# 119 through 127. +{ + Bug 1288618 comments 119 through 127 + Memcheck:Cond + fun:_ZN6SkOptsL4initEv + fun:sk_once_no_arg_adaptor +} + +{ + Bug 1288618 comments 119 through 127 part 2 + Memcheck:Cond + fun:__get_cpuid + fun:cpuid + fun:_ZN6SkOptsL4initEv + fun:sk_once_no_arg_adaptor +} From db15f776a7592d248b2de453a7b72ca282a0360d Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Wed, 21 Sep 2016 12:27:26 +0200 Subject: [PATCH 020/117] Bug 1288997 - memory blob should not be shared across processes - part 1 -PSendStream should use nsIContentChild, r=jld, f=bkelly --- dom/fetch/InternalResponse.cpp | 4 ++-- dom/flyweb/FlyWebPublishedServer.cpp | 6 +++-- dom/ipc/ContentBridgeChild.cpp | 36 ++++++++++++++++++++++++++++ dom/ipc/ContentBridgeChild.h | 17 +++++++++++++ dom/ipc/ContentBridgeParent.cpp | 24 +++++++++++++++++++ dom/ipc/ContentBridgeParent.h | 10 ++++++++ dom/ipc/ContentChild.cpp | 22 ++++++++++++----- dom/ipc/ContentChild.h | 8 ++++++- dom/ipc/ContentParent.cpp | 13 ++++------ dom/ipc/PContentBridge.ipdl | 9 +++++++ dom/ipc/nsIContentChild.cpp | 28 ++++++++++++++++++++++ dom/ipc/nsIContentChild.h | 19 +++++++++++++++ dom/ipc/nsIContentParent.cpp | 29 ++++++++++++++++++++++ dom/ipc/nsIContentParent.h | 15 ++++++++++++ ipc/glue/FileDescriptorSetChild.h | 4 ++-- ipc/glue/FileDescriptorSetParent.h | 4 ++-- ipc/glue/IPCStreamUtils.cpp | 4 ++-- ipc/glue/IPCStreamUtils.h | 4 ++-- ipc/glue/PFileDescriptorSet.ipdl | 3 ++- ipc/glue/PSendStream.ipdl | 3 ++- ipc/glue/SendStream.h | 4 ++-- ipc/glue/SendStreamChild.cpp | 6 ++--- 22 files changed, 237 insertions(+), 35 deletions(-) diff --git a/dom/fetch/InternalResponse.cpp b/dom/fetch/InternalResponse.cpp index 26c002bb75ea..cb7d74597234 100644 --- a/dom/fetch/InternalResponse.cpp +++ b/dom/fetch/InternalResponse.cpp @@ -85,9 +85,9 @@ InternalResponse::ToIPC PContentParent* aManager, UniquePtr& aAutoStream); template void -InternalResponse::ToIPC +InternalResponse::ToIPC (IPCInternalResponse* aIPCResponse, - PContentChild* aManager, + nsIContentChild* aManager, UniquePtr& aAutoStream); template void InternalResponse::ToIPC diff --git a/dom/flyweb/FlyWebPublishedServer.cpp b/dom/flyweb/FlyWebPublishedServer.cpp index 382581402bc5..8c1da7f1db35 100644 --- a/dom/flyweb/FlyWebPublishedServer.cpp +++ b/dom/flyweb/FlyWebPublishedServer.cpp @@ -369,7 +369,8 @@ FlyWebPublishedServerChild::OnFetchResponse(InternalRequest* aRequest, IPCInternalResponse ipcResp; UniquePtr autoStream; - aResponse->ToIPC(&ipcResp, Manager(), autoStream); + nsIContentChild* cc = static_cast(Manager()); + aResponse->ToIPC(&ipcResp, cc, autoStream); Unused << SendFetchResponse(ipcResp, id); if (autoStream) { autoStream->TakeOptionalValue(); @@ -435,7 +436,8 @@ FlyWebPublishedServerChild::OnWebSocketResponse(InternalRequest* aRequest, IPCInternalResponse ipcResp; UniquePtr autoStream; - aResponse->ToIPC(&ipcResp, Manager(), autoStream); + nsIContentChild* cc = static_cast(Manager()); + aResponse->ToIPC(&ipcResp, cc, autoStream); Unused << SendWebSocketResponse(ipcResp, id); if (autoStream) { diff --git a/dom/ipc/ContentBridgeChild.cpp b/dom/ipc/ContentBridgeChild.cpp index 8d9671084927..ae07528a2556 100644 --- a/dom/ipc/ContentBridgeChild.cpp +++ b/dom/ipc/ContentBridgeChild.cpp @@ -90,6 +90,18 @@ ContentBridgeChild::SendPBrowserConstructor(PBrowserChild* aActor, aIsForBrowser); } +PFileDescriptorSetChild* +ContentBridgeChild::SendPFileDescriptorSetConstructor(const FileDescriptor& aFD) +{ + return PContentBridgeChild::SendPFileDescriptorSetConstructor(aFD); +} + +PSendStreamChild* +ContentBridgeChild::SendPSendStreamConstructor(PSendStreamChild* aActor) +{ + return PContentBridgeChild::SendPSendStreamConstructor(aActor); +} + // This implementation is identical to ContentChild::GetCPOWManager but we can't // move it to nsIContentChild because it calls ManagedPJavaScriptChild() which // only exists in PContentChild and PContentBridgeChild. @@ -166,5 +178,29 @@ ContentBridgeChild::DeallocPBlobChild(PBlobChild* aActor) return nsIContentChild::DeallocPBlobChild(aActor); } +PSendStreamChild* +ContentBridgeChild::AllocPSendStreamChild() +{ + return nsIContentChild::AllocPSendStreamChild(); +} + +bool +ContentBridgeChild::DeallocPSendStreamChild(PSendStreamChild* aActor) +{ + return nsIContentChild::DeallocPSendStreamChild(aActor); +} + +PFileDescriptorSetChild* +ContentBridgeChild::AllocPFileDescriptorSetChild(const FileDescriptor& aFD) +{ + return nsIContentChild::AllocPFileDescriptorSetChild(aFD); +} + +bool +ContentBridgeChild::DeallocPFileDescriptorSetChild(PFileDescriptorSetChild* aActor) +{ + return nsIContentChild::DeallocPFileDescriptorSetChild(aActor); +} + } // namespace dom } // namespace mozilla diff --git a/dom/ipc/ContentBridgeChild.h b/dom/ipc/ContentBridgeChild.h index 865c8712c800..17932892977e 100644 --- a/dom/ipc/ContentBridgeChild.h +++ b/dom/ipc/ContentBridgeChild.h @@ -46,6 +46,12 @@ public: const bool& aIsForApp, const bool& aIsForBrowser) override; + virtual mozilla::ipc::PFileDescriptorSetChild* + SendPFileDescriptorSetConstructor(const mozilla::ipc::FileDescriptor&) override; + + virtual mozilla::ipc::PSendStreamChild* + SendPSendStreamConstructor(mozilla::ipc::PSendStreamChild*) override; + FORWARD_SHMEM_ALLOCATOR_TO(PContentBridgeChild) protected: @@ -72,6 +78,17 @@ protected: virtual PBlobChild* AllocPBlobChild(const BlobConstructorParams& aParams) override; virtual bool DeallocPBlobChild(PBlobChild*) override; + virtual mozilla::ipc::PSendStreamChild* AllocPSendStreamChild() override; + + virtual bool + DeallocPSendStreamChild(mozilla::ipc::PSendStreamChild* aActor) override; + + virtual PFileDescriptorSetChild* + AllocPFileDescriptorSetChild(const mozilla::ipc::FileDescriptor& aFD) override; + + virtual bool + DeallocPFileDescriptorSetChild(mozilla::ipc::PFileDescriptorSetChild* aActor) override; + DISALLOW_EVIL_CONSTRUCTORS(ContentBridgeChild); protected: // members diff --git a/dom/ipc/ContentBridgeParent.cpp b/dom/ipc/ContentBridgeParent.cpp index 75d470013932..eee0e1c104c2 100644 --- a/dom/ipc/ContentBridgeParent.cpp +++ b/dom/ipc/ContentBridgeParent.cpp @@ -193,5 +193,29 @@ ContentBridgeParent::Observe(nsISupports* aSubject, return NS_OK; } +PFileDescriptorSetParent* +ContentBridgeParent::AllocPFileDescriptorSetParent(const FileDescriptor& aFD) +{ + return nsIContentParent::AllocPFileDescriptorSetParent(aFD); +} + +bool +ContentBridgeParent::DeallocPFileDescriptorSetParent(PFileDescriptorSetParent* aActor) +{ + return nsIContentParent::DeallocPFileDescriptorSetParent(aActor); +} + +PSendStreamParent* +ContentBridgeParent::AllocPSendStreamParent() +{ + return nsIContentParent::AllocPSendStreamParent(); +} + +bool +ContentBridgeParent::DeallocPSendStreamParent(PSendStreamParent* aActor) +{ + return nsIContentParent::DeallocPSendStreamParent(aActor); +} + } // namespace dom } // namespace mozilla diff --git a/dom/ipc/ContentBridgeParent.h b/dom/ipc/ContentBridgeParent.h index 48413b9a2f02..2f7c951b5c31 100644 --- a/dom/ipc/ContentBridgeParent.h +++ b/dom/ipc/ContentBridgeParent.h @@ -125,6 +125,16 @@ protected: virtual bool DeallocPBlobParent(PBlobParent*) override; + virtual PSendStreamParent* AllocPSendStreamParent() override; + + virtual bool DeallocPSendStreamParent(PSendStreamParent* aActor) override; + + virtual PFileDescriptorSetParent* + AllocPFileDescriptorSetParent(const mozilla::ipc::FileDescriptor&) override; + + virtual bool + DeallocPFileDescriptorSetParent(PFileDescriptorSetParent*) override; + DISALLOW_EVIL_CONSTRUCTORS(ContentBridgeParent); protected: // members diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp index ea88f8fa4722..dc5c381ae8d9 100644 --- a/dom/ipc/ContentChild.cpp +++ b/dom/ipc/ContentChild.cpp @@ -1574,17 +1574,22 @@ ContentChild::GetAvailableDictionaries(InfallibleTArray& aDictionaries aDictionaries = mAvailableDictionaries; } +PFileDescriptorSetChild* +ContentChild::SendPFileDescriptorSetConstructor(const FileDescriptor& aFD) +{ + return PContentChild::SendPFileDescriptorSetConstructor(aFD); +} + PFileDescriptorSetChild* ContentChild::AllocPFileDescriptorSetChild(const FileDescriptor& aFD) { - return new FileDescriptorSetChild(aFD); + return nsIContentChild::AllocPFileDescriptorSetChild(aFD); } bool ContentChild::DeallocPFileDescriptorSetChild(PFileDescriptorSetChild* aActor) { - delete static_cast(aActor); - return true; + return nsIContentChild::DeallocPFileDescriptorSetChild(aActor); } bool @@ -1882,17 +1887,22 @@ ContentChild::DeallocPPrintingChild(PPrintingChild* printing) return true; } +PSendStreamChild* +ContentChild::SendPSendStreamConstructor(PSendStreamChild* aActor) +{ + return PContentChild::SendPSendStreamConstructor(aActor); +} + PSendStreamChild* ContentChild::AllocPSendStreamChild() { - MOZ_CRASH("PSendStreamChild actors should be manually constructed!"); + return nsIContentChild::AllocPSendStreamChild(); } bool ContentChild::DeallocPSendStreamChild(PSendStreamChild* aActor) { - delete aActor; - return true; + return nsIContentChild::DeallocPSendStreamChild(aActor); } PScreenManagerChild* diff --git a/dom/ipc/ContentChild.h b/dom/ipc/ContentChild.h index 091f29ba865f..055fd01b1990 100644 --- a/dom/ipc/ContentChild.h +++ b/dom/ipc/ContentChild.h @@ -36,7 +36,6 @@ class RemoteSpellcheckEngineChild; namespace ipc { class OptionalURIParams; -class PFileDescriptorSetChild; class URIParams; }// namespace ipc @@ -54,6 +53,7 @@ class ContentChild final : public PContentChild , public nsIContentChild { typedef mozilla::dom::ClonedMessageData ClonedMessageData; + typedef mozilla::ipc::FileDescriptor FileDescriptor; typedef mozilla::ipc::OptionalURIParams OptionalURIParams; typedef mozilla::ipc::PFileDescriptorSetChild PFileDescriptorSetChild; typedef mozilla::ipc::URIParams URIParams; @@ -298,6 +298,9 @@ public: virtual bool DeallocPPrintingChild(PPrintingChild*) override; + virtual PSendStreamChild* + SendPSendStreamConstructor(PSendStreamChild*) override; + virtual PSendStreamChild* AllocPSendStreamChild() override; virtual bool DeallocPSendStreamChild(PSendStreamChild*) override; @@ -589,6 +592,9 @@ public: SendPBlobConstructor(PBlobChild* actor, const BlobConstructorParams& params) override; + virtual PFileDescriptorSetChild* + SendPFileDescriptorSetConstructor(const FileDescriptor&) override; + virtual PFileDescriptorSetChild* AllocPFileDescriptorSetChild(const FileDescriptor&) override; diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index 9273c20345c9..aa04771410d9 100644 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -78,11 +78,8 @@ #include "mozilla/hal_sandbox/PHalParent.h" #include "mozilla/ipc/BackgroundChild.h" #include "mozilla/ipc/BackgroundParent.h" -#include "mozilla/ipc/FileDescriptorSetParent.h" #include "mozilla/ipc/FileDescriptorUtils.h" -#include "mozilla/ipc/PFileDescriptorSetParent.h" #include "mozilla/ipc/PSendStreamParent.h" -#include "mozilla/ipc/SendStreamAlloc.h" #include "mozilla/ipc/TestShellParent.h" #include "mozilla/ipc/InputStreamUtils.h" #include "mozilla/jsipc/CrossProcessObjectWrappers.h" @@ -3388,14 +3385,13 @@ ContentParent::GetPrintingParent() PSendStreamParent* ContentParent::AllocPSendStreamParent() { - return mozilla::ipc::AllocPSendStreamParent(); + return nsIContentParent::AllocPSendStreamParent(); } bool ContentParent::DeallocPSendStreamParent(PSendStreamParent* aActor) { - delete aActor; - return true; + return nsIContentParent::DeallocPSendStreamParent(aActor); } PScreenManagerParent* @@ -4602,14 +4598,13 @@ ContentParent::RecvKeygenProvideContent(nsString* aAttribute, PFileDescriptorSetParent* ContentParent::AllocPFileDescriptorSetParent(const FileDescriptor& aFD) { - return new FileDescriptorSetParent(aFD); + return nsIContentParent::AllocPFileDescriptorSetParent(aFD); } bool ContentParent::DeallocPFileDescriptorSetParent(PFileDescriptorSetParent* aActor) { - delete static_cast(aActor); - return true; + return nsIContentParent::DeallocPFileDescriptorSetParent(aActor); } bool diff --git a/dom/ipc/PContentBridge.ipdl b/dom/ipc/PContentBridge.ipdl index 0bda94a30f75..14af0cbaffb2 100644 --- a/dom/ipc/PContentBridge.ipdl +++ b/dom/ipc/PContentBridge.ipdl @@ -8,6 +8,8 @@ include protocol PBlob; include protocol PBrowser; include protocol PContent; include protocol PJavaScript; +include protocol PFileDescriptorSet; +include protocol PSendStream; include DOMTypes; include JavaScriptTypes; @@ -36,7 +38,9 @@ prio(normal upto urgent) sync protocol PContentBridge manages PBlob; manages PBrowser; + manages PFileDescriptorSet; manages PJavaScript; + manages PSendStream; parent: sync SyncMessage(nsString aMessage, ClonedMessageData aData, @@ -44,6 +48,9 @@ parent: returns (StructuredCloneData[] retval); async PJavaScript(); + + async PSendStream(); + both: // Both the parent and the child can construct the PBrowser. // See the comment in PContent::PBrowser(). @@ -52,6 +59,8 @@ both: async PBlob(BlobConstructorParams params); + async PFileDescriptorSet(FileDescriptor fd); + async AsyncMessage(nsString aMessage, CpowEntry[] aCpows, Principal aPrincipal, ClonedMessageData aData); }; diff --git a/dom/ipc/nsIContentChild.cpp b/dom/ipc/nsIContentChild.cpp index 50e16fc91459..c5f748fe16e3 100644 --- a/dom/ipc/nsIContentChild.cpp +++ b/dom/ipc/nsIContentChild.cpp @@ -13,7 +13,9 @@ #include "mozilla/dom/TabChild.h" #include "mozilla/dom/ipc/BlobChild.h" #include "mozilla/dom/ipc/StructuredCloneData.h" +#include "mozilla/ipc/FileDescriptorSetChild.h" #include "mozilla/ipc/InputStreamUtils.h" +#include "mozilla/ipc/SendStream.h" #include "nsPrintfCString.h" #include "xpcpublic.h" @@ -109,6 +111,32 @@ nsIContentChild::GetOrCreateActorForBlobImpl(BlobImpl* aImpl) return actor; } +PSendStreamChild* +nsIContentChild::AllocPSendStreamChild() +{ + MOZ_CRASH("PSendStreamChild actors should be manually constructed!"); +} + +bool +nsIContentChild::DeallocPSendStreamChild(PSendStreamChild* aActor) +{ + delete aActor; + return true; +} + +PFileDescriptorSetChild* +nsIContentChild::AllocPFileDescriptorSetChild(const FileDescriptor& aFD) +{ + return new FileDescriptorSetChild(aFD); +} + +bool +nsIContentChild::DeallocPFileDescriptorSetChild(PFileDescriptorSetChild* aActor) +{ + delete static_cast(aActor); + return true; +} + bool nsIContentChild::RecvAsyncMessage(const nsString& aMsg, InfallibleTArray&& aCpows, diff --git a/dom/ipc/nsIContentChild.h b/dom/ipc/nsIContentChild.h index dc5a2c3da56b..211144e9a462 100644 --- a/dom/ipc/nsIContentChild.h +++ b/dom/ipc/nsIContentChild.h @@ -27,6 +27,9 @@ class Principal; namespace mozilla { namespace ipc { +class FileDescriptor; +class PFileDescriptorSetChild; +class PSendStreamChild; class Shmem; } // namespace ipc @@ -69,6 +72,12 @@ public: const bool& aIsForApp, const bool& aIsForBrowser) = 0; + virtual mozilla::ipc::PFileDescriptorSetChild* + SendPFileDescriptorSetConstructor(const mozilla::ipc::FileDescriptor&) = 0; + + virtual mozilla::ipc::PSendStreamChild* + SendPSendStreamConstructor(mozilla::ipc::PSendStreamChild*) = 0; + protected: virtual jsipc::PJavaScriptChild* AllocPJavaScriptChild(); virtual bool DeallocPJavaScriptChild(jsipc::PJavaScriptChild*); @@ -85,6 +94,16 @@ protected: virtual bool DeallocPBlobChild(PBlobChild* aActor); + virtual mozilla::ipc::PSendStreamChild* AllocPSendStreamChild(); + + virtual bool DeallocPSendStreamChild(mozilla::ipc::PSendStreamChild* aActor); + + virtual mozilla::ipc::PFileDescriptorSetChild* + AllocPFileDescriptorSetChild(const mozilla::ipc::FileDescriptor& aFD); + + virtual bool + DeallocPFileDescriptorSetChild(mozilla::ipc::PFileDescriptorSetChild* aActor); + virtual bool RecvAsyncMessage(const nsString& aMsg, InfallibleTArray&& aCpows, const IPC::Principal& aPrincipal, diff --git a/dom/ipc/nsIContentParent.cpp b/dom/ipc/nsIContentParent.cpp index 469f34848d4f..0ef1abdf724e 100644 --- a/dom/ipc/nsIContentParent.cpp +++ b/dom/ipc/nsIContentParent.cpp @@ -17,6 +17,9 @@ #include "mozilla/dom/ipc/BlobParent.h" #include "mozilla/dom/ipc/StructuredCloneData.h" #include "mozilla/jsipc/CrossProcessObjectWrappers.h" +#include "mozilla/ipc/FileDescriptorSetParent.h" +#include "mozilla/ipc/PFileDescriptorSetParent.h" +#include "mozilla/ipc/SendStreamAlloc.h" #include "mozilla/Unused.h" #include "nsFrameMessageManager.h" @@ -267,6 +270,32 @@ nsIContentParent::RecvRpcMessage(const nsString& aMsg, return true; } +PFileDescriptorSetParent* +nsIContentParent::AllocPFileDescriptorSetParent(const FileDescriptor& aFD) +{ + return new FileDescriptorSetParent(aFD); +} + +bool +nsIContentParent::DeallocPFileDescriptorSetParent(PFileDescriptorSetParent* aActor) +{ + delete static_cast(aActor); + return true; +} + +PSendStreamParent* +nsIContentParent::AllocPSendStreamParent() +{ + return mozilla::ipc::AllocPSendStreamParent(); +} + +bool +nsIContentParent::DeallocPSendStreamParent(PSendStreamParent* aActor) +{ + delete aActor; + return true; +} + bool nsIContentParent::RecvAsyncMessage(const nsString& aMsg, InfallibleTArray&& aCpows, diff --git a/dom/ipc/nsIContentParent.h b/dom/ipc/nsIContentParent.h index 1ee5b08fbee2..7ba0152648af 100644 --- a/dom/ipc/nsIContentParent.h +++ b/dom/ipc/nsIContentParent.h @@ -30,6 +30,11 @@ class PJavaScriptParent; class CpowEntry; } // namespace jsipc +namespace ipc { +class PFileDescriptorSetParent; +class PSendStreamParent; +} + namespace dom { class Blob; @@ -103,6 +108,16 @@ protected: // IPDL methods virtual bool DeallocPBlobParent(PBlobParent* aActor); + virtual mozilla::ipc::PFileDescriptorSetParent* + AllocPFileDescriptorSetParent(const mozilla::ipc::FileDescriptor& aFD); + + virtual bool + DeallocPFileDescriptorSetParent(mozilla::ipc::PFileDescriptorSetParent* aActor); + + virtual mozilla::ipc::PSendStreamParent* AllocPSendStreamParent(); + + virtual bool DeallocPSendStreamParent(mozilla::ipc::PSendStreamParent* aActor); + virtual bool RecvSyncMessage(const nsString& aMsg, const ClonedMessageData& aData, InfallibleTArray&& aCpows, diff --git a/ipc/glue/FileDescriptorSetChild.h b/ipc/glue/FileDescriptorSetChild.h index 4fee9a951aa4..5c334a8f7bba 100644 --- a/ipc/glue/FileDescriptorSetChild.h +++ b/ipc/glue/FileDescriptorSetChild.h @@ -16,7 +16,7 @@ namespace mozilla { namespace dom { -class ContentChild; +class nsIContentChild; } // namespace dom @@ -29,7 +29,7 @@ class FileDescriptorSetChild final : public PFileDescriptorSetChild { friend class BackgroundChildImpl; - friend class mozilla::dom::ContentChild; + friend class mozilla::dom::nsIContentChild; nsTArray mFileDescriptors; diff --git a/ipc/glue/FileDescriptorSetParent.h b/ipc/glue/FileDescriptorSetParent.h index 9d7deaad0e42..58f254e474d9 100644 --- a/ipc/glue/FileDescriptorSetParent.h +++ b/ipc/glue/FileDescriptorSetParent.h @@ -16,7 +16,7 @@ namespace mozilla { namespace dom { -class ContentParent; +class nsIContentParent; } // namespace dom @@ -29,7 +29,7 @@ class FileDescriptorSetParent final : public PFileDescriptorSetParent { friend class BackgroundParentImpl; - friend class mozilla::dom::ContentParent; + friend class mozilla::dom::nsIContentParent; nsTArray mFileDescriptors; diff --git a/ipc/glue/IPCStreamUtils.cpp b/ipc/glue/IPCStreamUtils.cpp index e35c06bfa0bc..a7aa1e7680ca 100644 --- a/ipc/glue/IPCStreamUtils.cpp +++ b/ipc/glue/IPCStreamUtils.cpp @@ -9,7 +9,7 @@ #include "nsIIPCSerializableInputStream.h" #include "mozilla/Assertions.h" -#include "mozilla/dom/PContentChild.h" +#include "mozilla/dom/nsIContentChild.h" #include "mozilla/dom/PContentParent.h" #include "mozilla/dom/File.h" #include "mozilla/ipc/FileDescriptorSetChild.h" @@ -349,7 +349,7 @@ AutoIPCStream::~AutoIPCStream() } void -AutoIPCStream::Serialize(nsIInputStream* aStream, dom::PContentChild* aManager) +AutoIPCStream::Serialize(nsIInputStream* aStream, dom::nsIContentChild* aManager) { MOZ_ASSERT(aStream); MOZ_ASSERT(aManager); diff --git a/ipc/glue/IPCStreamUtils.h b/ipc/glue/IPCStreamUtils.h index db9732aa149e..a20f8a651827 100644 --- a/ipc/glue/IPCStreamUtils.h +++ b/ipc/glue/IPCStreamUtils.h @@ -13,7 +13,7 @@ namespace mozilla { namespace dom { -class PContentChild; +class nsIContentChild; class PContentParent; } @@ -147,7 +147,7 @@ public: // manager. If neither of these succeed, then crash. This should only be // used on the main thread. void - Serialize(nsIInputStream* aStream, dom::PContentChild* aManager); + Serialize(nsIInputStream* aStream, dom::nsIContentChild* aManager); // Serialize the input stream or create a SendStream actor using the // PBackground manager. If neither of these succeed, then crash. This can diff --git a/ipc/glue/PFileDescriptorSet.ipdl b/ipc/glue/PFileDescriptorSet.ipdl index ef366494fe3a..763f727783f4 100644 --- a/ipc/glue/PFileDescriptorSet.ipdl +++ b/ipc/glue/PFileDescriptorSet.ipdl @@ -4,13 +4,14 @@ include protocol PBackground; include protocol PContent; +include protocol PContentBridge; namespace mozilla { namespace ipc { protocol PFileDescriptorSet { - manager PBackground or PContent; + manager PBackground or PContent or PContentBridge; both: async AddFileDescriptor(FileDescriptor fd); diff --git a/ipc/glue/PSendStream.ipdl b/ipc/glue/PSendStream.ipdl index dc19e9a8be7f..8f171672bdcb 100644 --- a/ipc/glue/PSendStream.ipdl +++ b/ipc/glue/PSendStream.ipdl @@ -4,13 +4,14 @@ include protocol PBackground; include protocol PContent; +include protocol PContentBridge; namespace mozilla { namespace ipc { protocol PSendStream { - manager PBackground or PContent; + manager PBackground or PContent or PContentBridge; parent: async Buffer(nsCString aBuffer); diff --git a/ipc/glue/SendStream.h b/ipc/glue/SendStream.h index 1a7277497fd5..cd8b25659853 100644 --- a/ipc/glue/SendStream.h +++ b/ipc/glue/SendStream.h @@ -17,7 +17,7 @@ class nsIAsyncInputStream; namespace mozilla { namespace dom { -class PContentChild; +class nsIContentChild; } // dom namespace namespace ipc { @@ -56,7 +56,7 @@ public: // main thread. This can return nullptr if the provided stream is // blocking. static SendStreamChild* - Create(nsIAsyncInputStream* aInputStream, dom::PContentChild* aManager); + Create(nsIAsyncInputStream* aInputStream, dom::nsIContentChild* aManager); // Create a SendStreamChild using a PBackground IPC manager on the // main thread or a Worker thread. This can return nullptr if the provided diff --git a/ipc/glue/SendStreamChild.cpp b/ipc/glue/SendStreamChild.cpp index 8664ba963f1e..02e8726e89eb 100644 --- a/ipc/glue/SendStreamChild.cpp +++ b/ipc/glue/SendStreamChild.cpp @@ -7,7 +7,7 @@ #include "mozilla/ipc/SendStream.h" #include "mozilla/Unused.h" -#include "mozilla/dom/PContentChild.h" +#include "mozilla/dom/nsIContentChild.h" #include "mozilla/dom/WorkerPrivate.h" #include "mozilla/dom/workers/bindings/WorkerHolder.h" #include "mozilla/ipc/PBackgroundChild.h" @@ -20,7 +20,7 @@ namespace mozilla { namespace ipc { -using mozilla::dom::PContentChild; +using mozilla::dom::nsIContentChild; using mozilla::dom::workers::Canceling; using mozilla::dom::workers::GetCurrentThreadWorkerPrivate; using mozilla::dom::workers::Status; @@ -359,7 +359,7 @@ IsBlocking(nsIAsyncInputStream* aInputStream) // static SendStreamChild* SendStreamChild::Create(nsIAsyncInputStream* aInputStream, - PContentChild* aManager) + nsIContentChild* aManager) { MOZ_ASSERT(aInputStream); MOZ_ASSERT(aManager); From d62e084ce0381ef60eac4e87759af92c0ce3968f Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Mon, 25 Jul 2016 22:41:02 +0200 Subject: [PATCH 021/117] Bug 1288997 - memory blob should not be shared across processes - part 2 - SlicedInputStream, r=froydnj --- xpcom/io/SlicedInputStream.cpp | 209 +++++++++++++++ xpcom/io/SlicedInputStream.h | 50 ++++ xpcom/io/moz.build | 2 + xpcom/tests/gtest/TestSlicedInputStream.cpp | 266 ++++++++++++++++++++ xpcom/tests/gtest/moz.build | 1 + 5 files changed, 528 insertions(+) create mode 100644 xpcom/io/SlicedInputStream.cpp create mode 100644 xpcom/io/SlicedInputStream.h create mode 100644 xpcom/tests/gtest/TestSlicedInputStream.cpp diff --git a/xpcom/io/SlicedInputStream.cpp b/xpcom/io/SlicedInputStream.cpp new file mode 100644 index 000000000000..7d5fc2b059de --- /dev/null +++ b/xpcom/io/SlicedInputStream.cpp @@ -0,0 +1,209 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "SlicedInputStream.h" +#include "nsISeekableStream.h" +#include "nsStreamUtils.h" + +NS_IMPL_ISUPPORTS(SlicedInputStream, nsIInputStream, + nsICloneableInputStream, nsIAsyncInputStream) + +SlicedInputStream::SlicedInputStream(nsIInputStream* aInputStream, + uint64_t aStart, uint64_t aLength) + : mInputStream(aInputStream) + , mStart(aStart) + , mLength(aLength) + , mCurPos(0) + , mClosed(false) +{ + MOZ_ASSERT(aInputStream); +} + +SlicedInputStream::~SlicedInputStream() +{} + +NS_IMETHODIMP +SlicedInputStream::Close() +{ + mClosed = true; + return NS_OK; +} + +// nsIInputStream interface + +NS_IMETHODIMP +SlicedInputStream::Available(uint64_t* aLength) +{ + if (mClosed) { + return NS_BASE_STREAM_CLOSED; + } + + nsresult rv = mInputStream->Available(aLength); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + // Let's remove extra length from the end. + if (*aLength + mCurPos > mStart + mLength) { + *aLength -= XPCOM_MIN(*aLength, (*aLength + mCurPos) - (mStart + mLength)); + } + + // Let's remove extra length from the begin. + if (mCurPos < mStart) { + *aLength -= XPCOM_MIN(*aLength, mStart - mCurPos); + } + + return NS_OK; +} + +NS_IMETHODIMP +SlicedInputStream::Read(char* aBuffer, uint32_t aCount, uint32_t* aReadCount) +{ + return ReadSegments(NS_CopySegmentToBuffer, aBuffer, aCount, aReadCount); +} + +NS_IMETHODIMP +SlicedInputStream::ReadSegments(nsWriteSegmentFun aWriter, void* aClosure, + uint32_t aCount, uint32_t *aResult) +{ + uint32_t result; + + if (!aResult) { + aResult = &result; + } + + *aResult = 0; + + if (mClosed) { + return NS_BASE_STREAM_CLOSED; + } + + if (mCurPos < mStart) { + nsCOMPtr seekableStream = + do_QueryInterface(mInputStream); + if (seekableStream) { + nsresult rv = seekableStream->Seek(nsISeekableStream::NS_SEEK_SET, + mStart); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + mCurPos = mStart; + } else { + char buf[4096]; + while (mCurPos < mStart) { + uint32_t bytesRead; + uint64_t bufCount = XPCOM_MIN(mStart - mCurPos, (uint64_t)sizeof(buf)); + nsresult rv = mInputStream->Read(buf, bufCount, &bytesRead); + if (NS_WARN_IF(NS_FAILED(rv)) || bytesRead == 0) { + return rv; + } + + mCurPos += bytesRead; + } + } + } + + // Let's reduce aCount in case it's too big. + if (mCurPos + aCount > mStart + mLength) { + aCount = mStart + mLength - mCurPos; + } + + char buf[4096]; + while (mCurPos < mStart + mLength && *aResult < aCount) { + uint32_t bytesRead; + uint64_t bufCount = XPCOM_MIN(aCount - *aResult, (uint32_t)sizeof(buf)); + nsresult rv = mInputStream->Read(buf, bufCount, &bytesRead); + if (NS_WARN_IF(NS_FAILED(rv)) || bytesRead == 0) { + return rv; + } + + mCurPos += bytesRead; + + uint32_t bytesWritten = 0; + while (bytesWritten < bytesRead) { + uint32_t writerCount = 0; + rv = aWriter(this, aClosure, buf + bytesWritten, *aResult, + bytesRead - bytesWritten, &writerCount); + if (NS_FAILED(rv) || writerCount == 0) { + return NS_OK; + } + + MOZ_ASSERT(writerCount <= bytesRead - bytesWritten); + bytesWritten += writerCount; + *aResult += writerCount; + } + } + + return NS_OK; +} + +NS_IMETHODIMP +SlicedInputStream::IsNonBlocking(bool* aNonBlocking) +{ + return mInputStream->IsNonBlocking(aNonBlocking); +} + +// nsICloneableInputStream interface + +NS_IMETHODIMP +SlicedInputStream::GetCloneable(bool* aCloneable) +{ + *aCloneable = true; + return NS_OK; +} + +NS_IMETHODIMP +SlicedInputStream::Clone(nsIInputStream** aResult) +{ + nsCOMPtr clonedStream; + nsCOMPtr replacementStream; + + nsresult rv = NS_CloneInputStream(mInputStream, getter_AddRefs(clonedStream), + getter_AddRefs(replacementStream)); + if (NS_WARN_IF(NS_FAILED(rv))) { + return rv; + } + + if (replacementStream) { + mInputStream = replacementStream.forget(); + } + + nsCOMPtr sis = + new SlicedInputStream(clonedStream, mStart, mLength); + + sis.forget(aResult); + return NS_OK; +} + +// nsIAsyncInputStream interface + +NS_IMETHODIMP +SlicedInputStream::CloseWithStatus(nsresult aStatus) +{ + nsCOMPtr asyncStream = + do_QueryInterface(mInputStream); + if (!asyncStream) { + return NS_ERROR_FAILURE; + } + + return asyncStream->CloseWithStatus(aStatus); +} + +NS_IMETHODIMP +SlicedInputStream::AsyncWait(nsIInputStreamCallback* aCallback, + uint32_t aFlags, + uint32_t aRequestedCount, + nsIEventTarget* aEventTarget) +{ + nsCOMPtr asyncStream = + do_QueryInterface(mInputStream); + if (!asyncStream) { + return NS_ERROR_FAILURE; + } + + return asyncStream->AsyncWait(aCallback, aFlags, aRequestedCount, + aEventTarget); +} diff --git a/xpcom/io/SlicedInputStream.h b/xpcom/io/SlicedInputStream.h new file mode 100644 index 000000000000..6c38fc39f2cd --- /dev/null +++ b/xpcom/io/SlicedInputStream.h @@ -0,0 +1,50 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef SlicedInputStream_h +#define SlicedInputStream_h + +#include "mozilla/Attributes.h" +#include "nsCOMPtr.h" +#include "nsIAsyncInputStream.h" +#include "nsICloneableInputStream.h" + +// A wrapper for a slice of an underlying input stream. + +class SlicedInputStream final : public nsIAsyncInputStream + , public nsICloneableInputStream +{ +public: + NS_DECL_THREADSAFE_ISUPPORTS + NS_DECL_NSIINPUTSTREAM + NS_DECL_NSICLONEABLEINPUTSTREAM + NS_DECL_NSIASYNCINPUTSTREAM + + // Create an input stream whose data comes from a slice of aInputStream. The + // slice begins at aStart bytes beyond aInputStream's current position, and + // extends for a maximum of aLength bytes. If aInputStream contains fewer + // than aStart bytes, reading from SlicedInputStream returns no data. If + // aInputStream contains more than aStart bytes, but fewer than aStart + + // aLength bytes, reading from SlicedInputStream returns as many bytes as can + // be consumed from aInputStream after reading aLength bytes. + // + // aInputStream should not be read from after constructing a + // SlicedInputStream wrapper around it. + + SlicedInputStream(nsIInputStream* aInputStream, + uint64_t aStart, uint64_t aLength); + +private: + ~SlicedInputStream(); + + nsCOMPtr mInputStream; + uint64_t mStart; + uint64_t mLength; + uint64_t mCurPos; + + bool mClosed; +}; + +#endif // SlicedInputStream_h diff --git a/xpcom/io/moz.build b/xpcom/io/moz.build index 4e1062c7f09f..6f21e0a72747 100644 --- a/xpcom/io/moz.build +++ b/xpcom/io/moz.build @@ -78,6 +78,7 @@ EXPORTS += [ 'nsStringStream.h', 'nsUnicharInputStream.h', 'nsWildCard.h', + 'SlicedInputStream.h', 'SpecialSystemDirectory.h', ] @@ -111,6 +112,7 @@ UNIFIED_SOURCES += [ 'nsStringStream.cpp', 'nsUnicharInputStream.cpp', 'nsWildCard.cpp', + 'SlicedInputStream.cpp', 'SnappyCompressOutputStream.cpp', 'SnappyFrameUtils.cpp', 'SnappyUncompressInputStream.cpp', diff --git a/xpcom/tests/gtest/TestSlicedInputStream.cpp b/xpcom/tests/gtest/TestSlicedInputStream.cpp new file mode 100644 index 000000000000..ccad0a6a84c2 --- /dev/null +++ b/xpcom/tests/gtest/TestSlicedInputStream.cpp @@ -0,0 +1,266 @@ +#include "gtest/gtest.h" + +#include "nsCOMPtr.h" +#include "nsIInputStream.h" +#include "nsStreamUtils.h" +#include "nsString.h" +#include "nsStringStream.h" +#include "SlicedInputStream.h" + +/* We want to ensure that sliced streams work with both seekable and + * non-seekable input streams. As our string streams are seekable, we need to + * provide a string stream that doesn't permit seeking, so we can test the + * logic that emulates seeking in sliced input streams. + */ +class NonSeekableStringStream final : public nsIInputStream +{ + nsCOMPtr mStream; + +public: + NS_DECL_THREADSAFE_ISUPPORTS + + explicit NonSeekableStringStream(const nsACString& aBuffer) + { + NS_NewCStringInputStream(getter_AddRefs(mStream), aBuffer); + } + + NS_IMETHOD + Available(uint64_t* aLength) override + { + return mStream->Available(aLength); + } + + NS_IMETHOD + Read(char* aBuffer, uint32_t aCount, uint32_t* aReadCount) override + { + return mStream->Read(aBuffer, aCount, aReadCount); + } + + NS_IMETHOD + ReadSegments(nsWriteSegmentFun aWriter, void* aClosure, + uint32_t aCount, uint32_t *aResult) override + { + return mStream->ReadSegments(aWriter, aClosure, aCount, aResult); + } + + NS_IMETHOD + Close() override + { + return mStream->Close(); + } + + NS_IMETHOD + IsNonBlocking(bool* aNonBlocking) override + { + return mStream->IsNonBlocking(aNonBlocking); + } + +private: + ~NonSeekableStringStream() {} +}; + +NS_IMPL_ISUPPORTS(NonSeekableStringStream, nsIInputStream) + +// Helper function for creating a seekable nsIInputStream + a SlicedInputStream. +SlicedInputStream* +CreateSeekableStreams(uint32_t aSize, uint64_t aStart, uint64_t aLength, + nsCString& aBuffer) +{ + aBuffer.SetLength(aSize); + for (uint32_t i = 0; i < aSize; ++i) { + aBuffer.BeginWriting()[i] = i % 10; + } + + nsCOMPtr stream; + NS_NewCStringInputStream(getter_AddRefs(stream), aBuffer); + return new SlicedInputStream(stream, aStart, aLength); +} + +// Helper function for creating a non-seekable nsIInputStream + a +// SlicedInputStream. +SlicedInputStream* +CreateNonSeekableStreams(uint32_t aSize, uint64_t aStart, uint64_t aLength, + nsCString& aBuffer) +{ + aBuffer.SetLength(aSize); + for (uint32_t i = 0; i < aSize; ++i) { + aBuffer.BeginWriting()[i] = i % 10; + } + + RefPtr stream = new NonSeekableStringStream(aBuffer); + return new SlicedInputStream(stream, aStart, aLength); +} + +// Same start, same length. +TEST(TestSlicedInputStream, Simple) { + const size_t kBufSize = 4096; + + nsCString buf; + RefPtr sis = + CreateSeekableStreams(kBufSize, 0, kBufSize, buf); + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)kBufSize, length); + + char buf2[kBufSize]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ(count, buf.Length()); + ASSERT_TRUE(nsCString(buf.get()).Equals(nsCString(buf2))); +} + +// Simple sliced stream - seekable +TEST(TestSlicedInputStream, Sliced) { + const size_t kBufSize = 4096; + + nsCString buf; + RefPtr sis = + CreateSeekableStreams(kBufSize, 10, 100, buf); + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)100, length); + + char buf2[kBufSize / 2]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)100, count); + ASSERT_TRUE(nsCString(buf.get() + 10, count).Equals(nsCString(buf2, count))); +} + +// Simple sliced stream - non seekable +TEST(TestSlicedInputStream, SlicedNoSeek) { + const size_t kBufSize = 4096; + + nsCString buf; + RefPtr sis = + CreateNonSeekableStreams(kBufSize, 10, 100, buf); + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)100, length); + + char buf2[kBufSize / 2]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)100, count); + ASSERT_TRUE(nsCString(buf.get() + 10, count).Equals(nsCString(buf2, count))); +} + +// Big inputStream - seekable +TEST(TestSlicedInputStream, BigSliced) { + const size_t kBufSize = 4096 * 40; + + nsCString buf; + RefPtr sis = + CreateSeekableStreams(kBufSize, 4096 * 5, 4096 * 10, buf); + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)4096 * 10, length); + + char buf2[kBufSize / 2]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)4096 * 10, count); + ASSERT_TRUE(nsCString(buf.get() + 4096 * 5, count).Equals(nsCString(buf2, count))); +} + +// Big inputStream - non seekable +TEST(TestSlicedInputStream, BigSlicedNoSeek) { + const size_t kBufSize = 4096 * 40; + + nsCString buf; + RefPtr sis = + CreateNonSeekableStreams(kBufSize, 4096 * 5, 4096 * 10, buf); + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)4096 * 10, length); + + char buf2[kBufSize / 2]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)4096 * 10, count); + ASSERT_TRUE(nsCString(buf.get() + 4096 * 5, count).Equals(nsCString(buf2, count))); +} + +// Available size. +TEST(TestSlicedInputStream, Available) { + nsCString buf; + RefPtr sis = + CreateNonSeekableStreams(500000, 4, 400000, buf); + + uint64_t toRead = 400000; + for (uint32_t i = 0; i < 400; ++i) { + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ(toRead, length); + + char buf2[1000]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)1000, count); + ASSERT_TRUE(nsCString(buf.get() + 4 + (1000 * i), count).Equals(nsCString(buf2, count))); + + toRead -= count; + } + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)0, length); + + char buf2[4096]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)0, count); +} + +// What if start is > then the size of the buffer? +TEST(TestSlicedInputStream, StartBiggerThan) { + nsCString buf; + RefPtr sis = + CreateNonSeekableStreams(500, 4000, 1, buf); + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)0, length); + + char buf2[4096]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)0, count); +} + +// What if the length is > than the size of the buffer? +TEST(TestSlicedInputStream, LengthBiggerThan) { + nsCString buf; + RefPtr sis = + CreateNonSeekableStreams(500, 0, 500000, buf); + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)500, length); + + char buf2[4096]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)500, count); +} + +// What if the length is 0? +TEST(TestSlicedInputStream, Length0) { + nsCString buf; + RefPtr sis = + CreateNonSeekableStreams(500, 0, 0, buf); + + uint64_t length; + ASSERT_EQ(NS_OK, sis->Available(&length)); + ASSERT_EQ((uint64_t)0, length); + + char buf2[4096]; + uint32_t count; + ASSERT_EQ(NS_OK, sis->Read(buf2, sizeof(buf2), &count)); + ASSERT_EQ((uint64_t)0, count); +} diff --git a/xpcom/tests/gtest/moz.build b/xpcom/tests/gtest/moz.build index 9325b2b8ab32..491ea3737b4f 100644 --- a/xpcom/tests/gtest/moz.build +++ b/xpcom/tests/gtest/moz.build @@ -16,6 +16,7 @@ UNIFIED_SOURCES += [ 'TestPipes.cpp', 'TestPLDHash.cpp', 'TestPriorityQueue.cpp', + 'TestSlicedInputStream.cpp', 'TestSnappyStreams.cpp', 'TestStateWatching.cpp', 'TestStorageStream.cpp', From 9d38619302cb29013439500600b847ddcb4a77f3 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Wed, 21 Sep 2016 12:27:26 +0200 Subject: [PATCH 022/117] Bug 1288997 - memory blob should not be shared across processes - part 3 - SendStream for memory blobs, r=bkelly --- accessible/ipc/win/PDocAccessible.ipdl | 1 + dom/base/File.cpp | 74 ++++++++++++++++++++- dom/base/File.h | 38 +++++++++++ dom/ipc/Blob.cpp | 92 ++++++++++---------------- dom/ipc/DOMTypes.ipdlh | 4 +- dom/ipc/PBlob.ipdl | 1 + 6 files changed, 150 insertions(+), 60 deletions(-) diff --git a/accessible/ipc/win/PDocAccessible.ipdl b/accessible/ipc/win/PDocAccessible.ipdl index 7aeb6635e11e..69244aeccfb2 100644 --- a/accessible/ipc/win/PDocAccessible.ipdl +++ b/accessible/ipc/win/PDocAccessible.ipdl @@ -4,6 +4,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +include protocol PFileDescriptorSet; include protocol PBrowser; using mozilla::a11y::IAccessibleHolder from "mozilla/a11y/COMPtrTypes.h"; diff --git a/dom/base/File.cpp b/dom/base/File.cpp index 10b7d342ff62..850783f503f2 100644 --- a/dom/base/File.cpp +++ b/dom/base/File.cpp @@ -40,6 +40,8 @@ #include "mozilla/dom/WorkerPrivate.h" #include "mozilla/dom/WorkerRunnable.h" #include "nsThreadUtils.h" +#include "nsStreamUtils.h" +#include "SlicedInputStream.h" namespace mozilla { namespace dom { @@ -276,7 +278,7 @@ Blob::CreateSlice(uint64_t aStart, uint64_t aLength, ErrorResult& aRv) { RefPtr impl = mImpl->CreateSlice(aStart, aLength, - aContentType, aRv); + aContentType, aRv); if (aRv.Failed()) { return nullptr; } @@ -1193,5 +1195,75 @@ BlobImplTemporaryBlob::GetInternalStream(nsIInputStream** aStream, stream.forget(aStream); } +//////////////////////////////////////////////////////////////////////////// +// BlobImplStream implementation + +NS_IMPL_ISUPPORTS_INHERITED0(BlobImplStream, BlobImpl) + +BlobImplStream::BlobImplStream(nsIInputStream* aInputStream, + const nsAString& aContentType, + uint64_t aLength) + : BlobImplBase(aContentType, aLength) + , mInputStream(aInputStream) +{ + mImmutable = true; +} + +BlobImplStream::BlobImplStream(BlobImplStream* aOther, + const nsAString& aContentType, + uint64_t aStart, uint64_t aLength) + : BlobImplBase(aContentType, aOther->mStart + aStart, aLength) + , mInputStream(new SlicedInputStream(aOther->mInputStream, aStart, aLength)) +{ + mImmutable = true; +} + +BlobImplStream::BlobImplStream(nsIInputStream* aInputStream, + const nsAString& aName, + const nsAString& aContentType, + int64_t aLastModifiedDate, + uint64_t aLength) + : BlobImplBase(aName, aContentType, aLength, aLastModifiedDate) + , mInputStream(aInputStream) +{ + mImmutable = true; +} + +BlobImplStream::~BlobImplStream() +{} + +void +BlobImplStream::GetInternalStream(nsIInputStream** aStream, ErrorResult& aRv) +{ + nsCOMPtr clonedStream; + nsCOMPtr replacementStream; + + aRv = NS_CloneInputStream(mInputStream, getter_AddRefs(clonedStream), + getter_AddRefs(replacementStream)); + if (NS_WARN_IF(aRv.Failed())) { + return; + } + + if (replacementStream) { + mInputStream = replacementStream.forget(); + } + + clonedStream.forget(aStream); +} + +already_AddRefed +BlobImplStream::CreateSlice(uint64_t aStart, uint64_t aLength, + const nsAString& aContentType, ErrorResult& aRv) +{ + if (!aLength) { + RefPtr impl = new EmptyBlobImpl(aContentType); + return impl.forget(); + } + + RefPtr impl = + new BlobImplStream(this, aContentType, aStart, aLength); + return impl.forget(); +} + } // namespace dom } // namespace mozilla diff --git a/dom/base/File.h b/dom/base/File.h index 4a67e34351e0..0f1cdd29760b 100644 --- a/dom/base/File.h +++ b/dom/base/File.h @@ -797,6 +797,44 @@ private: ~EmptyBlobImpl() {} }; +class BlobImplStream final : public BlobImplBase +{ +public: + NS_DECL_ISUPPORTS_INHERITED + + BlobImplStream(nsIInputStream* aInputStream, + const nsAString& aContentType, + uint64_t aLength); + + BlobImplStream(nsIInputStream* aInputStream, + const nsAString& aName, + const nsAString& aContentType, + int64_t aLastModifiedDate, + uint64_t aLength); + + virtual void GetInternalStream(nsIInputStream** aStream, + ErrorResult& aRv) override; + + virtual already_AddRefed + CreateSlice(uint64_t aStart, uint64_t aLength, + const nsAString& aContentType, ErrorResult& aRv) override; + + virtual bool IsMemoryFile() const override + { + return true; + } + +private: + BlobImplStream(BlobImplStream* aOther, + const nsAString& aContentType, + uint64_t aStart, + uint64_t aLength); + + ~BlobImplStream(); + + nsCOMPtr mInputStream; +}; + } // namespace dom } // namespace mozilla diff --git a/dom/ipc/Blob.cpp b/dom/ipc/Blob.cpp index 7038c7da8c1c..b51665e9f716 100644 --- a/dom/ipc/Blob.cpp +++ b/dom/ipc/Blob.cpp @@ -26,6 +26,7 @@ #include "mozilla/dom/indexedDB/FileSnapshot.h" #include "mozilla/dom/IndexedDatabaseManager.h" #include "mozilla/ipc/InputStreamUtils.h" +#include "mozilla/ipc/IPCStreamUtils.h" #include "mozilla/ipc/PBackgroundChild.h" #include "mozilla/ipc/PBackgroundParent.h" #include "mozilla/ipc/PFileDescriptorSetParent.h" @@ -711,51 +712,38 @@ CreateBlobImpl(const nsID& aKnownBlobIDData, } already_AddRefed -CreateBlobImpl(const nsTArray& aMemoryData, +CreateBlobImpl(const IPCStream& aStream, const CreateBlobImplMetadata& aMetadata) { - static_assert(sizeof(aMemoryData.Length()) <= sizeof(size_t), - "String length won't fit in size_t!"); - static_assert(sizeof(size_t) <= sizeof(uint64_t), - "size_t won't fit in uint64_t!"); - MOZ_ASSERT(gProcessType == GeckoProcessType_Default); + nsCOMPtr inputStream = DeserializeIPCStream(aStream); + if (!inputStream) { + ASSERT_UNLESS_FUZZING(); + return nullptr; + } + + uint64_t available; + MOZ_ALWAYS_SUCCEEDS(inputStream->Available(&available)); + RefPtr blobImpl; - - if (auto length = static_cast(aMemoryData.Length())) { - static constexpr size_t elementSizeMultiplier = - sizeof(aMemoryData[0]) / sizeof(char); - - if (!aMetadata.mHasRecursed && - NS_WARN_IF(aMetadata.mLength != uint64_t(length))) { - ASSERT_UNLESS_FUZZING(); - return nullptr; - } - - void* buffer = malloc(length * elementSizeMultiplier); - if (NS_WARN_IF(!buffer)) { - return nullptr; - } - - memcpy(buffer, aMemoryData.Elements(), length * elementSizeMultiplier); - - if (!aMetadata.mHasRecursed && aMetadata.IsFile()) { + if (!aMetadata.mHasRecursed && aMetadata.IsFile()) { + if (available) { blobImpl = - new BlobImplMemory(buffer, - uint64_t(length), + new BlobImplStream(inputStream, aMetadata.mName, aMetadata.mContentType, - aMetadata.mLastModifiedDate); + aMetadata.mLastModifiedDate, + available); } else { blobImpl = - new BlobImplMemory(buffer, uint64_t(length), aMetadata.mContentType); + new EmptyBlobImpl(aMetadata.mName, + aMetadata.mContentType, + aMetadata.mLastModifiedDate); } - } else if (!aMetadata.mHasRecursed && aMetadata.IsFile()) { + } else if (available) { blobImpl = - new EmptyBlobImpl(aMetadata.mName, - aMetadata.mContentType, - aMetadata.mLastModifiedDate); + new BlobImplStream(inputStream, aMetadata.mContentType, available); } else { blobImpl = new EmptyBlobImpl(aMetadata.mContentType); } @@ -783,8 +771,8 @@ CreateBlobImplFromBlobData(const BlobData& aBlobData, break; } - case BlobData::TArrayOfuint8_t: { - blobImpl = CreateBlobImpl(aBlobData.get_ArrayOfuint8_t(), aMetadata); + case BlobData::TIPCStream: { + blobImpl = CreateBlobImpl(aBlobData.get_IPCStream(), aMetadata); break; } @@ -921,8 +909,10 @@ CreateBlobImpl(const ParentBlobConstructorParams& aParams, return blobImpl.forget(); } +template void -BlobDataFromBlobImpl(BlobImpl* aBlobImpl, BlobData& aBlobData) +BlobDataFromBlobImpl(ChildManagerType* aManager, BlobImpl* aBlobImpl, + BlobData& aBlobData) { MOZ_ASSERT(gProcessType != GeckoProcessType_Default); MOZ_ASSERT(aBlobImpl); @@ -940,7 +930,8 @@ BlobDataFromBlobImpl(BlobImpl* aBlobImpl, BlobData& aBlobData) for (uint32_t count = subBlobs->Length(), index = 0; index < count; index++) { - BlobDataFromBlobImpl(subBlobs->ElementAt(index), subBlobDatas[index]); + BlobDataFromBlobImpl(aManager, subBlobs->ElementAt(index), + subBlobDatas[index]); } return; @@ -960,26 +951,9 @@ BlobDataFromBlobImpl(BlobImpl* aBlobImpl, BlobData& aBlobData) aBlobImpl->GetInternalStream(getter_AddRefs(inputStream), rv); MOZ_ALWAYS_TRUE(!rv.Failed()); - DebugOnly isNonBlocking; - MOZ_ASSERT(NS_SUCCEEDED(inputStream->IsNonBlocking(&isNonBlocking))); - MOZ_ASSERT(isNonBlocking); - - uint64_t available; - MOZ_ALWAYS_SUCCEEDS(inputStream->Available(&available)); - - MOZ_ASSERT(available <= uint64_t(UINT32_MAX)); - - aBlobData = nsTArray(); - - nsTArray& blobData = aBlobData.get_ArrayOfuint8_t(); - - blobData.SetLength(size_t(available)); - - uint32_t readCount; - MOZ_ALWAYS_SUCCEEDS( - inputStream->Read(reinterpret_cast(blobData.Elements()), - uint32_t(available), - &readCount)); + AutoIPCStream autoStream; + autoStream.Serialize(inputStream, aManager); + aBlobData = autoStream.TakeValue(); } RemoteInputStream::RemoteInputStream(BlobImpl* aBlobImpl, @@ -3375,8 +3349,10 @@ BlobChild::GetOrCreateFromImpl(ChildManagerType* aManager, blobParams = SameProcessBlobConstructorParams(addRefedBlobImpl); } else { + // BlobData is going to be populate here and it _must_ be send via IPC in + // order to avoid leaks. BlobData blobData; - BlobDataFromBlobImpl(aBlobImpl, blobData); + BlobDataFromBlobImpl(aManager, aBlobImpl, blobData); nsString contentType; aBlobImpl->GetType(contentType); diff --git a/dom/ipc/DOMTypes.ipdlh b/dom/ipc/DOMTypes.ipdlh index d792ce355f92..e1782ac39042 100644 --- a/dom/ipc/DOMTypes.ipdlh +++ b/dom/ipc/DOMTypes.ipdlh @@ -5,6 +5,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ include protocol PBlob; +include protocol PSendStream; +include IPCStream; include ProtocolTypes; using struct mozilla::void_t @@ -43,7 +45,7 @@ union BlobData nsID; // For memory-backed blobs. - uint8_t[]; + IPCStream; // For multiplex blobs. BlobData[]; diff --git a/dom/ipc/PBlob.ipdl b/dom/ipc/PBlob.ipdl index 2041d390a281..3e758fe923f1 100644 --- a/dom/ipc/PBlob.ipdl +++ b/dom/ipc/PBlob.ipdl @@ -7,6 +7,7 @@ include protocol PBlobStream; include protocol PContent; include protocol PContentBridge; include protocol PFileDescriptorSet; +include protocol PSendStream; include BlobTypes; include DOMTypes; From 12505a2885a7580a6da6b232f983596444c1fcfb Mon Sep 17 00:00:00 2001 From: Kim Moir Date: Wed, 21 Sep 2016 08:47:14 -0400 Subject: [PATCH 023/117] Bug 1303590 - Remove Luciddream test suite r=aobreja --- testing/luciddream/README.md | 59 ------- .../luciddream/example-tests/luciddream.ini | 1 - testing/luciddream/example-tests/test.js | 6 - .../luciddream/example-tests/test_sample.py | 15 -- testing/luciddream/luciddream/__init__.py | 111 ------------- .../luciddream/luciddream/runluciddream.py | 157 ------------------ testing/luciddream/mach_commands.py | 97 ----------- testing/luciddream/requirements.txt | 2 - testing/luciddream/setup.py | 43 ----- .../configs/luciddream/linux_config.py | 65 -------- 10 files changed, 556 deletions(-) delete mode 100644 testing/luciddream/README.md delete mode 100644 testing/luciddream/example-tests/luciddream.ini delete mode 100644 testing/luciddream/example-tests/test.js delete mode 100644 testing/luciddream/example-tests/test_sample.py delete mode 100644 testing/luciddream/luciddream/__init__.py delete mode 100644 testing/luciddream/luciddream/runluciddream.py delete mode 100644 testing/luciddream/mach_commands.py delete mode 100644 testing/luciddream/requirements.txt delete mode 100644 testing/luciddream/setup.py delete mode 100644 testing/mozharness/configs/luciddream/linux_config.py diff --git a/testing/luciddream/README.md b/testing/luciddream/README.md deleted file mode 100644 index f9aeab079fd8..000000000000 --- a/testing/luciddream/README.md +++ /dev/null @@ -1,59 +0,0 @@ -Luciddream is a test harness for running tests between a Firefox browser and another device, such as a Firefox OS emulator. - -The primary goal of the project is to be able to test the Firefox Developer Tools' [remote debugging feature](https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging), where the developer tools can be used to debug web content running in another browser or device. Mozilla currently doesn't have any automated testing of this feature, so getting some automated tests running is a high priority. - -The first planned milestone (for Q4 2014) is to stand up a prototype of a harness, in the process figuring out what the harness will look like and what tests will look like. This work is tracked in [bug 1064253](https://bugzilla.mozilla.org/show_bug.cgi?id=1064253) and is nearing completion. The current harness is based on the [Marionette Test Runner](https://developer.mozilla.org/en-US/docs/Marionette_Test_Runner), and tests right now are a subclass of [Marionette Python tests](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/Marionette_Python_Tests). - -The second planned milestone (for Q1 2015) is to get the harness running in Mozilla's continuous integration environment. Whether this will be in the legacy Buildbot environment or the new TaskCluster environment is yet to be determined. The bare minimum for this milestone will be having the tests run per-checkin against a Firefox Linux desktop build and a Firefox OS emulator both built from the same changeset. A stretch goal for this milestone will be to get tests running against a Firefox Linux desktop build per-checkin paired with stable release builds of the Firefox OS emulator, to be able to test backwards-compatibility of remote debugging. It's likely that as part of this work the repository of record will move from GitHub to mozilla-central, and the harness may be renamed from the current codename to a more descriptive (but less fun) name. - -Future directions will likely include testing Firefox desktop remote debugging against other platforms, such as Firefox for Android, desktop Chrome, Chrome for Android, and Safari on iOS. - -Points of Contact -================= - -The primary developer of this project is Ted Mielczarek (@luser), ted on irc.mozilla.org, :ted in bugzilla.mozilla.org. - -The primary DevTools point of contact is Alexandre Poirot (@ochameau), ochameau on irc.mozilla.org, :ochameau in bugzilla.mozilla.org. - -Installation and Configuration -============================== - -Currently running Luciddream is only supported on Linux, as the Firefox OS emulator is only well-supported there. - -Install this module and its Python prerequisites in a virtualenv: -``` - virtualenv ./ve - . ./ve/bin/activate - python setup.py develop -``` - -[Download a Firefox build](http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/) (if you don't already have one). - - -Download one of: -* [A Firefox OS emulator build](http://pvtbuilds.pvt.build.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-emulator/) (if you don't already have one, this link requires Mozilla VPN access). -* [A B2G desktop build](http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/) - - -Unzip both your Firefox and your Firefox OS emulator/B2G desktop somewhere. - -If you're on a 64-bit Ubuntu, you may need to do some fiddling to ensure you have the 32-bit OpenGL libraries available. See the "Solution : have both 32bit and 64bit OpenGL libs installed, with the right symlinks" section [in this blog post](http://rishav006.wordpress.com/2014/05/19/how-to-build-b2g-emulator-in-linux-environment/). - - -Running Tests -============= - -To run with a Firefox OS emulator: -``` -runluciddream --b2gpath /path/to/b2g-distro/ --browser-path /path/to/firefox/firefox example-tests/luciddream.ini -``` - -To run with B2G desktop: -``` -runluciddream --b2g-desktop-path /path/to/b2g/b2g --browser-path /path/to/firefox/firefox example-tests/luciddream.ini -``` - -If you're using a locally-built B2G desktop build which doesn't have a Gaia profile included you should get Gaia and build a profile, and then pass that in with the `--gaia-profile` option: -``` -runluciddream --b2g-desktop-path /path/to/obj-b2g/dist/bin/b2g --gaia-profile /path/to/gaia/profile --browser-path /path/to/firefox/firefox example-tests/luciddream.ini -``` diff --git a/testing/luciddream/example-tests/luciddream.ini b/testing/luciddream/example-tests/luciddream.ini deleted file mode 100644 index 824123e25abe..000000000000 --- a/testing/luciddream/example-tests/luciddream.ini +++ /dev/null @@ -1 +0,0 @@ -[test_sample.py] diff --git a/testing/luciddream/example-tests/test.js b/testing/luciddream/example-tests/test.js deleted file mode 100644 index 6d83e76ec9a0..000000000000 --- a/testing/luciddream/example-tests/test.js +++ /dev/null @@ -1,6 +0,0 @@ -ok(true, "Assertion from a JS script!"); -//ok(false, "test failure"); -setTimeout(function() { - ok(true, "Assertion from setTimeout!"); - finish(); -}, 15); diff --git a/testing/luciddream/example-tests/test_sample.py b/testing/luciddream/example-tests/test_sample.py deleted file mode 100644 index 6e7df1c5265f..000000000000 --- a/testing/luciddream/example-tests/test_sample.py +++ /dev/null @@ -1,15 +0,0 @@ -# Any copyright is dedicated to the Public Domain. -# http://creativecommons.org/publicdomain/zero/1.0/ - -from luciddream import LucidDreamTestCase - -class TestSample(LucidDreamTestCase): - def test_sample(self): - #TODO: make this better - self.assertIsNotNone(self.marionette.session) - self.assertIsNotNone(self.browser.session) - - def test_js(self): - 'Test that we can run a JavaScript test in both Marionette instances' - self.run_js_test('test.js', self.marionette) - self.run_js_test('test.js', self.browser) diff --git a/testing/luciddream/luciddream/__init__.py b/testing/luciddream/luciddream/__init__.py deleted file mode 100644 index 54128e68b64d..000000000000 --- a/testing/luciddream/luciddream/__init__.py +++ /dev/null @@ -1,111 +0,0 @@ -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -import os -import sys -from marionette.marionette_test import MarionetteTestCase, MarionetteJSTestCase -from marionette_driver.errors import ScriptTimeoutException - -class LucidDreamTestCase(MarionetteTestCase): - def __init__(self, marionette_weakref, browser=None, logger=None, **kwargs): - self.browser = browser - self.logger = logger - MarionetteTestCase.__init__(self, marionette_weakref, **kwargs) - - def run_js_test(self, filename, marionette): - ''' - Run a JavaScript test file and collect its set of assertions - into the current test's results. - - :param filename: The path to the JavaScript test file to execute. - May be relative to the current script. - :param marionette: The Marionette object in which to execute the test. - ''' - caller_file = sys._getframe(1).f_globals.get('__file__', '') - caller_file = os.path.abspath(caller_file) - script = os.path.join(os.path.dirname(caller_file), filename) - self.assert_(os.path.exists(script), 'Script "%s" must exist' % script) - if hasattr(MarionetteTestCase, 'run_js_test'): - return MarionetteTestCase.run_js_test(self, script, marionette) - #XXX: copy/pasted from marionette_test.py, refactor this! - f = open(script, 'r') - js = f.read() - args = [] - - head_js = MarionetteJSTestCase.head_js_re.search(js); - if head_js: - head_js = head_js.group(3) - head = open(os.path.join(os.path.dirname(script), head_js), 'r') - js = head.read() + js; - - context = MarionetteJSTestCase.context_re.search(js) - if context: - context = context.group(3) - else: - context = 'content' - marionette.set_context(context) - - if context != "chrome": - marionette.navigate('data:text/html,test page') - - timeout = MarionetteJSTestCase.timeout_re.search(js) - if timeout: - timeout = timeout.group(3) - marionette.set_script_timeout(timeout) - - inactivity_timeout = MarionetteJSTestCase.inactivity_timeout_re.search(js) - if inactivity_timeout: - inactivity_timeout = inactivity_timeout.group(3) - - try: - results = marionette.execute_js_script(js, - args, - special_powers=True, - inactivity_timeout=inactivity_timeout, - filename=os.path.basename(script)) - - self.assertTrue(not 'timeout' in script, - 'expected timeout not triggered') - - if 'fail' in script: - self.assertTrue(len(results['failures']) > 0, - "expected test failures didn't occur") - else: - for failure in results['failures']: - diag = "" if failure.get('diag') is None else failure['diag'] - name = "got false, expected true" if failure.get('name') is None else failure['name'] - self.logger.test_status(self.test_name, name, 'FAIL', - message=diag) - for failure in results['expectedFailures']: - diag = "" if failure.get('diag') is None else failure['diag'] - name = "got false, expected false" if failure.get('name') is None else failure['name'] - self.logger.test_status(self.test_name, name, 'FAIL', - expected='FAIL', message=diag) - for failure in results['unexpectedSuccesses']: - diag = "" if failure.get('diag') is None else failure['diag'] - name = "got true, expected false" if failure.get('name') is None else failure['name'] - self.logger.test_status(self.test_name, name, 'PASS', - expected='FAIL', message=diag) - self.assertEqual(0, len(results['failures']), - '%d tests failed' % len(results['failures'])) - if len(results['unexpectedSuccesses']) > 0: - raise _UnexpectedSuccess('') - if len(results['expectedFailures']) > 0: - raise _ExpectedFailure((AssertionError, AssertionError(''), None)) - - self.assertTrue(results['passed'] - + len(results['failures']) - + len(results['expectedFailures']) - + len(results['unexpectedSuccesses']) > 0, - 'no tests run') - - except ScriptTimeoutException: - if 'timeout' in script: - # expected exception - pass - else: - self.loglines = marionette.get_logs() - raise diff --git a/testing/luciddream/luciddream/runluciddream.py b/testing/luciddream/luciddream/runluciddream.py deleted file mode 100644 index 6b7c133e28de..000000000000 --- a/testing/luciddream/luciddream/runluciddream.py +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env python -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# - -from __future__ import print_function -import argparse -import os -import sys - -from luciddream import LucidDreamTestCase -from marionette import Marionette -from marionette.runner import BaseMarionetteTestRunner -import marionette -import mozlog - - -class CommandLineError(Exception): - pass - - -def validate_options(options): - if not (options.emulator_path or options.b2g_desktop_path): - raise CommandLineError('You must specify --emulator-path or ' + - '--b2g-desktop-path') - if options.emulator_path and options.b2g_desktop_path: - raise CommandLineError('You may only use one of --emulator-path or ' + - '--b2g-desktop-path') - if options.gaia_profile and options.emulator_path: - raise CommandLineError('You may not use --gaia-profile with ' + - '--emulator-path') - if not options.browser_path: - raise CommandLineError('You must specify --browser-path') - if not os.path.isfile(options.manifest): - raise CommandLineError('The manifest at "%s" does not exist!' - % options.manifest) - - -# BaseMarionetteOptions has a lot of stuff we don't care about, and -# it seems hard to apply directly to this problem. We can revisit this -# decision later if necessary. -def parse_args(in_args): - parser = argparse.ArgumentParser(description='Run Luciddream tests.') - parser.add_argument('--emulator-arch', dest='emulator_arch', action='store', - default='arm', - help='Architecture of emulator to use: x86 or arm') - parser.add_argument('--emulator-path', dest='emulator_path', action='store', - help='path to B2G repo or qemu dir') - parser.add_argument('--b2g-desktop-path', dest='b2g_desktop_path', - action='store', - help='path to B2G desktop binary') - parser.add_argument('--browser-path', dest='browser_path', action='store', - help='path to Firefox binary') - parser.add_argument('--gaia-profile', dest='gaia_profile', action='store', - help='path to Gaia profile') - parser.add_argument('--startup-timeout', dest='startup_timeout', action='store', - default=60, type=int, - help='max time to wait for Marionette to be available after launching binary') - parser.add_argument('manifest', metavar='MANIFEST', action='store', - help='path to manifest of tests to run') - mozlog.commandline.add_logging_group(parser) - - args = parser.parse_args(in_args) - try: - validate_options(args) - return args - except CommandLineError as e: - print('Error: ', e.args[0], file=sys.stderr) - parser.print_help() - raise - - -class LucidDreamTestRunner(BaseMarionetteTestRunner): - def __init__(self, **kwargs): - BaseMarionetteTestRunner.__init__(self, **kwargs) - #TODO: handle something like MarionetteJSTestCase - self.test_handlers = [LucidDreamTestCase] - - -def start_browser(browser_path, app_args, startup_timeout): - ''' - Start a Firefox browser and return a Marionette instance that - can talk to it. - ''' - marionette = Marionette( - bin=browser_path, - # Need to avoid the browser and emulator's ports stepping - # on each others' toes. - port=2929, - app_args=app_args, - gecko_log="firefox.log", - startup_timeout=startup_timeout - ) - runner = marionette.runner - if runner: - runner.start() - marionette.wait_for_port() - marionette.start_session() - marionette.set_context(marionette.CONTEXT_CHROME) - return marionette - - -# TODO: make ../../marionette/harness/marionette/runtests.py importable -# so we can just use cli from there. A lot of this is copy/paste from that function. -def run(browser_path=None, b2g_desktop_path=None, emulator_path=None, - emulator_arch=None, gaia_profile=None, manifest=None, browser_args=None, - **kwargs): - # It's sort of debatable here whether the marionette instance managed - # by the test runner should be the browser or the emulator. Right now - # it's the emulator because it feels like there's more fiddly setup around - # that, but longer-term if we want to run tests against different - # (non-B2G) targets this won't match up very well, so maybe it ought to - # be the browser? - browser = start_browser(browser_path, browser_args, kwargs['startup_timeout']) - - kwargs["browser"] = browser - if not "logger" in kwargs: - logger = mozlog.commandline.setup_logging( - "luciddream", kwargs, {"tbpl": sys.stdout}) - kwargs["logger"] = logger - - if emulator_path: - kwargs['homedir'] = emulator_path - kwargs['emulator'] = emulator_arch - elif b2g_desktop_path: - # Work around bug 859952 - if '-bin' not in b2g_desktop_path: - if b2g_desktop_path.endswith('.exe'): - newpath = b2g_desktop_path[:-4] + '-bin.exe' - else: - newpath = b2g_desktop_path + '-bin' - if os.path.exists(newpath): - b2g_desktop_path = newpath - kwargs['binary'] = b2g_desktop_path - kwargs['app'] = 'b2gdesktop' - if gaia_profile: - kwargs['profile'] = gaia_profile - else: - kwargs['profile'] = os.path.join( - os.path.dirname(b2g_desktop_path), - 'gaia', - 'profile' - ) - runner = LucidDreamTestRunner(**kwargs) - runner.run_tests([manifest]) - if runner.failed > 0: - sys.exit(10) - sys.exit(0) - -def main(): - args = parse_args(sys.argv[1:]) - run(**vars(args)) - -if __name__ == '__main__': - main() diff --git a/testing/luciddream/mach_commands.py b/testing/luciddream/mach_commands.py deleted file mode 100644 index 6e2f14b11dd8..000000000000 --- a/testing/luciddream/mach_commands.py +++ /dev/null @@ -1,97 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Integrates luciddream test runner with mach. - -from __future__ import absolute_import - -import os - -from mozbuild.base import ( - MachCommandBase, - MachCommandConditions as conditions, - MozbuildObject, -) - -from mach.decorators import ( - CommandArgument, - CommandProvider, - Command, -) - -class LucidDreamRunner(MozbuildObject): - """Run luciddream tests.""" - def run_tests(self, **kwargs): - self._run_make(target='jetpack-tests') - -@CommandProvider -class MachCommands(MachCommandBase): - @Command('luciddream', category='testing', - description='Run the luciddream test suite (remote debugging).') - @CommandArgument("--consoles", action="store_true", - help="Open jsconsole in both runtimes.") - @CommandArgument('--b2g-desktop', dest="b2g_desktop_path", type=str, default=None, - help='Path to b2g desktop binary.') - @CommandArgument('--browser', dest="browser_path", type=str, default=None, - help='Path to firefox binary.') - @CommandArgument('--gaia-profile', type=str, default=None, - help='Path to gaia profile, optional, if not bundled with b2g desktop.') - @CommandArgument('--emulator', dest="emulator_path", type=str, default=None, - help='Path to android emulator.') - @CommandArgument('--emulator-arch', type=str, default="arm", - help='Emulator arch: x86 or arm.') - @CommandArgument('test_paths', default=None, nargs='*', metavar='TEST', - help='Test to run. Can be specified as a single file, a ' - 'directory, or omitted. If omitted, the entire test suite is ' - 'executed.') - def run_luciddream_test(self, browser_path, b2g_desktop_path, test_paths, consoles, **params): - # import luciddream lazily as its marionette dependency make ./mach clobber fails - # early on TBPL - import luciddream.runluciddream - - # get_binary_path is going to throw if we haven't built any product - # but luciddream can still be run if we provide both binaries... - binary_path=False - try: - binary_path = self.get_binary_path() - except Exception: - pass - - # otherwise, if we have a build, automatically fetch the binary - if conditions.is_b2g(self): - if not b2g_desktop_path and binary_path: - b2g_desktop_path = binary_path - else: - if not browser_path and binary_path: - browser_path = binary_path - - if not browser_path: - print "Need firefox binary path via --browser_path argument" - return 1 - elif not os.path.exists(browser_path): - print "Firefox binary doesn't exists: " + browser_path - return 1 - - if not b2g_desktop_path: - print "Need b2g desktop binary path via --b2g-desktop argument" - return 1 - elif not os.path.exists(b2g_desktop_path): - print "B2G desktop binary doesn't exists: " + b2g_desktop_path - return 1 - - if not test_paths or len(test_paths) == 0: - print "Please specify a test manifest to run" - return 1 - - browser_args = None - if consoles: - browser_args = ["-jsconsole"] - if "app_args" in params and isinstance(params["app_args"], list): - params["app_args"].append("-jsconsole") - else: - params["app_args"] = ["-jsconsole"] - - for test in test_paths: - luciddream.runluciddream.run(browser_path=browser_path, b2g_desktop_path=b2g_desktop_path, - manifest=test, browser_args=browser_args, **params) diff --git a/testing/luciddream/requirements.txt b/testing/luciddream/requirements.txt deleted file mode 100644 index 514d955d5424..000000000000 --- a/testing/luciddream/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -marionette-client >= 1.1.0 -mozlog >= 3.0 diff --git a/testing/luciddream/setup.py b/testing/luciddream/setup.py deleted file mode 100644 index 8b70ed15126b..000000000000 --- a/testing/luciddream/setup.py +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env python -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this file, -# You can obtain one at http://mozilla.org/MPL/2.0/. -# - -import os -from setuptools import setup, find_packages - -try: - here = os.path.dirname(os.path.abspath(__file__)) - description = file(os.path.join(here, 'README.md')).read() -except IOError: - description = '' - -version = '0.1' - -dependencies = open('requirements.txt', 'r').read().splitlines() - -setup( - name='luciddream', - version=version, - description=''' - Luciddream is a test harness for running tests between - a Firefox browser and another device, such as a Firefox OS - emulator. - ''', - long_description=description, - classifiers=[], # Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers - author='Ted Mielczarek', - author_email='ted@mielczarek.org', - url='', - license='MPL 2.0', - packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), - include_package_data=True, - package_data={'': ['*.js', '*.css', '*.html', '*.txt', '*.xpi', '*.rdf', '*.xul', '*.jsm', '*.xml'],}, - zip_safe=False, - install_requires=dependencies, - entry_points = { - 'console_scripts': ['runluciddream=luciddream.runluciddream:main'], - } - ) diff --git a/testing/mozharness/configs/luciddream/linux_config.py b/testing/mozharness/configs/luciddream/linux_config.py deleted file mode 100644 index 566f305c3f76..000000000000 --- a/testing/mozharness/configs/luciddream/linux_config.py +++ /dev/null @@ -1,65 +0,0 @@ -# This is a template config file for luciddream production. -import os -import platform - -HG_SHARE_BASE_DIR = "/builds/hg-shared" - -if platform.system().lower() == 'darwin': - xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/4d8d7a37d90c34a2a2fda3066a8fe85c189b183d05389cb957fc6fed31f10a6924e50c1b84488ff61c015293803f58a3aed5d4819374d04c8e0ee2b9e3997278" -else: - xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/dc9503b21c87b5a469118746f99e4f41d73888972ce735fa10a80f6d218086da0e3da525d9a4cd8e4ea497ec199fef720e4a525873d77a1af304ac505e076462" - -config = { - # mozharness script options - "xre_url": xre_url, - "b2gdesktop_url": "http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/2015/03/2015-03-09-00-25-06-mozilla-b2g37_v2_2/b2g-37.0.multi.linux-i686.tar.bz2", - - # mozharness configuration - "vcs_share_base": HG_SHARE_BASE_DIR, - "exes": { - 'python': '/tools/buildbot/bin/python', - 'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'], - 'tooltool.py': "/tools/tooltool.py", - 'gittool.py': '%(abs_tools_dir)s/buildfarm/utils/gittool.py', - }, - - "find_links": [ - "http://pypi.pvt.build.mozilla.org/pub", - "http://pypi.pub.build.mozilla.org/pub", - ], - "pip_index": False, - - "suite_definitions": { - "luciddream-emulator": { - "options": [ - "--startup-timeout=300", - "--log-raw=%(raw_log_file)s", - "--log-errorsummary=%(error_summary_file)s", - "--browser-path=%(browser_path)s", - "--b2gpath=%(emulator_path)s", - "%(test_manifest)s" - ], - }, - "luciddream-b2gdt": { - "options": [ - "--startup-timeout=300", - "--log-raw=%(raw_log_file)s", - "--log-errorsummary=%(error_summary_file)s", - "--browser-path=%(browser_path)s", - "--b2g-desktop-path=%(fxos_desktop_path)s", - "--gaia-profile=%(gaia_profile)s", - "%(test_manifest)s" - ], - }, - }, - - "buildbot_json_path": "buildprops.json", - - "default_blob_upload_servers": [ - "https://blobupload.elasticbeanstalk.com", - ], - "blob_uploader_auth_file": os.path.join(os.getcwd(), "oauth.txt"), - "download_symbols": "ondemand", - "download_minidump_stackwalk": True, - "tooltool_cache": "/builds/tooltool_cache", -} From 269f7bed666628a23e57aca26f981b3341f31cc5 Mon Sep 17 00:00:00 2001 From: Kim Moir Date: Wed, 21 Sep 2016 08:55:24 -0400 Subject: [PATCH 024/117] revert Bug 1303590 - Remove Luciddream test suite r=aobreja CLOSED TREE --HG-- extra : amend_source : a2d0c8af24e3dbc6e8c3cd01847deea295209e8c --- testing/luciddream/README.md | 59 +++++++ .../luciddream/example-tests/luciddream.ini | 1 + testing/luciddream/example-tests/test.js | 6 + .../luciddream/example-tests/test_sample.py | 15 ++ testing/luciddream/luciddream/__init__.py | 111 +++++++++++++ .../luciddream/luciddream/runluciddream.py | 157 ++++++++++++++++++ testing/luciddream/mach_commands.py | 97 +++++++++++ testing/luciddream/requirements.txt | 2 + testing/luciddream/setup.py | 43 +++++ .../configs/luciddream/linux_config.py | 65 ++++++++ 10 files changed, 556 insertions(+) create mode 100644 testing/luciddream/README.md create mode 100644 testing/luciddream/example-tests/luciddream.ini create mode 100644 testing/luciddream/example-tests/test.js create mode 100644 testing/luciddream/example-tests/test_sample.py create mode 100644 testing/luciddream/luciddream/__init__.py create mode 100644 testing/luciddream/luciddream/runluciddream.py create mode 100644 testing/luciddream/mach_commands.py create mode 100644 testing/luciddream/requirements.txt create mode 100644 testing/luciddream/setup.py create mode 100644 testing/mozharness/configs/luciddream/linux_config.py diff --git a/testing/luciddream/README.md b/testing/luciddream/README.md new file mode 100644 index 000000000000..f9aeab079fd8 --- /dev/null +++ b/testing/luciddream/README.md @@ -0,0 +1,59 @@ +Luciddream is a test harness for running tests between a Firefox browser and another device, such as a Firefox OS emulator. + +The primary goal of the project is to be able to test the Firefox Developer Tools' [remote debugging feature](https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging), where the developer tools can be used to debug web content running in another browser or device. Mozilla currently doesn't have any automated testing of this feature, so getting some automated tests running is a high priority. + +The first planned milestone (for Q4 2014) is to stand up a prototype of a harness, in the process figuring out what the harness will look like and what tests will look like. This work is tracked in [bug 1064253](https://bugzilla.mozilla.org/show_bug.cgi?id=1064253) and is nearing completion. The current harness is based on the [Marionette Test Runner](https://developer.mozilla.org/en-US/docs/Marionette_Test_Runner), and tests right now are a subclass of [Marionette Python tests](https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/Marionette_Python_Tests). + +The second planned milestone (for Q1 2015) is to get the harness running in Mozilla's continuous integration environment. Whether this will be in the legacy Buildbot environment or the new TaskCluster environment is yet to be determined. The bare minimum for this milestone will be having the tests run per-checkin against a Firefox Linux desktop build and a Firefox OS emulator both built from the same changeset. A stretch goal for this milestone will be to get tests running against a Firefox Linux desktop build per-checkin paired with stable release builds of the Firefox OS emulator, to be able to test backwards-compatibility of remote debugging. It's likely that as part of this work the repository of record will move from GitHub to mozilla-central, and the harness may be renamed from the current codename to a more descriptive (but less fun) name. + +Future directions will likely include testing Firefox desktop remote debugging against other platforms, such as Firefox for Android, desktop Chrome, Chrome for Android, and Safari on iOS. + +Points of Contact +================= + +The primary developer of this project is Ted Mielczarek (@luser), ted on irc.mozilla.org, :ted in bugzilla.mozilla.org. + +The primary DevTools point of contact is Alexandre Poirot (@ochameau), ochameau on irc.mozilla.org, :ochameau in bugzilla.mozilla.org. + +Installation and Configuration +============================== + +Currently running Luciddream is only supported on Linux, as the Firefox OS emulator is only well-supported there. + +Install this module and its Python prerequisites in a virtualenv: +``` + virtualenv ./ve + . ./ve/bin/activate + python setup.py develop +``` + +[Download a Firefox build](http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/) (if you don't already have one). + + +Download one of: +* [A Firefox OS emulator build](http://pvtbuilds.pvt.build.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-emulator/) (if you don't already have one, this link requires Mozilla VPN access). +* [A B2G desktop build](http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/) + + +Unzip both your Firefox and your Firefox OS emulator/B2G desktop somewhere. + +If you're on a 64-bit Ubuntu, you may need to do some fiddling to ensure you have the 32-bit OpenGL libraries available. See the "Solution : have both 32bit and 64bit OpenGL libs installed, with the right symlinks" section [in this blog post](http://rishav006.wordpress.com/2014/05/19/how-to-build-b2g-emulator-in-linux-environment/). + + +Running Tests +============= + +To run with a Firefox OS emulator: +``` +runluciddream --b2gpath /path/to/b2g-distro/ --browser-path /path/to/firefox/firefox example-tests/luciddream.ini +``` + +To run with B2G desktop: +``` +runluciddream --b2g-desktop-path /path/to/b2g/b2g --browser-path /path/to/firefox/firefox example-tests/luciddream.ini +``` + +If you're using a locally-built B2G desktop build which doesn't have a Gaia profile included you should get Gaia and build a profile, and then pass that in with the `--gaia-profile` option: +``` +runluciddream --b2g-desktop-path /path/to/obj-b2g/dist/bin/b2g --gaia-profile /path/to/gaia/profile --browser-path /path/to/firefox/firefox example-tests/luciddream.ini +``` diff --git a/testing/luciddream/example-tests/luciddream.ini b/testing/luciddream/example-tests/luciddream.ini new file mode 100644 index 000000000000..824123e25abe --- /dev/null +++ b/testing/luciddream/example-tests/luciddream.ini @@ -0,0 +1 @@ +[test_sample.py] diff --git a/testing/luciddream/example-tests/test.js b/testing/luciddream/example-tests/test.js new file mode 100644 index 000000000000..6d83e76ec9a0 --- /dev/null +++ b/testing/luciddream/example-tests/test.js @@ -0,0 +1,6 @@ +ok(true, "Assertion from a JS script!"); +//ok(false, "test failure"); +setTimeout(function() { + ok(true, "Assertion from setTimeout!"); + finish(); +}, 15); diff --git a/testing/luciddream/example-tests/test_sample.py b/testing/luciddream/example-tests/test_sample.py new file mode 100644 index 000000000000..6e7df1c5265f --- /dev/null +++ b/testing/luciddream/example-tests/test_sample.py @@ -0,0 +1,15 @@ +# Any copyright is dedicated to the Public Domain. +# http://creativecommons.org/publicdomain/zero/1.0/ + +from luciddream import LucidDreamTestCase + +class TestSample(LucidDreamTestCase): + def test_sample(self): + #TODO: make this better + self.assertIsNotNone(self.marionette.session) + self.assertIsNotNone(self.browser.session) + + def test_js(self): + 'Test that we can run a JavaScript test in both Marionette instances' + self.run_js_test('test.js', self.marionette) + self.run_js_test('test.js', self.browser) diff --git a/testing/luciddream/luciddream/__init__.py b/testing/luciddream/luciddream/__init__.py new file mode 100644 index 000000000000..54128e68b64d --- /dev/null +++ b/testing/luciddream/luciddream/__init__.py @@ -0,0 +1,111 @@ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +import os +import sys +from marionette.marionette_test import MarionetteTestCase, MarionetteJSTestCase +from marionette_driver.errors import ScriptTimeoutException + +class LucidDreamTestCase(MarionetteTestCase): + def __init__(self, marionette_weakref, browser=None, logger=None, **kwargs): + self.browser = browser + self.logger = logger + MarionetteTestCase.__init__(self, marionette_weakref, **kwargs) + + def run_js_test(self, filename, marionette): + ''' + Run a JavaScript test file and collect its set of assertions + into the current test's results. + + :param filename: The path to the JavaScript test file to execute. + May be relative to the current script. + :param marionette: The Marionette object in which to execute the test. + ''' + caller_file = sys._getframe(1).f_globals.get('__file__', '') + caller_file = os.path.abspath(caller_file) + script = os.path.join(os.path.dirname(caller_file), filename) + self.assert_(os.path.exists(script), 'Script "%s" must exist' % script) + if hasattr(MarionetteTestCase, 'run_js_test'): + return MarionetteTestCase.run_js_test(self, script, marionette) + #XXX: copy/pasted from marionette_test.py, refactor this! + f = open(script, 'r') + js = f.read() + args = [] + + head_js = MarionetteJSTestCase.head_js_re.search(js); + if head_js: + head_js = head_js.group(3) + head = open(os.path.join(os.path.dirname(script), head_js), 'r') + js = head.read() + js; + + context = MarionetteJSTestCase.context_re.search(js) + if context: + context = context.group(3) + else: + context = 'content' + marionette.set_context(context) + + if context != "chrome": + marionette.navigate('data:text/html,test page') + + timeout = MarionetteJSTestCase.timeout_re.search(js) + if timeout: + timeout = timeout.group(3) + marionette.set_script_timeout(timeout) + + inactivity_timeout = MarionetteJSTestCase.inactivity_timeout_re.search(js) + if inactivity_timeout: + inactivity_timeout = inactivity_timeout.group(3) + + try: + results = marionette.execute_js_script(js, + args, + special_powers=True, + inactivity_timeout=inactivity_timeout, + filename=os.path.basename(script)) + + self.assertTrue(not 'timeout' in script, + 'expected timeout not triggered') + + if 'fail' in script: + self.assertTrue(len(results['failures']) > 0, + "expected test failures didn't occur") + else: + for failure in results['failures']: + diag = "" if failure.get('diag') is None else failure['diag'] + name = "got false, expected true" if failure.get('name') is None else failure['name'] + self.logger.test_status(self.test_name, name, 'FAIL', + message=diag) + for failure in results['expectedFailures']: + diag = "" if failure.get('diag') is None else failure['diag'] + name = "got false, expected false" if failure.get('name') is None else failure['name'] + self.logger.test_status(self.test_name, name, 'FAIL', + expected='FAIL', message=diag) + for failure in results['unexpectedSuccesses']: + diag = "" if failure.get('diag') is None else failure['diag'] + name = "got true, expected false" if failure.get('name') is None else failure['name'] + self.logger.test_status(self.test_name, name, 'PASS', + expected='FAIL', message=diag) + self.assertEqual(0, len(results['failures']), + '%d tests failed' % len(results['failures'])) + if len(results['unexpectedSuccesses']) > 0: + raise _UnexpectedSuccess('') + if len(results['expectedFailures']) > 0: + raise _ExpectedFailure((AssertionError, AssertionError(''), None)) + + self.assertTrue(results['passed'] + + len(results['failures']) + + len(results['expectedFailures']) + + len(results['unexpectedSuccesses']) > 0, + 'no tests run') + + except ScriptTimeoutException: + if 'timeout' in script: + # expected exception + pass + else: + self.loglines = marionette.get_logs() + raise diff --git a/testing/luciddream/luciddream/runluciddream.py b/testing/luciddream/luciddream/runluciddream.py new file mode 100644 index 000000000000..6b7c133e28de --- /dev/null +++ b/testing/luciddream/luciddream/runluciddream.py @@ -0,0 +1,157 @@ +#!/usr/bin/env python +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +from __future__ import print_function +import argparse +import os +import sys + +from luciddream import LucidDreamTestCase +from marionette import Marionette +from marionette.runner import BaseMarionetteTestRunner +import marionette +import mozlog + + +class CommandLineError(Exception): + pass + + +def validate_options(options): + if not (options.emulator_path or options.b2g_desktop_path): + raise CommandLineError('You must specify --emulator-path or ' + + '--b2g-desktop-path') + if options.emulator_path and options.b2g_desktop_path: + raise CommandLineError('You may only use one of --emulator-path or ' + + '--b2g-desktop-path') + if options.gaia_profile and options.emulator_path: + raise CommandLineError('You may not use --gaia-profile with ' + + '--emulator-path') + if not options.browser_path: + raise CommandLineError('You must specify --browser-path') + if not os.path.isfile(options.manifest): + raise CommandLineError('The manifest at "%s" does not exist!' + % options.manifest) + + +# BaseMarionetteOptions has a lot of stuff we don't care about, and +# it seems hard to apply directly to this problem. We can revisit this +# decision later if necessary. +def parse_args(in_args): + parser = argparse.ArgumentParser(description='Run Luciddream tests.') + parser.add_argument('--emulator-arch', dest='emulator_arch', action='store', + default='arm', + help='Architecture of emulator to use: x86 or arm') + parser.add_argument('--emulator-path', dest='emulator_path', action='store', + help='path to B2G repo or qemu dir') + parser.add_argument('--b2g-desktop-path', dest='b2g_desktop_path', + action='store', + help='path to B2G desktop binary') + parser.add_argument('--browser-path', dest='browser_path', action='store', + help='path to Firefox binary') + parser.add_argument('--gaia-profile', dest='gaia_profile', action='store', + help='path to Gaia profile') + parser.add_argument('--startup-timeout', dest='startup_timeout', action='store', + default=60, type=int, + help='max time to wait for Marionette to be available after launching binary') + parser.add_argument('manifest', metavar='MANIFEST', action='store', + help='path to manifest of tests to run') + mozlog.commandline.add_logging_group(parser) + + args = parser.parse_args(in_args) + try: + validate_options(args) + return args + except CommandLineError as e: + print('Error: ', e.args[0], file=sys.stderr) + parser.print_help() + raise + + +class LucidDreamTestRunner(BaseMarionetteTestRunner): + def __init__(self, **kwargs): + BaseMarionetteTestRunner.__init__(self, **kwargs) + #TODO: handle something like MarionetteJSTestCase + self.test_handlers = [LucidDreamTestCase] + + +def start_browser(browser_path, app_args, startup_timeout): + ''' + Start a Firefox browser and return a Marionette instance that + can talk to it. + ''' + marionette = Marionette( + bin=browser_path, + # Need to avoid the browser and emulator's ports stepping + # on each others' toes. + port=2929, + app_args=app_args, + gecko_log="firefox.log", + startup_timeout=startup_timeout + ) + runner = marionette.runner + if runner: + runner.start() + marionette.wait_for_port() + marionette.start_session() + marionette.set_context(marionette.CONTEXT_CHROME) + return marionette + + +# TODO: make ../../marionette/harness/marionette/runtests.py importable +# so we can just use cli from there. A lot of this is copy/paste from that function. +def run(browser_path=None, b2g_desktop_path=None, emulator_path=None, + emulator_arch=None, gaia_profile=None, manifest=None, browser_args=None, + **kwargs): + # It's sort of debatable here whether the marionette instance managed + # by the test runner should be the browser or the emulator. Right now + # it's the emulator because it feels like there's more fiddly setup around + # that, but longer-term if we want to run tests against different + # (non-B2G) targets this won't match up very well, so maybe it ought to + # be the browser? + browser = start_browser(browser_path, browser_args, kwargs['startup_timeout']) + + kwargs["browser"] = browser + if not "logger" in kwargs: + logger = mozlog.commandline.setup_logging( + "luciddream", kwargs, {"tbpl": sys.stdout}) + kwargs["logger"] = logger + + if emulator_path: + kwargs['homedir'] = emulator_path + kwargs['emulator'] = emulator_arch + elif b2g_desktop_path: + # Work around bug 859952 + if '-bin' not in b2g_desktop_path: + if b2g_desktop_path.endswith('.exe'): + newpath = b2g_desktop_path[:-4] + '-bin.exe' + else: + newpath = b2g_desktop_path + '-bin' + if os.path.exists(newpath): + b2g_desktop_path = newpath + kwargs['binary'] = b2g_desktop_path + kwargs['app'] = 'b2gdesktop' + if gaia_profile: + kwargs['profile'] = gaia_profile + else: + kwargs['profile'] = os.path.join( + os.path.dirname(b2g_desktop_path), + 'gaia', + 'profile' + ) + runner = LucidDreamTestRunner(**kwargs) + runner.run_tests([manifest]) + if runner.failed > 0: + sys.exit(10) + sys.exit(0) + +def main(): + args = parse_args(sys.argv[1:]) + run(**vars(args)) + +if __name__ == '__main__': + main() diff --git a/testing/luciddream/mach_commands.py b/testing/luciddream/mach_commands.py new file mode 100644 index 000000000000..6e2f14b11dd8 --- /dev/null +++ b/testing/luciddream/mach_commands.py @@ -0,0 +1,97 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# Integrates luciddream test runner with mach. + +from __future__ import absolute_import + +import os + +from mozbuild.base import ( + MachCommandBase, + MachCommandConditions as conditions, + MozbuildObject, +) + +from mach.decorators import ( + CommandArgument, + CommandProvider, + Command, +) + +class LucidDreamRunner(MozbuildObject): + """Run luciddream tests.""" + def run_tests(self, **kwargs): + self._run_make(target='jetpack-tests') + +@CommandProvider +class MachCommands(MachCommandBase): + @Command('luciddream', category='testing', + description='Run the luciddream test suite (remote debugging).') + @CommandArgument("--consoles", action="store_true", + help="Open jsconsole in both runtimes.") + @CommandArgument('--b2g-desktop', dest="b2g_desktop_path", type=str, default=None, + help='Path to b2g desktop binary.') + @CommandArgument('--browser', dest="browser_path", type=str, default=None, + help='Path to firefox binary.') + @CommandArgument('--gaia-profile', type=str, default=None, + help='Path to gaia profile, optional, if not bundled with b2g desktop.') + @CommandArgument('--emulator', dest="emulator_path", type=str, default=None, + help='Path to android emulator.') + @CommandArgument('--emulator-arch', type=str, default="arm", + help='Emulator arch: x86 or arm.') + @CommandArgument('test_paths', default=None, nargs='*', metavar='TEST', + help='Test to run. Can be specified as a single file, a ' + 'directory, or omitted. If omitted, the entire test suite is ' + 'executed.') + def run_luciddream_test(self, browser_path, b2g_desktop_path, test_paths, consoles, **params): + # import luciddream lazily as its marionette dependency make ./mach clobber fails + # early on TBPL + import luciddream.runluciddream + + # get_binary_path is going to throw if we haven't built any product + # but luciddream can still be run if we provide both binaries... + binary_path=False + try: + binary_path = self.get_binary_path() + except Exception: + pass + + # otherwise, if we have a build, automatically fetch the binary + if conditions.is_b2g(self): + if not b2g_desktop_path and binary_path: + b2g_desktop_path = binary_path + else: + if not browser_path and binary_path: + browser_path = binary_path + + if not browser_path: + print "Need firefox binary path via --browser_path argument" + return 1 + elif not os.path.exists(browser_path): + print "Firefox binary doesn't exists: " + browser_path + return 1 + + if not b2g_desktop_path: + print "Need b2g desktop binary path via --b2g-desktop argument" + return 1 + elif not os.path.exists(b2g_desktop_path): + print "B2G desktop binary doesn't exists: " + b2g_desktop_path + return 1 + + if not test_paths or len(test_paths) == 0: + print "Please specify a test manifest to run" + return 1 + + browser_args = None + if consoles: + browser_args = ["-jsconsole"] + if "app_args" in params and isinstance(params["app_args"], list): + params["app_args"].append("-jsconsole") + else: + params["app_args"] = ["-jsconsole"] + + for test in test_paths: + luciddream.runluciddream.run(browser_path=browser_path, b2g_desktop_path=b2g_desktop_path, + manifest=test, browser_args=browser_args, **params) diff --git a/testing/luciddream/requirements.txt b/testing/luciddream/requirements.txt new file mode 100644 index 000000000000..514d955d5424 --- /dev/null +++ b/testing/luciddream/requirements.txt @@ -0,0 +1,2 @@ +marionette-client >= 1.1.0 +mozlog >= 3.0 diff --git a/testing/luciddream/setup.py b/testing/luciddream/setup.py new file mode 100644 index 000000000000..8b70ed15126b --- /dev/null +++ b/testing/luciddream/setup.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this file, +# You can obtain one at http://mozilla.org/MPL/2.0/. +# + +import os +from setuptools import setup, find_packages + +try: + here = os.path.dirname(os.path.abspath(__file__)) + description = file(os.path.join(here, 'README.md')).read() +except IOError: + description = '' + +version = '0.1' + +dependencies = open('requirements.txt', 'r').read().splitlines() + +setup( + name='luciddream', + version=version, + description=''' + Luciddream is a test harness for running tests between + a Firefox browser and another device, such as a Firefox OS + emulator. + ''', + long_description=description, + classifiers=[], # Get strings from http://www.python.org/pypi?%3Aaction=list_classifiers + author='Ted Mielczarek', + author_email='ted@mielczarek.org', + url='', + license='MPL 2.0', + packages=find_packages(exclude=['ez_setup', 'examples', 'tests']), + include_package_data=True, + package_data={'': ['*.js', '*.css', '*.html', '*.txt', '*.xpi', '*.rdf', '*.xul', '*.jsm', '*.xml'],}, + zip_safe=False, + install_requires=dependencies, + entry_points = { + 'console_scripts': ['runluciddream=luciddream.runluciddream:main'], + } + ) diff --git a/testing/mozharness/configs/luciddream/linux_config.py b/testing/mozharness/configs/luciddream/linux_config.py new file mode 100644 index 000000000000..566f305c3f76 --- /dev/null +++ b/testing/mozharness/configs/luciddream/linux_config.py @@ -0,0 +1,65 @@ +# This is a template config file for luciddream production. +import os +import platform + +HG_SHARE_BASE_DIR = "/builds/hg-shared" + +if platform.system().lower() == 'darwin': + xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/4d8d7a37d90c34a2a2fda3066a8fe85c189b183d05389cb957fc6fed31f10a6924e50c1b84488ff61c015293803f58a3aed5d4819374d04c8e0ee2b9e3997278" +else: + xre_url = "https://api.pub.build.mozilla.org/tooltool/sha512/dc9503b21c87b5a469118746f99e4f41d73888972ce735fa10a80f6d218086da0e3da525d9a4cd8e4ea497ec199fef720e4a525873d77a1af304ac505e076462" + +config = { + # mozharness script options + "xre_url": xre_url, + "b2gdesktop_url": "http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/2015/03/2015-03-09-00-25-06-mozilla-b2g37_v2_2/b2g-37.0.multi.linux-i686.tar.bz2", + + # mozharness configuration + "vcs_share_base": HG_SHARE_BASE_DIR, + "exes": { + 'python': '/tools/buildbot/bin/python', + 'virtualenv': ['/tools/buildbot/bin/python', '/tools/misc-python/virtualenv.py'], + 'tooltool.py': "/tools/tooltool.py", + 'gittool.py': '%(abs_tools_dir)s/buildfarm/utils/gittool.py', + }, + + "find_links": [ + "http://pypi.pvt.build.mozilla.org/pub", + "http://pypi.pub.build.mozilla.org/pub", + ], + "pip_index": False, + + "suite_definitions": { + "luciddream-emulator": { + "options": [ + "--startup-timeout=300", + "--log-raw=%(raw_log_file)s", + "--log-errorsummary=%(error_summary_file)s", + "--browser-path=%(browser_path)s", + "--b2gpath=%(emulator_path)s", + "%(test_manifest)s" + ], + }, + "luciddream-b2gdt": { + "options": [ + "--startup-timeout=300", + "--log-raw=%(raw_log_file)s", + "--log-errorsummary=%(error_summary_file)s", + "--browser-path=%(browser_path)s", + "--b2g-desktop-path=%(fxos_desktop_path)s", + "--gaia-profile=%(gaia_profile)s", + "%(test_manifest)s" + ], + }, + }, + + "buildbot_json_path": "buildprops.json", + + "default_blob_upload_servers": [ + "https://blobupload.elasticbeanstalk.com", + ], + "blob_uploader_auth_file": os.path.join(os.getcwd(), "oauth.txt"), + "download_symbols": "ondemand", + "download_minidump_stackwalk": True, + "tooltool_cache": "/builds/tooltool_cache", +} From e53026e4bf86b3ca891d066f42571a71ead5c43e Mon Sep 17 00:00:00 2001 From: Eddy Bruel Date: Wed, 21 Sep 2016 15:31:40 +0200 Subject: [PATCH 025/117] Bug 1224073 - Use the Debugger.Object API to call Error.toString directly. r=bgrins --- .../browser_dbg_worker-console-02.js | 5 +-- devtools/server/actors/webconsole.js | 39 +++++++++++++----- devtools/shared/DevToolsUtils.js | 40 +++++++++++++++++++ 3 files changed, 71 insertions(+), 13 deletions(-) diff --git a/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-02.js b/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-02.js index de4e473fe693..b6e8d12af960 100644 --- a/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-02.js +++ b/devtools/client/debugger/test/mochitest/browser_dbg_worker-console-02.js @@ -43,9 +43,8 @@ add_task(function* testWhilePaused() { info("Trying to get the result of command3"); executed = yield command3; - // XXXworkers This is failing until Bug 1215120 is resolved. - todo(executed.textContent.includes("ReferenceError: foobar is not defined"), - "command3 executed successfully"); + ok(executed.textContent.includes("ReferenceError: foobar is not defined"), + "command3 executed successfully"); let onceResumed = gTarget.once("thread-resumed"); EventUtils.sendMouseEvent({ type: "mousedown" }, gResumeButton, gDebugger); diff --git a/devtools/server/actors/webconsole.js b/devtools/server/actors/webconsole.js index 3fa8dbcb043f..080cac9eadc4 100644 --- a/devtools/server/actors/webconsole.js +++ b/devtools/server/actors/webconsole.js @@ -898,17 +898,36 @@ WebConsoleActor.prototype = result = evalResult.yield; } else if ("throw" in evalResult) { let error = evalResult.throw; - errorGrip = this.createValueGrip(error); - // XXXworkers: Calling unsafeDereference() returns an object with no - // toString method in workers. See Bug 1215120. - let unsafeDereference = error && (typeof error === "object") && - error.unsafeDereference(); - errorMessage = unsafeDereference && unsafeDereference.toString - ? unsafeDereference.toString() - : String(error); - // It is possible that we won't have permission to unwrap an - // object and retrieve its errorMessageName. + errorGrip = this.createValueGrip(error); + + errorMessage = String(error); + if (typeof error === "object" && error !== null) { + try { + errorMessage = DevToolsUtils.callPropertyOnObject(error, "toString"); + } catch (e) { + // If the debuggee is not allowed to access the "toString" property + // of the error object, calling this property from the debuggee's + // compartment will fail. The debugger should show the error object + // as it is seen by the debuggee, so this behavior is correct. + // + // Unfortunately, we have at least one test that assumes calling the + // "toString" property of an error object will succeed if the + // debugger is allowed to access it, regardless of whether the + // debuggee is allowed to access it or not. + // + // To accomodate these tests, if calling the "toString" property + // from the debuggee compartment fails, we rewrap the error object + // in the debugger's compartment, and then call the "toString" + // property from there. + if (typeof error.unsafeDereference === "function") { + errorMessage = error.unsafeDereference().toString(); + } + } + } + + // It is possible that we won't have permission to unwrap an + // object and retrieve its errorMessageName. try { errorDocURL = ErrorDocs.GetURL(error); } catch (ex) {} diff --git a/devtools/shared/DevToolsUtils.js b/devtools/shared/DevToolsUtils.js index 3c57b029daa3..1cecf6159e77 100644 --- a/devtools/shared/DevToolsUtils.js +++ b/devtools/shared/DevToolsUtils.js @@ -636,3 +636,43 @@ function errorOnFlag(exports, name) { errorOnFlag(exports, "testing"); errorOnFlag(exports, "wantLogging"); errorOnFlag(exports, "wantVerbose"); + +// Calls the property with the given `name` on the given `object`, where +// `name` is a string, and `object` a Debugger.Object instance. +/// +// This function uses only the Debugger.Object API to call the property. It +// avoids the use of unsafeDeference. This is useful for example in workers, +// where unsafeDereference will return an opaque security wrapper to the +// referent. +function callPropertyOnObject(object, name) { + // Find the property. + let descriptor; + let proto = object; + do { + descriptor = proto.getOwnPropertyDescriptor(name); + if (descriptor !== undefined) { + break; + } + proto = proto.proto; + } while (proto !== null); + if (descriptor === undefined) { + throw new Error("No such property"); + } + let value = descriptor.value; + if (typeof value !== "object" || value === null || !("callable" in value)) { + throw new Error("Not a callable object."); + } + + // Call the property. + let result = value.call(object); + if (result === null) { + throw new Error("Code was terminated."); + } + if ("throw" in result) { + throw result.throw; + } + return result.return; +} + + +exports.callPropertyOnObject = callPropertyOnObject; From 58b6130e520f3dfd3af5c0f0a7df8d41b799f89b Mon Sep 17 00:00:00 2001 From: Prabhjyot Singh Sodhi Date: Wed, 21 Sep 2016 08:49:46 -0400 Subject: [PATCH 026/117] Bug 1280571 - Add testing/mochitest to the flake8 linter, r=ahal This also adds E402 (no imports at top of file) to the global ignore list. The other error codes added were previously ignored by default, but now that we have started a custom ignore list, need to be listed explicitly. MozReview-Commit-ID: RtMuVEX6i5 --HG-- extra : rebase_source : 939bc9354f5891c680513d7e9068d0438e169132 --- .flake8 | 2 + testing/mochitest/bisection.py | 32 ++++++++----- testing/mochitest/leaks.py | 24 ++++++---- testing/mochitest/mach_commands.py | 4 +- testing/mochitest/runrobocop.py | 12 ++--- testing/mochitest/runtests.py | 69 ++++++++++++++++------------- testing/mochitest/runtestsb2g.py | 6 ++- testing/mochitest/runtestsremote.py | 3 +- tools/lint/flake8.lint | 3 +- 9 files changed, 92 insertions(+), 63 deletions(-) diff --git a/.flake8 b/.flake8 index 3a5f65948dc1..e284d44cea70 100644 --- a/.flake8 +++ b/.flake8 @@ -1,3 +1,5 @@ [flake8] +# See http://pep8.readthedocs.io/en/latest/intro.html#configuration +ignore = E121, E123, E126, E133, E226, E241, E242, E704, W503, E402 max-line-length = 99 filename = *.py, +.lint diff --git a/testing/mochitest/bisection.py b/testing/mochitest/bisection.py index 9c6d69d2b513..b4eb4497d6af 100644 --- a/testing/mochitest/bisection.py +++ b/testing/mochitest/bisection.py @@ -15,7 +15,8 @@ class Bisect(object): self.max_failures = 3 def setup(self, tests): - "This method is used to initialize various variables that are required for test bisection" + """This method is used to initialize various variables that are required + for test bisection""" status = 0 self.contents.clear() # We need totalTests key in contents for sanity check @@ -25,7 +26,8 @@ class Bisect(object): return status def reset(self, expectedError, result): - "This method is used to initialize self.expectedError and self.result for each loop in runtests." + """This method is used to initialize self.expectedError and self.result + for each loop in runtests.""" self.expectedError = expectedError self.result = result @@ -40,23 +42,27 @@ class Bisect(object): return bisectlist def pre_test(self, options, tests, status): - "This method is used to call other methods for setting up variables and getting the list of tests for bisection." + """This method is used to call other methods for setting up variables and + getting the list of tests for bisection.""" if options.bisectChunk == "default": return tests # The second condition in 'if' is required to verify that the failing # test is the last one. - elif 'loop' not in self.contents or not self.contents['tests'][-1].endswith(options.bisectChunk): + elif ('loop' not in self.contents or not self.contents['tests'][-1].endswith( + options.bisectChunk)): tests = self.get_tests_for_bisection(options, tests) status = self.setup(tests) return self.next_chunk_binary(options, status) def post_test(self, options, expectedError, result): - "This method is used to call other methods to summarize results and check whether a sanity check is done or not." + """This method is used to call other methods to summarize results and check whether a + sanity check is done or not.""" self.reset(expectedError, result) status = self.summarize_chunk(options) - # Check whether sanity check has to be done. Also it is necessary to check whether options.bisectChunk is present - # in self.expectedError as we do not want to run if it is "default". + # Check whether sanity check has to be done. Also it is necessary to check whether + # options.bisectChunk is present in self.expectedError as we do not want to run + # if it is "default". if status == -1 and options.bisectChunk in self.expectedError: # In case we have a debug build, we don't want to run a sanity # check, will take too much time. @@ -213,7 +219,8 @@ class Bisect(object): # is the failing test itself therefore the bleedthrough # test is the first test self.summary.append( - "TEST-UNEXPECTED-FAIL | %s | Bleedthrough detected, this test is the root cause for many of the above failures" % + "TEST-UNEXPECTED-FAIL | %s | Bleedthrough detected, this test is the " + "root cause for many of the above failures" % self.contents['testsToRun'][0]) status = -1 else: @@ -236,7 +243,8 @@ class Bisect(object): return 0 else: if self.failcount > 0: - # -1 is being returned as the test is intermittent, so no need to bisect further. + # -1 is being returned as the test is intermittent, so no need to bisect + # further. return -1 # If the test does not fail even once, then proceed to next chunk for bisection. # loop is set to 2 to proceed on bisection. @@ -254,12 +262,14 @@ class Bisect(object): # limit set, it is a perma-fail. if self.failcount < self.max_failures: if self.repeat == 0: - # -1 is being returned as the test is intermittent, so no need to bisect further. + # -1 is being returned as the test is intermittent, so no need to bisect + # further. return -1 return 0 else: self.summary.append( - "TEST-UNEXPECTED-FAIL | %s | Bleedthrough detected, this test is the root cause for many of the above failures" % + "TEST-UNEXPECTED-FAIL | %s | Bleedthrough detected, this test is the " + "root cause for many of the above failures" % self.contents['testsToRun'][0]) return -1 diff --git a/testing/mochitest/leaks.py b/testing/mochitest/leaks.py index 11f46f1801ea..a75355dd17cf 100644 --- a/testing/mochitest/leaks.py +++ b/testing/mochitest/leaks.py @@ -54,17 +54,21 @@ class ShutdownLeaks(object): for test in self._parseLeakingTests(): for url, count in self._zipLeakedWindows(test["leakedWindows"]): self.logger.warning( - "TEST-UNEXPECTED-FAIL | %s | leaked %d window(s) until shutdown [url = %s]" % (test["fileName"], count, url)) + "TEST-UNEXPECTED-FAIL | %s | leaked %d window(s) until shutdown " + "[url = %s]") % (test["fileName"], count, url) if test["leakedWindowsString"]: self.logger.info("TEST-INFO | %s | windows(s) leaked: %s" % (test["fileName"], test["leakedWindowsString"])) if test["leakedDocShells"]: - self.logger.warning("TEST-UNEXPECTED-FAIL | %s | leaked %d docShell(s) until shutdown" % ( - test["fileName"], len(test["leakedDocShells"]))) - self.logger.info("TEST-INFO | %s | docShell(s) leaked: %s" % (test["fileName"], - ', '.join(["[pid = %s] [id = %s]" % x for x in test["leakedDocShells"]]))) + self.logger.warning("TEST-UNEXPECTED-FAIL | %s | leaked %d docShell(s) until " + "shutdown" % + (test["fileName"], len(test["leakedDocShells"]))) + self.logger.info("TEST-INFO | %s | docShell(s) leaked: %s" % + (test["fileName"], ', '.join(["[pid = %s] [id = %s]" % + x for x in test["leakedDocShells"]] + ))) def _logWindow(self, line): created = line[:2] == "++" @@ -229,12 +233,14 @@ class LSANLeaks(object): def process(self): if self.fatalError: - self.logger.warning( - "TEST-UNEXPECTED-FAIL | LeakSanitizer | LeakSanitizer has encountered a fatal error.") + self.logger.warning("TEST-UNEXPECTED-FAIL | LeakSanitizer | LeakSanitizer " + "has encountered a fatal error.") if self.foundFrames: - self.logger.info("TEST-INFO | LeakSanitizer | To show the addresses of leaked objects add report_objects=1 to LSAN_OPTIONS") - self.logger.info("TEST-INFO | LeakSanitizer | This can be done in testing/mozbase/mozrunner/mozrunner/utils.py") + self.logger.info("TEST-INFO | LeakSanitizer | To show the " + "addresses of leaked objects add report_objects=1 to LSAN_OPTIONS") + self.logger.info("TEST-INFO | LeakSanitizer | This can be done " + "in testing/mozbase/mozrunner/mozrunner/utils.py") for f in self.foundFrames: self.logger.warning( diff --git a/testing/mochitest/mach_commands.py b/testing/mochitest/mach_commands.py index c7e50a83b8ee..7b31fbf02e7d 100644 --- a/testing/mochitest/mach_commands.py +++ b/testing/mochitest/mach_commands.py @@ -9,7 +9,6 @@ from collections import defaultdict from itertools import chain import logging import os -import shutil import sys import warnings @@ -350,7 +349,8 @@ def verify_host_bin(): # validate MOZ_HOST_BIN environment variables for Android tests MOZ_HOST_BIN = os.environ.get('MOZ_HOST_BIN') if not MOZ_HOST_BIN: - print('environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell') + print('environment variable MOZ_HOST_BIN must be set to a directory containing host ' + 'xpcshell') return 1 elif not os.path.isdir(MOZ_HOST_BIN): print('$MOZ_HOST_BIN does not specify a directory') diff --git a/testing/mochitest/runrobocop.py b/testing/mochitest/runrobocop.py index 433705de2892..7f76eee73bf7 100644 --- a/testing/mochitest/runrobocop.py +++ b/testing/mochitest/runrobocop.py @@ -376,9 +376,9 @@ class RobocopTestRunner(MochitestDesktop): for key, value in browserEnv.items(): try: value.index(',') - self.log.error( - "setupRobotiumConfig: browserEnv - Found a ',' in our value, unable to process value. key=%s,value=%s" % - (key, value)) + self.log.error("setupRobotiumConfig: browserEnv - Found a ',' " + "in our value, unable to process value. key=%s,value=%s" % + (key, value)) self.log.error("browserEnv=%s" % browserEnv) except ValueError: envstr += "%s%s=%s" % (delim, key, value) @@ -445,9 +445,9 @@ class RobocopTestRunner(MochitestDesktop): # This does not launch a test at all. It launches an activity # that starts Fennec and then waits indefinitely, since cat # never returns. - browserArgs = ["start", - "-n", "org.mozilla.roboexample.test/org.mozilla.gecko.LaunchFennecWithConfigurationActivity", - "&&", "cat"] + browserArgs = ["start", "-n", + "org.mozilla.roboexample.test/org.mozilla." + "gecko.LaunchFennecWithConfigurationActivity", "&&", "cat"] self.dm.default_timeout = sys.maxint # Forever. self.log.info("") self.log.info("Serving mochi.test Robocop root at http://%s:%s/tests/robocop/" % diff --git a/testing/mochitest/runtests.py b/testing/mochitest/runtests.py index 142adfd84fbb..3f733ec64515 100644 --- a/testing/mochitest/runtests.py +++ b/testing/mochitest/runtests.py @@ -157,7 +157,8 @@ class MessageLogger(object): self.errors = [] def valid_message(self, obj): - """True if the given object is a valid structured message (only does a superficial validation)""" + """True if the given object is a valid structured message + (only does a superficial validation)""" return isinstance(obj, dict) and 'action' in obj and obj[ 'action'] in MessageLogger.VALID_ACTIONS @@ -179,7 +180,8 @@ class MessageLogger(object): message['message'] = unicode(message['message']) def parse_line(self, line): - """Takes a given line of input (structured or not) and returns a list of structured messages""" + """Takes a given line of input (structured or not) and + returns a list of structured messages""" line = line.rstrip().decode("UTF-8", "replace") messages = [] @@ -413,7 +415,9 @@ class MochitestServer(object): self._httpdPath, "httpd.js"), "-e", - """const _PROFILE_PATH = '%(profile)s'; const _SERVER_PORT = '%(port)s'; const _SERVER_ADDR = '%(server)s'; const _TEST_PREFIX = %(testPrefix)s; const _DISPLAY_RESULTS = %(displayResults)s;""" % { + "const _PROFILE_PATH = '%(profile)s'; const _SERVER_PORT = '%(port)s'; " + "const _SERVER_ADDR = '%(server)s'; const _TEST_PREFIX = %(testPrefix)s; " + "const _DISPLAY_RESULTS = %(displayResults)s;" % { "profile": self._profileDir.replace( '\\', '\\\\'), @@ -555,7 +559,6 @@ class MochitestBase(object): self.message_logger = MessageLogger(logger=self.log) - def update_mozinfo(self): """walk up directories to find mozinfo.json update the info""" # TODO: This should go in a more generic place, e.g. mozinfo @@ -815,7 +818,7 @@ class MochitestBase(object): % self.websocketProcessBridge.pid) # ensure the server is up, wait for at most ten seconds - for i in range(1,100): + for i in range(1, 100): if self.websocketProcessBridge.proc.poll() is not None: self.log.error("runtests.py | websocket/process bridge failed " "to launch. Are all the dependencies installed?") @@ -951,7 +954,8 @@ class MochitestBase(object): # Write userChrome.css. chrome = """ -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */ +/* set default namespace to XUL */ +@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); toolbar, toolbarpalette { background-color: rgb(235, 235, 235) !important; @@ -1135,7 +1139,8 @@ toolbar#nav-bar { manifestFileAbs = os.path.abspath(options.manifestFile) assert manifestFileAbs.startswith(SCRIPT_DIR) manifest = TestManifest([options.manifestFile], strict=False) - elif options.manifestFile and os.path.isfile(os.path.join(SCRIPT_DIR, options.manifestFile)): + elif (options.manifestFile and + os.path.isfile(os.path.join(SCRIPT_DIR, options.manifestFile))): manifestFileAbs = os.path.abspath( os.path.join( SCRIPT_DIR, @@ -1278,8 +1283,7 @@ toolbar#nav-bar { script = self.start_script with self.marionette.using_context('chrome'): - return self.marionette.execute_script(script, - script_args=self.start_script_args) + return self.marionette.execute_script(script, script_args=self.start_script_args) class SSLTunnel: @@ -1690,14 +1694,14 @@ class MochitestDesktop(MochitestBase): # https://bugzilla.mozilla.org/show_bug.cgi?id=913152 # proxy + # use SSL port for legacy compatibility; see + # - https://bugzilla.mozilla.org/show_bug.cgi?id=688667#c66 + # - https://bugzilla.mozilla.org/show_bug.cgi?id=899221 + # - https://github.com/mozilla/mozbase/commit/43f9510e3d58bfed32790c82a57edac5f928474d + # 'ws': str(self.webSocketPort) proxy = {'remote': options.webServer, 'http': options.httpPort, 'https': options.sslPort, - # use SSL port for legacy compatibility; see - # - https://bugzilla.mozilla.org/show_bug.cgi?id=688667#c66 - # - https://bugzilla.mozilla.org/show_bug.cgi?id=899221 - # - https://github.com/mozilla/mozbase/commit/43f9510e3d58bfed32790c82a57edac5f928474d - # 'ws': str(self.webSocketPort) 'ws': options.sslPort } @@ -1856,9 +1860,8 @@ class MochitestDesktop(MochitestBase): processPID) if isPidAlive(processPID): foundZombie = True - self.log.info( - "TEST-UNEXPECTED-FAIL | zombiecheck | child process %d still alive after shutdown" % - processPID) + self.log.info("TEST-UNEXPECTED-FAIL | zombiecheck | child process " + "%d still alive after shutdown" % processPID) self.killAndGetStack( processPID, utilityPath, @@ -1887,7 +1890,8 @@ class MochitestDesktop(MochitestBase): marionette_args=None): """ Run the app, log the duration it took to execute, return the status code. - Kills the app if it runs for longer than |maxTime| seconds, or outputs nothing for |timeout| seconds. + Kills the app if it runs for longer than |maxTime| seconds, or outputs nothing + for |timeout| seconds. """ # configure the message logger buffering @@ -1913,7 +1917,8 @@ class MochitestDesktop(MochitestBase): valgrindSuppFiles_final = [] if valgrindSuppFiles is not None: - valgrindSuppFiles_final = ["--suppressions=" + path for path in valgrindSuppFiles.split(",")] + valgrindSuppFiles_final = ["--suppressions=" + + path for path in valgrindSuppFiles.split(",")] debug_args = ([valgrindPath] + mozdebug.get_default_valgrind_args() @@ -2162,8 +2167,9 @@ class MochitestDesktop(MochitestBase): # To inform that we are in the process of bisection, and to # look for bleedthrough if options.bisectChunk != "default" and not bisection_log: - self.log.info( - "TEST-UNEXPECTED-FAIL | Bisection | Please ignore repeats and look for 'Bleedthrough' (if any) at the end of the failure list") + self.log.info("TEST-UNEXPECTED-FAIL | Bisection | Please ignore repeats " + "and look for 'Bleedthrough' (if any) at the end of " + "the failure list") bisection_log = 1 result = self.doTests(options, testsToRun) @@ -2224,8 +2230,8 @@ class MochitestDesktop(MochitestBase): tests_in_dir = [t for t in testsToRun if os.path.dirname(t) == d] # If we are using --run-by-dir, we should not use the profile path (if) provided - # by the user, since we need to create a new directory for each run. We would face problems - # if we use the directory provided by the user. + # by the user, since we need to create a new directory for each run. We would face + # problems if we use the directory provided by the user. result = self.runMochitests(options, tests_in_dir) # Dump the logging buffer @@ -2332,7 +2338,8 @@ class MochitestDesktop(MochitestBase): return 1 if self.mozLogs: - self.browserEnv["MOZ_LOG_FILE"] = "{}/moz-pid=%PID-uid={}.log".format(self.browserEnv["MOZ_UPLOAD_DIR"], str(uuid.uuid4())) + self.browserEnv["MOZ_LOG_FILE"] = "{}/moz-pid=%PID-uid={}.log".format( + self.browserEnv["MOZ_UPLOAD_DIR"], str(uuid.uuid4())) try: self.startServers(options, debuggerInfo) @@ -2448,12 +2455,12 @@ class MochitestDesktop(MochitestBase): """handle process output timeout""" # TODO: bug 913975 : _processOutput should call self.processOutputLine # one more time one timeout (I think) - error_message = "TEST-UNEXPECTED-TIMEOUT | %s | application timed out after %d seconds with no output" % ( - self.lastTestSeen, int(timeout)) + error_message = ("TEST-UNEXPECTED-TIMEOUT | %s | application timed out after " + "%d seconds with no output") % (self.lastTestSeen, int(timeout)) self.message_logger.dump_buffered() self.message_logger.buffering = False self.log.info(error_message) - self.log.error("Force-terminating active process(es)."); + self.log.error("Force-terminating active process(es).") browser_pid = browser_pid or proc.pid child_pids = self.extract_child_pids(processLog, browser_pid) @@ -2510,10 +2517,10 @@ class MochitestDesktop(MochitestBase): self.lsanLeaks = lsanLeaks self.bisectChunk = bisectChunk - # With metro browser runs this script launches the metro test harness which launches the browser. - # The metro test harness hands back the real browser process id via log output which we need to - # pick up on and parse out. This variable tracks the real browser - # process id if we find it. + # With metro browser runs this script launches the metro test harness which launches + # the browser. The metro test harness hands back the real browser process id via log + # output which we need to pick up on and parse out. This variable tracks the real + # browser process id if we find it. self.browserProcessId = None self.stackFixerFunction = self.stackFixer() diff --git a/testing/mochitest/runtestsb2g.py b/testing/mochitest/runtestsb2g.py index ae9ea3b5ace5..d2318e505c33 100644 --- a/testing/mochitest/runtestsb2g.py +++ b/testing/mochitest/runtestsb2g.py @@ -219,7 +219,8 @@ class MochitestB2G(MochitestBase): """) self.marionette.execute_script(""" - let SECURITY_PREF = "security.turn_off_all_security_so_that_viruses_can_take_over_this_computer"; + let SECURITY_PREF = "security.turn_off_all_security_" + + "so_that_viruses_can_take_over_this_computer"; Services.prefs.setBoolPref(SECURITY_PREF, true); if (!testUtils.hasOwnProperty("specialPowersObserver")) { @@ -312,7 +313,8 @@ class MochitestB2G(MochitestBase): os.remove(options.pidFile) os.remove(options.pidFile + ".xpcshell.pid") except: - print "Warning: cleaning up pidfile '%s' was unsuccessful from the test harness" % options.pidFile + print("Warning: cleaning up pidfile '%s' was unsuccessful " + "from the test harness") % options.pidFile # stop and clean up the runner if getattr(self, 'runner', False): diff --git a/testing/mochitest/runtestsremote.py b/testing/mochitest/runtestsremote.py index 315e0e2643cc..964275ad8deb 100644 --- a/testing/mochitest/runtestsremote.py +++ b/testing/mochitest/runtestsremote.py @@ -194,7 +194,8 @@ class MochiRemote(MochitestDesktop): # Runtime (webapp). if options.flavor == 'chrome': # append overlay to chrome.manifest - chrome = "overlay chrome://browser/content/browser.xul chrome://mochikit/content/browser-test-overlay.xul" + chrome = ("overlay chrome://browser/content/browser.xul " + "chrome://mochikit/content/browser-test-overlay.xul") path = os.path.join(options.profilePath, 'extensions', 'staged', 'mochikit@mozilla.org', 'chrome.manifest') with open(path, "a") as f: diff --git a/tools/lint/flake8.lint b/tools/lint/flake8.lint index 0f138a0487d1..e74aec95e61c 100644 --- a/tools/lint/flake8.lint +++ b/tools/lint/flake8.lint @@ -135,11 +135,12 @@ LINTER = { 'testing/firefox-ui', 'testing/marionette/client', 'testing/marionette/harness', + 'testing/mochitest', 'testing/puppeteer', 'testing/talos/', 'tools/lint', ], - 'exclude': [], + 'exclude': ['testing/mochitest/pywebsocket'], 'extensions': EXTENSIONS, 'type': 'external', 'payload': lint, From c0268e7859945e54b7ca51c1ee3ca6ecce560c3e Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Wed, 21 Sep 2016 18:16:10 -0400 Subject: [PATCH 027/117] Bug 1298855 - part 1 - use EndianUtils.h in xpt_xdr.cpp; r=erahm More obvious, slightly more efficient, and dispensing with NSPR macro goo is always a good thing. --- xpcom/typelib/xpt/xpt_xdr.cpp | 59 +++++++++++++---------------------- xpcom/typelib/xpt/xpt_xdr.h | 15 --------- 2 files changed, 22 insertions(+), 52 deletions(-) diff --git a/xpcom/typelib/xpt/xpt_xdr.cpp b/xpcom/typelib/xpt/xpt_xdr.cpp index c1177f67fc06..e96ba6c09fbd 100644 --- a/xpcom/typelib/xpt/xpt_xdr.cpp +++ b/xpcom/typelib/xpt/xpt_xdr.cpp @@ -9,6 +9,7 @@ #include "nspr.h" #include "nscore.h" #include /* strchr */ +#include "mozilla/EndianUtils.h" #define CURS_POOL_OFFSET_RAW(cursor) \ ((cursor)->pool == XPT_HEADER \ @@ -169,11 +170,26 @@ XPT_DoIID(NotNull cursor, nsID *iidp) return true; } +// MSVC apparently cannot handle functions as template parameters very well, +// so we need to use a macro approach here. + +#define XPT_DOINT(T, func, valuep) \ + do { \ + const size_t sz = sizeof(T); \ + \ + if (!CHECK_COUNT(cursor, sz)) { \ + return false; \ + } \ + \ + *valuep = func(&CURS_POINT(cursor)); \ + cursor->offset += sz; \ + return true; \ + } while(0) + XPT_PUBLIC_API(bool) XPT_Do64(NotNull cursor, int64_t *u64p) { - return XPT_Do32(cursor, (uint32_t *)u64p) && - XPT_Do32(cursor, ((uint32_t *)u64p) + 1); + XPT_DOINT(int64_t, mozilla::BigEndian::readInt64, u64p); } /* @@ -185,48 +201,17 @@ XPT_Do64(NotNull cursor, int64_t *u64p) XPT_PUBLIC_API(bool) XPT_Do32(NotNull cursor, uint32_t *u32p) { - union { - uint8_t b8[4]; - uint32_t b32; - } u; - - if (!CHECK_COUNT(cursor, 4)) - return false; - - u.b8[0] = CURS_POINT(cursor); - cursor->offset++; - u.b8[1] = CURS_POINT(cursor); - cursor->offset++; - u.b8[2] = CURS_POINT(cursor); - cursor->offset++; - u.b8[3] = CURS_POINT(cursor); - *u32p = XPT_SWAB32(u.b32); - - cursor->offset++; - return true; + XPT_DOINT(uint32_t, mozilla::BigEndian::readUint32, u32p); } XPT_PUBLIC_API(bool) XPT_Do16(NotNull cursor, uint16_t *u16p) { - union { - uint8_t b8[2]; - uint16_t b16; - } u; - - if (!CHECK_COUNT(cursor, 2)) - return false; - - u.b8[0] = CURS_POINT(cursor); - cursor->offset++; - u.b8[1] = CURS_POINT(cursor); - *u16p = XPT_SWAB16(u.b16); - - cursor->offset++; - - return true; + XPT_DOINT(uint16_t, mozilla::BigEndian::readUint16, u16p); } +#undef XPT_DOINT + XPT_PUBLIC_API(bool) XPT_Do8(NotNull cursor, uint8_t *u8p) { diff --git a/xpcom/typelib/xpt/xpt_xdr.h b/xpcom/typelib/xpt/xpt_xdr.h index 67fad5a06508..7bf23aa40e9b 100644 --- a/xpcom/typelib/xpt/xpt_xdr.h +++ b/xpcom/typelib/xpt/xpt_xdr.h @@ -79,21 +79,6 @@ XPT_SeekTo(NotNull cursor, uint32_t offset); extern XPT_PUBLIC_API(void) XPT_SetDataOffset(XPTState *state, uint32_t data_offset); -/* all data structures are big-endian */ - -#if defined IS_BIG_ENDIAN -# define XPT_SWAB32(x) x -# define XPT_SWAB16(x) x -#elif defined IS_LITTLE_ENDIAN -# define XPT_SWAB32(x) (((x) >> 24) | \ - (((x) >> 8) & 0xff00) | \ - (((x) << 8) & 0xff0000) | \ - ((x) << 24)) -# define XPT_SWAB16(x) (((x) >> 8) | ((x) << 8)) -#else -# error "unknown byte order" -#endif - #ifdef __cplusplus } #endif From a9c993ccd1c625a5ac5a3acea8e8bbcfe0d76ca4 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Wed, 21 Sep 2016 18:16:10 -0400 Subject: [PATCH 028/117] Bug 1298855 - part 2 - remove prcpucfg.h #include from xpt_arena.h; r=erahm Nothing else in this code requires prcpucfg.h at this point, and we might as well remove nspr.h from xpt_xdr.cpp while we're at it. --- xpcom/typelib/xpt/xpt_arena.h | 1 - xpcom/typelib/xpt/xpt_xdr.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/xpcom/typelib/xpt/xpt_arena.h b/xpcom/typelib/xpt/xpt_arena.h index e845c87c089a..6ac146ffe71b 100644 --- a/xpcom/typelib/xpt/xpt_arena.h +++ b/xpcom/typelib/xpt/xpt_arena.h @@ -10,7 +10,6 @@ #ifndef __xpt_arena_h__ #define __xpt_arena_h__ -#include "prcpucfg.h" #include #include "mozilla/Attributes.h" #include "mozilla/MemoryReporting.h" diff --git a/xpcom/typelib/xpt/xpt_xdr.cpp b/xpcom/typelib/xpt/xpt_xdr.cpp index e96ba6c09fbd..04b90422aa49 100644 --- a/xpcom/typelib/xpt/xpt_xdr.cpp +++ b/xpcom/typelib/xpt/xpt_xdr.cpp @@ -6,7 +6,6 @@ /* Implementation of XDR primitives. */ #include "xpt_xdr.h" -#include "nspr.h" #include "nscore.h" #include /* strchr */ #include "mozilla/EndianUtils.h" From 15ae08f0b42501a7ec376260f41d8829dbcccd16 Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Wed, 21 Sep 2016 10:25:05 -0400 Subject: [PATCH 029/117] Bug 1298173 - Remove redundant parameter. r=dvander The parameter is always true if the tap type is a eSingleTap and false in all other cases, so it's redundant. As it was added as an optimization in bug 1020199 removing it should be safe. MozReview-Commit-ID: IPB8BUagQl6 --- dom/ipc/TabChild.cpp | 5 ++--- dom/ipc/TabChild.h | 3 +-- gfx/layers/apz/util/ContentProcessController.cpp | 2 +- gfx/layers/ipc/APZChild.cpp | 3 +-- gfx/layers/ipc/APZChild.h | 3 +-- gfx/layers/ipc/PAPZ.ipdl | 6 +----- gfx/layers/ipc/RemoteContentController.cpp | 4 +--- 7 files changed, 8 insertions(+), 18 deletions(-) diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp index f2a8f201e9a4..6603a2eebd62 100644 --- a/dom/ipc/TabChild.cpp +++ b/dom/ipc/TabChild.cpp @@ -1760,8 +1760,7 @@ TabChild::HandleDoubleTap(const CSSPoint& aPoint, const Modifiers& aModifiers, void TabChild::HandleTap(GeckoContentController::TapType aType, const LayoutDevicePoint& aPoint, const Modifiers& aModifiers, - const ScrollableLayerGuid& aGuid, const uint64_t& aInputBlockId, - bool aCallTakeFocusForClickFromTap) + const ScrollableLayerGuid& aGuid, const uint64_t& aInputBlockId) { nsCOMPtr presShell = GetPresShell(); if (!presShell) { @@ -1775,7 +1774,7 @@ TabChild::HandleTap(GeckoContentController::TapType aType, switch (aType) { case GeckoContentController::TapType::eSingleTap: - if (aCallTakeFocusForClickFromTap && mRemoteFrame) { + if (mRemoteFrame) { mRemoteFrame->SendTakeFocusForClickFromTap(); } if (mGlobal && mTabChildGlobal) { diff --git a/dom/ipc/TabChild.h b/dom/ipc/TabChild.h index 46ac70d4a26e..594a3f2dadde 100644 --- a/dom/ipc/TabChild.h +++ b/dom/ipc/TabChild.h @@ -634,8 +634,7 @@ public: const LayoutDevicePoint& aPoint, const Modifiers& aModifiers, const mozilla::layers::ScrollableLayerGuid& aGuid, - const uint64_t& aInputBlockId, - bool aCallTakeFocusForClickFromTap); + const uint64_t& aInputBlockId); void SetAllowedTouchBehavior(uint64_t aInputBlockId, const nsTArray& aFlags) const; diff --git a/gfx/layers/apz/util/ContentProcessController.cpp b/gfx/layers/apz/util/ContentProcessController.cpp index 37e67350331b..15242fd074e0 100644 --- a/gfx/layers/apz/util/ContentProcessController.cpp +++ b/gfx/layers/apz/util/ContentProcessController.cpp @@ -141,7 +141,7 @@ ContentProcessController::HandleTap( { if (mBrowser) { mBrowser->HandleTap(aType, aPoint - mBrowser->GetChromeDisplacement(), aModifiers, aGuid, - aInputBlockId, (aType == TapType::eSingleTap)); + aInputBlockId); } } diff --git a/gfx/layers/ipc/APZChild.cpp b/gfx/layers/ipc/APZChild.cpp index cf59f08fd198..f3e2c21b776e 100644 --- a/gfx/layers/ipc/APZChild.cpp +++ b/gfx/layers/ipc/APZChild.cpp @@ -43,8 +43,7 @@ APZChild::RecvHandleTap(const TapType& aType, const LayoutDevicePoint& aPoint, const Modifiers& aModifiers, const ScrollableLayerGuid& aGuid, - const uint64_t& aInputBlockId, - const bool& aCallTakeFocusForClickFromTap) + const uint64_t& aInputBlockId) { mController->HandleTap(aType, aPoint, aModifiers, aGuid, aInputBlockId); diff --git a/gfx/layers/ipc/APZChild.h b/gfx/layers/ipc/APZChild.h index b72013c70447..cfd479b684f5 100644 --- a/gfx/layers/ipc/APZChild.h +++ b/gfx/layers/ipc/APZChild.h @@ -31,8 +31,7 @@ public: const LayoutDevicePoint& aPoint, const Modifiers& aModifiers, const ScrollableLayerGuid& aGuid, - const uint64_t& aInputBlockId, - const bool& aCallTakeFocusForClickFromTap) override; + const uint64_t& aInputBlockId) override; bool RecvUpdateOverscrollVelocity(const float& aX, const float& aY, const bool& aIsRootContent) override; diff --git a/gfx/layers/ipc/PAPZ.ipdl b/gfx/layers/ipc/PAPZ.ipdl index b6396017fc42..989d39a9ec8c 100644 --- a/gfx/layers/ipc/PAPZ.ipdl +++ b/gfx/layers/ipc/PAPZ.ipdl @@ -57,12 +57,8 @@ child: async RequestContentRepaint(FrameMetrics frame); - // The aCallTakeFocusForClickFromTap argument is used for eSingleTap types, - // to request that the child take focus before dispatching the mouse events - // for the tap (otherwise the resulting focus behaviour is incorrect). async HandleTap(TapType aType, LayoutDevicePoint point, Modifiers aModifiers, - ScrollableLayerGuid aGuid, uint64_t aInputBlockId, - bool aCallTakeFocusForClickFromTap); + ScrollableLayerGuid aGuid, uint64_t aInputBlockId); async UpdateOverscrollVelocity(float aX, float aY, bool aIsRootContent); diff --git a/gfx/layers/ipc/RemoteContentController.cpp b/gfx/layers/ipc/RemoteContentController.cpp index ea6ecacee814..857c65039e7d 100644 --- a/gfx/layers/ipc/RemoteContentController.cpp +++ b/gfx/layers/ipc/RemoteContentController.cpp @@ -64,11 +64,9 @@ RemoteContentController::HandleTap(TapType aTapType, return; } - bool callTakeFocusForClickFromTap = (aTapType == TapType::eSingleTap); - if (mCanSend) { Unused << SendHandleTap(aTapType, aPoint, - aModifiers, aGuid, aInputBlockId, callTakeFocusForClickFromTap); + aModifiers, aGuid, aInputBlockId); } } From 6d057a3060cb4d0b3c0a1b8d19ae011ef8edfe7f Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Wed, 21 Sep 2016 10:26:33 -0400 Subject: [PATCH 030/117] Bug 1298173 - Push HandleTap from the GPU process back to the parent process before passing it on to the child process. r=dvander Sending it back via the parent process ensures that it will take the same path that regular touch events do, and so guarantees that the Tap event won't overtake the touch events and get dispatched to content first. MozReview-Commit-ID: 8TiHY2PFPvE --- dom/ipc/PBrowser.ipdl | 5 +++ dom/ipc/TabChild.cpp | 15 +++++--- dom/ipc/TabChild.h | 10 ++--- dom/ipc/TabParent.cpp | 15 ++++++++ dom/ipc/TabParent.h | 6 +++ gfx/ipc/RemoteCompositorSession.cpp | 10 +++++ gfx/ipc/RemoteCompositorSession.h | 2 + .../apz/util/ContentProcessController.cpp | 6 +-- gfx/layers/ipc/APZCTreeManagerChild.cpp | 38 +++++++++++++++++++ gfx/layers/ipc/APZCTreeManagerChild.h | 13 ++++++- gfx/layers/ipc/APZCTreeManagerParent.cpp | 4 ++ gfx/layers/ipc/APZCTreeManagerParent.h | 2 +- gfx/layers/ipc/APZChild.cpp | 12 ------ gfx/layers/ipc/APZChild.h | 6 --- gfx/layers/ipc/CompositorBridgeParent.cpp | 26 +++++++++++++ gfx/layers/ipc/CompositorBridgeParent.h | 12 ++++++ gfx/layers/ipc/PAPZ.ipdl | 6 --- gfx/layers/ipc/PAPZCTreeManager.ipdl | 8 ++++ gfx/layers/ipc/RemoteContentController.cpp | 37 ++++++++++++------ 19 files changed, 181 insertions(+), 52 deletions(-) diff --git a/dom/ipc/PBrowser.ipdl b/dom/ipc/PBrowser.ipdl index c4fb5c374186..9e76fe9a23ef 100644 --- a/dom/ipc/PBrowser.ipdl +++ b/dom/ipc/PBrowser.ipdl @@ -31,12 +31,14 @@ using CSSRect from "Units.h"; using CSSSize from "Units.h"; using mozilla::LayoutDeviceIntRect from "Units.h"; using mozilla::LayoutDeviceIntPoint from "Units.h"; +using mozilla::LayoutDevicePoint from "Units.h"; using mozilla::ScreenIntPoint from "Units.h"; using ScreenIntSize from "Units.h"; using struct mozilla::layers::FrameMetrics from "FrameMetrics.h"; using struct mozilla::layers::ScrollableLayerGuid from "FrameMetrics.h"; using struct mozilla::layers::ZoomConstraints from "FrameMetrics.h"; using mozilla::layers::MaybeZoomConstraints from "FrameMetrics.h"; +using mozilla::layers::GeckoContentController::TapType from "mozilla/layers/GeckoContentController.h"; using FrameMetrics::ViewID from "FrameMetrics.h"; using struct mozilla::void_t from "ipc/IPCMessageUtils.h"; using mozilla::WindowsHandle from "ipc/IPCMessageUtils.h"; @@ -69,6 +71,7 @@ using class mozilla::dom::MessagePort from "mozilla/dom/MessagePort.h"; using class mozilla::dom::ipc::StructuredCloneData from "mozilla/dom/ipc/StructuredCloneData.h"; using mozilla::EventMessage from "mozilla/EventForwards.h"; using nsEventStatus from "mozilla/EventForwards.h"; +using mozilla::Modifiers from "mozilla/EventForwards.h"; using nsSizeMode from "nsIWidgetListener.h"; using mozilla::widget::CandidateWindowPosition from "ipc/nsGUIEventIPC.h"; using class mozilla::NativeEventData from "ipc/nsGUIEventIPC.h"; @@ -674,6 +677,8 @@ child: ScrollableLayerGuid aGuid, uint64_t aInputBlockId, nsEventStatus aApzResponse); + async HandleTap(TapType aType, LayoutDevicePoint point, Modifiers aModifiers, + ScrollableLayerGuid aGuid, uint64_t aInputBlockId); async RealTouchMoveEvent(WidgetTouchEvent aEvent, ScrollableLayerGuid aGuid, uint64_t aInputBlockId, diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp index 6603a2eebd62..bfec7b6eee47 100644 --- a/dom/ipc/TabChild.cpp +++ b/dom/ipc/TabChild.cpp @@ -1757,17 +1757,19 @@ TabChild::HandleDoubleTap(const CSSPoint& aPoint, const Modifiers& aModifiers, } } -void -TabChild::HandleTap(GeckoContentController::TapType aType, - const LayoutDevicePoint& aPoint, const Modifiers& aModifiers, - const ScrollableLayerGuid& aGuid, const uint64_t& aInputBlockId) +bool +TabChild::RecvHandleTap(const GeckoContentController::TapType& aType, + const LayoutDevicePoint& aPoint, + const Modifiers& aModifiers, + const ScrollableLayerGuid& aGuid, + const uint64_t& aInputBlockId) { nsCOMPtr presShell = GetPresShell(); if (!presShell) { - return; + return true; } if (!presShell->GetPresContext()) { - return; + return true; } CSSToLayoutDeviceScale scale(presShell->GetPresContext()->CSSToDevPixelScale()); CSSPoint point = APZCCallbackHelper::ApplyCallbackTransform(aPoint / scale, aGuid); @@ -1801,6 +1803,7 @@ TabChild::HandleTap(GeckoContentController::TapType aType, MOZ_ASSERT(false); break; } + return true; } bool diff --git a/dom/ipc/TabChild.h b/dom/ipc/TabChild.h index 594a3f2dadde..8ff3b7c5a5fc 100644 --- a/dom/ipc/TabChild.h +++ b/dom/ipc/TabChild.h @@ -630,11 +630,11 @@ public: bool aPreventDefault) const; void SetTargetAPZC(uint64_t aInputBlockId, const nsTArray& aTargets) const; - void HandleTap(layers::GeckoContentController::TapType aType, - const LayoutDevicePoint& aPoint, - const Modifiers& aModifiers, - const mozilla::layers::ScrollableLayerGuid& aGuid, - const uint64_t& aInputBlockId); + bool RecvHandleTap(const layers::GeckoContentController::TapType& aType, + const LayoutDevicePoint& aPoint, + const Modifiers& aModifiers, + const ScrollableLayerGuid& aGuid, + const uint64_t& aInputBlockId) override; void SetAllowedTouchBehavior(uint64_t aInputBlockId, const nsTArray& aFlags) const; diff --git a/dom/ipc/TabParent.cpp b/dom/ipc/TabParent.cpp index 515895ad1dea..aa8c529b5dfb 100644 --- a/dom/ipc/TabParent.cpp +++ b/dom/ipc/TabParent.cpp @@ -1684,6 +1684,21 @@ bool TabParent::SendRealTouchEvent(WidgetTouchEvent& event) PBrowserParent::SendRealTouchEvent(event, guid, blockId, apzResponse); } +bool +TabParent::SendHandleTap(TapType aType, + const LayoutDevicePoint& aPoint, + Modifiers aModifiers, + const ScrollableLayerGuid& aGuid, + uint64_t aInputBlockId) +{ + if (mIsDestroyed) { + return false; + } + LayoutDeviceIntPoint offset = GetChildProcessOffset(); + return PBrowserParent::SendHandleTap(aType, aPoint + offset, aModifiers, aGuid, + aInputBlockId); +} + bool TabParent::RecvSyncMessage(const nsString& aMessage, const ClonedMessageData& aData, diff --git a/dom/ipc/TabParent.h b/dom/ipc/TabParent.h index 692370f51e29..9bf6c0b9c961 100644 --- a/dom/ipc/TabParent.h +++ b/dom/ipc/TabParent.h @@ -465,6 +465,12 @@ public: bool SendRealTouchEvent(WidgetTouchEvent& event); + bool SendHandleTap(TapType aType, + const LayoutDevicePoint& aPoint, + Modifiers aModifiers, + const ScrollableLayerGuid& aGuid, + uint64_t aInputBlockId); + virtual PDocumentRendererParent* AllocPDocumentRendererParent(const nsRect& documentRect, const gfx::Matrix& transform, diff --git a/gfx/ipc/RemoteCompositorSession.cpp b/gfx/ipc/RemoteCompositorSession.cpp index a990aef446cc..544c911ba358 100644 --- a/gfx/ipc/RemoteCompositorSession.cpp +++ b/gfx/ipc/RemoteCompositorSession.cpp @@ -25,6 +25,7 @@ RemoteCompositorSession::RemoteCompositorSession(nsBaseWidget* aWidget, mAPZ(aAPZ) { GPUProcessManager::Get()->RegisterSession(this); + mAPZ->SetCompositorSession(this); } RemoteCompositorSession::~RemoteCompositorSession() @@ -52,9 +53,16 @@ RemoteCompositorSession::GetInProcessBridge() const void RemoteCompositorSession::SetContentController(GeckoContentController* aController) { + mContentController = aController; mCompositorBridgeChild->SendPAPZConstructor(new APZChild(aController), 0); } +GeckoContentController* +RemoteCompositorSession::GetContentController() +{ + return mContentController.get(); +} + RefPtr RemoteCompositorSession::GetAPZCTreeManager() const { @@ -64,6 +72,8 @@ RemoteCompositorSession::GetAPZCTreeManager() const void RemoteCompositorSession::Shutdown() { + mContentController = nullptr; + mAPZ->SetCompositorSession(nullptr); mCompositorBridgeChild->Destroy(); mCompositorBridgeChild = nullptr; mCompositorWidgetDelegate = nullptr; diff --git a/gfx/ipc/RemoteCompositorSession.h b/gfx/ipc/RemoteCompositorSession.h index 4fab0026c8c2..314e79147c66 100644 --- a/gfx/ipc/RemoteCompositorSession.h +++ b/gfx/ipc/RemoteCompositorSession.h @@ -25,6 +25,7 @@ public: CompositorBridgeParent* GetInProcessBridge() const override; void SetContentController(GeckoContentController* aController) override; + GeckoContentController* GetContentController(); RefPtr GetAPZCTreeManager() const override; void Shutdown() override; @@ -33,6 +34,7 @@ public: private: nsBaseWidget* mWidget; RefPtr mAPZ; + RefPtr mContentController; }; } // namespace layers diff --git a/gfx/layers/apz/util/ContentProcessController.cpp b/gfx/layers/apz/util/ContentProcessController.cpp index 15242fd074e0..607eaee55d59 100644 --- a/gfx/layers/apz/util/ContentProcessController.cpp +++ b/gfx/layers/apz/util/ContentProcessController.cpp @@ -139,10 +139,8 @@ ContentProcessController::HandleTap( const ScrollableLayerGuid& aGuid, uint64_t aInputBlockId) { - if (mBrowser) { - mBrowser->HandleTap(aType, aPoint - mBrowser->GetChromeDisplacement(), aModifiers, aGuid, - aInputBlockId); - } + // This should never get called + MOZ_ASSERT(false); } void diff --git a/gfx/layers/ipc/APZCTreeManagerChild.cpp b/gfx/layers/ipc/APZCTreeManagerChild.cpp index 96504fedf004..1bb7ca3c5586 100644 --- a/gfx/layers/ipc/APZCTreeManagerChild.cpp +++ b/gfx/layers/ipc/APZCTreeManagerChild.cpp @@ -7,10 +7,26 @@ #include "mozilla/layers/APZCTreeManagerChild.h" #include "InputData.h" // for InputData +#include "mozilla/dom/TabParent.h" // for TabParent +#include "mozilla/layers/RemoteCompositorSession.h" // for RemoteCompositorSession namespace mozilla { namespace layers { +APZCTreeManagerChild::APZCTreeManagerChild() + : mCompositorSession(nullptr) +{ +} + +void +APZCTreeManagerChild::SetCompositorSession(RemoteCompositorSession* aSession) +{ + // Exactly one of mCompositorSession and aSession must be null (i.e. either + // we're setting mCompositorSession or we're clearing it). + MOZ_ASSERT(!mCompositorSession ^ !aSession); + mCompositorSession = aSession; +} + nsEventStatus APZCTreeManagerChild::ReceiveInputEvent( InputData& aEvent, @@ -203,6 +219,28 @@ void APZCTreeManagerChild::TransformEventRefPoint( SendTransformEventRefPoint(*aRefPoint, aRefPoint, aOutTargetGuid); } +bool +APZCTreeManagerChild::RecvHandleTap(const TapType& aType, + const LayoutDevicePoint& aPoint, + const Modifiers& aModifiers, + const ScrollableLayerGuid& aGuid, + const uint64_t& aInputBlockId) +{ + MOZ_ASSERT(XRE_IsParentProcess()); + if (mCompositorSession && + mCompositorSession->RootLayerTreeId() == aGuid.mLayersId && + mCompositorSession->GetContentController()) { + mCompositorSession->GetContentController()->HandleTap(aType, aPoint, + aModifiers, aGuid, aInputBlockId); + return true; + } + dom::TabParent* tab = dom::TabParent::GetTabParentFromLayersId(aGuid.mLayersId); + if (tab) { + tab->SendHandleTap(aType, aPoint, aModifiers, aGuid, aInputBlockId); + } + return true; +} + void APZCTreeManagerChild::OnProcessingError( Result aCode, diff --git a/gfx/layers/ipc/APZCTreeManagerChild.h b/gfx/layers/ipc/APZCTreeManagerChild.h index cb7080c2cf6c..ca81688247e9 100644 --- a/gfx/layers/ipc/APZCTreeManagerChild.h +++ b/gfx/layers/ipc/APZCTreeManagerChild.h @@ -13,13 +13,16 @@ namespace mozilla { namespace layers { +class RemoteCompositorSession; class APZCTreeManagerChild : public IAPZCTreeManager , public PAPZCTreeManagerChild { public: - APZCTreeManagerChild() { } + APZCTreeManagerChild(); + + void SetCompositorSession(RemoteCompositorSession* aSession); nsEventStatus ReceiveInputEvent( @@ -89,9 +92,17 @@ public: const char* aReason) override; protected: + bool RecvHandleTap(const TapType& aType, + const LayoutDevicePoint& aPoint, + const Modifiers& aModifiers, + const ScrollableLayerGuid& aGuid, + const uint64_t& aInputBlockId) override; virtual ~APZCTreeManagerChild() { } + +private: + MOZ_NON_OWNING_REF RemoteCompositorSession* mCompositorSession; }; } // namespace layers diff --git a/gfx/layers/ipc/APZCTreeManagerParent.cpp b/gfx/layers/ipc/APZCTreeManagerParent.cpp index 33204831034a..33cd6ffff26f 100644 --- a/gfx/layers/ipc/APZCTreeManagerParent.cpp +++ b/gfx/layers/ipc/APZCTreeManagerParent.cpp @@ -19,6 +19,10 @@ APZCTreeManagerParent::APZCTreeManagerParent(uint64_t aLayersId, RefPtr aAPZCTreeManager) { diff --git a/gfx/layers/ipc/APZCTreeManagerParent.h b/gfx/layers/ipc/APZCTreeManagerParent.h index b22f6ade201d..f2d3aec579bd 100644 --- a/gfx/layers/ipc/APZCTreeManagerParent.h +++ b/gfx/layers/ipc/APZCTreeManagerParent.h @@ -20,7 +20,7 @@ class APZCTreeManagerParent public: explicit APZCTreeManagerParent(uint64_t aLayersId, RefPtr aAPZCTreeManager); - virtual ~APZCTreeManagerParent() { } + virtual ~APZCTreeManagerParent(); uint64_t LayersId() const { return mLayersId; } diff --git a/gfx/layers/ipc/APZChild.cpp b/gfx/layers/ipc/APZChild.cpp index f3e2c21b776e..2dd24d4cd6a3 100644 --- a/gfx/layers/ipc/APZChild.cpp +++ b/gfx/layers/ipc/APZChild.cpp @@ -38,18 +38,6 @@ APZChild::RecvRequestContentRepaint(const FrameMetrics& aFrameMetrics) return true; } -bool -APZChild::RecvHandleTap(const TapType& aType, - const LayoutDevicePoint& aPoint, - const Modifiers& aModifiers, - const ScrollableLayerGuid& aGuid, - const uint64_t& aInputBlockId) -{ - mController->HandleTap(aType, aPoint, aModifiers, aGuid, - aInputBlockId); - return true; -} - bool APZChild::RecvUpdateOverscrollVelocity(const float& aX, const float& aY, const bool& aIsRootContent) { diff --git a/gfx/layers/ipc/APZChild.h b/gfx/layers/ipc/APZChild.h index cfd479b684f5..57865ee6dffb 100644 --- a/gfx/layers/ipc/APZChild.h +++ b/gfx/layers/ipc/APZChild.h @@ -27,12 +27,6 @@ public: bool RecvRequestContentRepaint(const FrameMetrics& frame) override; - bool RecvHandleTap(const TapType& aType, - const LayoutDevicePoint& aPoint, - const Modifiers& aModifiers, - const ScrollableLayerGuid& aGuid, - const uint64_t& aInputBlockId) override; - bool RecvUpdateOverscrollVelocity(const float& aX, const float& aY, const bool& aIsRootContent) override; bool RecvUpdateOverscrollOffset(const float& aX, const float& aY, const bool& aIsRootContent) override; diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp index 87c95c292dbe..06719d65feda 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -2454,6 +2454,32 @@ CompositorBridgeParent::GetIndirectShadowTree(uint64_t aId) return &cit->second; } +/* static */ APZCTreeManagerParent* +CompositorBridgeParent::GetApzcTreeManagerParentForRoot(uint64_t aContentLayersId) +{ + MonitorAutoLock lock(*sIndirectLayerTreesLock); + + CompositorBridgeParent::LayerTreeState* state = nullptr; + LayerTreeMap::iterator itr = sIndirectLayerTrees.find(aContentLayersId); + if (sIndirectLayerTrees.end() != itr) { + state = &itr->second; + } + + // |state| is the state for the content process, but we want the APZCTMParent + // for the parent process owning that content process. So we have to jump to + // the LayerTreeState for the root layer tree id for that layer tree, and use + // the mApzcTreeManagerParent from that. This should also work with nested + // content processes, because RootLayerTreeId() will bypass any intermediate + // processes' ids and go straight to the root. + if (state) { + uint64_t rootLayersId = state->mParent->RootLayerTreeId(); + itr = sIndirectLayerTrees.find(rootLayersId); + state = (sIndirectLayerTrees.end() != itr) ? &itr->second : nullptr; + } + + return state ? state->mApzcTreeManagerParent : nullptr; +} + PTextureParent* CompositorBridgeParent::AllocPTextureParent(const SurfaceDescriptor& aSharedData, const LayersBackend& aLayersBackend, diff --git a/gfx/layers/ipc/CompositorBridgeParent.h b/gfx/layers/ipc/CompositorBridgeParent.h index 495a76961657..2fb161496832 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.h +++ b/gfx/layers/ipc/CompositorBridgeParent.h @@ -469,6 +469,18 @@ public: */ static LayerTreeState* GetIndirectShadowTree(uint64_t aId); + /** + * Given the layers id for a content process, get the APZCTreeManagerParent + * for the corresponding *root* layers id. That is, the APZCTreeManagerParent, + * if one is found, will always be connected to the parent process rather + * than a content process. Note that unless the compositor process is + * separated this is expected to return null, because if the compositor is + * living in the gecko parent process then there is no APZCTreeManagerParent + * for the parent process. + */ + static APZCTreeManagerParent* GetApzcTreeManagerParentForRoot( + uint64_t aContentLayersId); + #if defined(XP_WIN) || defined(MOZ_WIDGET_GTK) /** * Calculates and requests the main thread update plugin positioning, clip, diff --git a/gfx/layers/ipc/PAPZ.ipdl b/gfx/layers/ipc/PAPZ.ipdl index 989d39a9ec8c..002945b584a4 100644 --- a/gfx/layers/ipc/PAPZ.ipdl +++ b/gfx/layers/ipc/PAPZ.ipdl @@ -9,19 +9,16 @@ include "mozilla/GfxMessageUtils.h"; include protocol PCompositorBridge; -using mozilla::LayoutDevicePoint from "Units.h"; using CSSRect from "Units.h"; using struct mozilla::layers::FrameMetrics from "FrameMetrics.h"; using struct mozilla::layers::ScrollableLayerGuid from "FrameMetrics.h"; using mozilla::layers::FrameMetrics::ViewID from "FrameMetrics.h"; using mozilla::layers::MaybeZoomConstraints from "FrameMetrics.h"; using mozilla::layers::TouchBehaviorFlags from "mozilla/layers/APZUtils.h"; -using mozilla::layers::GeckoContentController::TapType from "mozilla/layers/GeckoContentController.h"; using mozilla::layers::GeckoContentController::APZStateChange from "mozilla/layers/GeckoContentController.h"; using mozilla::dom::TabId from "mozilla/dom/ipc/IdType.h"; using mozilla::dom::ContentParentId from "mozilla/dom/ipc/IdType.h"; using mozilla::layers::AsyncDragMetrics from "mozilla/layers/AsyncDragMetrics.h"; -using mozilla::Modifiers from "mozilla/EventForwards.h"; using class nsRegion from "nsRegion.h"; namespace mozilla { @@ -57,9 +54,6 @@ child: async RequestContentRepaint(FrameMetrics frame); - async HandleTap(TapType aType, LayoutDevicePoint point, Modifiers aModifiers, - ScrollableLayerGuid aGuid, uint64_t aInputBlockId); - async UpdateOverscrollVelocity(float aX, float aY, bool aIsRootContent); async UpdateOverscrollOffset(float aX, float aY, bool aIsRootContent); diff --git a/gfx/layers/ipc/PAPZCTreeManager.ipdl b/gfx/layers/ipc/PAPZCTreeManager.ipdl index 7fca8ef71cb6..09e7f3d10ea8 100644 --- a/gfx/layers/ipc/PAPZCTreeManager.ipdl +++ b/gfx/layers/ipc/PAPZCTreeManager.ipdl @@ -10,14 +10,17 @@ include protocol PCompositorBridge; using CSSRect from "Units.h"; using LayoutDeviceIntPoint from "Units.h"; +using mozilla::LayoutDevicePoint from "Units.h"; using ScreenPoint from "Units.h"; using struct mozilla::layers::ScrollableLayerGuid from "FrameMetrics.h"; using mozilla::layers::MaybeZoomConstraints from "FrameMetrics.h"; using mozilla::layers::TouchBehaviorFlags from "mozilla/layers/APZUtils.h"; using mozilla::layers::AsyncDragMetrics from "mozilla/layers/AsyncDragMetrics.h"; +using mozilla::layers::GeckoContentController::TapType from "mozilla/layers/GeckoContentController.h"; using nsEventStatus from "mozilla/EventForwards.h"; using EventMessage from "mozilla/EventForwards.h"; +using mozilla::Modifiers from "mozilla/EventForwards.h"; using class mozilla::WidgetInputEvent from "mozilla/BasicEvents.h"; using class mozilla::WidgetMouseEventBase from "mozilla/MouseEvents.h"; using mozilla::WidgetMouseEvent::Reason from "mozilla/MouseEvents.h"; @@ -120,6 +123,11 @@ parent: ScrollableLayerGuid aOutTargetGuid); async __delete__(); + +child: + + async HandleTap(TapType aType, LayoutDevicePoint point, Modifiers aModifiers, + ScrollableLayerGuid aGuid, uint64_t aInputBlockId); }; } // namespace gfx diff --git a/gfx/layers/ipc/RemoteContentController.cpp b/gfx/layers/ipc/RemoteContentController.cpp index 857c65039e7d..e92bcf105a03 100644 --- a/gfx/layers/ipc/RemoteContentController.cpp +++ b/gfx/layers/ipc/RemoteContentController.cpp @@ -12,6 +12,7 @@ #include "MainThreadUtils.h" #include "mozilla/dom/ContentParent.h" #include "mozilla/dom/TabParent.h" +#include "mozilla/layers/APZCTreeManagerParent.h" // for APZCTreeManagerParent #include "mozilla/layers/APZThreadUtils.h" #include "mozilla/layout/RenderFrameParent.h" #include "mozilla/gfx/GPUProcessManager.h" @@ -54,19 +55,33 @@ RemoteContentController::HandleTap(TapType aTapType, const ScrollableLayerGuid& aGuid, uint64_t aInputBlockId) { - if (MessageLoop::current() != mCompositorThread) { - // We have to send messages from the compositor thread - mCompositorThread->PostTask(NewRunnableMethod(this, - &RemoteContentController::HandleTap, - aTapType, aPoint, aModifiers, aGuid, - aInputBlockId)); - return; + APZThreadUtils::AssertOnControllerThread(); + + if (XRE_GetProcessType() == GeckoProcessType_GPU) { + MOZ_ASSERT(MessageLoop::current() == mCompositorThread); + + // The raw pointer to APZCTreeManagerParent is ok here because we are on the + // compositor thread. + APZCTreeManagerParent* apzctmp = + CompositorBridgeParent::GetApzcTreeManagerParentForRoot(aGuid.mLayersId); + if (apzctmp) { + Unused << apzctmp->SendHandleTap(aTapType, aPoint, aModifiers, aGuid, aInputBlockId); + return; + } } - if (mCanSend) { - Unused << SendHandleTap(aTapType, aPoint, - aModifiers, aGuid, aInputBlockId); + // If we get here we're probably in the parent process, but we might be in + // the GPU process in some shutdown phase where the LayerTreeState or + // APZCTreeManagerParent structures are torn down. In that case we'll just get + // a null TabParent. + dom::TabParent* tab = dom::TabParent::GetTabParentFromLayersId(aGuid.mLayersId); + if (tab) { + // If we got a TabParent we're definitely in the parent process, and the + // message is going to a child process. That means we're in an e10s + // environment, so we must be on the main thread. + MOZ_ASSERT(XRE_IsParentProcess()); + MOZ_ASSERT(NS_IsMainThread()); + tab->SendHandleTap(aTapType, aPoint, aModifiers, aGuid, aInputBlockId); } } From d6b364b06afc4734fd3b13d2bdd7f613108b5738 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Wed, 21 Sep 2016 15:27:44 +0100 Subject: [PATCH 031/117] Bug 1294767 - Add assertions that type sets do not contain cross compartment pointers r=jandem --- js/src/jscntxtinlines.h | 4 ++++ js/src/vm/TypeInference-inl.h | 25 +++++++++++++++++++++++++ js/src/vm/TypeInference.cpp | 32 ++++++++++++++++++++++++++++++++ js/src/vm/TypeInference.h | 6 ++++++ 4 files changed, 67 insertions(+) diff --git a/js/src/jscntxtinlines.h b/js/src/jscntxtinlines.h index aaffeb289747..a3eb1d61eac9 100644 --- a/js/src/jscntxtinlines.h +++ b/js/src/jscntxtinlines.h @@ -136,6 +136,10 @@ class CompartmentChecker check(desc.setterObject()); check(desc.value()); } + + void check(TypeSet::Type type) { + check(type.maybeCompartment()); + } }; /* diff --git a/js/src/vm/TypeInference-inl.h b/js/src/vm/TypeInference-inl.h index 771e57f69586..da47fa898b41 100644 --- a/js/src/vm/TypeInference-inl.h +++ b/js/src/vm/TypeInference-inl.h @@ -142,6 +142,15 @@ TypeSet::ObjectKey::singleton() return res; } +inline JSCompartment* +TypeSet::ObjectKey::maybeCompartment() +{ + if (isSingleton()) + return singleton()->compartment(); + + return group()->compartment(); +} + /* static */ inline TypeSet::Type TypeSet::ObjectType(JSObject* obj) { @@ -600,6 +609,8 @@ TypeScript::MonitorAssign(JSContext* cx, HandleObject obj, jsid id) /* static */ inline void TypeScript::SetThis(JSContext* cx, JSScript* script, TypeSet::Type type) { + assertSameCompartment(cx, script, type); + StackTypeSet* types = ThisTypes(script); if (!types) return; @@ -622,6 +633,8 @@ TypeScript::SetThis(JSContext* cx, JSScript* script, const js::Value& value) /* static */ inline void TypeScript::SetArgument(JSContext* cx, JSScript* script, unsigned arg, TypeSet::Type type) { + assertSameCompartment(cx, script, type); + StackTypeSet* types = ArgTypes(script, arg); if (!types) return; @@ -861,6 +874,18 @@ TypeSet::Type::trace(JSTracer* trc) } } +inline JSCompartment* +TypeSet::Type::maybeCompartment() +{ + if (isSingletonUnchecked()) + return singletonNoBarrier()->compartment(); + + if (isGroupUnchecked()) + return groupNoBarrier()->compartment(); + + return nullptr; +} + inline bool TypeSet::hasType(Type type) const { diff --git a/js/src/vm/TypeInference.cpp b/js/src/vm/TypeInference.cpp index 92ee8e3e64ae..542549779ccd 100644 --- a/js/src/vm/TypeInference.cpp +++ b/js/src/vm/TypeInference.cpp @@ -526,9 +526,39 @@ TypeSet::clearObjects() objectSet = nullptr; } +JSCompartment* +TypeSet::maybeCompartment() +{ + if (unknownObject()) + return nullptr; + + unsigned objectCount = getObjectCount(); + for (unsigned i = 0; i < objectCount; i++) { + ObjectKey* key = getObject(i); + if (!key) + continue; + + JSCompartment* comp = key->maybeCompartment(); + if (comp) + return comp; + } + + return nullptr; +} + +#ifdef DEBUG +static inline bool +CompartmentsMatch(JSCompartment* a, JSCompartment* b) +{ + return !a || !b || a == b; +} +#endif + void TypeSet::addType(Type type, LifoAlloc* alloc) { + MOZ_ASSERT(CompartmentsMatch(maybeCompartment(), type.maybeCompartment())); + if (unknown()) return; @@ -3250,6 +3280,8 @@ js::FillBytecodeTypeMap(JSScript* script, uint32_t* bytecodeMap) void js::TypeMonitorResult(JSContext* cx, JSScript* script, jsbytecode* pc, TypeSet::Type type) { + assertSameCompartment(cx, script, type); + AutoEnterAnalysis enter(cx); StackTypeSet* types = TypeScript::BytecodeTypes(script, pc); diff --git a/js/src/vm/TypeInference.h b/js/src/vm/TypeInference.h index 9bbc2c9bc95c..d801b0cbd92e 100644 --- a/js/src/vm/TypeInference.h +++ b/js/src/vm/TypeInference.h @@ -267,6 +267,8 @@ class TypeSet void ensureTrackedProperty(JSContext* cx, jsid id); ObjectGroup* maybeGroup(); + + JSCompartment* maybeCompartment(); } JS_HAZ_GC_POINTER; // Information about a single concrete type. We pack this into one word, @@ -352,6 +354,8 @@ class TypeSet inline void trace(JSTracer* trc); + JSCompartment* maybeCompartment(); + bool operator == (Type o) const { return data == o.data; } bool operator != (Type o) const { return data != o.data; } } JS_HAZ_GC_POINTER; @@ -502,6 +506,8 @@ class TypeSet TemporaryTypeSet* cloneObjectsOnly(LifoAlloc* alloc); TemporaryTypeSet* cloneWithoutObjects(LifoAlloc* alloc); + JSCompartment* maybeCompartment(); + // Trigger a read barrier on all the contents of a type set. static void readBarrier(const TypeSet* types); From 80a9ca513a78457dd85b6a4742fa219b06e1d692 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Wed, 21 Sep 2016 15:27:45 +0100 Subject: [PATCH 032/117] Bug 1304081 - Add more use of shouldCancel() to avoid pauses when cancelling off thread Ion compilation r=nbp --- js/src/jit/BacktrackingAllocator.cpp | 15 ++++- js/src/jit/BacktrackingAllocator.h | 2 +- js/src/jit/EdgeCaseAnalysis.cpp | 13 +++-- js/src/jit/Ion.cpp | 11 ++-- js/src/jit/IonAnalysis.cpp | 86 +++++++++++++++++++++++----- js/src/jit/IonAnalysis.h | 2 +- 6 files changed, 101 insertions(+), 28 deletions(-) diff --git a/js/src/jit/BacktrackingAllocator.cpp b/js/src/jit/BacktrackingAllocator.cpp index cffd14fdfed9..9ffbe1a6dd26 100644 --- a/js/src/jit/BacktrackingAllocator.cpp +++ b/js/src/jit/BacktrackingAllocator.cpp @@ -389,6 +389,9 @@ BacktrackingAllocator::init() LBlock* block = graph.getBlock(i); for (LInstructionIterator ins = block->begin(); ins != block->end(); ins++) { + if (mir->shouldCancel("Create data structures (inner loop 1)")) + return false; + for (size_t j = 0; j < ins->numDefs(); j++) { LDefinition* def = ins->getDef(j); if (def->isBogusTemp()) @@ -833,7 +836,7 @@ BacktrackingAllocator::go() return false; QueueItem item = allocationQueue.removeHighest(); - if (!processBundle(item.bundle)) + if (!processBundle(mir, item.bundle)) return false; } JitSpew(JitSpew_RegAlloc, "Main allocation loop complete"); @@ -1241,7 +1244,7 @@ BacktrackingAllocator::tryAllocateNonFixed(LiveBundle* bundle, } bool -BacktrackingAllocator::processBundle(LiveBundle* bundle) +BacktrackingAllocator::processBundle(MIRGenerator* mir, LiveBundle* bundle) { if (JitSpewEnabled(JitSpew_RegAlloc)) { JitSpew(JitSpew_RegAlloc, "Allocating %s [priority %lu] [weight %lu]", @@ -1276,6 +1279,9 @@ BacktrackingAllocator::processBundle(LiveBundle* bundle) bool fixed; LiveBundleVector conflicting; for (size_t attempt = 0;; attempt++) { + if (mir->shouldCancel("Backtracking Allocation (processBundle loop)")) + return false; + if (canAllocate) { bool success = false; fixed = false; @@ -1744,12 +1750,15 @@ BacktrackingAllocator::resolveControlFlow() for (size_t i = 1; i < graph.numVirtualRegisters(); i++) { VirtualRegister& reg = vregs[i]; - if (mir->shouldCancel("Backtracking Resolve Control Flow (vreg loop)")) + if (mir->shouldCancel("Backtracking Resolve Control Flow (vreg outer loop)")) return false; for (LiveRange::RegisterLinkIterator iter = reg.rangesBegin(); iter; ) { LiveRange* range = LiveRange::get(*iter); + if (mir->shouldCancel("Backtracking Resolve Control Flow (vreg inner loop)")) + return false; + // Remove ranges which will never be used. if (deadRange(range)) { reg.removeRangeAndIncrement(iter); diff --git a/js/src/jit/BacktrackingAllocator.h b/js/src/jit/BacktrackingAllocator.h index 7542c1f78fa9..1489e51616e9 100644 --- a/js/src/jit/BacktrackingAllocator.h +++ b/js/src/jit/BacktrackingAllocator.h @@ -710,7 +710,7 @@ class BacktrackingAllocator : protected RegisterAllocator MOZ_MUST_USE bool tryAllocateNonFixed(LiveBundle* bundle, Requirement requirement, Requirement hint, bool* success, bool* pfixed, LiveBundleVector& conflicting); - MOZ_MUST_USE bool processBundle(LiveBundle* bundle); + MOZ_MUST_USE bool processBundle(MIRGenerator* mir, LiveBundle* bundle); MOZ_MUST_USE bool computeRequirement(LiveBundle* bundle, Requirement *prequirement, Requirement *phint); MOZ_MUST_USE bool tryAllocateRegister(PhysicalRegister& r, LiveBundle* bundle, bool* success, diff --git a/js/src/jit/EdgeCaseAnalysis.cpp b/js/src/jit/EdgeCaseAnalysis.cpp index 51a30fb030f8..b7d73973a51d 100644 --- a/js/src/jit/EdgeCaseAnalysis.cpp +++ b/js/src/jit/EdgeCaseAnalysis.cpp @@ -24,9 +24,10 @@ EdgeCaseAnalysis::analyzeLate() uint32_t nextId = 0; for (ReversePostorderIterator block(graph.rpoBegin()); block != graph.rpoEnd(); block++) { - if (mir->shouldCancel("Analyze Late (first loop)")) - return false; for (MDefinitionIterator iter(*block); iter; iter++) { + if (mir->shouldCancel("Analyze Late (first loop)")) + return false; + iter->setId(nextId++); iter->analyzeEdgeCasesForward(); } @@ -34,10 +35,12 @@ EdgeCaseAnalysis::analyzeLate() } for (PostorderIterator block(graph.poBegin()); block != graph.poEnd(); block++) { - if (mir->shouldCancel("Analyze Late (second loop)")) - return false; - for (MInstructionReverseIterator riter(block->rbegin()); riter != block->rend(); riter++) + for (MInstructionReverseIterator riter(block->rbegin()); riter != block->rend(); riter++) { + if (mir->shouldCancel("Analyze Late (second loop)")) + return false; + riter->analyzeEdgeCasesBackward(); + } } return true; diff --git a/js/src/jit/Ion.cpp b/js/src/jit/Ion.cpp index 9c10fc8d4514..db3e77213854 100644 --- a/js/src/jit/Ion.cpp +++ b/js/src/jit/Ion.cpp @@ -1514,17 +1514,20 @@ OptimizeMIR(MIRGenerator* mir) else logger = TraceLoggerForCurrentThread(); + if (mir->shouldCancel("Start")) + return false; + if (!mir->compilingAsmJS()) { - if (!MakeMRegExpHoistable(graph)) + if (!MakeMRegExpHoistable(mir, graph)) + return false; + + if (mir->shouldCancel("Make MRegExp Hoistable")) return false; } gs.spewPass("BuildSSA"); AssertBasicGraphCoherency(graph); - if (mir->shouldCancel("Start")) - return false; - if (!JitOptions.disablePgo && !mir->compilingAsmJS()) { AutoTraceLog log(logger, TraceLogger_PruneUnusedBranches); if (!PruneUnusedBranches(mir, graph)) diff --git a/js/src/jit/IonAnalysis.cpp b/js/src/jit/IonAnalysis.cpp index b7cde1e48f21..0dd05da89075 100644 --- a/js/src/jit/IonAnalysis.cpp +++ b/js/src/jit/IonAnalysis.cpp @@ -33,7 +33,8 @@ using mozilla::DebugOnly; typedef Vector MPhiVector; static bool -FlagPhiInputsAsHavingRemovedUses(MBasicBlock* block, MBasicBlock* succ, MPhiVector& worklist) +FlagPhiInputsAsHavingRemovedUses(MIRGenerator* mir, MBasicBlock* block, MBasicBlock* succ, + MPhiVector& worklist) { // When removing an edge between 2 blocks, we might remove the ability of // later phases to figure out that the uses of a Phi should be considered as @@ -106,6 +107,9 @@ FlagPhiInputsAsHavingRemovedUses(MBasicBlock* block, MBasicBlock* succ, MPhiVect for (; it != end; it++) { MPhi* phi = *it; + if (mir->shouldCancel("FlagPhiInputsAsHavingRemovedUses outer loop")) + return false; + // We are looking to mark the Phi inputs which are used across the edge // between the |block| and its successor |succ|. MDefinition* def = phi->getOperand(predIndex); @@ -123,6 +127,10 @@ FlagPhiInputsAsHavingRemovedUses(MBasicBlock* block, MBasicBlock* succ, MPhiVect bool isUsed = false; for (size_t idx = 0; !isUsed && idx < worklist.length(); idx++) { phi = worklist[idx]; + + if (mir->shouldCancel("FlagPhiInputsAsHavingRemovedUses inner loop 1")) + return false; + if (phi->isUseRemoved() || phi->isImplicitlyUsed()) { // The phi is implicitly used. isUsed = true; @@ -132,6 +140,10 @@ FlagPhiInputsAsHavingRemovedUses(MBasicBlock* block, MBasicBlock* succ, MPhiVect MUseIterator usesEnd(phi->usesEnd()); for (MUseIterator use(phi->usesBegin()); use != usesEnd; use++) { MNode* consumer = (*use)->consumer(); + + if (mir->shouldCancel("FlagPhiInputsAsHavingRemovedUses inner loop 2")) + return false; + if (consumer->isResumePoint()) { MResumePoint* rp = consumer->toResumePoint(); if (rp->isObservableOperand(*use)) { @@ -180,11 +192,14 @@ FlagPhiInputsAsHavingRemovedUses(MBasicBlock* block, MBasicBlock* succ, MPhiVect } static bool -FlagAllOperandsAsHavingRemovedUses(MBasicBlock* block) +FlagAllOperandsAsHavingRemovedUses(MIRGenerator* mir, MBasicBlock* block) { // Flag all instructions operands as having removed uses. MInstructionIterator end = block->end(); for (MInstructionIterator it = block->begin(); it != end; it++) { + if (mir->shouldCancel("FlagAllOperandsAsHavingRemovedUses loop 1")) + return false; + MInstruction* ins = *it; for (size_t i = 0, e = ins->numOperands(); i < e; i++) ins->getOperand(i)->setUseRemovedUnchecked(); @@ -194,6 +209,9 @@ FlagAllOperandsAsHavingRemovedUses(MBasicBlock* block) // Note: no need to iterate over the caller's of the resume point as // this is the same as the entry resume point. for (size_t i = 0, e = rp->numOperands(); i < e; i++) { + if (mir->shouldCancel("FlagAllOperandsAsHavingRemovedUses inner loop")) + return false; + if (!rp->isObservableOperand(i)) continue; rp->getOperand(i)->setUseRemovedUnchecked(); @@ -204,6 +222,9 @@ FlagAllOperandsAsHavingRemovedUses(MBasicBlock* block) // Flag observable operands of the entry resume point as having removed uses. MResumePoint* rp = block->entryResumePoint(); while (rp) { + if (mir->shouldCancel("FlagAllOperandsAsHavingRemovedUses loop 2")) + return false; + for (size_t i = 0, e = rp->numOperands(); i < e; i++) { if (!rp->isObservableOperand(i)) continue; @@ -215,7 +236,10 @@ FlagAllOperandsAsHavingRemovedUses(MBasicBlock* block) // Flag Phi inputs of the successors has having removed uses. MPhiVector worklist; for (size_t i = 0, e = block->numSuccessors(); i < e; i++) { - if (!FlagPhiInputsAsHavingRemovedUses(block, block->getSuccessor(i), worklist)) + if (mir->shouldCancel("FlagAllOperandsAsHavingRemovedUses loop 3")) + return false; + + if (!FlagPhiInputsAsHavingRemovedUses(mir, block, block->getSuccessor(i), worklist)) return false; } @@ -264,6 +288,9 @@ jit::PruneUnusedBranches(MIRGenerator* mir, MIRGraph& graph) // unreachable if all predecessors are flagged as bailing or unreachable. bool someUnreachable = false; for (ReversePostorderIterator block(graph.rpoBegin()); block != graph.rpoEnd(); block++) { + if (mir->shouldCancel("Prune unused branches (main loop)")) + return false; + JitSpew(JitSpew_Prune, "Investigate Block %d:", block->id()); JitSpewIndent indent(JitSpew_Prune); @@ -280,6 +307,9 @@ jit::PruneUnusedBranches(MIRGenerator* mir, MIRGraph& graph) size_t numPred = block->numPredecessors(); size_t i = 0; for (; i < numPred; i++) { + if (mir->shouldCancel("Prune unused branches (inner loop 1)")) + return false; + MBasicBlock* pred = block->getPredecessor(i); // The backedge is visited after the loop header, but if the loop @@ -311,6 +341,9 @@ jit::PruneUnusedBranches(MIRGenerator* mir, MIRGraph& graph) size_t numSuccessorsOfPreds = 1; bool isLoopExit = false; while (p--) { + if (mir->shouldCancel("Prune unused branches (inner loop 2)")) + return false; + MBasicBlock* pred = block->getPredecessor(p); if (pred->getHitState() == MBasicBlock::HitState::Count) predCount += pred->getHitCount(); @@ -328,6 +361,9 @@ jit::PruneUnusedBranches(MIRGenerator* mir, MIRGraph& graph) size_t branchSpan = 0; ReversePostorderIterator it(block); do { + if (mir->shouldCancel("Prune unused branches (inner loop 3)")) + return false; + // Iterate over dominated blocks, and visit exit blocks as well. numInOutEdges -= it->numPredecessors(); if (numInOutEdges < 0) @@ -452,16 +488,22 @@ jit::PruneUnusedBranches(MIRGenerator* mir, MIRGraph& graph) // As we are going to remove edges and basic block, we have to mark // instructions which would be needed by baseline if we were to bailout. for (PostorderIterator it(graph.poBegin()); it != graph.poEnd();) { + if (mir->shouldCancel("Prune unused branches (marking loop)")) + return false; + MBasicBlock* block = *it++; if (!block->isMarked() && !block->unreachable()) continue; - FlagAllOperandsAsHavingRemovedUses(block); + FlagAllOperandsAsHavingRemovedUses(mir, block); } // Remove the blocks in post-order such that consumers are visited before // the predecessors, the only exception being the Phi nodes of loop headers. for (PostorderIterator it(graph.poBegin()); it != graph.poEnd();) { + if (mir->shouldCancel("Prune unused branches (removal loop)")) + return false; + MBasicBlock* block = *it++; if (!block->isMarked() && !block->unreachable()) continue; @@ -1140,13 +1182,13 @@ jit::EliminatePhis(MIRGenerator* mir, MIRGraph& graph, // Add all observable phis to a worklist. We use the "in worklist" bit to // mean "this phi is live". for (PostorderIterator block = graph.poBegin(); block != graph.poEnd(); block++) { - if (mir->shouldCancel("Eliminate Phis (populate loop)")) - return false; - MPhiIterator iter = block->phisBegin(); while (iter != block->phisEnd()) { MPhi* phi = *iter++; + if (mir->shouldCancel("Eliminate Phis (populate loop)")) + return false; + // Flag all as unused, only observable phis would be marked as used // when processed by the work list. phi->setUnused(); @@ -1431,6 +1473,9 @@ TypeAnalyzer::specializePhis() return false; for (MPhiIterator phi(block->phisBegin()); phi != block->phisEnd(); phi++) { + if (mir->shouldCancel("Specialize Phis (inner loop)")) + return false; + bool hasInputsWithEmptyTypes; MIRType type = GuessPhiType(*phi, &hasInputsWithEmptyTypes); phi->specialize(type); @@ -1831,10 +1876,10 @@ bool TypeAnalyzer::graphContainsFloat32() { for (ReversePostorderIterator block(graph.rpoBegin()); block != graph.rpoEnd(); ++block) { - if (mir->shouldCancel("Ensure Float32 commutativity - Graph contains Float32")) - return false; - for (MDefinitionIterator def(*block); def; def++) { + if (mir->shouldCancel("Ensure Float32 commutativity - Graph contains Float32")) + return false; + if (def->type() == MIRType::Float32) return true; } @@ -2025,7 +2070,8 @@ SetNotInWorklist(MDefinitionVector& worklist) } static bool -IsRegExpHoistable(MDefinition* regexp, MDefinitionVector& worklist, bool* hoistable) +IsRegExpHoistable(MIRGenerator* mir, MDefinition* regexp, MDefinitionVector& worklist, + bool* hoistable) { MOZ_ASSERT(worklist.length() == 0); @@ -2035,7 +2081,13 @@ IsRegExpHoistable(MDefinition* regexp, MDefinitionVector& worklist, bool* hoista for (size_t i = 0; i < worklist.length(); i++) { MDefinition* def = worklist[i]; + if (mir->shouldCancel("IsRegExpHoistable outer loop")) + return false; + for (MUseIterator use = def->usesBegin(); use != def->usesEnd(); use++) { + if (mir->shouldCancel("IsRegExpHoistable inner loop")) + return false; + // Ignore resume points. At this point all uses are listed. // No DCE or GVN or something has happened. if (use->consumer()->isResumePoint()) @@ -2109,22 +2161,28 @@ IsRegExpHoistable(MDefinition* regexp, MDefinitionVector& worklist, bool* hoista } bool -jit::MakeMRegExpHoistable(MIRGraph& graph) +jit::MakeMRegExpHoistable(MIRGenerator* mir, MIRGraph& graph) { MDefinitionVector worklist(graph.alloc()); for (ReversePostorderIterator block(graph.rpoBegin()); block != graph.rpoEnd(); block++) { + if (mir->shouldCancel("MakeMRegExpHoistable outer loop")) + return false; + for (MDefinitionIterator iter(*block); iter; iter++) { if (!*iter) MOZ_CRASH("confirm bug 1263794."); + if (mir->shouldCancel("MakeMRegExpHoistable inner loop")) + return false; + if (!iter->isRegExp()) continue; MRegExp* regexp = iter->toRegExp(); bool hoistable = false; - if (!IsRegExpHoistable(regexp, worklist, &hoistable)) + if (!IsRegExpHoistable(mir, regexp, worklist, &hoistable)) return false; if (!hoistable) @@ -2220,7 +2278,7 @@ jit::RemoveUnmarkedBlocks(MIRGenerator* mir, MIRGraph& graph, uint32_t numMarked if (!block->isMarked()) continue; - FlagAllOperandsAsHavingRemovedUses(block); + FlagAllOperandsAsHavingRemovedUses(mir, block); } // Find unmarked blocks and remove them. diff --git a/js/src/jit/IonAnalysis.h b/js/src/jit/IonAnalysis.h index 7dd6867f3112..58e509263e1b 100644 --- a/js/src/jit/IonAnalysis.h +++ b/js/src/jit/IonAnalysis.h @@ -54,7 +54,7 @@ MOZ_MUST_USE bool ApplyTypeInformation(MIRGenerator* mir, MIRGraph& graph); MOZ_MUST_USE bool -MakeMRegExpHoistable(MIRGraph& graph); +MakeMRegExpHoistable(MIRGenerator* mir, MIRGraph& graph); void RenumberBlocks(MIRGraph& graph); From ed9a70c1387e0368fa2ffbaeea15fa920c234fca Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Wed, 21 Sep 2016 19:21:40 -0400 Subject: [PATCH 033/117] Bug 1301076 - remove stlport support from the build system and stlport code; r=glandium We can no longer build with STLport now that we require a C++11-compliant standard library, so we might as well get rid of all the support for it. --- build/autoconf/android.m4 | 7 +- build/gabi++/Android.mk | 55 - build/gabi++/README.mozilla | 1 - build/gabi++/include/cxxabi.h | 183 -- build/gabi++/include/new | 56 - build/gabi++/include/typeinfo | 76 - build/gabi++/moz.build | 36 - build/gabi++/src/array_type_info.cc | 37 - build/gabi++/src/class_type_info.cc | 37 - build/gabi++/src/delete.cc | 38 - build/gabi++/src/dynamic_cast.cc | 356 --- build/gabi++/src/enum_type_info.cc | 37 - build/gabi++/src/function_type_info.cc | 37 - build/gabi++/src/fundamental_type_info.cc | 37 - build/gabi++/src/new.cc | 42 - build/gabi++/src/pbase_type_info.cc | 37 - .../gabi++/src/pointer_to_member_type_info.cc | 37 - build/gabi++/src/pointer_type_info.cc | 37 - build/gabi++/src/si_class_type_info.cc | 37 - build/gabi++/src/type_info.cc | 75 - build/gabi++/src/vmi_class_type_info.cc | 37 - build/gabi++/use_rtti.mk | 8 - build/moz.build | 5 - build/stlport/Android.mk | 133 - build/stlport/LICENSE | 27 - build/stlport/MODULE_LICENSE_BSD_LIKE | 0 build/stlport/README | 69 - build/stlport/README.android | 9 - build/stlport/README.mozilla | 11 - build/stlport/README.original | 64 - build/stlport/android-mozilla-config.patch | 82 - build/stlport/moz.build | 78 - build/stlport/overrides/new | 65 - build/stlport/src/_stdio_file.h | 117 - build/stlport/src/acquire_release.h | 46 - build/stlport/src/aligned_buffer.h | 21 - build/stlport/src/allocators.cpp | 1121 -------- build/stlport/src/bitset.cpp | 156 -- build/stlport/src/c_locale.c | 29 - build/stlport/src/c_locale.h | 450 ---- .../src/c_locale_dummy/c_locale_dummy.c | 531 ---- .../src/c_locale_glibc/c_locale_glibc2.c | 705 ----- .../src/c_locale_win32/c_locale_win32.c | 1786 ------------ .../src/c_locale_win32/c_wlocale_win32.c | 314 --- build/stlport/src/codecvt.cpp | 143 - build/stlport/src/collate.cpp | 69 - build/stlport/src/complex.cpp | 353 --- build/stlport/src/complex_io.cpp | 157 -- build/stlport/src/complex_trig.cpp | 192 -- build/stlport/src/ctype.cpp | 486 ---- build/stlport/src/cxa.c | 198 -- build/stlport/src/details/fstream_stdio.cpp | 387 --- build/stlport/src/details/fstream_unistd.cpp | 347 --- build/stlport/src/details/fstream_win32io.cpp | 629 ----- build/stlport/src/dll_main.cpp | 262 -- build/stlport/src/facets_byname.cpp | 1057 -------- build/stlport/src/fstream.cpp | 114 - build/stlport/src/ios.cpp | 320 --- build/stlport/src/iostream.cpp | 354 --- build/stlport/src/istream.cpp | 48 - build/stlport/src/locale.cpp | 446 --- build/stlport/src/locale_catalog.cpp | 288 -- build/stlport/src/locale_impl.cpp | 765 ------ build/stlport/src/locale_impl.h | 133 - build/stlport/src/lock_free_slist.h | 307 --- build/stlport/src/message_facets.h | 152 -- build/stlport/src/messages.cpp | 247 -- build/stlport/src/monetary.cpp | 152 -- build/stlport/src/num_get.cpp | 120 - build/stlport/src/num_get_float.cpp | 884 ------ build/stlport/src/num_put.cpp | 183 -- build/stlport/src/num_put_float.cpp | 919 ------- build/stlport/src/numpunct.cpp | 46 - build/stlport/src/ostream.cpp | 47 - build/stlport/src/sparc_atomic.s | 68 - build/stlport/src/sparc_atomic64.s | 65 - build/stlport/src/sstream.cpp | 45 - build/stlport/src/stdio_streambuf.cpp | 239 -- build/stlport/src/stdio_streambuf.h | 102 - build/stlport/src/stlport.rc | 96 - build/stlport/src/stlport_prefix.h | 43 - build/stlport/src/string.cpp | 93 - build/stlport/src/strstream.cpp | 391 --- build/stlport/src/time_facets.cpp | 565 ---- build/stlport/src/warning_disable.h | 61 - build/stlport/stlport/algorithm | 62 - build/stlport/stlport/assert.h | 50 - build/stlport/stlport/bitset | 70 - build/stlport/stlport/cassert | 46 - build/stlport/stlport/cctype | 47 - build/stlport/stlport/cerrno | 55 - build/stlport/stlport/cfloat | 45 - build/stlport/stlport/ciso646 | 45 - build/stlport/stlport/climits | 53 - build/stlport/stlport/clocale | 47 - build/stlport/stlport/cmath | 53 - build/stlport/stlport/complex | 57 - build/stlport/stlport/csetjmp | 47 - build/stlport/stlport/csignal | 47 - build/stlport/stlport/cstdarg | 47 - build/stlport/stlport/cstddef | 47 - build/stlport/stlport/cstdio | 53 - build/stlport/stlport/cstdlib | 54 - build/stlport/stlport/cstring | 47 - build/stlport/stlport/ctime | 53 - build/stlport/stlport/ctype.h | 114 - build/stlport/stlport/cwchar | 48 - build/stlport/stlport/cwctype | 47 - build/stlport/stlport/deque | 57 - build/stlport/stlport/errno.h | 70 - build/stlport/stlport/exception | 68 - build/stlport/stlport/exception.h | 43 - build/stlport/stlport/float.h | 52 - build/stlport/stlport/fstream | 66 - build/stlport/stlport/fstream.h | 42 - build/stlport/stlport/functional | 148 - build/stlport/stlport/hash_map | 49 - build/stlport/stlport/hash_set | 49 - build/stlport/stlport/iomanip | 53 - build/stlport/stlport/iomanip.h | 53 - build/stlport/stlport/ios | 53 - build/stlport/stlport/ios.h | 39 - build/stlport/stlport/iosfwd | 53 - build/stlport/stlport/iostream | 104 - build/stlport/stlport/iostream.h | 106 - build/stlport/stlport/iso646.h | 39 - build/stlport/stlport/istream | 53 - build/stlport/stlport/istream.h | 50 - build/stlport/stlport/iterator | 61 - build/stlport/stlport/limits | 50 - build/stlport/stlport/limits.h | 39 - build/stlport/stlport/list | 57 - build/stlport/stlport/locale | 156 -- build/stlport/stlport/locale.h | 43 - build/stlport/stlport/map | 57 - build/stlport/stlport/math.h | 53 - build/stlport/stlport/mem.h | 58 - build/stlport/stlport/memory | 130 - build/stlport/stlport/new | 47 - build/stlport/stlport/new.h | 50 - build/stlport/stlport/numeric | 54 - build/stlport/stlport/ostream | 52 - build/stlport/stlport/ostream.h | 37 - build/stlport/stlport/pthread.h | 46 - build/stlport/stlport/pthread_alloc | 49 - build/stlport/stlport/queue | 57 - build/stlport/stlport/rlocks.h | 11 - build/stlport/stlport/rope | 44 - build/stlport/stlport/set | 57 - build/stlport/stlport/setjmp.h | 52 - build/stlport/stlport/signal.h | 39 - build/stlport/stlport/slist | 54 - build/stlport/stlport/sstream | 57 - build/stlport/stlport/stack | 57 - build/stlport/stlport/stdarg.h | 47 - build/stlport/stlport/stddef.h | 44 - build/stlport/stlport/stdexcept | 56 - build/stlport/stlport/stdio.h | 57 - build/stlport/stlport/stdiostream.h | 10 - build/stlport/stlport/stdlib.h | 67 - build/stlport/stlport/stl/_abbrevs.h | 77 - build/stlport/stlport/stl/_algo.c | 2028 -------------- build/stlport/stlport/stl/_algo.h | 745 ----- build/stlport/stlport/stl/_algobase.c | 483 ---- build/stlport/stlport/stl/_algobase.h | 728 ----- build/stlport/stlport/stl/_alloc.c | 87 - build/stlport/stlport/stl/_alloc.h | 580 ---- build/stlport/stlport/stl/_auto_ptr.h | 133 - build/stlport/stlport/stl/_bitset.c | 235 -- build/stlport/stlport/stl/_bitset.h | 880 ------ build/stlport/stlport/stl/_bvector.h | 841 ------ build/stlport/stlport/stl/_carray.h | 61 - build/stlport/stlport/stl/_cctype.h | 49 - build/stlport/stlport/stl/_clocale.h | 43 - build/stlport/stlport/stl/_cmath.h | 605 ----- build/stlport/stlport/stl/_codecvt.h | 442 --- build/stlport/stlport/stl/_collate.h | 176 -- build/stlport/stlport/stl/_complex.c | 145 - build/stlport/stlport/stl/_complex.h | 935 ------- .../stlport/stlport/stl/_config_compat_post.h | 51 - build/stlport/stlport/stl/_construct.h | 289 -- build/stlport/stlport/stl/_cprolog.h | 25 - build/stlport/stlport/stl/_csetjmp.h | 68 - build/stlport/stlport/stl/_csignal.h | 41 - build/stlport/stlport/stl/_cstdarg.h | 34 - build/stlport/stlport/stl/_cstddef.h | 44 - build/stlport/stlport/stl/_cstdio.h | 127 - build/stlport/stlport/stl/_cstdlib.h | 180 -- build/stlport/stlport/stl/_cstring.h | 35 - build/stlport/stlport/stl/_ctime.h | 56 - build/stlport/stlport/stl/_ctraits_fns.h | 91 - build/stlport/stlport/stl/_ctype.h | 280 -- build/stlport/stlport/stl/_cwchar.h | 342 --- build/stlport/stlport/stl/_cwctype.h | 89 - build/stlport/stlport/stl/_deque.c | 823 ------ build/stlport/stlport/stl/_deque.h | 1115 -------- build/stlport/stlport/stl/_epilog.h | 42 - build/stlport/stlport/stl/_exception.h | 196 -- build/stlport/stlport/stl/_facets_fwd.h | 53 - build/stlport/stlport/stl/_fstream.c | 766 ------ build/stlport/stlport/stl/_fstream.h | 714 ----- build/stlport/stlport/stl/_function.h | 433 --- .../stlport/stlport/stl/_function_adaptors.h | 783 ------ build/stlport/stlport/stl/_function_base.h | 217 -- build/stlport/stlport/stl/_hash_fun.h | 146 - build/stlport/stlport/stl/_hash_map.h | 500 ---- build/stlport/stlport/stl/_hash_set.h | 495 ---- build/stlport/stlport/stl/_hashtable.c | 553 ---- build/stlport/stlport/stl/_hashtable.h | 658 ----- build/stlport/stlport/stl/_heap.c | 246 -- build/stlport/stlport/stl/_heap.h | 125 - build/stlport/stlport/stl/_iomanip.h | 165 -- build/stlport/stlport/stl/_ios.c | 127 - build/stlport/stlport/stl/_ios.h | 187 -- build/stlport/stlport/stl/_ios_base.h | 347 --- build/stlport/stlport/stl/_ioserr.h | 12 - build/stlport/stlport/stl/_iosfwd.h | 159 -- build/stlport/stlport/stl/_iostream_string.h | 140 - build/stlport/stlport/stl/_istream.c | 1428 ---------- build/stlport/stlport/stl/_istream.h | 359 --- .../stlport/stl/_istreambuf_iterator.h | 161 -- build/stlport/stlport/stl/_iterator.h | 265 -- build/stlport/stlport/stl/_iterator_base.h | 525 ---- build/stlport/stlport/stl/_iterator_old.h | 334 --- build/stlport/stlport/stl/_limits.c | 405 --- build/stlport/stlport/stl/_limits.h | 519 ---- build/stlport/stlport/stl/_list.c | 250 -- build/stlport/stlport/stl/_list.h | 742 ----- build/stlport/stlport/stl/_locale.h | 366 --- build/stlport/stlport/stl/_map.h | 435 --- build/stlport/stlport/stl/_mbstate_t.h | 43 - build/stlport/stlport/stl/_messages_facets.h | 185 -- build/stlport/stlport/stl/_monetary.c | 527 ---- build/stlport/stlport/stl/_monetary.h | 435 --- .../stlport/stlport/stl/_move_construct_fwk.h | 159 -- build/stlport/stlport/stl/_new.h | 145 - build/stlport/stlport/stl/_num_get.c | 623 ----- build/stlport/stlport/stl/_num_get.h | 237 -- build/stlport/stlport/stl/_num_put.c | 522 ---- build/stlport/stlport/stl/_num_put.h | 187 -- build/stlport/stlport/stl/_numeric.c | 106 - build/stlport/stlport/stl/_numeric.h | 191 -- build/stlport/stlport/stl/_numpunct.h | 176 -- build/stlport/stlport/stl/_ostream.c | 455 ---- build/stlport/stlport/stl/_ostream.h | 387 --- .../stlport/stl/_ostreambuf_iterator.h | 102 - build/stlport/stlport/stl/_pair.h | 186 -- build/stlport/stlport/stl/_prolog.h | 18 - build/stlport/stlport/stl/_pthread_alloc.h | 461 ---- build/stlport/stlport/stl/_ptrs_specialize.h | 83 - build/stlport/stlport/stl/_queue.h | 268 -- build/stlport/stlport/stl/_range_errors.c | 84 - build/stlport/stlport/stl/_range_errors.h | 60 - build/stlport/stlport/stl/_raw_storage_iter.h | 80 - build/stlport/stlport/stl/_relops_cont.h | 29 - build/stlport/stlport/stl/_relops_hash_cont.h | 13 - build/stlport/stlport/stl/_rope.c | 1407 ---------- build/stlport/stlport/stl/_rope.h | 2391 ----------------- build/stlport/stlport/stl/_set.h | 412 --- build/stlport/stlport/stl/_slist.c | 230 -- build/stlport/stlport/stl/_slist.h | 914 ------- build/stlport/stlport/stl/_slist_base.c | 104 - build/stlport/stlport/stl/_slist_base.h | 90 - build/stlport/stlport/stl/_sparc_atomic.h | 61 - build/stlport/stlport/stl/_sstream.c | 465 ---- build/stlport/stlport/stl/_sstream.h | 266 -- build/stlport/stlport/stl/_stack.h | 133 - build/stlport/stlport/stl/_stdexcept.h | 109 - build/stlport/stlport/stl/_stdexcept_base.c | 95 - build/stlport/stlport/stl/_stdexcept_base.h | 97 - build/stlport/stlport/stl/_stlport_version.h | 30 - build/stlport/stlport/stl/_stream_iterator.h | 253 -- build/stlport/stlport/stl/_streambuf.c | 208 -- build/stlport/stlport/stl/_streambuf.h | 287 -- build/stlport/stlport/stl/_string.c | 673 ----- build/stlport/stlport/stl/_string.h | 1182 -------- build/stlport/stlport/stl/_string_base.h | 231 -- build/stlport/stlport/stl/_string_fwd.h | 60 - build/stlport/stlport/stl/_string_hash.h | 71 - build/stlport/stlport/stl/_string_io.c | 172 -- build/stlport/stlport/stl/_string_io.h | 77 - build/stlport/stlport/stl/_string_npos.h | 27 - build/stlport/stlport/stl/_string_operators.h | 602 ----- build/stlport/stlport/stl/_string_sum.h | 414 --- .../stlport/stlport/stl/_string_sum_methods.h | 155 -- .../stlport/stlport/stl/_string_workaround.h | 599 ----- build/stlport/stlport/stl/_strstream.h | 165 -- build/stlport/stlport/stl/_tempbuf.c | 57 - build/stlport/stlport/stl/_tempbuf.h | 167 -- build/stlport/stlport/stl/_threads.c | 167 -- build/stlport/stlport/stl/_threads.h | 687 ----- build/stlport/stlport/stl/_time_facets.c | 440 --- build/stlport/stlport/stl/_time_facets.h | 329 --- build/stlport/stlport/stl/_tree.c | 730 ----- build/stlport/stlport/stl/_tree.h | 684 ----- build/stlport/stlport/stl/_typeinfo.h | 79 - build/stlport/stlport/stl/_uninitialized.h | 443 --- build/stlport/stlport/stl/_unordered_map.h | 443 --- build/stlport/stlport/stl/_unordered_set.h | 418 --- build/stlport/stlport/stl/_valarray.c | 191 -- build/stlport/stlport/stl/_valarray.h | 1684 ------------ build/stlport/stlport/stl/_vector.c | 242 -- build/stlport/stlport/stl/_vector.h | 773 ------ build/stlport/stlport/stl/boost_type_traits.h | 150 -- build/stlport/stlport/stl/c_locale.h | 131 - build/stlport/stlport/stl/char_traits.h | 278 -- build/stlport/stlport/stl/concept_checks.h | 810 ------ build/stlport/stlport/stl/config/_aix.h | 3 - build/stlport/stlport/stl/config/_android.h | 73 - build/stlport/stlport/stl/config/_apcc.h | 30 - build/stlport/stlport/stl/config/_apple.h | 118 - build/stlport/stlport/stl/config/_as400.h | 55 - build/stlport/stlport/stl/config/_auto_link.h | 61 - build/stlport/stlport/stl/config/_bc.h | 138 - build/stlport/stlport/stl/config/_como.h | 207 -- build/stlport/stlport/stl/config/_cray.h | 65 - build/stlport/stlport/stl/config/_cygwin.h | 9 - build/stlport/stlport/stl/config/_dec.h | 113 - build/stlport/stlport/stl/config/_dec_vms.h | 89 - .../stlport/stl/config/_detect_dll_or_lib.h | 74 - build/stlport/stlport/stl/config/_dm.h | 121 - build/stlport/stlport/stl/config/_epilog.h | 29 - build/stlport/stlport/stl/config/_evc.h | 333 --- build/stlport/stlport/stl/config/_feedback.h | 43 - build/stlport/stlport/stl/config/_freebsd.h | 3 - build/stlport/stlport/stl/config/_fujitsu.h | 7 - build/stlport/stlport/stl/config/_gcc.h | 198 -- build/stlport/stlport/stl/config/_hpacc.h | 129 - build/stlport/stlport/stl/config/_hpux.h | 17 - build/stlport/stlport/stl/config/_ibm.h | 144 - build/stlport/stlport/stl/config/_icc.h | 44 - build/stlport/stlport/stl/config/_intel.h | 72 - build/stlport/stlport/stl/config/_kai.h | 43 - build/stlport/stlport/stl/config/_linux.h | 126 - build/stlport/stlport/stl/config/_mac.h | 6 - build/stlport/stlport/stl/config/_macosx.h | 9 - build/stlport/stlport/stl/config/_mlc.h | 7 - build/stlport/stlport/stl/config/_msvc.h | 265 -- build/stlport/stlport/stl/config/_mwerks.h | 159 -- .../stlport/stl/config/_native_headers.h | 50 - build/stlport/stlport/stl/config/_openbsd.h | 12 - build/stlport/stlport/stl/config/_prolog.h | 43 - build/stlport/stlport/stl/config/_sgi.h | 94 - build/stlport/stlport/stl/config/_solaris.h | 77 - build/stlport/stlport/stl/config/_sunprocc.h | 166 -- build/stlport/stlport/stl/config/_system.h | 174 -- .../stlport/stl/config/_warnings_off.h | 51 - build/stlport/stlport/stl/config/_watcom.h | 151 -- build/stlport/stlport/stl/config/_windows.h | 291 -- build/stlport/stlport/stl/config/compat.h | 80 - build/stlport/stlport/stl/config/features.h | 1079 -------- build/stlport/stlport/stl/config/host.h | 342 --- build/stlport/stlport/stl/config/stl_confix.h | 97 - build/stlport/stlport/stl/config/stl_mycomp.h | 282 -- .../stlport/stlport/stl/config/user_config.h | 326 --- build/stlport/stlport/stl/debug/_debug.c | 628 ----- build/stlport/stlport/stl/debug/_debug.h | 473 ---- build/stlport/stlport/stl/debug/_deque.h | 414 --- build/stlport/stlport/stl/debug/_hashtable.h | 340 --- build/stlport/stlport/stl/debug/_iterator.h | 457 ---- build/stlport/stlport/stl/debug/_list.h | 495 ---- build/stlport/stlport/stl/debug/_slist.h | 613 ----- build/stlport/stlport/stl/debug/_string.h | 828 ------ .../stlport/stl/debug/_string_sum_methods.h | 111 - build/stlport/stlport/stl/debug/_tree.h | 317 --- build/stlport/stlport/stl/debug/_vector.h | 425 --- build/stlport/stlport/stl/msl_string.h | 47 - build/stlport/stlport/stl/pointers/_deque.h | 390 --- build/stlport/stlport/stl/pointers/_list.h | 345 --- build/stlport/stlport/stl/pointers/_set.h | 564 ---- build/stlport/stlport/stl/pointers/_slist.h | 427 --- build/stlport/stlport/stl/pointers/_tools.h | 474 ---- build/stlport/stlport/stl/pointers/_vector.h | 243 -- build/stlport/stlport/stl/type_manips.h | 321 --- build/stlport/stlport/stl/type_traits.h | 626 ----- build/stlport/stlport/streambuf | 52 - build/stlport/stlport/streambuf.h | 53 - build/stlport/stlport/string | 59 - build/stlport/stlport/string.h | 66 - build/stlport/stlport/strstream | 61 - build/stlport/stlport/strstream.h | 55 - build/stlport/stlport/time.h | 44 - build/stlport/stlport/type_traits | 798 ------ build/stlport/stlport/typeinfo | 53 - build/stlport/stlport/typeinfo.h | 87 - build/stlport/stlport/unordered_map | 39 - build/stlport/stlport/unordered_set | 39 - build/stlport/stlport/using/cstring | 60 - build/stlport/stlport/using/export | 12 - build/stlport/stlport/using/fstream | 19 - build/stlport/stlport/using/h/fstream.h | 4 - build/stlport/stlport/using/h/iomanip.h | 6 - build/stlport/stlport/using/h/iostream.h | 24 - build/stlport/stlport/using/h/ostream.h | 6 - build/stlport/stlport/using/h/streambuf.h | 1 - build/stlport/stlport/using/h/strstream.h | 4 - build/stlport/stlport/using/iomanip | 6 - build/stlport/stlport/using/ios | 41 - build/stlport/stlport/using/iosfwd | 54 - build/stlport/stlport/using/iostream | 14 - build/stlport/stlport/using/istream | 16 - build/stlport/stlport/using/locale | 65 - build/stlport/stlport/using/ostream | 10 - build/stlport/stlport/using/sstream | 16 - build/stlport/stlport/using/streambuf | 5 - build/stlport/stlport/using/strstream | 4 - build/stlport/stlport/utility | 60 - build/stlport/stlport/valarray | 51 - build/stlport/stlport/vector | 59 - build/stlport/stlport/wchar.h | 64 - build/stlport/stlport/wctype.h | 47 - build/stlport/test/.gitignore | 2 - build/templates.mozbuild | 3 - config/external/icu/common/moz.build | 5 - config/external/icu/defs.mozbuild | 3 - toolkit/content/license.html | 73 - toolkit/content/moz.build | 2 - 417 files changed, 1 insertion(+), 92169 deletions(-) delete mode 100644 build/gabi++/Android.mk delete mode 100644 build/gabi++/README.mozilla delete mode 100644 build/gabi++/include/cxxabi.h delete mode 100644 build/gabi++/include/new delete mode 100644 build/gabi++/include/typeinfo delete mode 100644 build/gabi++/moz.build delete mode 100644 build/gabi++/src/array_type_info.cc delete mode 100644 build/gabi++/src/class_type_info.cc delete mode 100644 build/gabi++/src/delete.cc delete mode 100644 build/gabi++/src/dynamic_cast.cc delete mode 100644 build/gabi++/src/enum_type_info.cc delete mode 100644 build/gabi++/src/function_type_info.cc delete mode 100644 build/gabi++/src/fundamental_type_info.cc delete mode 100644 build/gabi++/src/new.cc delete mode 100644 build/gabi++/src/pbase_type_info.cc delete mode 100644 build/gabi++/src/pointer_to_member_type_info.cc delete mode 100644 build/gabi++/src/pointer_type_info.cc delete mode 100644 build/gabi++/src/si_class_type_info.cc delete mode 100644 build/gabi++/src/type_info.cc delete mode 100644 build/gabi++/src/vmi_class_type_info.cc delete mode 100644 build/gabi++/use_rtti.mk delete mode 100644 build/stlport/Android.mk delete mode 100644 build/stlport/LICENSE delete mode 100644 build/stlport/MODULE_LICENSE_BSD_LIKE delete mode 100644 build/stlport/README delete mode 100644 build/stlport/README.android delete mode 100644 build/stlport/README.mozilla delete mode 100644 build/stlport/README.original delete mode 100644 build/stlport/android-mozilla-config.patch delete mode 100644 build/stlport/moz.build delete mode 100644 build/stlport/overrides/new delete mode 100644 build/stlport/src/_stdio_file.h delete mode 100644 build/stlport/src/acquire_release.h delete mode 100644 build/stlport/src/aligned_buffer.h delete mode 100644 build/stlport/src/allocators.cpp delete mode 100644 build/stlport/src/bitset.cpp delete mode 100644 build/stlport/src/c_locale.c delete mode 100644 build/stlport/src/c_locale.h delete mode 100644 build/stlport/src/c_locale_dummy/c_locale_dummy.c delete mode 100644 build/stlport/src/c_locale_glibc/c_locale_glibc2.c delete mode 100644 build/stlport/src/c_locale_win32/c_locale_win32.c delete mode 100644 build/stlport/src/c_locale_win32/c_wlocale_win32.c delete mode 100644 build/stlport/src/codecvt.cpp delete mode 100644 build/stlport/src/collate.cpp delete mode 100644 build/stlport/src/complex.cpp delete mode 100644 build/stlport/src/complex_io.cpp delete mode 100644 build/stlport/src/complex_trig.cpp delete mode 100644 build/stlport/src/ctype.cpp delete mode 100644 build/stlport/src/cxa.c delete mode 100644 build/stlport/src/details/fstream_stdio.cpp delete mode 100644 build/stlport/src/details/fstream_unistd.cpp delete mode 100644 build/stlport/src/details/fstream_win32io.cpp delete mode 100644 build/stlport/src/dll_main.cpp delete mode 100644 build/stlport/src/facets_byname.cpp delete mode 100644 build/stlport/src/fstream.cpp delete mode 100644 build/stlport/src/ios.cpp delete mode 100644 build/stlport/src/iostream.cpp delete mode 100644 build/stlport/src/istream.cpp delete mode 100644 build/stlport/src/locale.cpp delete mode 100644 build/stlport/src/locale_catalog.cpp delete mode 100644 build/stlport/src/locale_impl.cpp delete mode 100644 build/stlport/src/locale_impl.h delete mode 100644 build/stlport/src/lock_free_slist.h delete mode 100644 build/stlport/src/message_facets.h delete mode 100644 build/stlport/src/messages.cpp delete mode 100644 build/stlport/src/monetary.cpp delete mode 100644 build/stlport/src/num_get.cpp delete mode 100644 build/stlport/src/num_get_float.cpp delete mode 100644 build/stlport/src/num_put.cpp delete mode 100644 build/stlport/src/num_put_float.cpp delete mode 100644 build/stlport/src/numpunct.cpp delete mode 100644 build/stlport/src/ostream.cpp delete mode 100644 build/stlport/src/sparc_atomic.s delete mode 100644 build/stlport/src/sparc_atomic64.s delete mode 100644 build/stlport/src/sstream.cpp delete mode 100644 build/stlport/src/stdio_streambuf.cpp delete mode 100644 build/stlport/src/stdio_streambuf.h delete mode 100644 build/stlport/src/stlport.rc delete mode 100644 build/stlport/src/stlport_prefix.h delete mode 100644 build/stlport/src/string.cpp delete mode 100644 build/stlport/src/strstream.cpp delete mode 100644 build/stlport/src/time_facets.cpp delete mode 100644 build/stlport/src/warning_disable.h delete mode 100644 build/stlport/stlport/algorithm delete mode 100644 build/stlport/stlport/assert.h delete mode 100644 build/stlport/stlport/bitset delete mode 100644 build/stlport/stlport/cassert delete mode 100644 build/stlport/stlport/cctype delete mode 100644 build/stlport/stlport/cerrno delete mode 100644 build/stlport/stlport/cfloat delete mode 100644 build/stlport/stlport/ciso646 delete mode 100644 build/stlport/stlport/climits delete mode 100644 build/stlport/stlport/clocale delete mode 100644 build/stlport/stlport/cmath delete mode 100644 build/stlport/stlport/complex delete mode 100644 build/stlport/stlport/csetjmp delete mode 100644 build/stlport/stlport/csignal delete mode 100644 build/stlport/stlport/cstdarg delete mode 100644 build/stlport/stlport/cstddef delete mode 100644 build/stlport/stlport/cstdio delete mode 100644 build/stlport/stlport/cstdlib delete mode 100644 build/stlport/stlport/cstring delete mode 100644 build/stlport/stlport/ctime delete mode 100644 build/stlport/stlport/ctype.h delete mode 100644 build/stlport/stlport/cwchar delete mode 100644 build/stlport/stlport/cwctype delete mode 100644 build/stlport/stlport/deque delete mode 100644 build/stlport/stlport/errno.h delete mode 100644 build/stlport/stlport/exception delete mode 100644 build/stlport/stlport/exception.h delete mode 100644 build/stlport/stlport/float.h delete mode 100644 build/stlport/stlport/fstream delete mode 100644 build/stlport/stlport/fstream.h delete mode 100644 build/stlport/stlport/functional delete mode 100644 build/stlport/stlport/hash_map delete mode 100644 build/stlport/stlport/hash_set delete mode 100644 build/stlport/stlport/iomanip delete mode 100644 build/stlport/stlport/iomanip.h delete mode 100644 build/stlport/stlport/ios delete mode 100644 build/stlport/stlport/ios.h delete mode 100644 build/stlport/stlport/iosfwd delete mode 100644 build/stlport/stlport/iostream delete mode 100644 build/stlport/stlport/iostream.h delete mode 100644 build/stlport/stlport/iso646.h delete mode 100644 build/stlport/stlport/istream delete mode 100644 build/stlport/stlport/istream.h delete mode 100644 build/stlport/stlport/iterator delete mode 100644 build/stlport/stlport/limits delete mode 100644 build/stlport/stlport/limits.h delete mode 100644 build/stlport/stlport/list delete mode 100644 build/stlport/stlport/locale delete mode 100644 build/stlport/stlport/locale.h delete mode 100644 build/stlport/stlport/map delete mode 100644 build/stlport/stlport/math.h delete mode 100644 build/stlport/stlport/mem.h delete mode 100644 build/stlport/stlport/memory delete mode 100644 build/stlport/stlport/new delete mode 100644 build/stlport/stlport/new.h delete mode 100644 build/stlport/stlport/numeric delete mode 100644 build/stlport/stlport/ostream delete mode 100644 build/stlport/stlport/ostream.h delete mode 100644 build/stlport/stlport/pthread.h delete mode 100644 build/stlport/stlport/pthread_alloc delete mode 100644 build/stlport/stlport/queue delete mode 100644 build/stlport/stlport/rlocks.h delete mode 100644 build/stlport/stlport/rope delete mode 100644 build/stlport/stlport/set delete mode 100644 build/stlport/stlport/setjmp.h delete mode 100644 build/stlport/stlport/signal.h delete mode 100644 build/stlport/stlport/slist delete mode 100644 build/stlport/stlport/sstream delete mode 100644 build/stlport/stlport/stack delete mode 100644 build/stlport/stlport/stdarg.h delete mode 100644 build/stlport/stlport/stddef.h delete mode 100644 build/stlport/stlport/stdexcept delete mode 100644 build/stlport/stlport/stdio.h delete mode 100644 build/stlport/stlport/stdiostream.h delete mode 100644 build/stlport/stlport/stdlib.h delete mode 100644 build/stlport/stlport/stl/_abbrevs.h delete mode 100644 build/stlport/stlport/stl/_algo.c delete mode 100644 build/stlport/stlport/stl/_algo.h delete mode 100644 build/stlport/stlport/stl/_algobase.c delete mode 100644 build/stlport/stlport/stl/_algobase.h delete mode 100644 build/stlport/stlport/stl/_alloc.c delete mode 100644 build/stlport/stlport/stl/_alloc.h delete mode 100644 build/stlport/stlport/stl/_auto_ptr.h delete mode 100644 build/stlport/stlport/stl/_bitset.c delete mode 100644 build/stlport/stlport/stl/_bitset.h delete mode 100644 build/stlport/stlport/stl/_bvector.h delete mode 100644 build/stlport/stlport/stl/_carray.h delete mode 100644 build/stlport/stlport/stl/_cctype.h delete mode 100644 build/stlport/stlport/stl/_clocale.h delete mode 100644 build/stlport/stlport/stl/_cmath.h delete mode 100644 build/stlport/stlport/stl/_codecvt.h delete mode 100644 build/stlport/stlport/stl/_collate.h delete mode 100644 build/stlport/stlport/stl/_complex.c delete mode 100644 build/stlport/stlport/stl/_complex.h delete mode 100644 build/stlport/stlport/stl/_config_compat_post.h delete mode 100644 build/stlport/stlport/stl/_construct.h delete mode 100644 build/stlport/stlport/stl/_cprolog.h delete mode 100644 build/stlport/stlport/stl/_csetjmp.h delete mode 100644 build/stlport/stlport/stl/_csignal.h delete mode 100644 build/stlport/stlport/stl/_cstdarg.h delete mode 100644 build/stlport/stlport/stl/_cstddef.h delete mode 100644 build/stlport/stlport/stl/_cstdio.h delete mode 100644 build/stlport/stlport/stl/_cstdlib.h delete mode 100644 build/stlport/stlport/stl/_cstring.h delete mode 100644 build/stlport/stlport/stl/_ctime.h delete mode 100644 build/stlport/stlport/stl/_ctraits_fns.h delete mode 100644 build/stlport/stlport/stl/_ctype.h delete mode 100644 build/stlport/stlport/stl/_cwchar.h delete mode 100644 build/stlport/stlport/stl/_cwctype.h delete mode 100644 build/stlport/stlport/stl/_deque.c delete mode 100644 build/stlport/stlport/stl/_deque.h delete mode 100644 build/stlport/stlport/stl/_epilog.h delete mode 100644 build/stlport/stlport/stl/_exception.h delete mode 100644 build/stlport/stlport/stl/_facets_fwd.h delete mode 100644 build/stlport/stlport/stl/_fstream.c delete mode 100644 build/stlport/stlport/stl/_fstream.h delete mode 100644 build/stlport/stlport/stl/_function.h delete mode 100644 build/stlport/stlport/stl/_function_adaptors.h delete mode 100644 build/stlport/stlport/stl/_function_base.h delete mode 100644 build/stlport/stlport/stl/_hash_fun.h delete mode 100644 build/stlport/stlport/stl/_hash_map.h delete mode 100644 build/stlport/stlport/stl/_hash_set.h delete mode 100644 build/stlport/stlport/stl/_hashtable.c delete mode 100644 build/stlport/stlport/stl/_hashtable.h delete mode 100644 build/stlport/stlport/stl/_heap.c delete mode 100644 build/stlport/stlport/stl/_heap.h delete mode 100644 build/stlport/stlport/stl/_iomanip.h delete mode 100644 build/stlport/stlport/stl/_ios.c delete mode 100644 build/stlport/stlport/stl/_ios.h delete mode 100644 build/stlport/stlport/stl/_ios_base.h delete mode 100644 build/stlport/stlport/stl/_ioserr.h delete mode 100644 build/stlport/stlport/stl/_iosfwd.h delete mode 100644 build/stlport/stlport/stl/_iostream_string.h delete mode 100644 build/stlport/stlport/stl/_istream.c delete mode 100644 build/stlport/stlport/stl/_istream.h delete mode 100644 build/stlport/stlport/stl/_istreambuf_iterator.h delete mode 100644 build/stlport/stlport/stl/_iterator.h delete mode 100644 build/stlport/stlport/stl/_iterator_base.h delete mode 100644 build/stlport/stlport/stl/_iterator_old.h delete mode 100644 build/stlport/stlport/stl/_limits.c delete mode 100644 build/stlport/stlport/stl/_limits.h delete mode 100644 build/stlport/stlport/stl/_list.c delete mode 100644 build/stlport/stlport/stl/_list.h delete mode 100644 build/stlport/stlport/stl/_locale.h delete mode 100644 build/stlport/stlport/stl/_map.h delete mode 100644 build/stlport/stlport/stl/_mbstate_t.h delete mode 100644 build/stlport/stlport/stl/_messages_facets.h delete mode 100644 build/stlport/stlport/stl/_monetary.c delete mode 100644 build/stlport/stlport/stl/_monetary.h delete mode 100644 build/stlport/stlport/stl/_move_construct_fwk.h delete mode 100644 build/stlport/stlport/stl/_new.h delete mode 100644 build/stlport/stlport/stl/_num_get.c delete mode 100644 build/stlport/stlport/stl/_num_get.h delete mode 100644 build/stlport/stlport/stl/_num_put.c delete mode 100644 build/stlport/stlport/stl/_num_put.h delete mode 100644 build/stlport/stlport/stl/_numeric.c delete mode 100644 build/stlport/stlport/stl/_numeric.h delete mode 100644 build/stlport/stlport/stl/_numpunct.h delete mode 100644 build/stlport/stlport/stl/_ostream.c delete mode 100644 build/stlport/stlport/stl/_ostream.h delete mode 100644 build/stlport/stlport/stl/_ostreambuf_iterator.h delete mode 100644 build/stlport/stlport/stl/_pair.h delete mode 100644 build/stlport/stlport/stl/_prolog.h delete mode 100644 build/stlport/stlport/stl/_pthread_alloc.h delete mode 100644 build/stlport/stlport/stl/_ptrs_specialize.h delete mode 100644 build/stlport/stlport/stl/_queue.h delete mode 100644 build/stlport/stlport/stl/_range_errors.c delete mode 100644 build/stlport/stlport/stl/_range_errors.h delete mode 100644 build/stlport/stlport/stl/_raw_storage_iter.h delete mode 100644 build/stlport/stlport/stl/_relops_cont.h delete mode 100644 build/stlport/stlport/stl/_relops_hash_cont.h delete mode 100644 build/stlport/stlport/stl/_rope.c delete mode 100644 build/stlport/stlport/stl/_rope.h delete mode 100644 build/stlport/stlport/stl/_set.h delete mode 100644 build/stlport/stlport/stl/_slist.c delete mode 100644 build/stlport/stlport/stl/_slist.h delete mode 100644 build/stlport/stlport/stl/_slist_base.c delete mode 100644 build/stlport/stlport/stl/_slist_base.h delete mode 100644 build/stlport/stlport/stl/_sparc_atomic.h delete mode 100644 build/stlport/stlport/stl/_sstream.c delete mode 100644 build/stlport/stlport/stl/_sstream.h delete mode 100644 build/stlport/stlport/stl/_stack.h delete mode 100644 build/stlport/stlport/stl/_stdexcept.h delete mode 100644 build/stlport/stlport/stl/_stdexcept_base.c delete mode 100644 build/stlport/stlport/stl/_stdexcept_base.h delete mode 100644 build/stlport/stlport/stl/_stlport_version.h delete mode 100644 build/stlport/stlport/stl/_stream_iterator.h delete mode 100644 build/stlport/stlport/stl/_streambuf.c delete mode 100644 build/stlport/stlport/stl/_streambuf.h delete mode 100644 build/stlport/stlport/stl/_string.c delete mode 100644 build/stlport/stlport/stl/_string.h delete mode 100644 build/stlport/stlport/stl/_string_base.h delete mode 100644 build/stlport/stlport/stl/_string_fwd.h delete mode 100644 build/stlport/stlport/stl/_string_hash.h delete mode 100644 build/stlport/stlport/stl/_string_io.c delete mode 100644 build/stlport/stlport/stl/_string_io.h delete mode 100644 build/stlport/stlport/stl/_string_npos.h delete mode 100644 build/stlport/stlport/stl/_string_operators.h delete mode 100644 build/stlport/stlport/stl/_string_sum.h delete mode 100644 build/stlport/stlport/stl/_string_sum_methods.h delete mode 100644 build/stlport/stlport/stl/_string_workaround.h delete mode 100644 build/stlport/stlport/stl/_strstream.h delete mode 100644 build/stlport/stlport/stl/_tempbuf.c delete mode 100644 build/stlport/stlport/stl/_tempbuf.h delete mode 100644 build/stlport/stlport/stl/_threads.c delete mode 100644 build/stlport/stlport/stl/_threads.h delete mode 100644 build/stlport/stlport/stl/_time_facets.c delete mode 100644 build/stlport/stlport/stl/_time_facets.h delete mode 100644 build/stlport/stlport/stl/_tree.c delete mode 100644 build/stlport/stlport/stl/_tree.h delete mode 100644 build/stlport/stlport/stl/_typeinfo.h delete mode 100644 build/stlport/stlport/stl/_uninitialized.h delete mode 100644 build/stlport/stlport/stl/_unordered_map.h delete mode 100644 build/stlport/stlport/stl/_unordered_set.h delete mode 100644 build/stlport/stlport/stl/_valarray.c delete mode 100644 build/stlport/stlport/stl/_valarray.h delete mode 100644 build/stlport/stlport/stl/_vector.c delete mode 100644 build/stlport/stlport/stl/_vector.h delete mode 100644 build/stlport/stlport/stl/boost_type_traits.h delete mode 100644 build/stlport/stlport/stl/c_locale.h delete mode 100644 build/stlport/stlport/stl/char_traits.h delete mode 100644 build/stlport/stlport/stl/concept_checks.h delete mode 100644 build/stlport/stlport/stl/config/_aix.h delete mode 100644 build/stlport/stlport/stl/config/_android.h delete mode 100644 build/stlport/stlport/stl/config/_apcc.h delete mode 100644 build/stlport/stlport/stl/config/_apple.h delete mode 100644 build/stlport/stlport/stl/config/_as400.h delete mode 100644 build/stlport/stlport/stl/config/_auto_link.h delete mode 100644 build/stlport/stlport/stl/config/_bc.h delete mode 100644 build/stlport/stlport/stl/config/_como.h delete mode 100644 build/stlport/stlport/stl/config/_cray.h delete mode 100644 build/stlport/stlport/stl/config/_cygwin.h delete mode 100644 build/stlport/stlport/stl/config/_dec.h delete mode 100644 build/stlport/stlport/stl/config/_dec_vms.h delete mode 100644 build/stlport/stlport/stl/config/_detect_dll_or_lib.h delete mode 100644 build/stlport/stlport/stl/config/_dm.h delete mode 100644 build/stlport/stlport/stl/config/_epilog.h delete mode 100644 build/stlport/stlport/stl/config/_evc.h delete mode 100644 build/stlport/stlport/stl/config/_feedback.h delete mode 100644 build/stlport/stlport/stl/config/_freebsd.h delete mode 100644 build/stlport/stlport/stl/config/_fujitsu.h delete mode 100644 build/stlport/stlport/stl/config/_gcc.h delete mode 100644 build/stlport/stlport/stl/config/_hpacc.h delete mode 100644 build/stlport/stlport/stl/config/_hpux.h delete mode 100644 build/stlport/stlport/stl/config/_ibm.h delete mode 100644 build/stlport/stlport/stl/config/_icc.h delete mode 100644 build/stlport/stlport/stl/config/_intel.h delete mode 100644 build/stlport/stlport/stl/config/_kai.h delete mode 100644 build/stlport/stlport/stl/config/_linux.h delete mode 100644 build/stlport/stlport/stl/config/_mac.h delete mode 100644 build/stlport/stlport/stl/config/_macosx.h delete mode 100644 build/stlport/stlport/stl/config/_mlc.h delete mode 100644 build/stlport/stlport/stl/config/_msvc.h delete mode 100644 build/stlport/stlport/stl/config/_mwerks.h delete mode 100644 build/stlport/stlport/stl/config/_native_headers.h delete mode 100644 build/stlport/stlport/stl/config/_openbsd.h delete mode 100644 build/stlport/stlport/stl/config/_prolog.h delete mode 100644 build/stlport/stlport/stl/config/_sgi.h delete mode 100644 build/stlport/stlport/stl/config/_solaris.h delete mode 100644 build/stlport/stlport/stl/config/_sunprocc.h delete mode 100644 build/stlport/stlport/stl/config/_system.h delete mode 100644 build/stlport/stlport/stl/config/_warnings_off.h delete mode 100644 build/stlport/stlport/stl/config/_watcom.h delete mode 100644 build/stlport/stlport/stl/config/_windows.h delete mode 100644 build/stlport/stlport/stl/config/compat.h delete mode 100644 build/stlport/stlport/stl/config/features.h delete mode 100644 build/stlport/stlport/stl/config/host.h delete mode 100644 build/stlport/stlport/stl/config/stl_confix.h delete mode 100644 build/stlport/stlport/stl/config/stl_mycomp.h delete mode 100644 build/stlport/stlport/stl/config/user_config.h delete mode 100644 build/stlport/stlport/stl/debug/_debug.c delete mode 100644 build/stlport/stlport/stl/debug/_debug.h delete mode 100644 build/stlport/stlport/stl/debug/_deque.h delete mode 100644 build/stlport/stlport/stl/debug/_hashtable.h delete mode 100644 build/stlport/stlport/stl/debug/_iterator.h delete mode 100644 build/stlport/stlport/stl/debug/_list.h delete mode 100644 build/stlport/stlport/stl/debug/_slist.h delete mode 100644 build/stlport/stlport/stl/debug/_string.h delete mode 100644 build/stlport/stlport/stl/debug/_string_sum_methods.h delete mode 100644 build/stlport/stlport/stl/debug/_tree.h delete mode 100644 build/stlport/stlport/stl/debug/_vector.h delete mode 100644 build/stlport/stlport/stl/msl_string.h delete mode 100644 build/stlport/stlport/stl/pointers/_deque.h delete mode 100644 build/stlport/stlport/stl/pointers/_list.h delete mode 100644 build/stlport/stlport/stl/pointers/_set.h delete mode 100644 build/stlport/stlport/stl/pointers/_slist.h delete mode 100644 build/stlport/stlport/stl/pointers/_tools.h delete mode 100644 build/stlport/stlport/stl/pointers/_vector.h delete mode 100644 build/stlport/stlport/stl/type_manips.h delete mode 100644 build/stlport/stlport/stl/type_traits.h delete mode 100644 build/stlport/stlport/streambuf delete mode 100644 build/stlport/stlport/streambuf.h delete mode 100644 build/stlport/stlport/string delete mode 100644 build/stlport/stlport/string.h delete mode 100644 build/stlport/stlport/strstream delete mode 100644 build/stlport/stlport/strstream.h delete mode 100644 build/stlport/stlport/time.h delete mode 100644 build/stlport/stlport/type_traits delete mode 100644 build/stlport/stlport/typeinfo delete mode 100644 build/stlport/stlport/typeinfo.h delete mode 100644 build/stlport/stlport/unordered_map delete mode 100644 build/stlport/stlport/unordered_set delete mode 100644 build/stlport/stlport/using/cstring delete mode 100644 build/stlport/stlport/using/export delete mode 100644 build/stlport/stlport/using/fstream delete mode 100644 build/stlport/stlport/using/h/fstream.h delete mode 100644 build/stlport/stlport/using/h/iomanip.h delete mode 100644 build/stlport/stlport/using/h/iostream.h delete mode 100644 build/stlport/stlport/using/h/ostream.h delete mode 100644 build/stlport/stlport/using/h/streambuf.h delete mode 100644 build/stlport/stlport/using/h/strstream.h delete mode 100644 build/stlport/stlport/using/iomanip delete mode 100644 build/stlport/stlport/using/ios delete mode 100644 build/stlport/stlport/using/iosfwd delete mode 100644 build/stlport/stlport/using/iostream delete mode 100644 build/stlport/stlport/using/istream delete mode 100644 build/stlport/stlport/using/locale delete mode 100644 build/stlport/stlport/using/ostream delete mode 100644 build/stlport/stlport/using/sstream delete mode 100644 build/stlport/stlport/using/streambuf delete mode 100644 build/stlport/stlport/using/strstream delete mode 100644 build/stlport/stlport/utility delete mode 100644 build/stlport/stlport/valarray delete mode 100644 build/stlport/stlport/vector delete mode 100644 build/stlport/stlport/wchar.h delete mode 100644 build/stlport/stlport/wctype.h delete mode 100644 build/stlport/test/.gitignore diff --git a/build/autoconf/android.m4 b/build/autoconf/android.m4 index 914818b92619..6aa1cc18e8b8 100644 --- a/build/autoconf/android.m4 +++ b/build/autoconf/android.m4 @@ -7,7 +7,7 @@ AC_DEFUN([MOZ_ANDROID_NDK], MOZ_ARG_WITH_STRING(android-cxx-stl, [ --with-android-cxx-stl=VALUE - use the specified C++ STL (stlport, libstdc++, libc++)], + use the specified C++ STL (libstdc++, libc++)], android_cxx_stl=$withval, android_cxx_stl=libc++) @@ -110,11 +110,6 @@ if test "$OS_TARGET" = "Android"; then # etc. STLPORT_CPPFLAGS="-I$android_ndk/sources/android/support/include -I$cxx_include -I$cxxabi_include" ;; - mozstlport) - # We don't need to set STLPORT_LIBS, because the build system will - # take care of linking in our home-built stlport where it is needed. - STLPORT_CPPFLAGS="-isystem $_topsrcdir/build/stlport/stlport -isystem $_topsrcdir/build/stlport/overrides -isystem $android_ndk/sources/cxx-stl/system/include" - ;; *) AC_MSG_ERROR([Bad value for --enable-android-cxx-stl]) ;; diff --git a/build/gabi++/Android.mk b/build/gabi++/Android.mk deleted file mode 100644 index 1d2f7357bb07..000000000000 --- a/build/gabi++/Android.mk +++ /dev/null @@ -1,55 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -libgabi++_cflags := \ - -I$(LOCAL_PATH)/include - -libgabi++_common_src_files := \ - src/array_type_info.cc \ - src/class_type_info.cc \ - src/delete.cc \ - src/dynamic_cast.cc \ - src/enum_type_info.cc \ - src/function_type_info.cc \ - src/new.cc \ - src/pbase_type_info.cc \ - src/pointer_type_info.cc \ - src/pointer_to_member_type_info.cc \ - src/si_class_type_info.cc \ - src/type_info.cc \ - src/vmi_class_type_info.cc - -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_CPP_EXTENSION := .cc - -LOCAL_SRC_FILES:= $(libgabi++_common_src_files) - -LOCAL_MODULE:= libgabi++ - -LOCAL_CFLAGS := $(libgabi++_cflags) - -LOCAL_RTTI_FLAG := -frtti - -LOCAL_SYSTEM_SHARED_LIBRARIES := libc - -include $(BUILD_SHARED_LIBRARY) - -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_CPP_EXTENSION := .cc - -LOCAL_SRC_FILES:= $(libgabi++_common_src_files) - -LOCAL_MODULE:= libgabi++ - -LOCAL_CFLAGS := $(libgabi++_cflags) - -LOCAL_RTTI_FLAG := -frtti - -LOCAL_SYSTEM_SHARED_LIBRARIES := libc - -include $(BUILD_STATIC_LIBRARY) diff --git a/build/gabi++/README.mozilla b/build/gabi++/README.mozilla deleted file mode 100644 index f679480d0985..000000000000 --- a/build/gabi++/README.mozilla +++ /dev/null @@ -1 +0,0 @@ -This copy of libgabi++ is from Android 5.0 source code on https://android.googlesource.com/platform/abi/cpp/. Tag is android-5.0.0_r1. diff --git a/build/gabi++/include/cxxabi.h b/build/gabi++/include/cxxabi.h deleted file mode 100644 index 516e6a86e7af..000000000000 --- a/build/gabi++/include/cxxabi.h +++ /dev/null @@ -1,183 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// - -#ifndef __GABIXX_CXXABI_H__ -#define __GABIXX_CXXABI_H__ - -#include - -namespace __cxxabiv1 -{ - extern "C" void __cxa_pure_virtual(); - - // Derived types of type_info below are based on 2.9.5 of C++ ABI. - - // Typeinfo for fundamental types. - class __fundamental_type_info : public std::type_info - { - public: - ~__fundamental_type_info(); - }; - - // Typeinfo for array types. - class __array_type_info : public std::type_info - { - public: - ~__array_type_info(); - }; - - // Typeinfo for function types. - class __function_type_info : public std::type_info - { - public: - ~__function_type_info(); - }; - - // Typeinfo for enum types. - class __enum_type_info : public std::type_info - { - public: - ~__enum_type_info(); - }; - - // Typeinfo for classes with no bases. - class __class_type_info : public std::type_info - { - public: - ~__class_type_info(); - - enum class_type_info_code - { - CLASS_TYPE_INFO_CODE, - SI_CLASS_TYPE_INFO_CODE, - VMI_CLASS_TYPE_INFO_CODE - }; - - virtual class_type_info_code - code() const { return CLASS_TYPE_INFO_CODE; } - }; - - // Typeinfo for classes containing only a single, public, non-virtual base at - // offset zero. - class __si_class_type_info : public __class_type_info - { - public: - ~__si_class_type_info(); - const __class_type_info *__base_type; - - virtual __class_type_info::class_type_info_code - code() const { return SI_CLASS_TYPE_INFO_CODE; } - }; - - struct __base_class_type_info - { - public: - const __class_type_info *__base_type; - - // All but the lower __offset_shift bits of __offset_flags are a signed - // offset. For a non-virtual base, this is the offset in the object of the - // base subobject. For a virtual base, this is the offset in the virtual - // table of the virtual base offset for the virtual base referenced - // (negative). - long __offset_flags; - - enum __offset_flags_masks - { - __virtual_mask = 0x1, - __public_mask = 0x2, - __offset_shift = 8 - }; - - bool inline - is_virtual() const { return (__offset_flags & __virtual_mask) != 0; } - - bool inline - is_public() const { return (__offset_flags & __public_mask) != 0; } - - // FIXME: Right-shift of signed integer is implementation dependent. - long inline - offset() const { return __offset_flags >> __offset_shift; } - - long inline - flags() const { return __offset_flags & ((1L << __offset_shift) - 1); } - }; - - // Typeinfo for classes with bases that do not satisfy the - // __si_class_type_info constraints. - class __vmi_class_type_info : public __class_type_info - { - public: - ~__vmi_class_type_info(); - unsigned int __flags; - unsigned int __base_count; - __base_class_type_info __base_info[1]; - - enum __flags_masks - { - __non_diamond_repeat_mask = 0x1, - __diamond_shaped_mask = 0x2 - }; - - virtual __class_type_info::class_type_info_code - code() const { return VMI_CLASS_TYPE_INFO_CODE; } - }; - - class __pbase_type_info : public std::type_info - { - public: - ~__pbase_type_info(); - unsigned int __flags; - const std::type_info *__pointee; - - enum __masks - { - __const_mask = 0x1, - __volatile_mask = 0x2, - __restrict_mask = 0x4, - __incomplete_mask = 0x8, - __incomplete_class_mask = 0x10 - }; - }; - - class __pointer_type_info : public __pbase_type_info - { - public: - ~__pointer_type_info(); - }; - - class __pointer_to_member_type_info : public __pbase_type_info - { - public: - ~__pointer_to_member_type_info(); - }; -} - -namespace abi = __cxxabiv1; - -#endif /* defined(__GABIXX_CXXABI_H__) */ - diff --git a/build/gabi++/include/new b/build/gabi++/include/new deleted file mode 100644 index 92dd96003ddb..000000000000 --- a/build/gabi++/include/new +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// new: Dynamic storage management. - -#ifndef __GABIXX_NEW__ -#define __GABIXX_NEW__ - -#include - -namespace std -{ - struct nothrow_t {}; - extern const nothrow_t nothrow; - typedef void (*new_handler)(); -} - -// FIXME: Need to handle exceptions. -void* operator new(std::size_t size) throw(/*std::bad_alloc*/); -void* operator new(std::size_t size, const std::nothrow_t&) throw(); -void operator delete(void* ptr) throw(); -void operator delete(void*, const std::nothrow_t&) throw(); -void* operator new[](std::size_t size) throw(/*std::bad_alloc*/); -void* operator new[](std::size_t size, const std::nothrow_t&) throw(); -void operator delete[](void* ptr) throw(); -void operator delete[](void* const, std::nothrow_t&) throw(); -void* operator new(std::size_t size, void* ptr) throw(); -void* operator new[](std::size_t size, void* ptr) throw(); -void operator delete(void* ptr, void*) throw(); -void operator delete[](void* ptr, void*) throw(); - -#endif // __GABIXX_NEW__ diff --git a/build/gabi++/include/typeinfo b/build/gabi++/include/typeinfo deleted file mode 100644 index ab87f7e6e571..000000000000 --- a/build/gabi++/include/typeinfo +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// typeinfo: RTTI support header. -// -// References: -// Itanium C++ ABI at http://www.codesourcery.com/public/cxx-abi/abi.html. -// IHI0041A C++ Application Binary Interface for the ARM architecture. -// Linux Standard Base C++ Specification for S390X 4.1. -// - -#ifndef __GABIXX_TYPEINFO__ -#define __GABIXX_TYPEINFO__ - -namespace std -{ - // Defintion of type_info based on example in C++ ABI section 2.9.3 - class type_info - { - public: - virtual - ~type_info(); - - // Whether two type_infos corresponds to the same types. - bool - operator==(const type_info &ti) const; - - // Whether two type_infos corresponds to the different types. - bool - operator!=(const type_info &ti) const; - - bool - before(const type_info &ti) const; - - // Return name of type. - const char* - name() const { return __type_name; } - - private: - // Assignment of type_info is not allowed. - type_info (const type_info& rhs); - - type_info& - operator=(const type_info& rhs); - - // Mangled name of type. - const char *__type_name; - }; - -} // namespace std - -#endif // _GABIXX_TYPEINFO_ diff --git a/build/gabi++/moz.build b/build/gabi++/moz.build deleted file mode 100644 index 92558024571f..000000000000 --- a/build/gabi++/moz.build +++ /dev/null @@ -1,36 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -Library('gabi++') - -SOURCES += [ - 'src/array_type_info.cc', - 'src/class_type_info.cc', - 'src/delete.cc', - 'src/dynamic_cast.cc', - 'src/enum_type_info.cc', - 'src/function_type_info.cc', - 'src/fundamental_type_info.cc', - 'src/new.cc', - 'src/pbase_type_info.cc', - 'src/pointer_to_member_type_info.cc', - 'src/pointer_type_info.cc', - 'src/si_class_type_info.cc', - 'src/type_info.cc', - 'src/vmi_class_type_info.cc', -] - -LOCAL_INCLUDES += [ - 'include' -] - -DISABLE_STL_WRAPPING = True -NO_VISIBILITY_FLAGS = True - -CXXFLAGS += [ - '-fexceptions', - '-frtti' -] diff --git a/build/gabi++/src/array_type_info.cc b/build/gabi++/src/array_type_info.cc deleted file mode 100644 index 006f50dfafd7..000000000000 --- a/build/gabi++/src/array_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// fundamental_type_info.cc: Methods for __fundamental_type_info. - -#include - -namespace __cxxabiv1 -{ - __fundamental_type_info::~__fundamental_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/class_type_info.cc b/build/gabi++/src/class_type_info.cc deleted file mode 100644 index 45445425069c..000000000000 --- a/build/gabi++/src/class_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// class_type_info.cc: Methods for __class_type_info. - -#include - -namespace __cxxabiv1 -{ - __class_type_info::~__class_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/delete.cc b/build/gabi++/src/delete.cc deleted file mode 100644 index f13fc49ab6b9..000000000000 --- a/build/gabi++/src/delete.cc +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// delete.cc: delete operator - -#include -#include - -void -operator delete(void* ptr) throw() -{ - if (ptr) - free(ptr); -} diff --git a/build/gabi++/src/dynamic_cast.cc b/build/gabi++/src/dynamic_cast.cc deleted file mode 100644 index 2dacac85d144..000000000000 --- a/build/gabi++/src/dynamic_cast.cc +++ /dev/null @@ -1,356 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// dynamic_cast.cc: RTTI support. -// -// References: -// Itanium C++ ABI at http://www.codesourcery.com/public/cxx-abi/abi.html -// IHI0041A C++ Application Binary Interface for the ARM architecture. -// - -#include - -#include -#include - -namespace -{ - // Adjust a pointer by an offset. - - const void* - adjust_pointer(const void* p, std::ptrdiff_t off) - { - // FIXME: should we align pointer after adjustment? - const char *cp = reinterpret_cast(p) + off; - return reinterpret_cast(cp); - } - - // Return the vtable pointer of a polymorphic object pointed by p. - - inline const void* - get_vtable(const void* p) - { - return *reinterpret_cast(p); - } - - // Return a pointer to a __class_type_info in a vtable. - - inline const abi::__class_type_info* - get_class_type_info(const void* vtable) - { - const void* type_info_ptr = adjust_pointer(vtable, -sizeof(void*)); - return *reinterpret_cast(type_info_ptr); - } - - // Return offset to object in a vtable. - - inline std::ptrdiff_t - get_offset_to_top(const void* vtable) - { - const void* type_info_ptr_address = adjust_pointer(vtable, -sizeof(void*)); - const void* offset_to_top_address = - adjust_pointer(type_info_ptr_address, -sizeof(std::ptrdiff_t)); - return *reinterpret_cast(offset_to_top_address); - } - - // Return the virtual pointer to the most derived object of referred by a - // pointer p. - - const void* - get_most_derived_object(const void* p) - { - const void* vtable = get_vtable(p); - std::ptrdiff_t offset_to_top = get_offset_to_top(vtable); - return adjust_pointer(p, offset_to_top); - } - - // We assume that -1 cannot be a valid pointer to object. - const void * const ambiguous_object = - reinterpret_cast(-1); - - // Return a pointer to the subobject described by base_info. - - const void* - get_subobject(const void* object, - const void* vtable, - const abi::__base_class_type_info* base_info) - { - long offset = base_info->offset(); - if (base_info->is_virtual()) - { - const std::ptrdiff_t* virtual_base_offset_address = - static_cast (adjust_pointer(vtable, offset)); - offset = *virtual_base_offset_address; - } - return adjust_pointer(object, offset); - } - - // Helper of __dyanmic_cast to walk the type tree of an object. - - const void * - walk_object(const void *object, - const abi::__class_type_info *type, - const void *match_object, - const abi::__class_type_info *match_type) - { - if (*type == *match_type) - return (match_object == NULL || object == match_object) ? object : NULL; - - switch(type->code()) - { - case abi::__class_type_info::CLASS_TYPE_INFO_CODE: - // This isn't not the class you're looking for. - return NULL; - - case abi::__class_type_info::SI_CLASS_TYPE_INFO_CODE: - // derived type has a single public base at offset 0. - { - const abi::__si_class_type_info* ti = - static_cast(type); - return walk_object(object, ti->__base_type, match_object, - match_type); - } - - case abi::__class_type_info::VMI_CLASS_TYPE_INFO_CODE: - { - const void* vtable = get_vtable(object); - const abi::__vmi_class_type_info* ti = - static_cast(type); - - // Look at all direct bases. - const void* result = NULL; - for (unsigned i = 0; i < ti->__base_count; ++i) - { - if (!ti->__base_info[i].is_public()) - continue; - - const void *subobject = - get_subobject(object, vtable, &ti->__base_info[i]); - const void* walk_subobject_result = - walk_object(subobject, ti->__base_info[i].__base_type, - match_object, match_type); - - if (walk_subobject_result == ambiguous_object) - return ambiguous_object; - else if (walk_subobject_result != NULL) - { - if (result == NULL) - { - result = walk_subobject_result; - } - else if (result != walk_subobject_result) - return ambiguous_object; - } - } - return result; - } - - default: - assert(0); - } - return NULL; - } - - // Bookkeeping structure for derived-to-base cast in the general case. - struct cast_context - { - public: - const void* object; - const abi::__class_type_info *src_type; - const abi::__class_type_info *dst_type; - std::ptrdiff_t src2dst_offset; - - const void* dst_object; - const void* result; - - cast_context(const void* obj, const abi::__class_type_info *src, - const abi::__class_type_info *dst, std::ptrdiff_t offset) - : object(obj), src_type(src), dst_type(dst), src2dst_offset(offset), - dst_object(NULL), result(NULL) - { } - }; - - // based-to-derive cast in the general case. - - void - base_to_derived_cast(const void *object, - const abi::__class_type_info *type, - cast_context* context) - { - const void* saved_dst_object = context->dst_object; - bool is_dst_type = *type == *context->dst_type; - if (is_dst_type) - context->dst_object = object; - - if (object == context->object - && context->dst_object != NULL - && *type == *context->src_type) - { - if (context->result == NULL) - context->result = context->dst_object; - else if (context->result != context->dst_object) - context->result = ambiguous_object; - context->dst_object = saved_dst_object; - return; - } - - switch(type->code()) - { - case abi::__class_type_info::CLASS_TYPE_INFO_CODE: - // This isn't not the class you're looking for. - break; - - case abi::__class_type_info::SI_CLASS_TYPE_INFO_CODE: - // derived type has a single public base at offset 0. - { - const abi::__si_class_type_info* ti = - static_cast(type); - base_to_derived_cast(object, ti->__base_type, context); - break; - } - - case abi::__class_type_info::VMI_CLASS_TYPE_INFO_CODE: - { - const void* vtable = get_vtable(object); - const abi::__vmi_class_type_info* ti = - static_cast(type); - - // Look at all direct bases. - for (unsigned i = 0; i < ti->__base_count; ++i) - { - if (!ti->__base_info[i].is_public()) - continue; - - const void *subobject = - get_subobject(object, vtable, &ti->__base_info[i]); - base_to_derived_cast(subobject, ti->__base_info[i].__base_type, - context); - - // FIXME: Use flags in base_info to optimize search. - if (context->result == ambiguous_object) - break; - } - break; - } - - default: - assert(0); - } - context->dst_object = saved_dst_object; - } -} // namespace - -namespace __cxxabiv1 -{ -#define DYNAMIC_CAST_NO_HINT -1 -#define DYNAMIC_CAST_NOT_PUBLIC_BASE -2 -#define DYNAMIC_CAST_MULTIPLE_PUBLIC_NONVIRTUAL_BASE -3 - - /* v: source address to be adjusted; nonnull, and since the - * source object is polymorphic, *(void**)v is a virtual pointer. - * src: static type of the source object. - * dst: destination type (the "T" in "dynamic_cast(v)"). - * src2dst_offset: a static hint about the location of the - * source subobject with respect to the complete object; - * special negative values are: - * -1: no hint - * -2: src is not a public base of dst - * -3: src is a multiple public base type but never a - * virtual base type - * otherwise, the src type is a unique public nonvirtual - * base type of dst at offset src2dst_offset from the - * origin of dst. - */ - extern "C" void* - __dynamic_cast (const void *v, - const abi::__class_type_info *src, - const abi::__class_type_info *dst, - std::ptrdiff_t src2dst_offset) - { - const void* most_derived_object = get_most_derived_object(v); - const void* vtable = get_vtable(most_derived_object); - const abi::__class_type_info* most_derived_class_type_info = - get_class_type_info(vtable); - - // If T is not a public base type of the most derived class referred - // by v, the cast always fails. - void* t_object = - const_cast(walk_object(most_derived_object, - most_derived_class_type_info, NULL, dst)); - if (t_object == NULL) - return NULL; - - // C++ ABI 2.9.7 The dynamic_cast Algorithm: - // - // If, in the most derived object pointed (referred) to by v, v points - // (refers) to a public base class subobject of a T object [note: this can - // be checked at compile time], and if only one object of type T is derived - // from the subobject pointed (referred) to by v, the result is a pointer - // (an lvalue referring) to that T object. - - // We knew that src is not a public base, so base-to-derived cast - // is not possible. This works even if there are multiple subobjects - // of type T in the most derived object. - if (src2dst_offset != DYNAMIC_CAST_NOT_PUBLIC_BASE) - { - // If it is known that v points to a public base class subobject - // of a T object, simply adjust the pointer by the offset. - if (t_object != ambiguous_object && src2dst_offset >= 0) - return const_cast(adjust_pointer(v, -src2dst_offset)); - - // If there is only one T type subobject, we only need to look at - // there. Otherwise, look for the subobject referred by v in the - // most derived object. - cast_context context(v, src, dst, src2dst_offset); - if (t_object != ambiguous_object) - base_to_derived_cast(t_object, dst, &context); - else - base_to_derived_cast(most_derived_object, - most_derived_class_type_info, &context); - - if (context.result != NULL && context.result != ambiguous_object) - return const_cast(context.result); - } - - // C++ ABI 2.9.7 The dynamic_cast Algorithm: - // - // Otherwise, if v points (refers) to a public base class subobject of the - // most derived object, and the type of the most derived object has an - // unambiguous public base class of type T, the result is a pointer (an - // lvalue referring) to the T subobject of the most derived object. - // Otherwise, the run-time check fails. - - // Check to see if T is a unambiguous public base class. - if (t_object == ambiguous_object) - return NULL; - - // See if v refers to a public base class subobject. - const void* v_object = - walk_object(most_derived_object, most_derived_class_type_info, v, src); - return v_object == v ? t_object : NULL; - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/enum_type_info.cc b/build/gabi++/src/enum_type_info.cc deleted file mode 100644 index 3a0f809fde93..000000000000 --- a/build/gabi++/src/enum_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// enum_type_info.cc: Methods for __enum_type_info. - -#include - -namespace __cxxabiv1 -{ - __enum_type_info::~__enum_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/function_type_info.cc b/build/gabi++/src/function_type_info.cc deleted file mode 100644 index 138dd07d18b7..000000000000 --- a/build/gabi++/src/function_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// function_type_info.cc: Methods for __function_type_info. - -#include - -namespace __cxxabiv1 -{ - __function_type_info::~__function_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/fundamental_type_info.cc b/build/gabi++/src/fundamental_type_info.cc deleted file mode 100644 index d84af0acede6..000000000000 --- a/build/gabi++/src/fundamental_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// array_type_info.cc: Methods for __array_type_info. - -#include - -namespace __cxxabiv1 -{ - __array_type_info::~__array_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/new.cc b/build/gabi++/src/new.cc deleted file mode 100644 index 77f54a4cf7bd..000000000000 --- a/build/gabi++/src/new.cc +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// - -#include -#include - -// FIXME: need to handle exceptions -void* -operator new(std::size_t size) throw (/*std::bad_alloc*/) -{ - void* ptr = malloc(size); -#if 0 - if (ptr == NULL) - throw std::bad_alloc(); -#endif - return ptr; -} diff --git a/build/gabi++/src/pbase_type_info.cc b/build/gabi++/src/pbase_type_info.cc deleted file mode 100644 index d7b19013eaa6..000000000000 --- a/build/gabi++/src/pbase_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// pbase_type_info.cc: Methods for __pbase_type_info. - -#include - -namespace __cxxabiv1 -{ - __pbase_type_info::~__pbase_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/pointer_to_member_type_info.cc b/build/gabi++/src/pointer_to_member_type_info.cc deleted file mode 100644 index e2892ab43be6..000000000000 --- a/build/gabi++/src/pointer_to_member_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// pointer_to_member_type_info.cc: Methods for __pointer_to_member_type_info. - -#include - -namespace __cxxabiv1 -{ - __pointer_to_member_type_info::~__pointer_to_member_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/pointer_type_info.cc b/build/gabi++/src/pointer_type_info.cc deleted file mode 100644 index 31a84f423237..000000000000 --- a/build/gabi++/src/pointer_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// pointer_type_info.cc: Methods for __pointer_type_info. - -#include - -namespace __cxxabiv1 -{ - __pointer_type_info::~__pointer_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/si_class_type_info.cc b/build/gabi++/src/si_class_type_info.cc deleted file mode 100644 index d6a631f8ce89..000000000000 --- a/build/gabi++/src/si_class_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// si_class_type_info.cc: Methods for __si_class_type_info. - -#include - -namespace __cxxabiv1 -{ - __si_class_type_info::~__si_class_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/src/type_info.cc b/build/gabi++/src/type_info.cc deleted file mode 100644 index 69b9f3a6fc5a..000000000000 --- a/build/gabi++/src/type_info.cc +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// type_info.cc: Methods for std::type_info. -// - -#include -#ifdef __ARM_EABI__ -// ARM EABI requires string comprison for mangled type names for type_info -// equality. -#include -#endif - -#include - -namespace std -{ - type_info::~type_info() - { - } - - bool - type_info::operator==(const type_info& rhs) const - { -#ifdef __ARM_EABI__ - // IHI0041A CPPABI 3.2.5.6. Because of weak linkage and share libraries, - // we perform string comparison. - return strcmp(this->__type_name, rhs.__type_name) == 0; -#else - return this == &rhs; -#endif - } - - bool - type_info::operator!=(const type_info& rhs) const - { - return !this->operator==(rhs); - } - - bool - type_info::before(const type_info& rhs) const - { -#ifdef __ARM_EABI__ - // IHI0041A CPPABI 3.2.5.6. Because of weak linkage and share libraries, - // we perform string comparison. - return strcmp(this->__type_name, rhs.__type_name) < 0; -#else - return this < &rhs; -#endif - } -} // end namespace std diff --git a/build/gabi++/src/vmi_class_type_info.cc b/build/gabi++/src/vmi_class_type_info.cc deleted file mode 100644 index b6a4bf6128f8..000000000000 --- a/build/gabi++/src/vmi_class_type_info.cc +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2011 The Android Open Source Project -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// 1. Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// 3. Neither the name of the project nor the names of its contributors -// may be used to endorse or promote products derived from this software -// without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -// SUCH DAMAGE. -// -// vmi_class_type_info.cc: Methods for __vmi_class_type_info. - -#include - -namespace __cxxabiv1 -{ - __vmi_class_type_info::~__vmi_class_type_info() - { - } -} // namespace __cxxabiv1 diff --git a/build/gabi++/use_rtti.mk b/build/gabi++/use_rtti.mk deleted file mode 100644 index 372816c9754b..000000000000 --- a/build/gabi++/use_rtti.mk +++ /dev/null @@ -1,8 +0,0 @@ -# To use RTTI, "include abi/cpp/use_rtti.mk" in your target. - -LOCAL_C_INCLUDES := \ - abi/cpp/include \ - $(LOCAL_C_INCLUDES) - -LOCAL_RTTI_FLAG := -frtti -LOCAL_SHARED_LIBRARIES += libgabi++ diff --git a/build/moz.build b/build/moz.build index 66be3d131136..345ba9be07d3 100644 --- a/build/moz.build +++ b/build/moz.build @@ -15,11 +15,6 @@ if CONFIG['OS_ARCH'] == 'WINNT': else: DIRS += ['unix'] -if CONFIG['OS_TARGET'] == 'Android' and CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport': - DIRS += ['stlport'] - if CONFIG['ENABLE_INTL_API']: - DIRS += ['gabi++'] - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': DIRS += ['annotationProcessors'] diff --git a/build/stlport/Android.mk b/build/stlport/Android.mk deleted file mode 100644 index fb5f9720bca1..000000000000 --- a/build/stlport/Android.mk +++ /dev/null @@ -1,133 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -# Normally, we distribute the NDK with prebuilt binaries of STLport -# in $LOCAL_PATH/libs//. However, -# - -STLPORT_FORCE_REBUILD := $(strip $(STLPORT_FORCE_REBUILD)) -ifndef STLPORT_FORCE_REBUILD - ifeq (,$(strip $(wildcard $(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libstlport_static$(TARGET_LIB_EXTENSION)))) - $(call __ndk_info,WARNING: Rebuilding STLport libraries from sources!) - $(call __ndk_info,You might want to use $$NDK/build/tools/build-cxx-stl.sh --stl=stlport) - $(call __ndk_info,in order to build prebuilt versions to speed up your builds!) - STLPORT_FORCE_REBUILD := true - endif -endif - -libstlport_path := $(LOCAL_PATH) - -libstlport_src_files := \ - src/dll_main.cpp \ - src/fstream.cpp \ - src/strstream.cpp \ - src/sstream.cpp \ - src/ios.cpp \ - src/stdio_streambuf.cpp \ - src/istream.cpp \ - src/ostream.cpp \ - src/iostream.cpp \ - src/codecvt.cpp \ - src/collate.cpp \ - src/ctype.cpp \ - src/monetary.cpp \ - src/num_get.cpp \ - src/num_put.cpp \ - src/num_get_float.cpp \ - src/num_put_float.cpp \ - src/numpunct.cpp \ - src/time_facets.cpp \ - src/messages.cpp \ - src/locale.cpp \ - src/locale_impl.cpp \ - src/locale_catalog.cpp \ - src/facets_byname.cpp \ - src/complex.cpp \ - src/complex_io.cpp \ - src/complex_trig.cpp \ - src/string.cpp \ - src/bitset.cpp \ - src/allocators.cpp \ - src/c_locale.c \ - src/cxa.c \ - -libstlport_cflags := -D_GNU_SOURCE -libstlport_cppflags := -fuse-cxa-atexit -libstlport_c_includes := $(libstlport_path)/stlport - -#It is much more practical to include the sources of GAbi++ in our builds -# of STLport. This is similar to what the GNU libstdc++ does (it includes -# its own copy of libsupc++) -# -# This simplifies usage, since you only have to list a single library -# as a dependency, instead of two, especially when using the standalone -# toolchain. -# -include $(dir $(LOCAL_PATH))/gabi++/sources.mk - -libstlport_c_includes += $(libgabi++_c_includes) -ifneq ($(strip $(filter-out $(NDK_KNOWN_ARCHS),$(TARGET_ARCH))),) -libgabi++_src_files := src/delete.cc \ - src/new.cc -endif - -ifneq ($(STLPORT_FORCE_REBUILD),true) - -$(call ndk_log,Using prebuilt STLport libraries) - -include $(CLEAR_VARS) -LOCAL_MODULE := stlport_static -LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE)$(TARGET_LIB_EXTENSION) -# For armeabi*, choose thumb mode unless LOCAL_ARM_MODE := arm -ifneq (,$(filter armeabi%,$(TARGET_ARCH_ABI))) -ifneq (arm,$(LOCAL_ARM_MODE)) -LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/thumb/lib$(LOCAL_MODULE)$(TARGET_LIB_EXTENSION) -endif -endif -LOCAL_EXPORT_C_INCLUDES := $(libstlport_c_includes) -LOCAL_CPP_FEATURES := rtti -include $(PREBUILT_STATIC_LIBRARY) - -include $(CLEAR_VARS) -LOCAL_MODULE := stlport_shared -LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/lib$(LOCAL_MODULE)$(TARGET_SONAME_EXTENSION) -# For armeabi*, choose thumb mode unless LOCAL_ARM_MODE := arm -$(info TARGET_ARCH_ABI=$(TARGET_ARCH_ABI)) -$(info LOCAL_ARM_MODE=$(LOCAL_ARM_MODE)) -ifneq (,$(filter armeabi%,$(TARGET_ARCH_ABI))) -ifneq (arm,$(LOCAL_ARM_MODE)) -LOCAL_SRC_FILES := libs/$(TARGET_ARCH_ABI)/thumb/lib$(LOCAL_MODULE)$(TARGET_SONAME_EXTENSION) -endif -endif -LOCAL_EXPORT_C_INCLUDES := $(libstlport_c_includes) -LOCAL_CPP_FEATURES := rtti -include $(PREBUILT_SHARED_LIBRARY) - -else # STLPORT_FORCE_REBUILD == true - -$(call ndk_log,Rebuilding STLport libraries from sources) - -include $(CLEAR_VARS) -LOCAL_MODULE := stlport_static -LOCAL_CPP_EXTENSION := .cpp .cc -LOCAL_SRC_FILES := $(libstlport_src_files) -LOCAL_SRC_FILES += $(libgabi++_src_files:%=../gabi++/%) -LOCAL_CFLAGS := $(libstlport_cflags) -LOCAL_CPPFLAGS := $(libstlport_cppflags) -LOCAL_C_INCLUDES := $(libstlport_c_includes) -LOCAL_EXPORT_C_INCLUDES := $(libstlport_c_includes) -LOCAL_CPP_FEATURES := rtti exceptions -include $(BUILD_STATIC_LIBRARY) - -include $(CLEAR_VARS) -LOCAL_MODULE := stlport_shared -LOCAL_CPP_EXTENSION := .cpp .cc -LOCAL_SRC_FILES := $(libstlport_src_files) -LOCAL_SRC_FILES += $(libgabi++_src_files:%=../gabi++/%) -LOCAL_CFLAGS := $(libstlport_cflags) -LOCAL_CPPFLAGS := $(libstlport_cppflags) -LOCAL_C_INCLUDES := $(libstlport_c_includes) -LOCAL_EXPORT_C_INCLUDES := $(libstlport_c_includes) -LOCAL_CPP_FEATURES := rtti exceptions -include $(BUILD_SHARED_LIBRARY) - -endif # STLPORT_FORCE_REBUILD == true diff --git a/build/stlport/LICENSE b/build/stlport/LICENSE deleted file mode 100644 index 6846270836c3..000000000000 --- a/build/stlport/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Boris Fomitchev grants Licensee a non-exclusive, non-transferable, royalty-free license to use STLport and its documentation without fee. - -By downloading, using, or copying STLport or any portion thereof, Licensee agrees to abide by the intellectual property laws and all other applicable laws of the United States of America, and to all of the terms and conditions of this Agreement. - -Licensee shall maintain the following copyright and permission notices on STLport sources and its documentation unchanged : - -Copyright 1999,2000 Boris Fomitchev - -This material is provided "as is", with absolutely no warranty expressed or implied. Any use is at your own risk. -Permission to use or copy this software for any purpose is hereby granted without fee, provided the above notices are retained on all copies. Permission to modify the code and to distribute modified code is granted, provided the above notices are retained, and a notice that the code was modified is included with the above copyright notice. -The Licensee may distribute binaries compiled with STLport (whether original or modified) without any royalties or restrictions. - -The Licensee may distribute original or modified STLport sources, provided that: - -The conditions indicated in the above permission notice are met; -The following copyright notices are retained when present, and conditions provided in accompanying permission notices are met : -Copyright 1994 Hewlett-Packard Company - -Copyright 1996,97 Silicon Graphics Computer Systems, Inc. - -Copyright 1997 Moscow Center for SPARC Technology. - -Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Hewlett-Packard Company makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. - -Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Silicon Graphics makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. - -Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. Moscow Center for SPARC Technology makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty. diff --git a/build/stlport/MODULE_LICENSE_BSD_LIKE b/build/stlport/MODULE_LICENSE_BSD_LIKE deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/build/stlport/README b/build/stlport/README deleted file mode 100644 index 8f602fe66325..000000000000 --- a/build/stlport/README +++ /dev/null @@ -1,69 +0,0 @@ -STLport for Android - -WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING -WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - - This feature is currently in beta. In case of issue - please contact the android-ndk support forum or - file bugs at http://b.android.com - -WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING -WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING - -This directory contains a port of STLport for Android, which provides -a simple STL implementation. Note that it currently does not support -C++ exceptions and RTTI. Support for wchar_t and locales is probably buggy. - -You can either use it as a static or shared library. - -1/ The static library is recommended if you will only produce - one shared library for your project. All necessary STLport functions - will be added to it. This option should also generate smaller - overall binaries. - -2/ The shared library, is recommended if you want to produce - several shared libraries in your project, because it avoids copying the - same STLport functions to each one of them, and having different instances - of the same global variables (which can easily conflict or result in - undefined behaviour). - -To use the *static* library, define APP_STL in your Application.mk as follows: - - APP_STL := stlport_static - -To use the *shared* library, use "stlport_shared" instead: - - APP_STL := stlport_shared - -Note that, in this case, you will need, in your application, to explicitely -load the 'stlport_shared' library before any library that depends on it. -For example: - - static { - System.loadLibrary("stlport_shared"); - System.loadLibrary("foo"); - System.loadLibrary("bar"); - } - -If both libfoo.so and libbar.so depend on STLport. - -You can build the STLport unit test program by doing the following: - - cd $NDK - tests/run-tests.sh --test=test-stlport - -If you have an Android device connected to your machine, this will -automatically try to run the generated test command. Note that for now -a few tests are still failing (mostly related to wchar_t and locales). - -They should be fixed hopefully by a later release of this library. - -The NDK comes with prebuilt binaries for this library to speed up development. -You can however rebuild them from sources in your own application build by -defining STLPORT_FORCE_REBUILD to 'true' in your Application.mk as in: - - STLPORT_FORCE_REBUILD := true - - -VERSION INFORMATION: This module is based on STLport version 5.2.0 - diff --git a/build/stlport/README.android b/build/stlport/README.android deleted file mode 100644 index a35c955bf983..000000000000 --- a/build/stlport/README.android +++ /dev/null @@ -1,9 +0,0 @@ -Version: 5.2.1 - -Changes: - * Added _android.h included by _system.h - * Do not use linux float functions in num_get_float.cpp as Android does not - have them. - * _mbstate_t.h cannot define its own mbstate_t as bionic already defines - it. - * _pair.h needs to define bionic's (sgi's) internal pair header guard. diff --git a/build/stlport/README.mozilla b/build/stlport/README.mozilla deleted file mode 100644 index 15c09bcb24dc..000000000000 --- a/build/stlport/README.mozilla +++ /dev/null @@ -1,11 +0,0 @@ -This copy of STLport was taken from the Android NDK git repository: -https://android.googlesource.com/platform/ndk.git -under sources/cxx-stl/stlport/. -The last changes to that directory come from commit ba4baa4 - -The overrides/ directory contains Mozilla-specific overrides to the standard - C++ headers found in the NDK. - -The following patches are applied on top: -- android-mozilla-config.patch: Adjusts Android-specific configuration - to the mozilla codebase use of the STL. diff --git a/build/stlport/README.original b/build/stlport/README.original deleted file mode 100644 index a759495ff90c..000000000000 --- a/build/stlport/README.original +++ /dev/null @@ -1,64 +0,0 @@ -********************************************************************** -* README file for STLport 5.0 * -* * -********************************************************************** - -This directory contains the STLport-5.0 release. - -What's inside : - -README - this file -INSTALL - installation instructions - -bin - installation directory for STLport unit tests; - it may contain more subdirs, if you use - crosscompilation -build/lib - build directory for STLport library (if you use - STLport iostreams and/or locale only) -build/test/unit - build directory for regression (unit) tests -build/test/eh - build directory for exception handling tests -stlport - main STLport include directory -src - source for iostreams implementation and other parts - that aren't pure template code -lib - installation directory for STLport library (if you - use STLport iostreams and/or locale only); - it may contain more subdirs, if you use - crosscompilation -test/unit - unit (regression) tests -test/eh - exception handling test using STLport iostreams -etc - miscellanous files (ChangeLog, TODO, scripts, etc.) - -GETTING STLPORT - -To download the latest version of STLport, please be sure to visit -https://sourceforge.net/project/showfiles.php?group_id=146814 - -LEGALESE - -This software is being distributed under the following terms: - - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999-2003 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - -********************************************************************** diff --git a/build/stlport/android-mozilla-config.patch b/build/stlport/android-mozilla-config.patch deleted file mode 100644 index 61a0d7a1a0e4..000000000000 --- a/build/stlport/android-mozilla-config.patch +++ /dev/null @@ -1,82 +0,0 @@ -diff --git a/stlport/stl/config/_android.h b/stlport/stl/config/_android.h ---- a/stlport/stl/config/_android.h -+++ b/stlport/stl/config/_android.h -@@ -10,18 +10,18 @@ - #define _PTHREADS - - // Don't have native headers - #define _STLP_HAS_NO_NEW_C_HEADERS 1 - - // Use unix for streams - #define _STLP_USE_UNIX_IO 1 - --// We do have rtti support now through GAbi++ --#undef _STLP_NO_RTTI -+// We don't want rtti support -+#define _STLP_NO_RTTI 1 - - // C library is in the global namespace. - #define _STLP_VENDOR_GLOBAL_CSTD 1 - - // Don't have underlying local support. - #undef _STLP_REAL_LOCALE_IMPLEMENTED - - // No pthread_spinlock_t in Android -@@ -32,48 +32,42 @@ - - // Little endian platform. - #define _STLP_LITTLE_ENDIAN 1 - - // No headers - #undef _STLP_NO_EXCEPTION_HEADER - - // No throwing exceptions --#undef _STLP_NO_EXCEPTIONS -- -+#define _STLP_NO_EXCEPTIONS 1 -+#define _STLP_NO_EXCEPTION_HEADER 1 - - // No need to define our own namespace - #define _STLP_NO_OWN_NAMESPACE 1 - - // Use __new_alloc instead of __node_alloc, so we don't need static functions. - #define _STLP_USE_SIMPLE_NODE_ALLOC 1 - - // Don't use extern versions of range errors, so we don't need to - // compile as a library. - #define _STLP_USE_NO_EXTERN_RANGE_ERRORS 1 - - // The system math library doesn't have long double variants, e.g - // sinl, cosl, etc - #define _STLP_NO_VENDOR_MATH_L 1 - --// Define how to include our native headers. --#define _STLP_NATIVE_HEADER(header) --#define _STLP_NATIVE_C_HEADER(header) <../include/header> --#define _STLP_NATIVE_CPP_C_HEADER(header) <../../gabi++/include/header> --#define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../../gabi++/include/header> --#define _STLP_NATIVE_OLD_STREAMS_HEADER(header) -- - // Include most of the gcc settings. - #include - - // Do not use glibc, Android is missing some things. - #undef _STLP_USE_GLIBC - - // No exceptions. --#undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT --#undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT -+#define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT 1 -+#define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT 1 - --#ifndef _ANDROID_NDK_BLAZE_ --// Android does have include_next but it doesn't work well in our build system. --#undef _STLP_HAS_INCLUDE_NEXT --#endif -+#define _STLP_HAS_INCLUDE_NEXT 1 -+ -+// Use operator new instead of stlport own node allocator -+#undef _STLP_USE_NEWALLOC -+#define _STLP_USE_NEWALLOC 1 - - #endif /* __stl_config__android_h */ diff --git a/build/stlport/moz.build b/build/stlport/moz.build deleted file mode 100644 index f98ddf9e7cd7..000000000000 --- a/build/stlport/moz.build +++ /dev/null @@ -1,78 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# vim: set filetype=python: -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -Library('stlport') -# Keep the same name as the NDK-provided library, while using a shorter -# name for the Library for convenience in moz.build. -STATIC_LIBRARY_NAME = 'stlport_static' - -FORCE_STATIC_LIB = True - -SOURCES += [ - 'src/allocators.cpp', - 'src/bitset.cpp', - 'src/codecvt.cpp', - 'src/collate.cpp', - 'src/complex.cpp', - 'src/complex_io.cpp', - 'src/complex_trig.cpp', - 'src/ctype.cpp', - 'src/dll_main.cpp', - 'src/facets_byname.cpp', - 'src/fstream.cpp', - 'src/ios.cpp', - 'src/iostream.cpp', - 'src/istream.cpp', - 'src/locale.cpp', - 'src/locale_catalog.cpp', - 'src/locale_impl.cpp', - 'src/messages.cpp', - 'src/monetary.cpp', - 'src/num_get.cpp', - 'src/num_get_float.cpp', - 'src/num_put.cpp', - 'src/num_put_float.cpp', - 'src/numpunct.cpp', - 'src/ostream.cpp', - 'src/sstream.cpp', - 'src/stdio_streambuf.cpp', - 'src/string.cpp', - 'src/strstream.cpp', - 'src/time_facets.cpp', -] - -SOURCES += [ - 'src/c_locale.c', - 'src/cxa.c', -] - -DEFINES['_GNU_SOURCE'] = True - -LOCAL_INCLUDES += [ - 'stlport', -] - -DISABLE_STL_WRAPPING = True -NO_VISIBILITY_FLAGS = True - -# Suppress warnings in third-party code. -if CONFIG['GNU_CXX']: - CXXFLAGS += [ - '-Wno-empty-body', - '-Wno-type-limits', - '-Wno-unused-local-typedefs', - ] - -# Force to build a static library, instead of a fake library, without -# installing it in dist/lib. -NO_EXPAND_LIBS = True - -# We allow warnings for third-party code that can be updated from upstream. -ALLOW_COMPILER_WARNINGS = True - -CXXFLAGS += [ - '-fuse-cxa-atexit', -] diff --git a/build/stlport/overrides/new b/build/stlport/overrides/new deleted file mode 100644 index 34feec8a676c..000000000000 --- a/build/stlport/overrides/new +++ /dev/null @@ -1,65 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright (C) 2009 The Android Open Source Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -/* - * This header is taken from $ndk/sources/cxx-stl/system/include/new, - * and it fixes a bug in the NDK header where the nothrow versions of - * placement new and delete are not specified with 'throw()'. This bug - * causes GCC to not null-check the results from these functions. - */ -#ifndef __NEW__ -#define __NEW__ - -#include - -extern "C++" { - -namespace std { - struct nothrow_t {}; - extern const nothrow_t nothrow; -} - -void* operator new(std::size_t); -void* operator new[](std::size_t); -void operator delete(void*); -void operator delete[](void*); -void* operator new(std::size_t, const std::nothrow_t&) throw(); -void* operator new[](std::size_t, const std::nothrow_t&) throw(); -void operator delete(void*, const std::nothrow_t&) throw(); -void operator delete[](void*, const std::nothrow_t&) throw(); - -inline void* operator new(std::size_t, void* p) { return p; } -inline void* operator new[](std::size_t, void* p) { return p; } - -// these next two are not really required, since exceptions are off -inline void operator delete(void*, void*) { } -inline void operator delete[](void*, void*) { } - -} // extern C++ - -#endif // __NEW__ diff --git a/build/stlport/src/_stdio_file.h b/build/stlport/src/_stdio_file.h deleted file mode 100644 index d913fc4484a6..000000000000 --- a/build/stlport/src/_stdio_file.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STDIO_FILE_H -#define _STLP_STDIO_FILE_H - -/* This file provides a low-level interface between the internal - * representation of struct FILE, from the C stdio library, and - * the C++ I/O library. */ - -#ifndef _STLP_CSTDIO -# include -#endif -#ifndef _STLP_CSTDDEF -# include -#endif - -#if defined (__MSL__) -# include /* get the definition of fileno */ -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_WCE) - -inline int _FILE_fd(const FILE *__f) { - /* Check if FILE is one of the three standard streams - We do this check first, because invoking _fileno() on one of them - causes a terminal window to be created. This also happens if you do - any IO on them, but merely retrieving the filedescriptor shouldn't - already do that. - - Obviously this is pretty implementation-specific because it requires - that indeed the first three FDs are always the same, but that is not - only common but almost guaranteed. */ - for (int __fd = 0; __fd != 3; ++__fd) { - if (__f == _getstdfilex(__fd)) - return __fd; - } - - /* Normal files. */ - return (int)::_fileno((FILE*)__f); -} - -# elif defined (_STLP_SCO_OPENSERVER) || defined (__NCR_SVR) - -inline int _FILE_fd(const FILE *__f) { return __f->__file; } - -# elif defined (__sun) && defined (_LP64) - -inline int _FILE_fd(const FILE *__f) { return (int) __f->__pad[2]; } - -#elif defined (__hpux) /* && defined(__hppa) && defined(__HP_aCC)) */ || \ - defined (__MVS__) || \ - defined (_STLP_USE_UCLIBC) /* should be before _STLP_USE_GLIBC */ - -inline int _FILE_fd(const FILE *__f) { return fileno(__CONST_CAST(FILE*, __f)); } - -#elif defined (_STLP_USE_GLIBC) - -inline int _FILE_fd(const FILE *__f) { return __f->_fileno; } - -#elif defined (__BORLANDC__) - -inline int _FILE_fd(const FILE *__f) { return __f->fd; } - -#elif defined (__MWERKS__) - -/* using MWERKS-specific defines here to detect other OS targets - * dwa: I'm not sure they provide fileno for all OS's, but this should - * work for Win32 and WinCE - - * Hmm, at least for Novell NetWare __dest_os == __mac_os true too.. - * May be both __dest_os and __mac_os defined and empty? - ptr */ -# if __dest_os == __mac_os -inline int _FILE_fd(const FILE *__f) { return ::fileno(__CONST_CAST(FILE*, __f)); } -# else -inline int _FILE_fd(const FILE *__f) { return ::_fileno(__CONST_CAST(FILE*, __f)); } -# endif - -#elif defined (__QNXNTO__) || defined (__WATCOMC__) || defined (__EMX__) - -inline int _FILE_fd(const FILE *__f) { return __f->_handle; } - -#elif defined (__Lynx__) - -/* the prototypes are taken from LynxOS patch for STLport 4.0 */ -inline int _FILE_fd(const FILE *__f) { return __f->_fd; } - -#else /* The most common access to file descriptor. */ - -inline int _FILE_fd(const FILE *__f) { return __f->_file; } - -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_STDIO_FILE_H */ - -/* Local Variables: - * mode:C++ - * End: */ diff --git a/build/stlport/src/acquire_release.h b/build/stlport/src/acquire_release.h deleted file mode 100644 index 5ea73da1a131..000000000000 --- a/build/stlport/src/acquire_release.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef ACQUIRE_RELEASE_H -#define ACQUIRE_RELEASE_H - -#include "c_locale.h" - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -_Locale_ctype* _STLP_CALL __acquire_ctype(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code); -_Locale_codecvt* _STLP_CALL __acquire_codecvt(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code); -_Locale_numeric* _STLP_CALL __acquire_numeric(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code); -_Locale_collate* _STLP_CALL __acquire_collate(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code); -_Locale_monetary* _STLP_CALL __acquire_monetary(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code); -_Locale_time* _STLP_CALL __acquire_time(const char* &name, char *buf, _Locale_name_hint*, int *__err_code); -_Locale_messages* _STLP_CALL __acquire_messages(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code); - -void _STLP_CALL __release_ctype(_Locale_ctype* cat); -void _STLP_CALL __release_codecvt(_Locale_codecvt* cat); -void _STLP_CALL __release_numeric(_Locale_numeric* cat); -void _STLP_CALL __release_collate(_Locale_collate* cat); -void _STLP_CALL __release_monetary(_Locale_monetary* cat); -void _STLP_CALL __release_time(_Locale_time* __time); -void _STLP_CALL __release_messages(_Locale_messages* cat); - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -#endif /* ACQUIRE_RELEASE_H */ diff --git a/build/stlport/src/aligned_buffer.h b/build/stlport/src/aligned_buffer.h deleted file mode 100644 index 6ff6ca6b908b..000000000000 --- a/build/stlport/src/aligned_buffer.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef ALIGNED_BUFFER_H -#define ALIGNED_BUFFER_H - -_STLP_BEGIN_NAMESPACE -// this is for fake initialization -template -union _Stl_aligned_buffer { - char buf[sizeof(T)]; - struct { double a; double b; } padding; - - T* operator&() { - return __REINTERPRET_CAST(T*, this); - } - - T const* operator&() const { - return __REINTERPRET_CAST(T const*, this); - } -}; -_STLP_END_NAMESPACE - -#endif diff --git a/build/stlport/src/allocators.cpp b/build/stlport/src/allocators.cpp deleted file mode 100644 index 8bbcca86ba20..000000000000 --- a/build/stlport/src/allocators.cpp +++ /dev/null @@ -1,1121 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include - -#if defined (__GNUC__) && (defined (__CYGWIN__) || defined (__MINGW32__)) -# include -#endif - -#if defined (_STLP_PTHREADS) && !defined (_STLP_NO_THREADS) -# include -# include -#endif - -#include - -#include "lock_free_slist.h" - -#if defined (__WATCOMC__) -# pragma warning 13 9 -# pragma warning 367 9 -# pragma warning 368 9 -#endif - -#if defined (_STLP_SGI_THREADS) - // We test whether threads are in use before locking. - // Perhaps this should be moved into stl_threads.h, but that - // probably makes it harder to avoid the procedure call when - // it isn't needed. -extern "C" { - extern int __us_rsthread_malloc; -} -#endif - -// Specialised debug form of new operator which does not provide "false" -// memory leaks when run with debug CRT libraries. -#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1020 && defined (_STLP_DEBUG_ALLOC)) && !defined (_STLP_WCE) -# include -inline char* __stlp_new_chunk(size_t __bytes) { - void *__chunk = _STLP_CHECK_NULL_ALLOC(::operator new(__bytes, __FILE__, __LINE__)); - return __STATIC_CAST(char*, __chunk); -} -inline void __stlp_delete_chunck(void* __p) { ::operator delete(__p, __FILE__, __LINE__); } -#else -# ifdef _STLP_NODE_ALLOC_USE_MALLOC -# include -inline char* __stlp_new_chunk(size_t __bytes) { - // do not use _STLP_CHECK_NULL_ALLOC, this macro is dedicated to new operator. - void *__chunk = _STLP_VENDOR_CSTD::malloc(__bytes); - if (__chunk == 0) { - _STLP_THROW_BAD_ALLOC; - } - return __STATIC_CAST(char*, __chunk); -} -inline void __stlp_delete_chunck(void* __p) { _STLP_VENDOR_CSTD::free(__p); } -# else -inline char* __stlp_new_chunk(size_t __bytes) -{ return __STATIC_CAST(char*, _STLP_STD::__stl_new(__bytes)); } -inline void __stlp_delete_chunck(void* __p) { _STLP_STD::__stl_delete(__p); } -# endif -#endif - -/* This is an additional atomic operations to the ones already defined in - * stl/_threads.h, platform should try to support it to improve performance. - * __add_atomic_t _STLP_ATOMIC_ADD(volatile __add_atomic_t* __target, __add_atomic_t __val) : - * does *__target = *__target + __val and returns the old *__target value */ -typedef long __add_atomic_t; -typedef unsigned long __uadd_atomic_t; - -#if defined (__GNUC__) && defined (__i386__) -inline long _STLP_atomic_add_gcc_x86(long volatile* p, long addend) { - long result; - __asm__ __volatile__ - ("lock; xaddl %1, %0;" - :"=m" (*p), "=r" (result) - :"m" (*p), "1" (addend) - :"cc"); - return result + addend; -} -# define _STLP_ATOMIC_ADD(__dst, __val) _STLP_atomic_add_gcc_x86(__dst, __val) -#elif defined (_STLP_WIN32THREADS) -// The Win32 API function InterlockedExchangeAdd is not available on Windows 95. -# if !defined (_STLP_WIN95_LIKE) -# if defined (_STLP_NEW_PLATFORM_SDK) -# define _STLP_ATOMIC_ADD(__dst, __val) InterlockedExchangeAdd(__dst, __val) -# else -# define _STLP_ATOMIC_ADD(__dst, __val) InterlockedExchangeAdd(__CONST_CAST(__add_atomic_t*, __dst), __val) -# endif -# endif -#endif - -#if defined (__OS400__) -// dums 02/05/2007: is it really necessary ? -enum { _ALIGN = 16, _ALIGN_SHIFT = 4 }; -#else -enum { _ALIGN = 2 * sizeof(void*), _ALIGN_SHIFT = 2 + sizeof(void*) / 4 }; -#endif - -#define _S_FREELIST_INDEX(__bytes) ((__bytes - size_t(1)) >> (int)_ALIGN_SHIFT) - -_STLP_BEGIN_NAMESPACE - -// malloc_alloc out-of-memory handling -static __oom_handler_type __oom_handler = __STATIC_CAST(__oom_handler_type, 0); - -#ifdef _STLP_THREADS -_STLP_mutex __oom_handler_lock; -#endif - -void* _STLP_CALL __malloc_alloc::allocate(size_t __n) -{ - void *__result = malloc(__n); - if ( 0 == __result ) { - __oom_handler_type __my_malloc_handler; - - for (;;) { - { -#ifdef _STLP_THREADS - _STLP_auto_lock _l( __oom_handler_lock ); -#endif - __my_malloc_handler = __oom_handler; - } - if ( 0 == __my_malloc_handler) { - _STLP_THROW_BAD_ALLOC; - } - (*__my_malloc_handler)(); - __result = malloc(__n); - if ( __result ) - return __result; - } - } - return __result; -} - -__oom_handler_type _STLP_CALL __malloc_alloc::set_malloc_handler(__oom_handler_type __f) -{ -#ifdef _STLP_THREADS - _STLP_auto_lock _l( __oom_handler_lock ); -#endif - __oom_handler_type __old = __oom_handler; - __oom_handler = __f; - return __old; -} - -// ******************************************************* -// Default node allocator. -// With a reasonable compiler, this should be roughly as fast as the -// original STL class-specific allocators, but with less fragmentation. -// -// Important implementation properties: -// 1. If the client request an object of size > _MAX_BYTES, the resulting -// object will be obtained directly from malloc. -// 2. In all other cases, we allocate an object of size exactly -// _S_round_up(requested_size). Thus the client has enough size -// information that we can return the object to the proper free list -// without permanently losing part of the object. -// - -#define _STLP_NFREELISTS 16 - -#if defined (_STLP_LEAKS_PEDANTIC) && defined (_STLP_USE_DYNAMIC_LIB) -/* - * We can only do cleanup of the node allocator memory pool if we are - * sure that the STLport library is used as a shared one as it guaranties - * the unicity of the node allocator instance. Without that guaranty node - * allocator instances might exchange memory blocks making the implementation - * of a cleaning process much more complicated. - */ -# define _STLP_DO_CLEAN_NODE_ALLOC -#endif - -/* When STLport is used without multi threaded safety we use the node allocator - * implementation with locks as locks becomes no-op. The lock free implementation - * always use system specific atomic operations which are slower than 'normal' - * ones. - */ -#if defined (_STLP_THREADS) && \ - defined (_STLP_HAS_ATOMIC_FREELIST) && defined (_STLP_ATOMIC_ADD) -/* - * We have an implementation of the atomic freelist (_STLP_atomic_freelist) - * for this architecture and compiler. That means we can use the non-blocking - * implementation of the node-allocation engine.*/ -# define _STLP_USE_LOCK_FREE_IMPLEMENTATION -#endif - -#if !defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) -# if defined (_STLP_THREADS) - -class _Node_Alloc_Lock { - static _STLP_STATIC_MUTEX& _S_Mutex() { - static _STLP_STATIC_MUTEX mutex _STLP_MUTEX_INITIALIZER; - return mutex; - } -public: - _Node_Alloc_Lock() { -# if defined (_STLP_SGI_THREADS) - if (__us_rsthread_malloc) -# endif - _S_Mutex()._M_acquire_lock(); - } - - ~_Node_Alloc_Lock() { -# if defined (_STLP_SGI_THREADS) - if (__us_rsthread_malloc) -# endif - _S_Mutex()._M_release_lock(); - } -}; - -# else - -class _Node_Alloc_Lock { -public: - _Node_Alloc_Lock() { } - ~_Node_Alloc_Lock() { } -}; - -# endif - -struct _Node_alloc_obj { - _Node_alloc_obj * _M_next; -}; -#endif - -class __node_alloc_impl { - static inline size_t _STLP_CALL _S_round_up(size_t __bytes) - { return (((__bytes) + (size_t)_ALIGN-1) & ~((size_t)_ALIGN - 1)); } - -#if defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) - typedef _STLP_atomic_freelist::item _Obj; - typedef _STLP_atomic_freelist _Freelist; - typedef _STLP_atomic_freelist _ChunkList; - - // Header of blocks of memory that have been allocated as part of - // a larger chunk but have not yet been chopped up into nodes. - struct _FreeBlockHeader : public _STLP_atomic_freelist::item { - char* _M_end; // pointer to end of free memory - }; -#else - typedef _Node_alloc_obj _Obj; - typedef _Obj* _STLP_VOLATILE _Freelist; - typedef _Obj* _ChunkList; -#endif - -private: - // Returns an object of size __n, and optionally adds to size __n free list. - static _Obj* _S_refill(size_t __n); - // Allocates a chunk for nobjs of size __p_size. nobjs may be reduced - // if it is inconvenient to allocate the requested number. - static char* _S_chunk_alloc(size_t __p_size, int& __nobjs); - // Chunk allocation state. - static _Freelist _S_free_list[_STLP_NFREELISTS]; - // Amount of total allocated memory -#if defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) - static _STLP_VOLATILE __add_atomic_t _S_heap_size; -#else - static size_t _S_heap_size; -#endif - -#if defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) - // List of blocks of free memory - static _STLP_atomic_freelist _S_free_mem_blocks; -#else - // Start of the current free memory buffer - static char* _S_start_free; - // End of the current free memory buffer - static char* _S_end_free; -#endif - -#if defined (_STLP_DO_CLEAN_NODE_ALLOC) -public: - // Methods to report alloc/dealloc calls to the counter system. -# if defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) - typedef _STLP_VOLATILE __stl_atomic_t _AllocCounter; -# else - typedef __stl_atomic_t _AllocCounter; -# endif - static _AllocCounter& _STLP_CALL _S_alloc_counter(); - static void _S_alloc_call(); - static void _S_dealloc_call(); - -private: - // Free all the allocated chuncks of memory - static void _S_chunk_dealloc(); - // Beginning of the linked list of allocated chunks of memory - static _ChunkList _S_chunks; -#endif /* _STLP_DO_CLEAN_NODE_ALLOC */ - -public: - /* __n must be > 0 */ - static void* _M_allocate(size_t& __n); - /* __p may not be 0 */ - static void _M_deallocate(void *__p, size_t __n); -}; - -#if !defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) -void* __node_alloc_impl::_M_allocate(size_t& __n) { - __n = _S_round_up(__n); - _Obj * _STLP_VOLATILE * __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n); - _Obj *__r; - - // Acquire the lock here with a constructor call. - // This ensures that it is released in exit or during stack - // unwinding. - _Node_Alloc_Lock __lock_instance; - - if ( (__r = *__my_free_list) != 0 ) { - *__my_free_list = __r->_M_next; - } else { - __r = _S_refill(__n); - } -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) - _S_alloc_call(); -# endif - // lock is released here - return __r; -} - -void __node_alloc_impl::_M_deallocate(void *__p, size_t __n) { - _Obj * _STLP_VOLATILE * __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n); - _Obj * __pobj = __STATIC_CAST(_Obj*, __p); - - // acquire lock - _Node_Alloc_Lock __lock_instance; - __pobj->_M_next = *__my_free_list; - *__my_free_list = __pobj; - -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) - _S_dealloc_call(); -# endif - // lock is released here -} - -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) -# define _STLP_OFFSET sizeof(_Obj) -# else -# define _STLP_OFFSET 0 -# endif - -/* We allocate memory in large chunks in order to avoid fragmenting */ -/* the malloc heap too much. */ -/* We assume that size is properly aligned. */ -/* We hold the allocation lock. */ -char* __node_alloc_impl::_S_chunk_alloc(size_t _p_size, int& __nobjs) { - char* __result; - size_t __total_bytes = _p_size * __nobjs; - size_t __bytes_left = _S_end_free - _S_start_free; - - if (__bytes_left > 0) { - if (__bytes_left >= __total_bytes) { - __result = _S_start_free; - _S_start_free += __total_bytes; - return __result; - } - - if (__bytes_left >= _p_size) { - __nobjs = (int)(__bytes_left / _p_size); - __total_bytes = _p_size * __nobjs; - __result = _S_start_free; - _S_start_free += __total_bytes; - return __result; - } - - // Try to make use of the left-over piece. - _Obj* _STLP_VOLATILE* __my_free_list = _S_free_list + _S_FREELIST_INDEX(__bytes_left); - __REINTERPRET_CAST(_Obj*, _S_start_free)->_M_next = *__my_free_list; - *__my_free_list = __REINTERPRET_CAST(_Obj*, _S_start_free); - _S_start_free = _S_end_free = 0; - } - - size_t __bytes_to_get = 2 * __total_bytes + _S_round_up(_S_heap_size) + _STLP_OFFSET; - - _STLP_TRY { - _S_start_free = __stlp_new_chunk(__bytes_to_get); - } -#if defined (_STLP_USE_EXCEPTIONS) - catch (const _STLP_STD::bad_alloc&) { - _Obj* _STLP_VOLATILE* __my_free_list; - _Obj* __p; - // Try to do with what we have. That can't hurt. - // We do not try smaller requests, since that tends - // to result in disaster on multi-process machines. - for (size_t __i = _p_size; __i <= (size_t)_MAX_BYTES; __i += (size_t)_ALIGN) { - __my_free_list = _S_free_list + _S_FREELIST_INDEX(__i); - __p = *__my_free_list; - if (0 != __p) { - *__my_free_list = __p -> _M_next; - _S_start_free = __REINTERPRET_CAST(char*, __p); - _S_end_free = _S_start_free + __i; - return _S_chunk_alloc(_p_size, __nobjs); - // Any leftover piece will eventually make it to the - // right free list. - } - } - __bytes_to_get = __total_bytes + _STLP_OFFSET; - _S_start_free = __stlp_new_chunk(__bytes_to_get); - } -#endif - - _S_heap_size += __bytes_to_get >> 4; -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) - __REINTERPRET_CAST(_Obj*, _S_start_free)->_M_next = _S_chunks; - _S_chunks = __REINTERPRET_CAST(_Obj*, _S_start_free); -# endif - _S_end_free = _S_start_free + __bytes_to_get; - _S_start_free += _STLP_OFFSET; - return _S_chunk_alloc(_p_size, __nobjs); -} - -/* Returns an object of size __n, and optionally adds to size __n free list.*/ -/* We assume that __n is properly aligned. */ -/* We hold the allocation lock. */ -_Node_alloc_obj* __node_alloc_impl::_S_refill(size_t __n) { - int __nobjs = 20; - char* __chunk = _S_chunk_alloc(__n, __nobjs); - - if (1 == __nobjs) return __REINTERPRET_CAST(_Obj*, __chunk); - - _Obj* _STLP_VOLATILE* __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n); - _Obj* __result; - _Obj* __current_obj; - _Obj* __next_obj; - - /* Build free list in chunk */ - __result = __REINTERPRET_CAST(_Obj*, __chunk); - *__my_free_list = __next_obj = __REINTERPRET_CAST(_Obj*, __chunk + __n); - for (--__nobjs; --__nobjs; ) { - __current_obj = __next_obj; - __next_obj = __REINTERPRET_CAST(_Obj*, __REINTERPRET_CAST(char*, __next_obj) + __n); - __current_obj->_M_next = __next_obj; - } - __next_obj->_M_next = 0; - return __result; -} - -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) -void __node_alloc_impl::_S_alloc_call() -{ ++_S_alloc_counter(); } - -void __node_alloc_impl::_S_dealloc_call() { - __stl_atomic_t &counter = _S_alloc_counter(); - if (--counter == 0) - { _S_chunk_dealloc(); } -} - -/* We deallocate all the memory chunks */ -void __node_alloc_impl::_S_chunk_dealloc() { - _Obj *__pcur = _S_chunks, *__pnext; - while (__pcur != 0) { - __pnext = __pcur->_M_next; - __stlp_delete_chunck(__pcur); - __pcur = __pnext; - } - _S_chunks = 0; - _S_start_free = _S_end_free = 0; - _S_heap_size = 0; - memset(__REINTERPRET_CAST(char*, __CONST_CAST(_Obj**, &_S_free_list[0])), 0, _STLP_NFREELISTS * sizeof(_Obj*)); -} -# endif - -#else - -void* __node_alloc_impl::_M_allocate(size_t& __n) { - __n = _S_round_up(__n); - _Obj* __r = _S_free_list[_S_FREELIST_INDEX(__n)].pop(); - if (__r == 0) - { __r = _S_refill(__n); } - -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) - _S_alloc_call(); -# endif - return __r; -} - -void __node_alloc_impl::_M_deallocate(void *__p, size_t __n) { - _S_free_list[_S_FREELIST_INDEX(__n)].push(__STATIC_CAST(_Obj*, __p)); - -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) - _S_dealloc_call(); -# endif -} - -/* Returns an object of size __n, and optionally adds additional ones to */ -/* freelist of objects of size __n. */ -/* We assume that __n is properly aligned. */ -__node_alloc_impl::_Obj* __node_alloc_impl::_S_refill(size_t __n) { - int __nobjs = 20; - char* __chunk = _S_chunk_alloc(__n, __nobjs); - - if (__nobjs <= 1) - return __REINTERPRET_CAST(_Obj*, __chunk); - - // Push all new nodes (minus first one) onto freelist - _Obj* __result = __REINTERPRET_CAST(_Obj*, __chunk); - _Obj* __cur_item = __result; - _Freelist* __my_freelist = _S_free_list + _S_FREELIST_INDEX(__n); - for (--__nobjs; __nobjs != 0; --__nobjs) { - __cur_item = __REINTERPRET_CAST(_Obj*, __REINTERPRET_CAST(char*, __cur_item) + __n); - __my_freelist->push(__cur_item); - } - return __result; -} - -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) -# define _STLP_OFFSET _ALIGN -# else -# define _STLP_OFFSET 0 -# endif - -/* We allocate memory in large chunks in order to avoid fragmenting */ -/* the malloc heap too much. */ -/* We assume that size is properly aligned. */ -char* __node_alloc_impl::_S_chunk_alloc(size_t _p_size, int& __nobjs) { -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) - //We are going to add a small memory block to keep all the allocated blocks - //address, we need to do so respecting the memory alignment. The following - //static assert checks that the reserved block is big enough to store a pointer. - _STLP_STATIC_ASSERT(sizeof(_Obj) <= _ALIGN) -# endif - char* __result = 0; - __add_atomic_t __total_bytes = __STATIC_CAST(__add_atomic_t, _p_size) * __nobjs; - - _FreeBlockHeader* __block = __STATIC_CAST(_FreeBlockHeader*, _S_free_mem_blocks.pop()); - if (__block != 0) { - // We checked a block out and can now mess with it with impugnity. - // We'll put the remainder back into the list if we're done with it below. - char* __buf_start = __REINTERPRET_CAST(char*, __block); - __add_atomic_t __bytes_left = __block->_M_end - __buf_start; - - if ((__bytes_left < __total_bytes) && (__bytes_left >= __STATIC_CAST(__add_atomic_t, _p_size))) { - // There's enough left for at least one object, but not as much as we wanted - __result = __buf_start; - __nobjs = (int)(__bytes_left/_p_size); - __total_bytes = __STATIC_CAST(__add_atomic_t, _p_size) * __nobjs; - __bytes_left -= __total_bytes; - __buf_start += __total_bytes; - } - else if (__bytes_left >= __total_bytes) { - // The block has enough left to satisfy all that was asked for - __result = __buf_start; - __bytes_left -= __total_bytes; - __buf_start += __total_bytes; - } - - if (__bytes_left != 0) { - // There is still some memory left over in block after we satisfied our request. - if ((__result != 0) && (__bytes_left >= (__add_atomic_t)sizeof(_FreeBlockHeader))) { - // We were able to allocate at least one object and there is still enough - // left to put remainder back into list. - _FreeBlockHeader* __newblock = __REINTERPRET_CAST(_FreeBlockHeader*, __buf_start); - __newblock->_M_end = __block->_M_end; - _S_free_mem_blocks.push(__newblock); - } - else { - // We were not able to allocate enough for at least one object. - // Shove into freelist of nearest (rounded-down!) size. - size_t __rounded_down = _S_round_up(__bytes_left + 1) - (size_t)_ALIGN; - if (__rounded_down > 0) - _S_free_list[_S_FREELIST_INDEX(__rounded_down)].push((_Obj*)__buf_start); - } - } - if (__result != 0) - return __result; - } - - // We couldn't satisfy it from the list of free blocks, get new memory. - __add_atomic_t __bytes_to_get = 2 * __total_bytes + - __STATIC_CAST(__add_atomic_t, - _S_round_up(__STATIC_CAST(__uadd_atomic_t, _STLP_ATOMIC_ADD(&_S_heap_size, 0)))) + - _STLP_OFFSET; - _STLP_TRY { - __result = __stlp_new_chunk(__bytes_to_get); - } -#if defined (_STLP_USE_EXCEPTIONS) - catch (const bad_alloc&) { - // Allocation failed; try to canibalize from freelist of a larger object size. - for (size_t __i = _p_size; __i <= (size_t)_MAX_BYTES; __i += (size_t)_ALIGN) { - _Obj* __p = _S_free_list[_S_FREELIST_INDEX(__i)].pop(); - if (0 != __p) { - if (__i < sizeof(_FreeBlockHeader)) { - // Not enough to put into list of free blocks, divvy it up here. - // Use as much as possible for this request and shove remainder into freelist. - __nobjs = (int)(__i/_p_size); - __total_bytes = __nobjs * __STATIC_CAST(__add_atomic_t, _p_size); - size_t __bytes_left = __i - __total_bytes; - size_t __rounded_down = _S_round_up(__bytes_left+1) - (size_t)_ALIGN; - if (__rounded_down > 0) { - _S_free_list[_S_FREELIST_INDEX(__rounded_down)].push(__REINTERPRET_CAST(_Obj*, __REINTERPRET_CAST(char*, __p) + __total_bytes)); - } - return __REINTERPRET_CAST(char*, __p); - } - else { - // Add node to list of available blocks and recursively allocate from it. - _FreeBlockHeader* __newblock = (_FreeBlockHeader*)__p; - __newblock->_M_end = __REINTERPRET_CAST(char*, __p) + __i; - _S_free_mem_blocks.push(__newblock); - return _S_chunk_alloc(_p_size, __nobjs); - } - } - } - - // We were not able to find something in a freelist, try to allocate a smaller amount. - __bytes_to_get = __total_bytes + _STLP_OFFSET; - __result = __stlp_new_chunk(__bytes_to_get); - - // This should either throw an exception or remedy the situation. - // Thus we assume it succeeded. - } -#endif - // Alignment check - _STLP_VERBOSE_ASSERT(((__REINTERPRET_CAST(size_t, __result) & __STATIC_CAST(size_t, _ALIGN - 1)) == 0), - _StlMsg_DBA_DELETED_TWICE) - _STLP_ATOMIC_ADD(&_S_heap_size, __bytes_to_get >> 4); - -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) - // We have to track the allocated memory chunks for release on exit. - _S_chunks.push(__REINTERPRET_CAST(_Obj*, __result)); - __result += _ALIGN; - __bytes_to_get -= _ALIGN; -# endif - - if (__bytes_to_get > __total_bytes) { - // Push excess memory allocated in this chunk into list of free memory blocks - _FreeBlockHeader* __freeblock = __REINTERPRET_CAST(_FreeBlockHeader*, __result + __total_bytes); - __freeblock->_M_end = __result + __bytes_to_get; - _S_free_mem_blocks.push(__freeblock); - } - return __result; -} - -# if defined (_STLP_DO_CLEAN_NODE_ALLOC) -void __node_alloc_impl::_S_alloc_call() -{ _STLP_ATOMIC_INCREMENT(&_S_alloc_counter()); } - -void __node_alloc_impl::_S_dealloc_call() { - _STLP_VOLATILE __stl_atomic_t *pcounter = &_S_alloc_counter(); - if (_STLP_ATOMIC_DECREMENT(pcounter) == 0) - _S_chunk_dealloc(); -} - -/* We deallocate all the memory chunks */ -void __node_alloc_impl::_S_chunk_dealloc() { - // Note: The _Node_alloc_helper class ensures that this function - // will only be called when the (shared) library is unloaded or the - // process is shutdown. It's thus not possible that another thread - // is currently trying to allocate a node (we're not thread-safe here). - // - - // Clear the free blocks and all freelistst. This makes sure that if - // for some reason more memory is allocated again during shutdown - // (it'd also be really nasty to leave references to deallocated memory). - _S_free_mem_blocks.clear(); - _S_heap_size = 0; - - for (size_t __i = 0; __i < _STLP_NFREELISTS; ++__i) { - _S_free_list[__i].clear(); - } - - // Detach list of chunks and free them all - _Obj* __chunk = _S_chunks.clear(); - while (__chunk != 0) { - _Obj* __next = __chunk->_M_next; - __stlp_delete_chunck(__chunk); - __chunk = __next; - } -} -# endif - -#endif - -#if defined (_STLP_DO_CLEAN_NODE_ALLOC) -struct __node_alloc_cleaner { - ~__node_alloc_cleaner() - { __node_alloc_impl::_S_dealloc_call(); } -}; - -# if defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) -_STLP_VOLATILE __stl_atomic_t& _STLP_CALL -# else -__stl_atomic_t& _STLP_CALL -# endif -__node_alloc_impl::_S_alloc_counter() { - static _AllocCounter _S_counter = 1; - static __node_alloc_cleaner _S_node_alloc_cleaner; - return _S_counter; -} -#endif - -#if !defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) -_Node_alloc_obj * _STLP_VOLATILE -__node_alloc_impl::_S_free_list[_STLP_NFREELISTS] -= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -// The 16 zeros are necessary to make version 4.1 of the SunPro -// compiler happy. Otherwise it appears to allocate too little -// space for the array. -#else -_STLP_atomic_freelist __node_alloc_impl::_S_free_list[_STLP_NFREELISTS]; -_STLP_atomic_freelist __node_alloc_impl::_S_free_mem_blocks; -#endif - -#if !defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) -char *__node_alloc_impl::_S_start_free = 0; -char *__node_alloc_impl::_S_end_free = 0; -#endif - -#if defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) -_STLP_VOLATILE __add_atomic_t -#else -size_t -#endif -__node_alloc_impl::_S_heap_size = 0; - -#if defined (_STLP_DO_CLEAN_NODE_ALLOC) -# if defined (_STLP_USE_LOCK_FREE_IMPLEMENTATION) -_STLP_atomic_freelist __node_alloc_impl::_S_chunks; -# else -_Node_alloc_obj* __node_alloc_impl::_S_chunks = 0; -# endif -#endif - -void * _STLP_CALL __node_alloc::_M_allocate(size_t& __n) -{ return __node_alloc_impl::_M_allocate(__n); } - -void _STLP_CALL __node_alloc::_M_deallocate(void *__p, size_t __n) -{ __node_alloc_impl::_M_deallocate(__p, __n); } - -#if defined (_STLP_PTHREADS) && !defined (_STLP_NO_THREADS) - -# define _STLP_DATA_ALIGNMENT 8 - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// ******************************************************* -// __perthread_alloc implementation -union _Pthread_alloc_obj { - union _Pthread_alloc_obj * __free_list_link; - char __client_data[_STLP_DATA_ALIGNMENT]; /* The client sees this. */ -}; - -// Pthread allocators don't appear to the client to have meaningful -// instances. We do in fact need to associate some state with each -// thread. That state is represented by _Pthread_alloc_per_thread_state. - -struct _Pthread_alloc_per_thread_state { - typedef _Pthread_alloc_obj __obj; - enum { _S_NFREELISTS = _MAX_BYTES / _STLP_DATA_ALIGNMENT }; - - // Free list link for list of available per thread structures. - // When one of these becomes available for reuse due to thread - // termination, any objects in its free list remain associated - // with it. The whole structure may then be used by a newly - // created thread. - _Pthread_alloc_per_thread_state() : __next(0) - { memset((void *)__CONST_CAST(_Pthread_alloc_obj**, __free_list), 0, (size_t)_S_NFREELISTS * sizeof(__obj *)); } - // Returns an object of size __n, and possibly adds to size n free list. - void *_M_refill(size_t __n); - - _Pthread_alloc_obj* volatile __free_list[_S_NFREELISTS]; - _Pthread_alloc_per_thread_state *__next; - // this data member is only to be used by per_thread_allocator, which returns memory to the originating thread. - _STLP_mutex _M_lock; -}; - -// Pthread-specific allocator. -class _Pthread_alloc_impl { -public: // but only for internal use: - typedef _Pthread_alloc_per_thread_state __state_type; - typedef char value_type; - - // Allocates a chunk for nobjs of size size. nobjs may be reduced - // if it is inconvenient to allocate the requested number. - static char *_S_chunk_alloc(size_t __size, size_t &__nobjs, __state_type*); - - enum {_S_ALIGN = _STLP_DATA_ALIGNMENT}; - - static size_t _S_round_up(size_t __bytes) - { return (((__bytes) + (int)_S_ALIGN - 1) & ~((int)_S_ALIGN - 1)); } - static size_t _S_freelist_index(size_t __bytes) - { return (((__bytes) + (int)_S_ALIGN - 1) / (int)_S_ALIGN - 1); } - -private: - // Chunk allocation state. And other shared state. - // Protected by _S_chunk_allocator_lock. - static _STLP_STATIC_MUTEX _S_chunk_allocator_lock; - static char *_S_start_free; - static char *_S_end_free; - static size_t _S_heap_size; - static __state_type *_S_free_per_thread_states; - static pthread_key_t _S_key; - static bool _S_key_initialized; - // Pthread key under which per thread state is stored. - // Allocator instances that are currently unclaimed by any thread. - static void _S_destructor(void *instance); - // Function to be called on thread exit to reclaim per thread - // state. - static __state_type *_S_new_per_thread_state(); -public: - // Return a recycled or new per thread state. - static __state_type *_S_get_per_thread_state(); -private: - // ensure that the current thread has an associated - // per thread state. - class _M_lock; - friend class _M_lock; - class _M_lock { - public: - _M_lock () { _S_chunk_allocator_lock._M_acquire_lock(); } - ~_M_lock () { _S_chunk_allocator_lock._M_release_lock(); } - }; - -public: - - /* n must be > 0 */ - static void * allocate(size_t& __n); - - /* p may not be 0 */ - static void deallocate(void *__p, size_t __n); - - // boris : versions for per_thread_allocator - /* n must be > 0 */ - static void * allocate(size_t& __n, __state_type* __a); - - /* p may not be 0 */ - static void deallocate(void *__p, size_t __n, __state_type* __a); - - static void * reallocate(void *__p, size_t __old_sz, size_t& __new_sz); -}; - -/* Returns an object of size n, and optionally adds to size n free list.*/ -/* We assume that n is properly aligned. */ -/* We hold the allocation lock. */ -void *_Pthread_alloc_per_thread_state::_M_refill(size_t __n) { - typedef _Pthread_alloc_obj __obj; - size_t __nobjs = 128; - char * __chunk = _Pthread_alloc_impl::_S_chunk_alloc(__n, __nobjs, this); - __obj * volatile * __my_free_list; - __obj * __result; - __obj * __current_obj, * __next_obj; - size_t __i; - - if (1 == __nobjs) { - return __chunk; - } - - __my_free_list = __free_list + _Pthread_alloc_impl::_S_freelist_index(__n); - - /* Build free list in chunk */ - __result = (__obj *)__chunk; - *__my_free_list = __next_obj = (__obj *)(__chunk + __n); - for (__i = 1; ; ++__i) { - __current_obj = __next_obj; - __next_obj = (__obj *)((char *)__next_obj + __n); - if (__nobjs - 1 == __i) { - __current_obj -> __free_list_link = 0; - break; - } else { - __current_obj -> __free_list_link = __next_obj; - } - } - return __result; -} - -void _Pthread_alloc_impl::_S_destructor(void *__instance) { - _M_lock __lock_instance; // Need to acquire lock here. - _Pthread_alloc_per_thread_state* __s = (_Pthread_alloc_per_thread_state*)__instance; - __s -> __next = _S_free_per_thread_states; - _S_free_per_thread_states = __s; -} - -_Pthread_alloc_per_thread_state* _Pthread_alloc_impl::_S_new_per_thread_state() { - /* lock already held here. */ - if (0 != _S_free_per_thread_states) { - _Pthread_alloc_per_thread_state *__result = _S_free_per_thread_states; - _S_free_per_thread_states = _S_free_per_thread_states -> __next; - return __result; - } - else { - return new _Pthread_alloc_per_thread_state; - } -} - -_Pthread_alloc_per_thread_state* _Pthread_alloc_impl::_S_get_per_thread_state() { - int __ret_code; - __state_type* __result; - - if (_S_key_initialized && (__result = (__state_type*) pthread_getspecific(_S_key))) - return __result; - - /*REFERENCED*/ - _M_lock __lock_instance; // Need to acquire lock here. - if (!_S_key_initialized) { - if (pthread_key_create(&_S_key, _S_destructor)) { - _STLP_THROW_BAD_ALLOC; // failed - } - _S_key_initialized = true; - } - - __result = _S_new_per_thread_state(); - __ret_code = pthread_setspecific(_S_key, __result); - if (__ret_code) { - if (__ret_code == ENOMEM) { - _STLP_THROW_BAD_ALLOC; - } else { - // EINVAL - _STLP_ABORT(); - } - } - return __result; -} - -/* We allocate memory in large chunks in order to avoid fragmenting */ -/* the malloc heap too much. */ -/* We assume that size is properly aligned. */ -char *_Pthread_alloc_impl::_S_chunk_alloc(size_t __p_size, size_t &__nobjs, _Pthread_alloc_per_thread_state *__a) { - typedef _Pthread_alloc_obj __obj; - { - char * __result; - size_t __total_bytes; - size_t __bytes_left; - /*REFERENCED*/ - _M_lock __lock_instance; // Acquire lock for this routine - - __total_bytes = __p_size * __nobjs; - __bytes_left = _S_end_free - _S_start_free; - if (__bytes_left >= __total_bytes) { - __result = _S_start_free; - _S_start_free += __total_bytes; - return __result; - } else if (__bytes_left >= __p_size) { - __nobjs = __bytes_left/__p_size; - __total_bytes = __p_size * __nobjs; - __result = _S_start_free; - _S_start_free += __total_bytes; - return __result; - } else { - size_t __bytes_to_get = 2 * __total_bytes + _S_round_up(_S_heap_size); - // Try to make use of the left-over piece. - if (__bytes_left > 0) { - __obj * volatile * __my_free_list = __a->__free_list + _S_freelist_index(__bytes_left); - ((__obj *)_S_start_free) -> __free_list_link = *__my_free_list; - *__my_free_list = (__obj *)_S_start_free; - } -# ifdef _SGI_SOURCE - // Try to get memory that's aligned on something like a - // cache line boundary, so as to avoid parceling out - // parts of the same line to different threads and thus - // possibly different processors. - { - const int __cache_line_size = 128; // probable upper bound - __bytes_to_get &= ~(__cache_line_size-1); - _S_start_free = (char *)memalign(__cache_line_size, __bytes_to_get); - if (0 == _S_start_free) { - _S_start_free = (char *)__malloc_alloc::allocate(__bytes_to_get); - } - } -# else /* !SGI_SOURCE */ - _S_start_free = (char *)__malloc_alloc::allocate(__bytes_to_get); -# endif - _S_heap_size += __bytes_to_get >> 4; - _S_end_free = _S_start_free + __bytes_to_get; - } - } - // lock is released here - return _S_chunk_alloc(__p_size, __nobjs, __a); -} - - -/* n must be > 0 */ -void *_Pthread_alloc_impl::allocate(size_t& __n) { - typedef _Pthread_alloc_obj __obj; - __obj * volatile * __my_free_list; - __obj * __result; - __state_type* __a; - - if (__n > _MAX_BYTES) { - return __malloc_alloc::allocate(__n); - } - - __n = _S_round_up(__n); - __a = _S_get_per_thread_state(); - - __my_free_list = __a->__free_list + _S_freelist_index(__n); - __result = *__my_free_list; - if (__result == 0) { - void *__r = __a->_M_refill(__n); - return __r; - } - *__my_free_list = __result->__free_list_link; - return __result; -}; - -/* p may not be 0 */ -void _Pthread_alloc_impl::deallocate(void *__p, size_t __n) { - typedef _Pthread_alloc_obj __obj; - __obj *__q = (__obj *)__p; - __obj * volatile * __my_free_list; - __state_type* __a; - - if (__n > _MAX_BYTES) { - __malloc_alloc::deallocate(__p, __n); - return; - } - - __a = _S_get_per_thread_state(); - - __my_free_list = __a->__free_list + _S_freelist_index(__n); - __q -> __free_list_link = *__my_free_list; - *__my_free_list = __q; -} - -// boris : versions for per_thread_allocator -/* n must be > 0 */ -void *_Pthread_alloc_impl::allocate(size_t& __n, __state_type* __a) { - typedef _Pthread_alloc_obj __obj; - __obj * volatile * __my_free_list; - __obj * __result; - - if (__n > _MAX_BYTES) { - return __malloc_alloc::allocate(__n); - } - __n = _S_round_up(__n); - - // boris : here, we have to lock per thread state, as we may be getting memory from - // different thread pool. - _STLP_auto_lock __lock(__a->_M_lock); - - __my_free_list = __a->__free_list + _S_freelist_index(__n); - __result = *__my_free_list; - if (__result == 0) { - void *__r = __a->_M_refill(__n); - return __r; - } - *__my_free_list = __result->__free_list_link; - return __result; -}; - -/* p may not be 0 */ -void _Pthread_alloc_impl::deallocate(void *__p, size_t __n, __state_type* __a) { - typedef _Pthread_alloc_obj __obj; - __obj *__q = (__obj *)__p; - __obj * volatile * __my_free_list; - - if (__n > _MAX_BYTES) { - __malloc_alloc::deallocate(__p, __n); - return; - } - - // boris : here, we have to lock per thread state, as we may be returning memory from - // different thread. - _STLP_auto_lock __lock(__a->_M_lock); - - __my_free_list = __a->__free_list + _S_freelist_index(__n); - __q -> __free_list_link = *__my_free_list; - *__my_free_list = __q; -} - -void *_Pthread_alloc_impl::reallocate(void *__p, size_t __old_sz, size_t& __new_sz) { - void * __result; - size_t __copy_sz; - - if (__old_sz > _MAX_BYTES && __new_sz > _MAX_BYTES) { - return realloc(__p, __new_sz); - } - - if (_S_round_up(__old_sz) == _S_round_up(__new_sz)) return __p; - __result = allocate(__new_sz); - __copy_sz = __new_sz > __old_sz? __old_sz : __new_sz; - memcpy(__result, __p, __copy_sz); - deallocate(__p, __old_sz); - return __result; -} - -_Pthread_alloc_per_thread_state* _Pthread_alloc_impl::_S_free_per_thread_states = 0; -pthread_key_t _Pthread_alloc_impl::_S_key = 0; -_STLP_STATIC_MUTEX _Pthread_alloc_impl::_S_chunk_allocator_lock _STLP_MUTEX_INITIALIZER; -bool _Pthread_alloc_impl::_S_key_initialized = false; -char *_Pthread_alloc_impl::_S_start_free = 0; -char *_Pthread_alloc_impl::_S_end_free = 0; -size_t _Pthread_alloc_impl::_S_heap_size = 0; - -void * _STLP_CALL _Pthread_alloc::allocate(size_t& __n) -{ return _Pthread_alloc_impl::allocate(__n); } -void _STLP_CALL _Pthread_alloc::deallocate(void *__p, size_t __n) -{ _Pthread_alloc_impl::deallocate(__p, __n); } -void * _STLP_CALL _Pthread_alloc::allocate(size_t& __n, __state_type* __a) -{ return _Pthread_alloc_impl::allocate(__n, __a); } -void _STLP_CALL _Pthread_alloc::deallocate(void *__p, size_t __n, __state_type* __a) -{ _Pthread_alloc_impl::deallocate(__p, __n, __a); } -void * _STLP_CALL _Pthread_alloc::reallocate(void *__p, size_t __old_sz, size_t& __new_sz) -{ return _Pthread_alloc_impl::reallocate(__p, __old_sz, __new_sz); } -_Pthread_alloc_per_thread_state* _STLP_CALL _Pthread_alloc::_S_get_per_thread_state() -{ return _Pthread_alloc_impl::_S_get_per_thread_state(); } - -_STLP_MOVE_TO_STD_NAMESPACE - -#endif - -_STLP_END_NAMESPACE - -#undef _S_FREELIST_INDEX diff --git a/build/stlport/src/bitset.cpp b/build/stlport/src/bitset.cpp deleted file mode 100644 index 90f179915700..000000000000 --- a/build/stlport/src/bitset.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// ------------------------------------------------------------ -// Lookup tables for find and count operations. - -size_t _Bs_G::_S_count(const unsigned char *__first, - const unsigned char *__last) -{ - static const unsigned char _bit_count[256] = { - 0, /* 0 */ 1, /* 1 */ 1, /* 2 */ 2, /* 3 */ 1, /* 4 */ - 2, /* 5 */ 2, /* 6 */ 3, /* 7 */ 1, /* 8 */ 2, /* 9 */ - 2, /* 10 */ 3, /* 11 */ 2, /* 12 */ 3, /* 13 */ 3, /* 14 */ - 4, /* 15 */ 1, /* 16 */ 2, /* 17 */ 2, /* 18 */ 3, /* 19 */ - 2, /* 20 */ 3, /* 21 */ 3, /* 22 */ 4, /* 23 */ 2, /* 24 */ - 3, /* 25 */ 3, /* 26 */ 4, /* 27 */ 3, /* 28 */ 4, /* 29 */ - 4, /* 30 */ 5, /* 31 */ 1, /* 32 */ 2, /* 33 */ 2, /* 34 */ - 3, /* 35 */ 2, /* 36 */ 3, /* 37 */ 3, /* 38 */ 4, /* 39 */ - 2, /* 40 */ 3, /* 41 */ 3, /* 42 */ 4, /* 43 */ 3, /* 44 */ - 4, /* 45 */ 4, /* 46 */ 5, /* 47 */ 2, /* 48 */ 3, /* 49 */ - 3, /* 50 */ 4, /* 51 */ 3, /* 52 */ 4, /* 53 */ 4, /* 54 */ - 5, /* 55 */ 3, /* 56 */ 4, /* 57 */ 4, /* 58 */ 5, /* 59 */ - 4, /* 60 */ 5, /* 61 */ 5, /* 62 */ 6, /* 63 */ 1, /* 64 */ - 2, /* 65 */ 2, /* 66 */ 3, /* 67 */ 2, /* 68 */ 3, /* 69 */ - 3, /* 70 */ 4, /* 71 */ 2, /* 72 */ 3, /* 73 */ 3, /* 74 */ - 4, /* 75 */ 3, /* 76 */ 4, /* 77 */ 4, /* 78 */ 5, /* 79 */ - 2, /* 80 */ 3, /* 81 */ 3, /* 82 */ 4, /* 83 */ 3, /* 84 */ - 4, /* 85 */ 4, /* 86 */ 5, /* 87 */ 3, /* 88 */ 4, /* 89 */ - 4, /* 90 */ 5, /* 91 */ 4, /* 92 */ 5, /* 93 */ 5, /* 94 */ - 6, /* 95 */ 2, /* 96 */ 3, /* 97 */ 3, /* 98 */ 4, /* 99 */ - 3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */ - 4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */ - 5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */ - 5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */ - 4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */ - 6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */ - 2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */ - 4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */ - 3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */ - 3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */ - 4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */ - 5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */ - 2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */ - 4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */ - 4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */ - 6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */ - 4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */ - 5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */ - 6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */ - 4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */ - 3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */ - 5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */ - 4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */ - 6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */ - 5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */ - 4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */ - 5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */ - 6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */ - 4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */ - 6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */ - 6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */ - 8 /* 255 */ - }; - - size_t __result(0); - while ( __first < __last ) { - __result += _bit_count[*(__first++)]; - } - return __result; -} - -unsigned char _Bs_G::_S_first_one(unsigned char __byte) -{ - static const unsigned char _first_one[256] = { - 0, /* 0 */ 0, /* 1 */ 1, /* 2 */ 0, /* 3 */ 2, /* 4 */ - 0, /* 5 */ 1, /* 6 */ 0, /* 7 */ 3, /* 8 */ 0, /* 9 */ - 1, /* 10 */ 0, /* 11 */ 2, /* 12 */ 0, /* 13 */ 1, /* 14 */ - 0, /* 15 */ 4, /* 16 */ 0, /* 17 */ 1, /* 18 */ 0, /* 19 */ - 2, /* 20 */ 0, /* 21 */ 1, /* 22 */ 0, /* 23 */ 3, /* 24 */ - 0, /* 25 */ 1, /* 26 */ 0, /* 27 */ 2, /* 28 */ 0, /* 29 */ - 1, /* 30 */ 0, /* 31 */ 5, /* 32 */ 0, /* 33 */ 1, /* 34 */ - 0, /* 35 */ 2, /* 36 */ 0, /* 37 */ 1, /* 38 */ 0, /* 39 */ - 3, /* 40 */ 0, /* 41 */ 1, /* 42 */ 0, /* 43 */ 2, /* 44 */ - 0, /* 45 */ 1, /* 46 */ 0, /* 47 */ 4, /* 48 */ 0, /* 49 */ - 1, /* 50 */ 0, /* 51 */ 2, /* 52 */ 0, /* 53 */ 1, /* 54 */ - 0, /* 55 */ 3, /* 56 */ 0, /* 57 */ 1, /* 58 */ 0, /* 59 */ - 2, /* 60 */ 0, /* 61 */ 1, /* 62 */ 0, /* 63 */ 6, /* 64 */ - 0, /* 65 */ 1, /* 66 */ 0, /* 67 */ 2, /* 68 */ 0, /* 69 */ - 1, /* 70 */ 0, /* 71 */ 3, /* 72 */ 0, /* 73 */ 1, /* 74 */ - 0, /* 75 */ 2, /* 76 */ 0, /* 77 */ 1, /* 78 */ 0, /* 79 */ - 4, /* 80 */ 0, /* 81 */ 1, /* 82 */ 0, /* 83 */ 2, /* 84 */ - 0, /* 85 */ 1, /* 86 */ 0, /* 87 */ 3, /* 88 */ 0, /* 89 */ - 1, /* 90 */ 0, /* 91 */ 2, /* 92 */ 0, /* 93 */ 1, /* 94 */ - 0, /* 95 */ 5, /* 96 */ 0, /* 97 */ 1, /* 98 */ 0, /* 99 */ - 2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */ - 0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */ - 1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */ - 0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */ - 3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */ - 0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */ - 1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */ - 0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */ - 2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */ - 0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */ - 1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */ - 0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */ - 5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */ - 0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */ - 1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */ - 0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */ - 2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */ - 0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */ - 1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */ - 0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */ - 3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */ - 0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */ - 1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */ - 0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */ - 2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */ - 0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */ - 1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */ - 0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */ - 4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */ - 0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */ - 1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */ - 0, /* 255 */ - }; - return _first_one[__byte]; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/c_locale.c b/build/stlport/src/c_locale.c deleted file mode 100644 index 376e22e493fd..000000000000 --- a/build/stlport/src/c_locale.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include "c_locale.h" - -#if defined (_STLP_WIN32) && !defined (_STLP_WCE) -# include "c_locale_win32/c_locale_win32.c" -#elif defined (_STLP_USE_GLIBC2_LOCALIZATION) -# include "c_locale_glibc/c_locale_glibc2.c" /* glibc 2.2 and newer */ -#else -# include "c_locale_dummy/c_locale_dummy.c" -#endif diff --git a/build/stlport/src/c_locale.h b/build/stlport/src/c_locale.h deleted file mode 100644 index 36d996112873..000000000000 --- a/build/stlport/src/c_locale.h +++ /dev/null @@ -1,450 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* - * It is impossible to write the C++ locale library in terms of locales - * as defined in the C standard. Instead, we write the C++ locale and I/O - * library in terms of a low level C-like interface. This file defines - * that interface. - * - * The low-level locale interface can't be written portably; there - * must be a version of it for each platform that the C++ library - * is ported to. On many systems this interface may be a thin wrapper - * for existing functionality. - */ - -#ifndef _STLP_C_LOCALE_IMPL_H -#define _STLP_C_LOCALE_IMPL_H - -#include "stlport_prefix.h" - -#include /* for mbstate_t */ -#include - -struct _Locale_name_hint; - -#if defined (_GNU_SOURCE) && defined (__GLIBC__) && \ - ((__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2)) -# define _STLP_USE_GLIBC2_LOCALIZATION -# include -typedef nl_catd nl_catd_type; -#else -typedef int nl_catd_type; -#endif - -/* - * A number: the maximum length of a simple locale name. - * (i.e. a name like like en_US, as opposed to a name like - * en_US/de_AT/de_AT/es_MX/en_US/en_US) */ -#define _Locale_MAX_SIMPLE_NAME 256 - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Typedefs: - */ -typedef unsigned short int _Locale_mask_t; - -/* Function called during STLport library load phase. Might contain any - * code necessary to the platform localization layer. - */ -void _Locale_init(void); - -/* Function called during STLport library unload. Might contain any - * code necessary to the platform localization layer. - */ -void _Locale_final(void); - -/* Create a category of the locale with the given name. - * - * The char* argument is a simple (not a composite) locale name, which may - * neither be an empty string nor a null pointer. - * - * These functions return NULL to indicate failure. Failure reason should be reported - * using the __err_code pointer. - */ -struct _Locale_ctype* _Locale_ctype_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); -struct _Locale_codecvt* _Locale_codecvt_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); -struct _Locale_numeric* _Locale_numeric_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); -struct _Locale_time* _Locale_time_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); -struct _Locale_collate* _Locale_collate_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); -struct _Locale_monetary* _Locale_monetary_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); -struct _Locale_messages* _Locale_messages_create(const char *, struct _Locale_name_hint*, int * /* __err_code */); - -/* Give error reason on failure of one of the _Locale_*_create functions. Available - * reasons are: - * 0: No specific error reason has been reported. - * 1: No platform support for the given facet. - * 2: Unknown locale name - * 3: No platform API for localization support. - * 4: No more memory - */ -#define _STLP_LOC_UNDEFINED 0 -#define _STLP_LOC_UNSUPPORTED_FACET_CATEGORY 1 -#define _STLP_LOC_UNKNOWN_NAME 2 -#define _STLP_LOC_NO_PLATFORM_SUPPORT 3 -#define _STLP_LOC_NO_MEMORY 4 - -/* Release a category of a locale - * - * These functions are used to release a category acquired with the - * according _Locale_*_create() functions. - */ -void _Locale_ctype_destroy(struct _Locale_ctype *); -void _Locale_codecvt_destroy(struct _Locale_codecvt *); -void _Locale_numeric_destroy(struct _Locale_numeric *); -void _Locale_time_destroy(struct _Locale_time *); -void _Locale_collate_destroy(struct _Locale_collate *); -void _Locale_monetary_destroy(struct _Locale_monetary *); -void _Locale_messages_destroy(struct _Locale_messages *); - -/* - * Returns the name of the user's default locale in each - * category, as a null-terminated string. A NULL value - * means the default "C" locale. - */ -const char * _Locale_ctype_default(char * __buf); -const char * _Locale_numeric_default(char * __buf); -const char * _Locale_time_default(char * __buf); -const char * _Locale_collate_default(char * __buf); -const char * _Locale_monetary_default(char * __buf); -const char * _Locale_messages_default(char * __buf); - -/* Retrieve the name of the given category - * - * __buf points to a buffer that can hold at least _Locale_MAX_SIMPLE_NAME - * characters. These functions store the name, as a null-terminated - * string, in __buf. This function can't fail, at worst name is truncated. - */ -char const* _Locale_ctype_name(const struct _Locale_ctype *, char* __buf); -char const* _Locale_codecvt_name(const struct _Locale_codecvt *, char* __buf); -char const* _Locale_numeric_name(const struct _Locale_numeric *, char* __buf); -char const* _Locale_time_name(const struct _Locale_time *, char* __buf); -char const* _Locale_collate_name(const struct _Locale_collate *, char* __buf); -char const* _Locale_monetary_name(const struct _Locale_monetary *, char* __buf); -char const* _Locale_messages_name(const struct _Locale_messages *, char* __buf); - -/* - * cname is a (possibly composite) locale name---i.e. a name that can - * be passed to setlocale. __buf points to an array large enough to - * store at least _Locale_MAX_SIMPLE_NAME characters, and each of these - * functions extracts the name of a single category, stores it in buf - * as a null-terminated string, and returns buf. - */ -char const* _Locale_extract_ctype_name(const char *cname, char *__buf, - struct _Locale_name_hint* __hint, int *__err_code); -char const* _Locale_extract_numeric_name(const char *cname, char *__buf, - struct _Locale_name_hint* __hint, int *__err_code); -char const* _Locale_extract_time_name(const char *cname, char *__buf, - struct _Locale_name_hint* __hint, int *__err_code); -char const* _Locale_extract_collate_name(const char *cname, char *__buf, - struct _Locale_name_hint* __hint, int *__err_code); -char const* _Locale_extract_monetary_name(const char *cname, char *__buf, - struct _Locale_name_hint* __hint, int *__err_code); -char const* _Locale_extract_messages_name(const char *cname, char *__buf, - struct _Locale_name_hint* __hint, int *__err_code); - -/* Functions to improve locale creation process. For some locale API (Win32) - * you need to find a locale identification from the name which can be a - * rather expensive operation especially if you do so for all facets of a - * locale. Those functions can be used to extract from a API dependent facet - * struct the information necessary to skip this lookup process for other - * facets creation. If not supported those function should return NULL. - */ -struct _Locale_name_hint* _Locale_get_ctype_hint(struct _Locale_ctype*); -struct _Locale_name_hint* _Locale_get_numeric_hint(struct _Locale_numeric*); -struct _Locale_name_hint* _Locale_get_time_hint(struct _Locale_time*); -struct _Locale_name_hint* _Locale_get_collate_hint(struct _Locale_collate*); -struct _Locale_name_hint* _Locale_get_monetary_hint(struct _Locale_monetary*); -struct _Locale_name_hint* _Locale_get_messages_hint(struct _Locale_messages*); - -/* - * FUNCTIONS THAT USE CTYPE - */ - -/* - * Narrow character functions: - */ - -/* - * Returns a pointer to the beginning of the ctype table. The table is - * at least 257 bytes long; if p is the pointer returned by this - * function, then p[c] is valid if c is EOF or if p is any value of - * type unsigned char. - */ -const _Locale_mask_t * _Locale_ctype_table(struct _Locale_ctype *); - -/* - * c is either EOF, or an unsigned char value. - */ -int _Locale_toupper(struct _Locale_ctype *, int /* c */); -int _Locale_tolower(struct _Locale_ctype *, int /* c */); - - -#ifndef _STLP_NO_WCHAR_T -/* - * Wide character functions: - */ -_Locale_mask_t _WLocale_ctype(struct _Locale_ctype *, wint_t, _Locale_mask_t); -wint_t _WLocale_tolower(struct _Locale_ctype *, wint_t); -wint_t _WLocale_toupper(struct _Locale_ctype *, wint_t); - -/* - * Multibyte functions: - */ - -/* - * Returns the number of bytes of the longest allowed multibyte - * character in the current encoding. - */ -int _WLocale_mb_cur_max(struct _Locale_codecvt *); - -/* - * Returns the number of bytes of the shortest allowed multibyte - * character in the current encoding. - */ -int _WLocale_mb_cur_min(struct _Locale_codecvt *); - -/* - * Returns 1 if the current multibyte encoding is stateless - * and does not require the use of an mbstate_t value. - */ -int _WLocale_is_stateless(struct _Locale_codecvt *); - -/* - * Almost identical to mbrtowc, from 4.6.5.3.2 of NA1. The only - * important difference is that mbrtowc treats null wide characters - * as special, and we don't. Specifically: examines the characters - * in [from, from + n), extracts a single wide character, and stores - * it in *to. Modifies shift_state if appropriate. The return value, - * which is always positive, is the number of characters extracted from - * the input sequence. Return value is (size_t) -1 if there was an - * encoding error in the input sequence, and (size_t) -2 if - * [from, from + n) is correct but not complete. None of the pointer - * arguments may be null pointers. - */ -size_t _WLocale_mbtowc(struct _Locale_codecvt *, - wchar_t * /* to */, - const char * /* from */, size_t /* n */, - mbstate_t *); - -/* - * Again, very similar to wcrtomb. The differences are that (1) it - * doesn't treat null characters as special; and (2) it stores at most - * n characters. Converts c to a multibyte sequence, stores that - * sequence in the array 'to', and returns the length of the sequence. - * Modifies shift_state if appropriate. The return value is (size_t) -1 - * if c is not a valid wide character, and (size_t) -2 if the length of - * the multibyte character sequence is greater than n. - */ -size_t _WLocale_wctomb(struct _Locale_codecvt *, - char *, size_t, - const wchar_t, - mbstate_t *); - -/* - * Inserts whatever characters are necessary to restore st to an - * initial shift state. Sets *next to buf + m, where m is the number - * of characters inserted. (0 <= m <= n.) Returns m to indicate - * success, (size_t) -1 to indicate error, (size_t) -2 to indicate - * partial success (more than n characters needed). For success or partial - * success, sets *next to buf + m. - */ -size_t _WLocale_unshift(struct _Locale_codecvt *, - mbstate_t *, - char *, size_t, char **); -#endif - -/* - * FUNCTIONS THAT USE COLLATE - */ - -/* - * Compares the two sequences [s1, s1 + n1) and [s2, s2 + n2). Neither - * sequence is assumed to be null-terminated, and null characters - * aren't special. If the two sequences are the same up through - * min(n1, n2), then the sequence that compares less is whichever one - * is shorter. - */ -int _Locale_strcmp(struct _Locale_collate *, - const char * /* s1 */, size_t /* n1 */, - const char * /* s2 */, size_t /* n2 */); -#ifndef _STLP_NO_WCHAR_T -int _WLocale_strcmp(struct _Locale_collate *, - const wchar_t * /* s1 */, size_t /* n1 */, - const wchar_t * /* s2 */, size_t /* n2 */); -#endif - -/* - * Creates a transformed version of the string [s2, s2 + n2). The - * string may contain embedded null characters; nulls aren't special. - * The transformed string begins at s1, and contains at most n1 - * characters. The return value is the length of the transformed - * string. If the return value is greater than n1 then this is an - * error condition: it indicates that there wasn't enough space. In - * that case, the contents of [s1, s1 + n1) is unspecified. -*/ -size_t _Locale_strxfrm(struct _Locale_collate *, - char * /* s1 */, size_t /* n1 */, - const char * /* s2 */, size_t /* n2 */); - -#ifndef _STLP_NO_WCHAR_T -size_t _WLocale_strxfrm(struct _Locale_collate *, - wchar_t * /* s1 */, size_t /* n1 */, - const wchar_t * /* s2 */, size_t /* n2 */); -#endif - - -/* - * FUNCTIONS THAT USE NUMERIC - */ - -/* - * Equivalent to the first three fields in struct lconv. (C standard, - * section 7.4.) - */ -char _Locale_decimal_point(struct _Locale_numeric *); -char _Locale_thousands_sep(struct _Locale_numeric *); -const char * _Locale_grouping(struct _Locale_numeric *); - -#ifndef _STLP_NO_WCHAR_T -wchar_t _WLocale_decimal_point(struct _Locale_numeric *); -wchar_t _WLocale_thousands_sep(struct _Locale_numeric *); -#endif - -/* - * Return "true" and "false" in English locales, and something - * appropriate in non-English locales. - */ -const char * _Locale_true(struct _Locale_numeric *); -const char * _Locale_false(struct _Locale_numeric *); - -#ifndef _STLP_NO_WCHAR_T -const wchar_t * _WLocale_true(struct _Locale_numeric *, wchar_t* /* buf */, size_t /* bufSize */); -const wchar_t * _WLocale_false(struct _Locale_numeric *, wchar_t* /* buf */, size_t /* bufSize */); -#endif - -/* - * FUNCTIONS THAT USE MONETARY - */ - -/* - * Return the obvious fields of struct lconv. - */ -const char * _Locale_int_curr_symbol(struct _Locale_monetary *); -const char * _Locale_currency_symbol(struct _Locale_monetary *); -char _Locale_mon_decimal_point(struct _Locale_monetary *); -char _Locale_mon_thousands_sep(struct _Locale_monetary *); -const char * _Locale_mon_grouping(struct _Locale_monetary *); -const char * _Locale_positive_sign(struct _Locale_monetary *); -const char * _Locale_negative_sign(struct _Locale_monetary *); -char _Locale_int_frac_digits(struct _Locale_monetary *); -char _Locale_frac_digits(struct _Locale_monetary *); -int _Locale_p_cs_precedes(struct _Locale_monetary *); -int _Locale_p_sep_by_space(struct _Locale_monetary *); -int _Locale_p_sign_posn(struct _Locale_monetary *); -int _Locale_n_cs_precedes(struct _Locale_monetary *); -int _Locale_n_sep_by_space(struct _Locale_monetary *); -int _Locale_n_sign_posn(struct _Locale_monetary *); - -#ifndef _STLP_NO_WCHAR_T -const wchar_t * _WLocale_int_curr_symbol(struct _Locale_monetary *, wchar_t* /* buf */, size_t /* bufSize */); -const wchar_t * _WLocale_currency_symbol(struct _Locale_monetary *, wchar_t* /* buf */, size_t /* bufSize */); -wchar_t _WLocale_mon_decimal_point(struct _Locale_monetary *); -wchar_t _WLocale_mon_thousands_sep(struct _Locale_monetary *); -const wchar_t * _WLocale_positive_sign(struct _Locale_monetary *, wchar_t* /* buf */, size_t /* bufSize */); -const wchar_t * _WLocale_negative_sign(struct _Locale_monetary *, wchar_t* /* buf */, size_t /* bufSize */); -#endif - -/* - * FUNCTIONS THAT USE TIME - */ - -/* - * month is in the range [0, 12). - */ -const char * _Locale_full_monthname(struct _Locale_time *, int /* month */); -const char * _Locale_abbrev_monthname(struct _Locale_time *, int /* month */); - -#ifndef _STLP_NO_WCHAR_T -const wchar_t * _WLocale_full_monthname(struct _Locale_time *, int /* month */, - wchar_t* /* buf */, size_t /* bufSize */); -const wchar_t * _WLocale_abbrev_monthname(struct _Locale_time *, int /* month */, - wchar_t* /* buf */, size_t /* bufSize */); -#endif - -/* - * day is in the range [0, 7). Sunday is 0. - */ -const char * _Locale_full_dayofweek(struct _Locale_time *, int /* day */); -const char * _Locale_abbrev_dayofweek(struct _Locale_time *, int /* day */); - -#ifndef _STLP_NO_WCHAR_T -const wchar_t * _WLocale_full_dayofweek(struct _Locale_time *, int /* day */, - wchar_t* /* buf */, size_t /* bufSize */); -const wchar_t * _WLocale_abbrev_dayofweek(struct _Locale_time *, int /* day */, - wchar_t* /* buf */, size_t /* bufSize */); -#endif - -const char * _Locale_d_t_fmt(struct _Locale_time *); -const char * _Locale_d_fmt(struct _Locale_time *); -const char * _Locale_t_fmt(struct _Locale_time *); -const char * _Locale_long_d_t_fmt(struct _Locale_time*); -const char * _Locale_long_d_fmt(struct _Locale_time*); - -const char * _Locale_am_str(struct _Locale_time *); -const char * _Locale_pm_str(struct _Locale_time *); - -#ifndef _STLP_NO_WCHAR_T -const wchar_t * _WLocale_am_str(struct _Locale_time *, - wchar_t* /* buf */, size_t /* bufSize */); -const wchar_t * _WLocale_pm_str(struct _Locale_time *, - wchar_t* /* buf */, size_t /* bufSize */); -#endif - -/* - * FUNCTIONS THAT USE MESSAGES - */ - -/* - * Very similar to catopen, except that it uses the given message - * category to determine which catalog to open. - */ -nl_catd_type _Locale_catopen(struct _Locale_messages*, const char*); - -/* Complementary to _Locale_catopen. - * The catalog must be a value that was returned by a previous call - * to _Locale_catopen. - */ -void _Locale_catclose(struct _Locale_messages*, nl_catd_type); - -/* - * Returns a string, identified by a set index and a message index, - * from an opened message catalog. Returns the supplied default if - * no such string exists. - */ -const char * _Locale_catgets(struct _Locale_messages *, nl_catd_type, - int, int,const char *); - -#ifdef __cplusplus -} -#endif - -#endif /* _STLP_C_LOCALE_IMPL_H */ diff --git a/build/stlport/src/c_locale_dummy/c_locale_dummy.c b/build/stlport/src/c_locale_dummy/c_locale_dummy.c deleted file mode 100644 index 01708ee9e31b..000000000000 --- a/build/stlport/src/c_locale_dummy/c_locale_dummy.c +++ /dev/null @@ -1,531 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* This is a "stub" implementation of the "c_locale.h" interface, - intended for operating systems where we have not yet written - a real implementation. A C++ library using this stub implementation - is still standard-conforming, since the C++ standard does not require - that any locales other than "C" be supported. -*/ - -#include -#include -#include -#include -#include - -#if defined (_STLP_USE_SAFE_STRING_FUNCTIONS) -# define _STLP_STRNCPY(D, DS, S, C) strncpy_s(D, DS, S, C) -# if !defined (_STLP_NO_WCHAR_T) -# define _STLP_WCSNCPY(D, DS, S, C) wcsncpy_s(D, DS, S, C) -# endif -#else -# define _STLP_STRNCPY(D, DS, S, C) strncpy(D, S, C) -# if !defined (_STLP_NO_WCHAR_T) -# define _STLP_WCSNCPY(D, DS, S, C) wcsncpy(D, S, C) -# endif -#endif - -static const char *_C_name = "C"; -static const char *_empty_str = ""; -#ifndef _STLP_NO_WCHAR_T -#if defined(WCHAR_MAX) && WCHAR_MAX == 255 -static const wchar_t *_empty_wstr = ""; -#else -static const wchar_t *_empty_wstr = L""; -#endif -#endif - -static _Locale_mask_t ctable[256]; - -/* Framework functions */ - -void _Locale_init(void) { - /* Ctype table for the ASCII character set. */ - char c; - /* We might never reach 128 when char is signed. */ - for (c = 0; /* c != 128 */; ++c) { - if (isalpha(c)) ctable[(unsigned char)c] |= _Locale_ALPHA; - if (iscntrl(c)) ctable[(unsigned char)c] |= _Locale_CNTRL; - if (isdigit(c)) ctable[(unsigned char)c] |= _Locale_DIGIT; - if (isprint(c)) ctable[(unsigned char)c] |= _Locale_PRINT; - if (ispunct(c)) ctable[(unsigned char)c] |= _Locale_PUNCT; - if (isspace(c)) ctable[(unsigned char)c] |= _Locale_SPACE; - if (isxdigit(c)) ctable[(unsigned char)c] |= _Locale_XDIGIT; - if (isupper(c)) ctable[(unsigned char)c] |= _Locale_UPPER; - if (islower(c)) ctable[(unsigned char)c] |= _Locale_LOWER; - if (c == 127) break; - } - - /* ASCII is a 7-bit code, so everything else is non-ASCII. */ - memset(&(ctable[128]), 0, 128 * sizeof(_Locale_mask_t)); -} - -void _Locale_final(void) -{} - -void* _Locale_create(const char* name, int *__err_code) { - if (name[0] == 'C' && name[1] == 0) - { return (void*)0x1; } - *__err_code = _STLP_LOC_NO_PLATFORM_SUPPORT; return 0; -} - -struct _Locale_ctype* _Locale_ctype_create(const char *name, - struct _Locale_name_hint* hint, int *__err_code) -{ return (struct _Locale_ctype*)_Locale_create(name, __err_code); } - -struct _Locale_codecvt* _Locale_codecvt_create(const char *name, - struct _Locale_name_hint* hint, int *__err_code) -{ return (struct _Locale_codecvt*)_Locale_create(name, __err_code); } - -struct _Locale_numeric* _Locale_numeric_create(const char *name, - struct _Locale_name_hint* hint, int *__err_code) -{ return (struct _Locale_numeric*)_Locale_create(name, __err_code); } - -struct _Locale_time* _Locale_time_create(const char *name, - struct _Locale_name_hint* hint, int *__err_code) -{ return (struct _Locale_time*)_Locale_create(name, __err_code); } - -struct _Locale_collate* _Locale_collate_create(const char *name, - struct _Locale_name_hint* hint, int *__err_code) -{ return (struct _Locale_collate*)_Locale_create(name, __err_code); } - -struct _Locale_monetary* _Locale_monetary_create(const char *name, - struct _Locale_name_hint* hint, int *__err_code) -{ return (struct _Locale_monetary*)_Locale_create(name, __err_code); } - -struct _Locale_messages* _Locale_messages_create(const char *name, - struct _Locale_name_hint* hint, int *__err_code) -{ return (struct _Locale_messages*)_Locale_create(name, __err_code); } - -const char *_Locale_ctype_default(char* buf) { return _C_name; } -const char *_Locale_numeric_default(char * buf) { return _C_name; } -const char *_Locale_time_default(char* buf) { return _C_name; } -const char *_Locale_collate_default(char* buf) { return _C_name; } -const char *_Locale_monetary_default(char* buf) { return _C_name; } -const char *_Locale_messages_default(char* buf) { return _C_name; } - -char const* _Locale_ctype_name(const struct _Locale_ctype *lctype, char* buf) -{ return _C_name; } - -char const* _Locale_codecvt_name(const struct _Locale_codecvt *lcodecvt, char* buf) -{ return _C_name; } - -char const* _Locale_numeric_name(const struct _Locale_numeric *lnum, char* buf) -{ return _C_name; } - -char const* _Locale_time_name(const struct _Locale_time *ltime, char* buf) -{ return _C_name; } - -char const* _Locale_collate_name(const struct _Locale_collate *lcol, char* buf) -{ return _C_name; } - -char const* _Locale_monetary_name(const struct _Locale_monetary *lmon, char* buf) -{ return _C_name; } - -char const* _Locale_messages_name(const struct _Locale_messages *lmes, char* buf) -{ return _C_name; } - -void _Locale_ctype_destroy(struct _Locale_ctype *lctype) {} -void _Locale_codecvt_destroy(struct _Locale_codecvt *lcodecvt) {} -void _Locale_numeric_destroy(struct _Locale_numeric *lnum) {} -void _Locale_time_destroy(struct _Locale_time *ltime) {} -void _Locale_collate_destroy(struct _Locale_collate *lcol) {} -void _Locale_monetary_destroy(struct _Locale_monetary *lmon) {} -void _Locale_messages_destroy(struct _Locale_messages *lmes) {} - -static char const* _Locale_extract_name(const char* name, int *__err_code) { - // When the request is the default locale or the "C" locale we answer "C". - if (name[0] == 0 || - (name[0] == 'C' && name[1] == 0)) - { return _C_name; } - *__err_code = _STLP_LOC_NO_PLATFORM_SUPPORT; return 0; -} - -char const* _Locale_extract_ctype_name(const char *name, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return _Locale_extract_name(name, __err_code); } - -char const* _Locale_extract_numeric_name(const char *name, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return _Locale_extract_name(name, __err_code); } - -char const* _Locale_extract_time_name(const char*name, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return _Locale_extract_name(name, __err_code); } - -char const* _Locale_extract_collate_name(const char *name, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return _Locale_extract_name(name, __err_code); } - -char const* _Locale_extract_monetary_name(const char *name, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return _Locale_extract_name(name, __err_code); } - -char const* _Locale_extract_messages_name(const char *name, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return _Locale_extract_name(name, __err_code); } - -struct _Locale_name_hint* _Locale_get_ctype_hint(struct _Locale_ctype* ctype) -{ return 0; } -struct _Locale_name_hint* _Locale_get_numeric_hint(struct _Locale_numeric* numeric) -{ return 0; } -struct _Locale_name_hint* _Locale_get_time_hint(struct _Locale_time* time) -{ return 0; } -struct _Locale_name_hint* _Locale_get_collate_hint(struct _Locale_collate* collate) -{ return 0; } -struct _Locale_name_hint* _Locale_get_monetary_hint(struct _Locale_monetary* monetary) -{ return 0; } -struct _Locale_name_hint* _Locale_get_messages_hint(struct _Locale_messages* messages) -{ return 0; } - -/* ctype */ -const _Locale_mask_t* _Locale_ctype_table(struct _Locale_ctype* lctype) { - _STLP_MARK_PARAMETER_AS_UNUSED(lctype) - return ctable; -} - -int _Locale_toupper(struct _Locale_ctype*lctype, int c) -{ return toupper(c); } - -int _Locale_tolower(struct _Locale_ctype*lctype, int c) -{ return tolower(c); } - -#ifndef _STLP_NO_WCHAR_T -_Locale_mask_t _WLocale_ctype(struct _Locale_ctype *lctype, wint_t wc, _Locale_mask_t mask) { - _Locale_mask_t ret = 0; - if ((mask & _Locale_ALPHA) != 0 && iswalpha(wc)) - ret |= _Locale_ALPHA; - - if ((mask & _Locale_CNTRL) != 0 && iswcntrl(wc)) - ret |= _Locale_CNTRL; - - if ((mask & _Locale_DIGIT) != 0 && iswdigit(wc)) - ret |= _Locale_DIGIT; - - if ((mask & _Locale_PRINT) != 0 && iswprint(wc)) - ret |= _Locale_PRINT; - - if ((mask & _Locale_PUNCT) != 0 && iswpunct(wc)) - ret |= _Locale_PUNCT; - - if ((mask & _Locale_SPACE) != 0 && iswspace(wc)) - ret |= _Locale_SPACE; - - if ((mask & _Locale_XDIGIT) != 0 && iswxdigit(wc)) - ret |= _Locale_XDIGIT; - - if ((mask & _Locale_UPPER) != 0 && iswupper(wc)) - ret |= _Locale_UPPER; - - if ((mask & _Locale_LOWER) != 0 && iswlower(wc)) - ret |= _Locale_LOWER; - - return ret; -} - -wint_t _WLocale_tolower(struct _Locale_ctype *lctype, wint_t wc) -{ return towlower(wc); } - -wint_t _WLocale_toupper(struct _Locale_ctype *lctype, wint_t wc) -{ return towupper(wc); } - -int _WLocale_mb_cur_max (struct _Locale_codecvt *lcodecvt) { return 1; } -int _WLocale_mb_cur_min (struct _Locale_codecvt *lcodecvt) { return 1; } -int _WLocale_is_stateless (struct _Locale_codecvt *lcodecvt) { return 1; } - -size_t _WLocale_mbtowc(struct _Locale_codecvt *lcodecvt, - wchar_t *to, - const char *from, size_t n, - mbstate_t *st) -{ *to = *from; return 1; } - -size_t _WLocale_wctomb(struct _Locale_codecvt *lcodecvt, - char *to, size_t n, - const wchar_t c, - mbstate_t *st) -{ *to = (char)c; return 1; } - -size_t _WLocale_unshift(struct _Locale_codecvt *lcodecvt, - mbstate_t *st, - char *buf, size_t n, char ** next) -{ *next = buf; return 0; } -#endif - -/* Collate */ - int _Locale_strcmp(struct _Locale_collate* lcol, - const char* s1, size_t n1, const char* s2, size_t n2) { - int ret = 0; - char buf1[64], buf2[64]; - while (n1 > 0 || n2 > 0) { - size_t bufsize1 = n1 < 63 ? n1 : 63; - size_t bufsize2 = n2 < 63 ? n2 : 63; - _STLP_STRNCPY(buf1, 64, s1, bufsize1); buf1[bufsize1] = 0; - _STLP_STRNCPY(buf2, 64, s2, bufsize2); buf2[bufsize2] = 0; - - ret = strcmp(buf1, buf2); - if (ret != 0) return ret < 0 ? -1 : 1; - s1 += bufsize1; n1 -= bufsize1; - s2 += bufsize2; n2 -= bufsize2; - } - return ret == 0 ? 0 : (ret < 0 ? -1 : 1); -} - -#ifndef _STLP_NO_WCHAR_T - -int _WLocale_strcmp(struct _Locale_collate* lcol, - const wchar_t* s1, size_t n1, const wchar_t* s2, size_t n2) { - int ret = 0; - wchar_t buf1[64], buf2[64]; - while (n1 > 0 || n2 > 0) { - size_t bufsize1 = n1 < 63 ? n1 : 63; - size_t bufsize2 = n2 < 63 ? n2 : 63; - _STLP_WCSNCPY(buf1, 64, s1, bufsize1); buf1[bufsize1] = 0; - _STLP_WCSNCPY(buf2, 64, s2, bufsize2); buf2[bufsize2] = 0; - - ret = wcscmp(buf1, buf2); - if (ret != 0) return ret < 0 ? -1 : 1; - s1 += bufsize1; n1 -= bufsize1; - s2 += bufsize2; n2 -= bufsize2; - } - return ret == 0 ? 0 : (ret < 0 ? -1 : 1); -} - -#endif - -size_t _Locale_strxfrm(struct _Locale_collate* lcol, - char* dest, size_t dest_n, - const char* src, size_t src_n) { - if (dest != 0) { - _STLP_STRNCPY(dest, dest_n, src, dest_n - 1); dest[dest_n - 1] = 0; - } - return src_n; -} - -#ifndef _STLP_NO_WCHAR_T - -size_t _WLocale_strxfrm(struct _Locale_collate* lcol, - wchar_t* dest, size_t dest_n, - const wchar_t* src, size_t src_n) { - if (dest != 0) { - _STLP_WCSNCPY(dest, dest_n, src, dest_n - 1); dest[dest_n - 1] = 0; - } - return src_n; -} - -#endif - -/* Numeric */ - -char _Locale_decimal_point(struct _Locale_numeric* lnum) -{ return '.'; } -char _Locale_thousands_sep(struct _Locale_numeric* lnum) -{ return ','; } -const char* _Locale_grouping(struct _Locale_numeric * lnum) -{ return _empty_str; } -const char * _Locale_true(struct _Locale_numeric * lnum) -{ return "true"; } -const char * _Locale_false(struct _Locale_numeric * lnum) -{ return "false"; } - -#ifndef _STLP_NO_WCHAR_T -wchar_t _WLocale_decimal_point(struct _Locale_numeric* lnum) -{ return L'.'; } -wchar_t _WLocale_thousands_sep(struct _Locale_numeric* lnum) -{ return L','; } -#if defined(WCHAR_MAX) && WCHAR_MAX == 255 -const wchar_t * _WLocale_true(struct _Locale_numeric* lnum, wchar_t* buf, size_t bufSize) -{ return "true"; } -const wchar_t * _WLocale_false(struct _Locale_numeric* lnum, wchar_t* buf, size_t bufSize) -{ return "false"; } -#else -const wchar_t * _WLocale_true(struct _Locale_numeric* lnum, wchar_t* buf, size_t bufSize) -{ return L"true"; } -const wchar_t * _WLocale_false(struct _Locale_numeric* lnum, wchar_t* buf, size_t bufSize) -{ return L"false"; } -#endif -#endif - -/* Monetary */ - -const char* _Locale_int_curr_symbol(struct _Locale_monetary * lmon) -{ return _empty_str; } -const char* _Locale_currency_symbol(struct _Locale_monetary * lmon) -{ return _empty_str; } -char _Locale_mon_decimal_point(struct _Locale_monetary * lmon) -{ return '.'; } -char _Locale_mon_thousands_sep(struct _Locale_monetary * lmon) -{ return ','; } -const char* _Locale_mon_grouping(struct _Locale_monetary * lmon) -{ return _empty_str; } -const char* _Locale_positive_sign(struct _Locale_monetary * lmon) -{ return _empty_str; } -const char* _Locale_negative_sign(struct _Locale_monetary * lmon) -{ return _empty_str; } -char _Locale_int_frac_digits(struct _Locale_monetary * lmon) -{ return 0; } -char _Locale_frac_digits(struct _Locale_monetary * lmon) -{ return 0; } -int _Locale_p_cs_precedes(struct _Locale_monetary * lmon) -{ return CHAR_MAX; } -int _Locale_p_sep_by_space(struct _Locale_monetary * lmon) -{ return CHAR_MAX; } -int _Locale_p_sign_posn(struct _Locale_monetary * lmon) -{ return CHAR_MAX; } -int _Locale_n_cs_precedes(struct _Locale_monetary * lmon) -{ return CHAR_MAX; } -int _Locale_n_sep_by_space(struct _Locale_monetary * lmon) -{ return CHAR_MAX; } -int _Locale_n_sign_posn(struct _Locale_monetary * lmon) -{ return CHAR_MAX; } - -#ifndef _STLP_NO_WCHAR_T -const wchar_t* _WLocale_int_curr_symbol(struct _Locale_monetary * lmon, - wchar_t* buf, size_t bufSize) -{ return _empty_wstr; } -const wchar_t* _WLocale_currency_symbol(struct _Locale_monetary * lmon, - wchar_t* buf, size_t bufSize) -{ return _empty_wstr; } -wchar_t _WLocale_mon_decimal_point(struct _Locale_monetary * lmon) -{ return L'.'; } -wchar_t _WLocale_mon_thousands_sep(struct _Locale_monetary * lmon) -{ return L','; } -const wchar_t* _WLocale_positive_sign(struct _Locale_monetary * lmon, - wchar_t* buf, size_t bufSize) -{ return _empty_wstr; } -const wchar_t* _WLocale_negative_sign(struct _Locale_monetary * lmon, - wchar_t* buf, size_t bufSize) -{ return _empty_wstr; } -#endif - -/* Time */ -static const char* full_monthname[] = -{ "January", "February", "March", "April", "May", "June", - "July", "August", "September", "October", "November", "December" }; -const char * _Locale_full_monthname(struct _Locale_time * ltime, int n) -{ return full_monthname[n]; } - -static const char* abbrev_monthname[] = -{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; -const char * _Locale_abbrev_monthname(struct _Locale_time * ltime, int n) -{ return abbrev_monthname[n]; } - -static const char* full_dayname[] = -{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; -const char * _Locale_full_dayofweek(struct _Locale_time * ltime, int n) -{ return full_dayname[n]; } - -static const char* abbrev_dayname[] = -{ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; -const char * _Locale_abbrev_dayofweek(struct _Locale_time * ltime, int n) -{ return abbrev_dayname[n]; } - -const char* _Locale_d_t_fmt(struct _Locale_time* ltime) -{ return "%m/%d/%y"; } -const char* _Locale_d_fmt(struct _Locale_time* ltime) -{ return "%m/%d/%y"; } -const char* _Locale_t_fmt(struct _Locale_time* ltime) -{ return "%H:%M:%S"; } -const char* _Locale_long_d_t_fmt(struct _Locale_time* ltime) -{ return _empty_str; } -const char* _Locale_long_d_fmt(struct _Locale_time* ltime) -{ return _empty_str; } -const char* _Locale_am_str(struct _Locale_time* ltime) -{ return "AM"; } -const char* _Locale_pm_str(struct _Locale_time* ltime) -{ return "PM"; } - -#ifndef _STLP_NO_WCHAR_T -#if defined(WCHAR_MAX) && WCHAR_MAX == 255 -static const wchar_t* full_wmonthname[] = -{ "January", "February", "March", "April", "May", "June", - "July", "August", "September", "October", "November", "December" }; -const wchar_t * _WLocale_full_monthname(struct _Locale_time * ltime, int n, - wchar_t* buf, size_t bufSize) -{ return full_wmonthname[n]; } - -static const wchar_t* abbrev_wmonthname[] = -{ "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; -const wchar_t * _WLocale_abbrev_monthname(struct _Locale_time * ltime, int n, - wchar_t* buf, size_t bufSize) -{ return abbrev_wmonthname[n]; } - -static const wchar_t* full_wdayname[] = -{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; -const wchar_t * _WLocale_full_dayofweek(struct _Locale_time * ltime, int n, - wchar_t* buf, size_t bufSize) -{ return full_wdayname[n]; } - -static const wchar_t* abbrev_wdayname[] = -{ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; -const wchar_t * _WLocale_abbrev_dayofweek(struct _Locale_time * ltime, int n, - wchar_t* buf, size_t bufSize) -{ return abbrev_wdayname[n]; } - -const wchar_t* _WLocale_am_str(struct _Locale_time* ltime, - wchar_t* buf, size_t bufSize) -{ return "AM"; } -const wchar_t* _WLocale_pm_str(struct _Locale_time* ltime, - wchar_t* buf, size_t bufSize) -{ return "PM"; } -#else /* WCHAR_MAX != 255 */ -static const wchar_t* full_wmonthname[] = -{ L"January", L"February", L"March", L"April", L"May", L"June", - L"July", L"August", L"September", L"October", L"November", L"December" }; -const wchar_t * _WLocale_full_monthname(struct _Locale_time * ltime, int n, - wchar_t* buf, size_t bufSize) -{ return full_wmonthname[n]; } - -static const wchar_t* abbrev_wmonthname[] = -{ L"Jan", L"Feb", L"Mar", L"Apr", L"May", L"Jun", - L"Jul", L"Aug", L"Sep", L"Oct", L"Nov", L"Dec" }; -const wchar_t * _WLocale_abbrev_monthname(struct _Locale_time * ltime, int n, - wchar_t* buf, size_t bufSize) -{ return abbrev_wmonthname[n]; } - -static const wchar_t* full_wdayname[] = -{ L"Sunday", L"Monday", L"Tuesday", L"Wednesday", L"Thursday", L"Friday", L"Saturday" }; -const wchar_t * _WLocale_full_dayofweek(struct _Locale_time * ltime, int n, - wchar_t* buf, size_t bufSize) -{ return full_wdayname[n]; } - -static const wchar_t* abbrev_wdayname[] = -{ L"Sun", L"Mon", L"Tue", L"Wed", L"Thu", L"Fri", L"Sat" }; -const wchar_t * _WLocale_abbrev_dayofweek(struct _Locale_time * ltime, int n, - wchar_t* buf, size_t bufSize) -{ return abbrev_wdayname[n]; } - -const wchar_t* _WLocale_am_str(struct _Locale_time* ltime, - wchar_t* buf, size_t bufSize) -{ return L"AM"; } -const wchar_t* _WLocale_pm_str(struct _Locale_time* ltime, - wchar_t* buf, size_t bufSize) -{ return L"PM"; } -#endif /* WCHAR_MAX != 255 */ -#endif - -/* Messages */ - -nl_catd_type _Locale_catopen(struct _Locale_messages* lmes, const char* name) -{ return -1; } -void _Locale_catclose(struct _Locale_messages* lmes, nl_catd_type cat) {} -const char* _Locale_catgets(struct _Locale_messages* lmes, nl_catd_type cat, - int setid, int msgid, const char *dfault) -{ return dfault; } diff --git a/build/stlport/src/c_locale_glibc/c_locale_glibc2.c b/build/stlport/src/c_locale_glibc/c_locale_glibc2.c deleted file mode 100644 index 0cf8279d5b78..000000000000 --- a/build/stlport/src/c_locale_glibc/c_locale_glibc2.c +++ /dev/null @@ -1,705 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include - -static const char *_empty_str = ""; -static const char *_C_name = "C"; - -static wchar_t* _ToWChar(const char* buf, wchar_t *wbuf, size_t wbufSize) { - wchar_t *wcur = wbuf; - wchar_t *wend = wbuf + wbufSize - 1; - for (; wcur != wend && *buf != 0; ++buf, ++wcur) - *wcur = *buf; - *wcur = 0; - return wbuf; -} - -#if 0 -struct _Locale_ctype -{ - locale_t __cloc; -}; - -struct _Locale_numeric -{ - locale_t __cloc; -}; - -struct _Locale_time -{ - locale_t __cloc; -}; - -struct _Locale_collate -{ - locale_t __cloc; -}; - -struct _Locale_monetary -{ - locale_t __cloc; -}; - -struct _Locale_messages -{ - locale_t __cloc; -}; -#endif - -void _Locale_init() -{} - -void _Locale_final() -{} - -struct _Locale_ctype *_Locale_ctype_create(const char *nm, struct _Locale_name_hint* hint, - int *__err_code) { - *__err_code = _STLP_LOC_UNKNOWN_NAME; - return (struct _Locale_ctype*)newlocale(LC_CTYPE_MASK, nm, NULL); -} - -struct _Locale_codecvt *_Locale_codecvt_create(const char *nm, struct _Locale_name_hint* hint, - int *__err_code) { - // Glibc do not support multibyte manipulation for the moment, it simply implements "C". - if (nm[0] == 'C' && nm[1] == 0) - { return (struct _Locale_codecvt*)0x01; } - *__err_code = _STLP_LOC_NO_PLATFORM_SUPPORT; return 0; -} - -struct _Locale_numeric *_Locale_numeric_create(const char *nm, struct _Locale_name_hint* hint, - int *__err_code) { - *__err_code = _STLP_LOC_UNKNOWN_NAME; - return (struct _Locale_numeric*)newlocale(LC_NUMERIC_MASK, nm, NULL); -} - -struct _Locale_time *_Locale_time_create(const char *nm, struct _Locale_name_hint* hint, - int *__err_code) { - *__err_code = _STLP_LOC_UNKNOWN_NAME; - return (struct _Locale_time*)newlocale(LC_TIME_MASK, nm, NULL); -} - -struct _Locale_collate *_Locale_collate_create(const char *nm, struct _Locale_name_hint* hint, - int *__err_code) { - *__err_code = _STLP_LOC_UNKNOWN_NAME; - return (struct _Locale_collate*)newlocale(LC_COLLATE_MASK, nm, NULL); -} - -struct _Locale_monetary *_Locale_monetary_create(const char *nm, struct _Locale_name_hint* hint, - int *__err_code) { - *__err_code = _STLP_LOC_UNKNOWN_NAME; - return (struct _Locale_monetary*)newlocale(LC_MONETARY_MASK, nm, NULL); -} - -struct _Locale_messages *_Locale_messages_create(const char *nm, struct _Locale_name_hint* hint, - int *__err_code) { - *__err_code = _STLP_LOC_UNKNOWN_NAME; - return (struct _Locale_messages*)newlocale(LC_MESSAGES_MASK, nm, NULL); -} - -/* - try to see locale category LC should be used from environment; - according POSIX, the order is - 1. LC_ALL - 2. category (LC_CTYPE, LC_NUMERIC, ... ) - 3. LANG - If set nothing, return "C" (this really implementation-specific). -*/ -static const char *_Locale_aux_default( const char *LC, char *nm ) -{ - char *name = getenv( "LC_ALL" ); - - if ( name != NULL && *name != 0 ) { - return name; - } - name = getenv( LC ); - if ( name != NULL && *name != 0 ) { - return name; - } - name = getenv( "LANG" ); - if ( name != NULL && *name != 0 ) { - return name; - } - - return _C_name; -} - -const char *_Locale_ctype_default( char *nm ) -{ - return _Locale_aux_default( "LC_CTYPE", nm ); -} - -const char *_Locale_numeric_default( char *nm ) -{ - return _Locale_aux_default( "LC_NUMERIC", nm ); -} - -const char *_Locale_time_default( char *nm ) -{ - return _Locale_aux_default( "LC_TIME", nm ); -} - -const char *_Locale_collate_default( char *nm ) -{ - return _Locale_aux_default( "LC_COLLATE", nm ); -} - -const char *_Locale_monetary_default( char *nm ) -{ - return _Locale_aux_default( "LC_MONETARY", nm ); -} - -const char *_Locale_messages_default( char *nm ) -{ - return _Locale_aux_default( "LC_MESSAGES", nm ); -} - -char const*_Locale_ctype_name( const struct _Locale_ctype *__loc, char *buf ) -{ - return ((locale_t)__loc)->__names[LC_CTYPE]; -} - -char const*_Locale_codecvt_name( const struct _Locale_codecvt *__loc, char *buf ) -{ - return _C_name; -} - -char const*_Locale_numeric_name( const struct _Locale_numeric *__loc, char *buf ) -{ - return ((locale_t)__loc)->__names[LC_NUMERIC]; -} - -char const*_Locale_time_name( const struct _Locale_time *__loc, char *buf ) -{ - return ((locale_t)__loc)->__names[LC_TIME]; -} - -char const*_Locale_collate_name( const struct _Locale_collate *__loc, char *buf ) -{ - return ((locale_t)__loc)->__names[LC_COLLATE]; -} - -char const*_Locale_monetary_name( const struct _Locale_monetary *__loc, char *buf ) -{ - return ((locale_t)__loc)->__names[LC_MONETARY]; -} - -char const*_Locale_messages_name( const struct _Locale_messages *__loc, char *buf ) -{ - return ((locale_t)__loc)->__names[LC_MESSAGES]; -} - -void _Locale_ctype_destroy( struct _Locale_ctype *__loc ) -{ freelocale((locale_t)__loc); } - -void _Locale_codecvt_destroy( struct _Locale_codecvt *__loc ) -{} - -void _Locale_numeric_destroy( struct _Locale_numeric *__loc ) -{ freelocale((locale_t)__loc); } - -void _Locale_time_destroy( struct _Locale_time *__loc ) -{ freelocale((locale_t)__loc); } - -void _Locale_collate_destroy( struct _Locale_collate *__loc ) -{ freelocale((locale_t)__loc); } - -void _Locale_monetary_destroy( struct _Locale_monetary *__loc ) -{ freelocale((locale_t)__loc); } - -void _Locale_messages_destroy( struct _Locale_messages* __loc ) -{ freelocale((locale_t)__loc); } - -/* - * locale loc expected either locale name indeed (platform-specific) - * or string like "LC_CTYPE=LocaleNameForCType;LC_NUMERIC=LocaleNameForNum;" - * - */ - -static char const*__Extract_locale_name( const char *loc, const char *category, char *buf ) -{ - char *expr; - size_t len_name; - - if( loc[0]=='L' && loc[1]=='C' && loc[2]=='_') { - expr = strstr( (char*)loc, category ); - if ( expr == NULL ) - return NULL; /* Category not found. */ - ++expr; - len_name = strcspn( expr, ";" ); - len_name = len_name >= _Locale_MAX_SIMPLE_NAME ? _Locale_MAX_SIMPLE_NAME - 1 : len_name; - strncpy( buf, expr, len_name ); - buf[len_name] = 0; - return buf; - } - return loc; -} - -char const*_Locale_extract_ctype_name(const char *loc, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return __Extract_locale_name( loc, "LC_CTYPE=", buf ); } - -char const*_Locale_extract_numeric_name(const char *loc, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return __Extract_locale_name( loc, "LC_NUMERIC=", buf ); } - -char const*_Locale_extract_time_name(const char *loc, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return __Extract_locale_name( loc, "LC_TIME=", buf ); } - -char const*_Locale_extract_collate_name(const char *loc, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return __Extract_locale_name( loc, "LC_COLLATE=", buf ); } - -char const*_Locale_extract_monetary_name(const char *loc, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return __Extract_locale_name( loc, "LC_MONETARY=", buf ); } - -char const*_Locale_extract_messages_name(const char *loc, char *buf, - struct _Locale_name_hint* hint, int *__err_code) -{ return __Extract_locale_name( loc, "LC_MESSAGES=", buf ); } - -struct _Locale_name_hint* _Locale_get_ctype_hint(struct _Locale_ctype* ctype) -{ return 0; } -struct _Locale_name_hint* _Locale_get_numeric_hint(struct _Locale_numeric* numeric) -{ return 0; } -struct _Locale_name_hint* _Locale_get_time_hint(struct _Locale_time* time) -{ return 0; } -struct _Locale_name_hint* _Locale_get_collate_hint(struct _Locale_collate* collate) -{ return 0; } -struct _Locale_name_hint* _Locale_get_monetary_hint(struct _Locale_monetary* monetary) -{ return 0; } -struct _Locale_name_hint* _Locale_get_messages_hint(struct _Locale_messages* messages) -{ return 0; } - -/* ctype */ - -const _Locale_mask_t *_Locale_ctype_table( struct _Locale_ctype *__loc ) -{ - /* return table with masks (upper, lower, alpha, etc.) */ - _STLP_STATIC_ASSERT( sizeof(_Locale_mask_t) == sizeof(((locale_t)__loc)->__ctype_b[0]) ) - return ((locale_t)__loc)->__ctype_b; -} - -int _Locale_toupper( struct _Locale_ctype *__loc, int c ) -{ return ((locale_t)__loc)->__ctype_toupper[c]; } - -int _Locale_tolower( struct _Locale_ctype *__loc, int c ) -{ return ((locale_t)__loc)->__ctype_tolower[c]; } - -#if !defined (_STLP_NO_WCHAR_T) -_Locale_mask_t _WLocale_ctype( struct _Locale_ctype *__loc, wint_t wc, _Locale_mask_t __mask ) -{ - _Locale_mask_t ret = 0; - if ((__mask & _Locale_ALPHA) != 0 && iswalpha_l(wc, (locale_t)__loc)) - ret |= _Locale_ALPHA; - - if ((__mask & _Locale_CNTRL) != 0 && iswcntrl_l(wc, (locale_t)__loc)) - ret |= _Locale_CNTRL; - - if ((__mask & _Locale_DIGIT) != 0 && iswdigit_l(wc, (locale_t)__loc)) - ret |= _Locale_DIGIT; - - if ((__mask & _Locale_PRINT) != 0 && iswprint_l(wc, (locale_t)__loc)) - ret |= _Locale_PRINT; - - if ((__mask & _Locale_PUNCT) != 0 && iswpunct_l(wc, (locale_t)__loc)) - ret |= _Locale_PUNCT; - - if ((__mask & _Locale_SPACE) != 0 && iswspace_l(wc, (locale_t)__loc)) - ret |= _Locale_SPACE; - - if ((__mask & _Locale_XDIGIT) != 0 && iswxdigit_l(wc, (locale_t)__loc)) - ret |= _Locale_XDIGIT; - - if ((__mask & _Locale_UPPER) != 0 && iswupper_l(wc, (locale_t)__loc)) - ret |= _Locale_UPPER; - - if ((__mask & _Locale_LOWER) != 0 && iswlower_l(wc, (locale_t)__loc)) - ret |= _Locale_LOWER; - - return ret; -} - -wint_t _WLocale_tolower( struct _Locale_ctype *__loc, wint_t c ) -{ - return towlower_l( c, ((locale_t)__loc) ); -} - -wint_t _WLocale_toupper( struct _Locale_ctype *__loc, wint_t c ) -{ - return towupper_l( c, ((locale_t)__loc) ); -} -#endif - -int _WLocale_mb_cur_max( struct _Locale_codecvt * lcodecvt) { return 1; } -int _WLocale_mb_cur_min( struct _Locale_codecvt * lcodecvt) { return 1; } -int _WLocale_is_stateless( struct _Locale_codecvt * lcodecvt) { return 1; } - -#if !defined (_STLP_NO_WCHAR_T) -size_t _WLocale_mbtowc(struct _Locale_codecvt *lcodecvt, - wchar_t *to, - const char *from, size_t n, - mbstate_t *st) -{ *to = *from; return 1; } - -size_t _WLocale_wctomb(struct _Locale_codecvt *lcodecvt, - char *to, size_t n, - const wchar_t c, - mbstate_t *st) -{ *to = (char)c; return 1; } -#endif - -size_t _WLocale_unshift(struct _Locale_codecvt *lcodecvt, - mbstate_t *st, - char *buf, size_t n, char ** next) -{ *next = buf; return 0; } - -/* Collate */ -int _Locale_strcmp(struct _Locale_collate * __loc, - const char *s1, size_t n1, - const char *s2, size_t n2) { - int ret = 0; - char buf1[64], buf2[64]; - while (n1 > 0 || n2 > 0) { - size_t bufsize1 = n1 < 63 ? n1 : 63; - size_t bufsize2 = n2 < 63 ? n2 : 63; - strncpy(buf1, s1, bufsize1); buf1[bufsize1] = 0; - strncpy(buf2, s2, bufsize2); buf2[bufsize2] = 0; - - ret = strcoll_l(buf1, buf2, (locale_t)__loc); - if (ret != 0) return ret; - s1 += bufsize1; n1 -= bufsize1; - s2 += bufsize2; n2 -= bufsize2; - } - return ret; -} - -#if !defined (_STLP_NO_WCHAR_T) -int _WLocale_strcmp(struct _Locale_collate *__loc, - const wchar_t *s1, size_t n1, - const wchar_t *s2, size_t n2) { - int ret = 0; - wchar_t buf1[64], buf2[64]; - while (n1 > 0 || n2 > 0) { - size_t bufsize1 = n1 < 63 ? n1 : 63; - size_t bufsize2 = n2 < 63 ? n2 : 63; - wcsncpy(buf1, s1, bufsize1); buf1[bufsize1] = 0; - wcsncpy(buf2, s2, bufsize2); buf2[bufsize2] = 0; - - ret = wcscoll_l(buf1, buf2, (locale_t)__loc); - if (ret != 0) return ret; - s1 += bufsize1; n1 -= bufsize1; - s2 += bufsize2; n2 -= bufsize2; - } - return ret; -} - -#endif - -size_t _Locale_strxfrm(struct _Locale_collate *__loc, - char *dest, size_t dest_n, - const char *src, size_t src_n ) -{ - const char *real_src; - char *buf = NULL; - size_t result; - - if (src_n == 0) - { - if (dest != NULL) dest[0] = 0; - return 0; - } - if (src[src_n] != 0) { - buf = malloc(src_n + 1); - strncpy(buf, src, src_n); - buf[src_n] = 0; - real_src = buf; - } - else - real_src = src; - result = strxfrm_l(dest, real_src, dest_n, (locale_t)__loc); - if (buf != NULL) free(buf); - return result; -} - -# ifndef _STLP_NO_WCHAR_T - -size_t _WLocale_strxfrm( struct _Locale_collate *__loc, - wchar_t *dest, size_t dest_n, - const wchar_t *src, size_t src_n ) -{ - const wchar_t *real_src; - wchar_t *buf = NULL; - size_t result; - - if (src_n == 0) - { - if (dest != NULL) dest[0] = 0; - return 0; - } - if (src[src_n] != 0) { - buf = malloc((src_n + 1) * sizeof(wchar_t)); - wcsncpy(buf, src, src_n); - buf[src_n] = 0; - real_src = buf; - } - else - real_src = src; - result = wcsxfrm_l(dest, real_src, dest_n, (locale_t)__loc); - if (buf != NULL) free(buf); - return result; -} - -# endif - -/* Numeric */ - -char _Locale_decimal_point(struct _Locale_numeric *__loc) -{ - return *(nl_langinfo_l(RADIXCHAR, (locale_t)__loc)); -} - -char _Locale_thousands_sep(struct _Locale_numeric *__loc) -{ - return *(nl_langinfo_l(THOUSEP, (locale_t)__loc)); -} - -const char* _Locale_grouping(struct _Locale_numeric *__loc) -{ - return (_Locale_thousands_sep(__loc) != 0 ) ? (nl_langinfo_l(GROUPING, (locale_t)__loc)) : _empty_str; -} - -const char *_Locale_true(struct _Locale_numeric *__loc) -{ - return nl_langinfo_l(YESSTR, (locale_t)__loc); -} - -const char *_Locale_false(struct _Locale_numeric *__loc) -{ - return nl_langinfo_l(NOSTR, (locale_t)__loc); -} - -#ifndef _STLP_NO_WCHAR_T -wchar_t _WLocale_decimal_point(struct _Locale_numeric *__loc) -{ return (wchar_t)_Locale_decimal_point(__loc); } -wchar_t _WLocale_thousands_sep(struct _Locale_numeric *__loc) -{ return (wchar_t)_Locale_thousands_sep(__loc); } -const wchar_t *_WLocale_true(struct _Locale_numeric *__loc, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_true(__loc), buf, bufSize); } -const wchar_t *_WLocale_false(struct _Locale_numeric *__loc, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_false(__loc), buf, bufSize); } -#endif - -/* Monetary */ - -const char *_Locale_int_curr_symbol(struct _Locale_monetary *__loc) -{ - return nl_langinfo_l(INT_CURR_SYMBOL, (locale_t)__loc); -} - -const char *_Locale_currency_symbol(struct _Locale_monetary *__loc) -{ - return nl_langinfo_l(CURRENCY_SYMBOL, (locale_t)__loc); -} - -char _Locale_mon_decimal_point(struct _Locale_monetary * __loc) -{ - return *(nl_langinfo_l(MON_DECIMAL_POINT,(locale_t)__loc)); -} - -char _Locale_mon_thousands_sep(struct _Locale_monetary *__loc) -{ - return *(nl_langinfo_l(MON_THOUSANDS_SEP, (locale_t)__loc)); -} - -#ifndef _STLP_NO_WCHAR_T -const wchar_t *_WLocale_int_curr_symbol(struct _Locale_monetary *__loc, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_int_curr_symbol(__loc), buf, bufSize); } -const wchar_t *_WLocale_currency_symbol(struct _Locale_monetary *__loc, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_currency_symbol(__loc), buf, bufSize); } -wchar_t _WLocale_mon_decimal_point(struct _Locale_monetary * __loc) -{ return (wchar_t)_Locale_mon_decimal_point(__loc); } -wchar_t _WLocale_mon_thousands_sep(struct _Locale_monetary * __loc) -{ return (wchar_t)_Locale_mon_thousands_sep(__loc); } -const wchar_t *_WLocale_positive_sign(struct _Locale_monetary *__loc, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_positive_sign(__loc), buf, bufSize); } -const wchar_t *_WLocale_negative_sign(struct _Locale_monetary *__loc, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_negative_sign(__loc), buf, bufSize); } -#endif - -const char *_Locale_mon_grouping(struct _Locale_monetary *__loc) -{ - return (_Locale_mon_thousands_sep( __loc ) != 0 ) ? nl_langinfo_l(MON_GROUPING, (locale_t)__loc) : _empty_str; -} - -const char *_Locale_positive_sign(struct _Locale_monetary *__loc) -{ - return nl_langinfo_l(POSITIVE_SIGN, (locale_t)__loc); -} - -const char *_Locale_negative_sign(struct _Locale_monetary *__loc) -{ - return nl_langinfo_l(NEGATIVE_SIGN, (locale_t)__loc); -} - -char _Locale_int_frac_digits(struct _Locale_monetary *__loc) -{ - /* We are forced to manually handled the "C" locale for consistency with - * the default implementation in STLport. */ - const char* lname = ((locale_t)__loc)->__names[LC_MONETARY]; - if (lname[0] == 'C' && lname[1] == 0) - return 0; - return *(nl_langinfo_l(INT_FRAC_DIGITS, (locale_t)__loc)); -} - -char _Locale_frac_digits(struct _Locale_monetary *__loc) -{ - /* We are forced to manually handled the "C" locale for consistency with - * the default implementation in STLport. */ - const char* lname = ((locale_t)__loc)->__names[LC_MONETARY]; - if (lname[0] == 'C' && lname[1] == 0) - return 0; - return *(nl_langinfo_l(FRAC_DIGITS, (locale_t)__loc)); -} - -/* 1 if currency_symbol precedes a positive value, 0 if succeeds */ -int _Locale_p_cs_precedes(struct _Locale_monetary *__loc) -{ - return *(nl_langinfo_l(P_CS_PRECEDES, (locale_t)__loc)); -} - -/* 1 if a space separates currency_symbol from a positive value. */ -int _Locale_p_sep_by_space(struct _Locale_monetary *__loc) -{ - return *(nl_langinfo_l(P_SEP_BY_SPACE, (locale_t)__loc)); -} - -/* - * 0 Parentheses surround the quantity and currency_symbol - * 1 The sign string precedes the quantity and currency_symbol - * 2 The sign string succeeds the quantity and currency_symbol. - * 3 The sign string immediately precedes the currency_symbol. - * 4 The sign string immediately succeeds the currency_symbol. - */ -int _Locale_p_sign_posn(struct _Locale_monetary *__loc) -{ - return *(nl_langinfo_l(P_SIGN_POSN, (locale_t)__loc)); -} - -/* 1 if currency_symbol precedes a negative value, 0 if succeeds */ -int _Locale_n_cs_precedes(struct _Locale_monetary *__loc) -{ - return *(nl_langinfo_l(N_CS_PRECEDES, (locale_t)__loc)); -} - -/* 1 if a space separates currency_symbol from a negative value. */ -int _Locale_n_sep_by_space(struct _Locale_monetary *__loc) -{ - return *(nl_langinfo_l(N_SEP_BY_SPACE, (locale_t)__loc)); -} - -/* - * 0 Parentheses surround the quantity and currency_symbol - * 1 The sign string precedes the quantity and currency_symbol - * 2 The sign string succeeds the quantity and currency_symbol. - * 3 The sign string immediately precedes the currency_symbol. - * 4 The sign string immediately succeeds the currency_symbol. - */ -int _Locale_n_sign_posn(struct _Locale_monetary *__loc) -{ - return *(nl_langinfo_l(N_SIGN_POSN, (locale_t)__loc)); -} - - -/* Time */ -const char *_Locale_full_monthname(struct _Locale_time *__loc, int _m ) -{ - return nl_langinfo_l(MON_1 + _m, (locale_t)__loc); -} - -const char *_Locale_abbrev_monthname(struct _Locale_time *__loc, int _m ) -{ - return nl_langinfo_l(ABMON_1 + _m, (locale_t)__loc); -} - -const char *_Locale_full_dayofweek(struct _Locale_time *__loc, int _d ) -{ - return nl_langinfo_l(DAY_1 + _d, (locale_t)__loc); -} - -const char *_Locale_abbrev_dayofweek(struct _Locale_time *__loc, int _d ) -{ - return nl_langinfo_l(ABDAY_1 + _d, (locale_t)__loc); -} - -const char *_Locale_d_t_fmt(struct _Locale_time *__loc) -{ - return nl_langinfo_l(D_T_FMT, (locale_t)__loc); -} - -const char *_Locale_d_fmt(struct _Locale_time *__loc ) -{ - return nl_langinfo_l(D_FMT, (locale_t)__loc); -} - -const char *_Locale_t_fmt(struct _Locale_time *__loc ) -{ - return nl_langinfo_l(T_FMT, (locale_t)__loc); -} - -const char *_Locale_long_d_t_fmt(struct _Locale_time *__loc ) -{ - return nl_langinfo_l(ERA_D_T_FMT, (locale_t)__loc); -} - -const char *_Locale_long_d_fmt(struct _Locale_time *__loc ) -{ - return nl_langinfo_l(ERA_D_FMT, (locale_t)__loc); -} - -const char *_Locale_am_str(struct _Locale_time *__loc ) -{ - return nl_langinfo_l(AM_STR, (locale_t)__loc); -} - -const char *_Locale_pm_str(struct _Locale_time* __loc ) -{ - return nl_langinfo_l(PM_STR, (locale_t)__loc); -} - -#ifndef _STLP_NO_WCHAR_T -const wchar_t *_WLocale_full_monthname(struct _Locale_time *__loc, int _m, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_full_monthname(__loc, _m), buf, bufSize); } -const wchar_t *_WLocale_abbrev_monthname(struct _Locale_time *__loc, int _m, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_abbrev_monthname(__loc, _m), buf, bufSize); } -const wchar_t *_WLocale_full_dayofweek(struct _Locale_time *__loc, int _d, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_full_dayofweek(__loc, _d), buf, bufSize); } -const wchar_t *_WLocale_abbrev_dayofweek(struct _Locale_time *__loc, int _d, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_abbrev_dayofweek(__loc, _d), buf, bufSize); } -const wchar_t *_WLocale_am_str(struct _Locale_time *__loc, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_am_str(__loc), buf, bufSize); } -const wchar_t *_WLocale_pm_str(struct _Locale_time* __loc, wchar_t *buf, size_t bufSize) -{ return _ToWChar(_Locale_pm_str(__loc), buf, bufSize); } -#endif - -/* Messages */ - -nl_catd_type _Locale_catopen(struct _Locale_messages *__loc, const char *__cat_name ) -{ - return catopen( __cat_name, NL_CAT_LOCALE ); -} - -void _Locale_catclose(struct _Locale_messages *__loc, nl_catd_type __cat ) -{ - catclose( __cat ); -} - -const char *_Locale_catgets(struct _Locale_messages *__loc, nl_catd_type __cat, - int __setid, int __msgid, const char *dfault) -{ - return catgets( __cat, __setid, __msgid, dfault ); -} diff --git a/build/stlport/src/c_locale_win32/c_locale_win32.c b/build/stlport/src/c_locale_win32/c_locale_win32.c deleted file mode 100644 index dab958d173f5..000000000000 --- a/build/stlport/src/c_locale_win32/c_locale_win32.c +++ /dev/null @@ -1,1786 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * Written 2000 - * Anton Lapach - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include -#if defined (_STLP_MSVC) || defined (__ICL) -# include -#endif -#include -#include -#include -#include - -#if defined (_STLP_USE_SAFE_STRING_FUNCTIONS) -# define _STLP_STRCPY(D, DS, S) strcpy_s(D, DS, S) -# define _STLP_STRNCPY(D, DS, S, C) strncpy_s(D, DS, S, C) -# define _STLP_STRCAT(D, DS, S) strcat_s(D, DS, S) -#else -# define _STLP_STRCPY(D, DS, S) strcpy(D, S) -# define _STLP_STRNCPY(D, DS, S, C) strncpy(D, S, C) -# define _STLP_STRCAT(D, DS, S) strcat(D, S) -#endif - -#if defined (__cplusplus) -extern "C" { -#endif - -/* Framework functions */ -/* - locale :: "lang[_country[.code_page]]" - | ".code_page" - | "" - | NULL - -*/ - -typedef struct _LOCALECONV { - const char* name; - const char* abbrev; -} LOCALECONV; - -#define MAX_LANG_LEN 64 /* max language name length */ -#define MAX_CTRY_LEN 64 /* max country name length */ -#define MAX_MODIFIER_LEN 0 /* max modifier name length - n/a */ -#define MAX_LC_LEN (MAX_LANG_LEN+MAX_CTRY_LEN+MAX_MODIFIER_LEN+3) - /* max entire locale string length */ -#define MAX_CP_LEN 5 /* max code page name length */ - -#if !defined (LANG_INVARIANT) -# define LANG_INVARIANT 0x7f -# define _STLP_LANG_INVARIANT_DEFINED -#endif - -#ifndef CP_UTF7 -# define CP_UTF7 65000 -#endif - -#ifndef CP_UTF8 -# define CP_UTF8 65001 -#endif - -#define INVARIANT_LCID MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT) - -static const char *_C_name = "C"; - -/* non-NLS language string table */ -static LOCALECONV __rg_language[] = { - {"american", "ENU"}, - {"american english", "ENU"}, - {"american-english", "ENU"}, - {"australian", "ENA"}, - {"belgian", "NLB"}, - {"canadian", "ENC"}, - {"chh", "ZHH"}, - {"chi", "ZHI"}, - {"chinese", "CHS"}, - {"chinese-hongkong", "ZHH"}, - {"chinese-simplified", "CHS"}, - {"chinese-singapore", "ZHI"}, - {"chinese-traditional", "CHT"}, - {"dutch-belgian", "NLB"}, - {"english-american", "ENU"}, - {"english-aus", "ENA"}, - {"english-belize", "ENL"}, - {"english-can", "ENC"}, - {"english-caribbean", "ENB"}, - {"english-ire", "ENI"}, - {"english-jamaica", "ENJ"}, - {"english-nz", "ENZ"}, - {"english-south africa", "ENS"}, - {"english-trinidad y tobago", "ENT"}, - {"english-uk", "ENG"}, - {"english-us", "ENU"}, - {"english-usa", "ENU"}, - {"french-belgian", "FRB"}, - {"french-canadian", "FRC"}, - {"french-luxembourg", "FRL"}, - {"french-swiss", "FRS"}, - {"german-austrian", "DEA"}, - {"german-lichtenstein", "DEC"}, - {"german-luxembourg", "DEL"}, - {"german-swiss", "DES"}, - {"irish-english", "ENI"}, - {"italian-swiss", "ITS"}, - {"norwegian", "NOR"}, - {"norwegian-bokmal", "NOR"}, - {"norwegian-nynorsk", "NON"}, - {"portuguese-brazilian", "PTB"}, - {"spanish-argentina", "ESS"}, - {"spanish-bolivia", "ESB"}, - {"spanish-chile", "ESL"}, - {"spanish-colombia", "ESO"}, - {"spanish-costa rica", "ESC"}, - {"spanish-dominican republic", "ESD"}, - {"spanish-ecuador", "ESF"}, - {"spanish-el salvador", "ESE"}, - {"spanish-guatemala", "ESG"}, - {"spanish-honduras", "ESH"}, - {"spanish-mexican", "ESM"}, - {"spanish-modern", "ESN"}, - {"spanish-nicaragua", "ESI"}, - {"spanish-panama", "ESA"}, - {"spanish-paraguay", "ESZ"}, - {"spanish-peru", "ESR"}, - {"spanish-puerto rico", "ESU"}, - {"spanish-uruguay", "ESY"}, - {"spanish-venezuela", "ESV"}, - {"swedish-finland", "SVF"}, - {"swiss", "DES"}, - {"uk", "ENG"}, - {"us", "ENU"}, - {"usa", "ENU"} -}; - -/* non-NLS country string table */ -static LOCALECONV __rg_country[] = { - {"america", "USA"}, - {"britain", "GBR"}, - {"china", "CHN"}, - {"czech", "CZE"}, - {"england", "GBR"}, - {"great britain", "GBR"}, - {"holland", "NLD"}, - {"hong-kong", "HKG"}, - {"new-zealand", "NZL"}, - {"nz", "NZL"}, - {"pr china", "CHN"}, - {"pr-china", "CHN"}, - {"puerto-rico", "PRI"}, - {"slovak", "SVK"}, - {"south africa", "ZAF"}, - {"south korea", "KOR"}, - {"south-africa", "ZAF"}, - {"south-korea", "KOR"}, - {"trinidad & tobago", "TTO"}, - {"uk", "GBR"}, - {"united-kingdom", "GBR"}, - {"united-states", "USA"}, - {"us", "USA"}, -}; - -typedef struct _Locale_name_hint { - LCID id; -} _Locale_lcid_t; - -typedef struct _Locale_ctype { - _Locale_lcid_t lc; - UINT cp; - unsigned short ctable[256]; -} _Locale_ctype_t; - -typedef struct _Locale_numeric { - _Locale_lcid_t lc; - char cp[MAX_CP_LEN + 1]; - char decimal_point[4]; - char thousands_sep[4]; - char *grouping; -} _Locale_numeric_t; - -typedef struct _Locale_time { - _Locale_lcid_t lc; - char cp[MAX_CP_LEN + 1]; - char *month[12]; - char *abbrev_month[12]; - char *dayofweek[7]; - char *abbrev_dayofweek[7]; - char *date_time_format; - char *long_date_time_format; - char *date_format; - char *long_date_format; - char *time_format; - char am[9]; - char pm[9]; -} _Locale_time_t; - -typedef struct _Locale_collate { - _Locale_lcid_t lc; - char cp[MAX_CP_LEN + 1]; -} _Locale_collate_t; - -typedef struct _Locale_monetary { - _Locale_lcid_t lc; - char cp[MAX_CP_LEN + 1]; - char decimal_point[4]; - char thousands_sep[4]; - char *grouping; - char int_curr_symbol[5]; /* 3 + 1 + 1 */ - char curr_symbol[6]; - char negative_sign[5]; - char positive_sign[5]; - int frac_digits; - int int_frac_digits; -} _Locale_monetary_t; - -/* Internal function */ -static void __FixGrouping(char *grouping); -static const char* __ConvertName(const char* lname, LOCALECONV* ConvTable, int TableSize); -static int __ParseLocaleString(const char* lname, char* lang, char* ctry, char* page); -static int __GetLCID(const char* lang, const char* ctry, LCID* lcid); -static int __GetLCIDFromName(const char* lname, LCID* lcid, char *cp, _Locale_lcid_t *hint); -static char const* __GetLocaleName(LCID lcid, const char* cp, char* buf); -static char const* __Extract_locale_name(const char* loc, const char* category, char* buf); -static char const* __TranslateToSystem(const char* lname, char* buf, _Locale_lcid_t* hint, int *__err_code); -static void __GetLocaleInfoUsingACP(LCID lcid, const char* cp, LCTYPE lctype, char* buf, int buf_size, wchar_t* wbuf, int wbuf_size); -static int __intGetACP(LCID lcid); -static int __intGetOCP(LCID lcid); -static int __GetDefaultCP(LCID lcid); -static char* __ConvertToCP(int from_cp, int to_cp, const char *from, size_t size, size_t *ret_buf_size); -static void my_ltoa(long __x, char* buf); - -void my_ltoa(long __x, char* buf) { - char rbuf[64]; - char* ptr = rbuf; - - if (__x == 0) - *ptr++ = '0'; - else { - for (; __x != 0; __x /= 10) - *ptr++ = (char)(__x % 10) + '0'; - } - while(ptr > rbuf) *buf++ = *--ptr; - /* psw */ - *buf = '\0'; -} - -#if defined (__cplusplus) -_STLP_BEGIN_NAMESPACE -extern "C" { -#endif - -_Locale_lcid_t* _Locale_get_ctype_hint(_Locale_ctype_t* ltype) -{ return (ltype != 0) ? <ype->lc : 0; } -_Locale_lcid_t* _Locale_get_numeric_hint(_Locale_numeric_t* lnumeric) -{ return (lnumeric != 0) ? &lnumeric->lc : 0; } -_Locale_lcid_t* _Locale_get_time_hint(_Locale_time_t* ltime) -{ return (ltime != 0) ? <ime->lc : 0; } -_Locale_lcid_t* _Locale_get_collate_hint(_Locale_collate_t* lcollate) -{ return (lcollate != 0) ? &lcollate->lc : 0; } -_Locale_lcid_t* _Locale_get_monetary_hint(_Locale_monetary_t* lmonetary) -{ return (lmonetary != 0) ? &lmonetary->lc : 0; } -_Locale_lcid_t* _Locale_get_messages_hint(struct _Locale_messages* lmessages) { - _STLP_MARK_PARAMETER_AS_UNUSED(lmessages) - return 0; -} - -#define MAP(x, y) if ((mask & x) != 0) ret |= (y) -unsigned short MapCtypeMask(unsigned short mask) { - unsigned short ret = 0; - MAP(C1_UPPER, _Locale_UPPER | _Locale_PRINT); - MAP(C1_LOWER, _Locale_LOWER | _Locale_PRINT); - MAP(C1_DIGIT, _Locale_DIGIT | _Locale_PRINT); - MAP(C1_SPACE, _Locale_SPACE | _Locale_PRINT); - MAP(C1_PUNCT, _Locale_PUNCT | _Locale_PRINT); - /* MAP(C1_BLANK, ?); */ - MAP(C1_XDIGIT, _Locale_XDIGIT | _Locale_PRINT); - MAP(C1_ALPHA, _Locale_ALPHA | _Locale_PRINT); - if ((mask & C1_CNTRL) != 0) { ret |= _Locale_CNTRL; ret &= ~_Locale_PRINT; } - return ret; -} - -static void MapCtypeMasks(unsigned short *cur, unsigned short *end) { - for (; cur != end; ++cur) { - *cur = MapCtypeMask(*cur); - } -} - -_Locale_ctype_t* _Locale_ctype_create(const char * name, _Locale_lcid_t* lc_hint, int *__err_code) { - char cp_name[MAX_CP_LEN + 1]; - int NativeCP; - unsigned char Buffer[256]; - unsigned char *ptr; - CPINFO CPInfo; - int i; - wchar_t *wbuffer; - int BufferSize; - - _Locale_ctype_t *ltype = (_Locale_ctype_t*)malloc(sizeof(_Locale_ctype_t)); - - if (!ltype) { *__err_code = _STLP_LOC_NO_MEMORY; return ltype; } - memset(ltype, 0, sizeof(_Locale_ctype_t)); - - if (__GetLCIDFromName(name, <ype->lc.id, cp_name, lc_hint) == -1) - { free(ltype); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - -#if defined (__BORLANDC__) - if ( ltype->lc.id == INVARIANT_LCID && name[0] == 'C' && name[1] == 0 ) - { ltype->lc.id = 0x409; } -#endif - - ltype->cp = atoi(cp_name); - - NativeCP = __GetDefaultCP(ltype->lc.id); - - /* Make table with all characters. */ - for (i = 0; i < 256; ++i) Buffer[i] = (unsigned char)i; - - if (!GetCPInfo(NativeCP, &CPInfo)) { free(ltype); return NULL; } - - if (CPInfo.MaxCharSize > 1) { - for (ptr = (unsigned char*)CPInfo.LeadByte; *ptr && *(ptr + 1); ptr+=2) - for (i = *ptr; i <= *(ptr + 1); ++i) Buffer[i] = 0; - } - - if ((UINT)NativeCP != ltype->cp) { - OSVERSIONINFO ver_info; - ver_info.dwOSVersionInfoSize = sizeof(ver_info); - GetVersionEx(&ver_info); - if (ver_info.dwPlatformId == VER_PLATFORM_WIN32_NT) { - /* Convert character sequence to Unicode. */ - BufferSize = MultiByteToWideChar(ltype->cp, MB_PRECOMPOSED, (const char*)Buffer, 256, NULL, 0); - if (!BufferSize) { free(ltype); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - wbuffer = (wchar_t*)malloc(BufferSize * sizeof(wchar_t)); - if (!wbuffer) { free(ltype); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - MultiByteToWideChar(ltype->cp, MB_PRECOMPOSED, (const char*)Buffer, 256, wbuffer, BufferSize); - - GetStringTypeW(CT_CTYPE1, wbuffer, 256, ltype->ctable); - MapCtypeMasks(ltype->ctable, ltype->ctable + 256); - free(wbuffer); - } - else { - unsigned short ctable[256]; - unsigned char TargetBuffer[256]; - GetStringTypeA(ltype->lc.id, CT_CTYPE1, (const char*)Buffer, 256, ctable); - - /* Convert character sequence to target code page. */ - BufferSize = MultiByteToWideChar(NativeCP, MB_PRECOMPOSED, (const char*)Buffer, 256, NULL, 0); - if (!BufferSize) { free(ltype); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - wbuffer = (wchar_t*)malloc(BufferSize * sizeof(wchar_t)); - if (!wbuffer) { free(ltype); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - MultiByteToWideChar(NativeCP, MB_PRECOMPOSED, (const char*)Buffer, 256, wbuffer, BufferSize); - if (!WideCharToMultiByte(ltype->cp, WC_COMPOSITECHECK | WC_SEPCHARS, wbuffer, BufferSize, (char*)TargetBuffer, 256, NULL, FALSE)) - { free(wbuffer); free(ltype); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - - free(wbuffer); - - /* Translate ctype table. */ - for (i = 0; i < 256; ++i) { - if (!TargetBuffer[i]) continue; - ltype->ctable[TargetBuffer[i]] = MapCtypeMask(ctable[i]); - } - } - } - else { - GetStringTypeA(ltype->lc.id, CT_CTYPE1, (const char*)Buffer, 256, ltype->ctable); - MapCtypeMasks(ltype->ctable, ltype->ctable + 256); - } - return ltype; -} - -_Locale_numeric_t* _Locale_numeric_create(const char * name, _Locale_lcid_t* lc_hint, int *__err_code) { - wchar_t wbuf[4]; - char *GroupingBuffer; - int BufferSize; - - _Locale_numeric_t *lnum = (_Locale_numeric_t*)malloc(sizeof(_Locale_numeric_t)); - if (!lnum) { *__err_code = _STLP_LOC_NO_MEMORY; return lnum; } - memset(lnum, 0, sizeof(_Locale_numeric_t)); - - if (__GetLCIDFromName(name, &lnum->lc.id, lnum->cp, lc_hint) == -1) - { free(lnum); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - -#if defined (__BORLANDC__) - if (lnum->lc.id != INVARIANT_LCID) { -#endif - __GetLocaleInfoUsingACP(lnum->lc.id, lnum->cp, LOCALE_SDECIMAL, lnum->decimal_point, 4, wbuf, 4); - __GetLocaleInfoUsingACP(lnum->lc.id, lnum->cp, LOCALE_STHOUSAND, lnum->thousands_sep, 4, wbuf, 4); -#if defined (__BORLANDC__) - } - else - lnum->decimal_point[0] = '.'; -#endif - - if (lnum->lc.id != INVARIANT_LCID) { - BufferSize = GetLocaleInfoA(lnum->lc.id, LOCALE_SGROUPING, NULL, 0); - GroupingBuffer = (char*)malloc(BufferSize); - if (!GroupingBuffer) { free(lnum); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - GetLocaleInfoA(lnum->lc.id, LOCALE_SGROUPING, GroupingBuffer, BufferSize); - __FixGrouping(GroupingBuffer); - lnum->grouping = GroupingBuffer; - } - else { - lnum->grouping = (char*)malloc(1); - if (!lnum->grouping) { free(lnum); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - lnum->grouping[0] = 0; - } - - return lnum; -} - -static int __ConvertDate(const char *NTDate, char *buffer, int buf_size) { - /* This function will return an incomplete buffer if buffer is not long enough */ - const char *cur_char; - char *cur_output, *end_output; - - /* Correct time format. */ - cur_char = NTDate; - cur_output = buffer; - end_output = cur_output + buf_size; - buf_size = 0; - while (*cur_char) { - if (cur_output && (cur_output == end_output)) break; - switch (*cur_char) { - case 'd': - { - if (*(cur_char + 1) == 'd') { - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (*(cur_char + 2) == 'd') { - if (*(cur_char + 3) == 'd') { - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'A'; } - buf_size += 2; - cur_char += 3; - } - else { - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'a'; } - buf_size += 2; - cur_char += 2; - } - } - else { - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'd'; } - buf_size += 2; - cur_char++; - } - } - else { - if (cur_output && (cur_output + 3 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = '#'; *(cur_output++) = 'd'; } - buf_size += 3; - } - } - break; - case 'M': - { - if (*(cur_char + 1) == 'M') { - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (*(cur_char + 2) == 'M') { - if (*(cur_char + 3) == 'M') { - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'B'; } - buf_size += 2; - cur_char += 3; - } - else { - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'b'; } - buf_size += 2; - cur_char += 2; - } - } - else { - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'm'; } - buf_size += 2; - cur_char++; - } - } - else { - if (cur_output && (cur_output + 3 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = '#'; *(cur_output++) = 'm'; } - buf_size += 3; - } - } - break; - case 'y': - { - if (*(cur_char + 1) == 'y') { - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (*(cur_char + 2) == 'y' && *(cur_char + 3) == 'y') { - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'Y'; } - buf_size += 2; - cur_char += 3; - } - else { - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'y'; } - buf_size += 2; - cur_char++; - } - } - else { - if (cur_output && (cur_output + 3 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = '#'; *(cur_output++) = 'y'; } - buf_size += 3; - } - } - break; - case '%': - { - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = '%'; } - buf_size += 2; - } - break; - case '\'': - { - ++cur_char; - while (*cur_char != '\'' && *cur_char != 0 && (cur_output == NULL || cur_output != end_output)) { - if (cur_output) { *cur_output++ = *cur_char; } - ++cur_char; - buf_size += 1; - } - } - break; - default: - { - if (cur_output) { *(cur_output++) = *cur_char; } - buf_size += 1; - } - break; - } - if (*cur_char == 0) break; - ++cur_char; - } - - if (!cur_output || cur_output != end_output) { - if (cur_output) *cur_output = 0; - buf_size += 1; - } - else { - /* We trunc result */ - *(--cur_output) = 0; - } - - return buf_size; -} - -static int __ConvertTime(const char *NTTime, char *buffer, int buf_size) { - const char *cur_char; - char *cur_output, *end_output; - cur_char = NTTime; - cur_output = buffer; - end_output = cur_output + buf_size; - buf_size = 0; - while (*cur_char) { - switch(*cur_char) { - case 'h': - if (*(cur_char + 1) == 'h') { - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'I'; } - buf_size += 2; - ++cur_char; - } - else { - if (cur_output && (cur_output + 3 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = '#'; *(cur_output++) = 'I'; } - buf_size += 3; - } - break; - case 'H': - if (*(cur_char + 1) == 'H') { - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'H'; } - buf_size += 2; - ++cur_char; - } - else { - if (cur_output && (cur_output + 3 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = '#'; *(cur_output++) = 'H'; } - buf_size += 3; - } - break; - case 'm': - if (*(cur_char + 1) == 'm') { - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'M'; } - buf_size += 2; - cur_char++; - } - else { - if (cur_output && (cur_output + 3 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = '#'; *(cur_output++) = 'M'; } - buf_size += 3; - } - break; - case 's': - if (*(cur_char + 1) == 's') { - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'S'; } - buf_size += 2; - ++cur_char; - } - else { - if (cur_output && (cur_output + 3 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = '#'; *(cur_output++) = 'S'; } - buf_size += 3; - } - break; - case 't': - if (*(cur_char + 1) == 't') - ++cur_char; - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++) = '%'; *(cur_output++) = 'p'; } - buf_size += 2; - break; - case '%': - if (cur_output && (cur_output + 2 > end_output)) { - *cur_output = 0; - return ++buf_size; - } - if (cur_output) { *(cur_output++)='%'; *(cur_output++)='%'; } - buf_size += 2; - break; - case '\'': - ++cur_char; - while (*cur_char != '\'' && *cur_char != 0 && (!cur_output || (cur_output != end_output))) { - if (cur_output) *cur_output++ = *cur_char; - ++cur_char; - buf_size += 1; - } - break; - default: - if (cur_output) { *(cur_output++) = *cur_char; } - buf_size += 1; - break; - } - if (*cur_char == 0) break; - ++cur_char; - } - - if (!cur_output || cur_output != end_output) { - if (cur_output) *cur_output = 0; - buf_size += 1; - } - else { - /* We trunc result */ - *(--cur_output) = 0; - } - - return buf_size; -} - -_Locale_time_t* _Locale_time_create(const char * name, _Locale_lcid_t* lc_hint, int *__err_code) { - int size, month, dayofweek; - size_t length; - char fmt80[80]; - wchar_t wbuf80[80]; - - _Locale_time_t *ltime = (_Locale_time_t*)malloc(sizeof(_Locale_time_t)); - - if (!ltime) { *__err_code = _STLP_LOC_NO_MEMORY; return ltime; } - memset(ltime, 0, sizeof(_Locale_time_t)); - - if (__GetLCIDFromName(name, <ime->lc.id, ltime->cp, lc_hint) == -1) - { free(ltime); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - -#if defined (__BORLANDC__) - if ( ltime->lc.id == INVARIANT_LCID && name[0] == 'C' && name[1] == 0 ) - { ltime->lc.id = 0x409; } -#endif - - for (month = LOCALE_SMONTHNAME1; month <= LOCALE_SMONTHNAME12; ++month) { /* Small hack :-) */ - size = GetLocaleInfoA(ltime->lc.id, month, NULL, 0); - ltime->month[month - LOCALE_SMONTHNAME1] = (char*)malloc(size); - if (!ltime->month[month - LOCALE_SMONTHNAME1]) - { _Locale_time_destroy(ltime); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, month, ltime->month[month - LOCALE_SMONTHNAME1], size, wbuf80, 80); - } - - for (month = LOCALE_SABBREVMONTHNAME1; month <= LOCALE_SABBREVMONTHNAME12; ++month) { - size = GetLocaleInfoA(ltime->lc.id, month, NULL, 0); - ltime->abbrev_month[month - LOCALE_SABBREVMONTHNAME1] = (char*)malloc(size); - if (!ltime->abbrev_month[month - LOCALE_SABBREVMONTHNAME1]) - { _Locale_time_destroy(ltime); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, month, ltime->abbrev_month[month - LOCALE_SABBREVMONTHNAME1], size, wbuf80, 80); - } - - for (dayofweek = LOCALE_SDAYNAME1; dayofweek <= LOCALE_SDAYNAME7; ++dayofweek) { - int dayindex = ( dayofweek != LOCALE_SDAYNAME7 ) ? dayofweek - LOCALE_SDAYNAME1 + 1 : 0; - size = GetLocaleInfoA(ltime->lc.id, dayofweek, NULL, 0); - ltime->dayofweek[dayindex] = (char*)malloc(size); - if (!ltime->dayofweek[dayindex]) - { _Locale_time_destroy(ltime); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, dayofweek, ltime->dayofweek[dayindex], size, wbuf80, 80); - } - - for (dayofweek = LOCALE_SABBREVDAYNAME1; dayofweek <= LOCALE_SABBREVDAYNAME7; ++dayofweek) { - int dayindex = ( dayofweek != LOCALE_SABBREVDAYNAME7 ) ? dayofweek - LOCALE_SABBREVDAYNAME1 + 1 : 0; - size = GetLocaleInfoA(ltime->lc.id, dayofweek, NULL, 0); - ltime->abbrev_dayofweek[dayindex] = (char*)malloc(size); - if (!ltime->abbrev_dayofweek[dayindex]) - { _Locale_time_destroy(ltime); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, dayofweek, ltime->abbrev_dayofweek[dayindex], size, wbuf80, 80); - } - - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, LOCALE_SSHORTDATE, fmt80, 80, wbuf80, 80); - size = __ConvertDate(fmt80, NULL, 0); - ltime->date_format = (char*)malloc(size); - if (!ltime->date_format) - { _Locale_time_destroy(ltime); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - __ConvertDate(fmt80, ltime->date_format, size); - - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, LOCALE_SLONGDATE, fmt80, 80, wbuf80, 80); - size = __ConvertDate(fmt80, NULL, 0); - ltime->long_date_format = (char*)malloc(size); - if (!ltime->long_date_format) - { _Locale_time_destroy(ltime);*__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - __ConvertDate(fmt80, ltime->long_date_format, size); - - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, LOCALE_STIMEFORMAT, fmt80, 80, wbuf80, 80); - size = __ConvertTime(fmt80, NULL, 0); - ltime->time_format = (char*)malloc(size); - if (!ltime->time_format) - { _Locale_time_destroy(ltime); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - __ConvertTime(fmt80, ltime->time_format, size); - - /* NT doesn't provide this information, we must simulate. */ - length = strlen(ltime->date_format) + strlen(ltime->time_format) + 1 /* space */ + 1 /* trailing 0 */; - ltime->date_time_format = (char*)malloc(length); - if (!ltime->date_time_format) - { _Locale_time_destroy(ltime); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - _STLP_STRCPY(ltime->date_time_format, length, ltime->date_format); - _STLP_STRCAT(ltime->date_time_format, length, " "); - _STLP_STRCAT(ltime->date_time_format, length, ltime->time_format); - - /* NT doesn't provide this information, we must simulate. */ - length = strlen(ltime->long_date_format) + strlen(ltime->time_format) + 1 /* space */ + 1 /* trailing 0 */; - ltime->long_date_time_format = (char*)malloc(length); - if (!ltime->long_date_time_format) - { _Locale_time_destroy(ltime); *__err_code = _STLP_LOC_NO_MEMORY; return NULL; } - _STLP_STRCPY(ltime->long_date_time_format, length, ltime->long_date_format); - _STLP_STRCAT(ltime->long_date_time_format, length, " "); - _STLP_STRCAT(ltime->long_date_time_format, length, ltime->time_format); - - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, LOCALE_S1159, ltime->am, 9, wbuf80, 80); - __GetLocaleInfoUsingACP(ltime->lc.id, ltime->cp, LOCALE_S2359, ltime->pm, 9, wbuf80, 80); - - return ltime; -} - -_Locale_collate_t* _Locale_collate_create(const char * name, _Locale_lcid_t* lc_hint, int *__err_code) { - _Locale_collate_t *lcol = (_Locale_collate_t*)malloc(sizeof(_Locale_collate_t)); - if (!lcol) { *__err_code = _STLP_LOC_NO_MEMORY; return lcol; } - memset(lcol, 0, sizeof(_Locale_collate_t)); - - if (__GetLCIDFromName(name, &lcol->lc.id, lcol->cp, lc_hint) == -1) - { free(lcol); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - -#if defined (__BORLANDC__) - if ( lcol->lc.id == INVARIANT_LCID && name[0] == 'C' && name[1] == 0 ) - { lcol->lc.id = 0x409; } -#endif - - return lcol; -} - -_Locale_monetary_t* _Locale_monetary_create(const char * name, _Locale_lcid_t* lc_hint, int *__err_code) { - char *GroupingBuffer; - int BufferSize; - char FracDigits[3]; - wchar_t wbuf[6]; - - _Locale_monetary_t *lmon = (_Locale_monetary_t*)malloc(sizeof(_Locale_monetary_t)); - if (!lmon) { *__err_code = _STLP_LOC_NO_MEMORY; return lmon; } - memset(lmon, 0, sizeof(_Locale_monetary_t)); - - if (__GetLCIDFromName(name, &lmon->lc.id, lmon->cp, lc_hint) == -1) - { free(lmon); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - - if (lmon->lc.id != INVARIANT_LCID) { - /* Extract information about monetary system */ - __GetLocaleInfoUsingACP(lmon->lc.id, lmon->cp, LOCALE_SDECIMAL, lmon->decimal_point, 4, wbuf, 6); - __GetLocaleInfoUsingACP(lmon->lc.id, lmon->cp, LOCALE_STHOUSAND, lmon->thousands_sep, 4, wbuf, 6); - - BufferSize = GetLocaleInfoA(lmon->lc.id, LOCALE_SGROUPING, NULL, 0); - GroupingBuffer = (char*)malloc(BufferSize); - if (!GroupingBuffer) - { lmon->grouping = NULL; *__err_code = _STLP_LOC_NO_MEMORY; return lmon; } - GetLocaleInfoA(lmon->lc.id, LOCALE_SGROUPING, GroupingBuffer, BufferSize); - __FixGrouping(GroupingBuffer); - lmon->grouping = GroupingBuffer; - - __GetLocaleInfoUsingACP(lmon->lc.id, lmon->cp, LOCALE_SCURRENCY, lmon->curr_symbol, 6, wbuf, 6); - __GetLocaleInfoUsingACP(lmon->lc.id, lmon->cp, LOCALE_SNEGATIVESIGN, lmon->negative_sign, 5, wbuf, 6); - __GetLocaleInfoUsingACP(lmon->lc.id, lmon->cp, LOCALE_SPOSITIVESIGN, lmon->positive_sign, 5, wbuf, 6); - - GetLocaleInfoA(lmon->lc.id, LOCALE_ICURRDIGITS, FracDigits, 3); - lmon->frac_digits = atoi(FracDigits); - - GetLocaleInfoA(lmon->lc.id, LOCALE_IINTLCURRDIGITS, FracDigits, 3); - lmon->int_frac_digits = atoi(FracDigits); - - __GetLocaleInfoUsingACP(lmon->lc.id, lmon->cp, LOCALE_SINTLSYMBOL, lmon->int_curr_symbol, 5, wbuf, 6); - /* Even if Platform SDK documentation says that the returned symbol should - * be a 3 letters symbol followed by a seperation character, experimentation - * has shown that no seperation character is ever appended. We are adding it - * ourself to conform to the POSIX specification. - */ - if (lmon->int_curr_symbol[3] == 0) { - lmon->int_curr_symbol[3] = ' '; - lmon->int_curr_symbol[4] = 0; - } - } - /* else it is already ok */ - - return lmon; -} - -struct _Locale_messages* _Locale_messages_create(const char *name, _Locale_lcid_t* lc_hint, int *__err_code) { - /* The Win32 API has no support for messages facet */ - _STLP_MARK_PARAMETER_AS_UNUSED(name) - _STLP_MARK_PARAMETER_AS_UNUSED(lc_hint) - *__err_code = _STLP_LOC_UNSUPPORTED_FACET_CATEGORY; - return NULL; -} - -static const char* _Locale_common_default(char* buf) { - char cp[MAX_CP_LEN + 1]; - int CodePage = __GetDefaultCP(LOCALE_USER_DEFAULT); - my_ltoa(CodePage, cp); - return __GetLocaleName(LOCALE_USER_DEFAULT, cp, buf); -} - -const char* _Locale_ctype_default(char* buf) -{ return _Locale_common_default(buf); } - -const char* _Locale_numeric_default(char * buf) -{ return _Locale_common_default(buf); } - -const char* _Locale_time_default(char* buf) -{ return _Locale_common_default(buf); } - -const char* _Locale_collate_default(char* buf) -{ return _Locale_common_default(buf); } - -const char* _Locale_monetary_default(char* buf) -{ return _Locale_common_default(buf); } - -const char* _Locale_messages_default(char* buf) -{ return _Locale_common_default(buf); } - -char const* _Locale_ctype_name(const _Locale_ctype_t* ltype, char* buf) { - char cp_buf[MAX_CP_LEN + 1]; - my_ltoa(ltype->cp, cp_buf); - return __GetLocaleName(ltype->lc.id, cp_buf, buf); -} - -char const* _Locale_numeric_name(const _Locale_numeric_t* lnum, char* buf) -{ return __GetLocaleName(lnum->lc.id, lnum->cp, buf); } - -char const* _Locale_time_name(const _Locale_time_t* ltime, char* buf) -{ return __GetLocaleName(ltime->lc.id, ltime->cp, buf); } - -char const* _Locale_collate_name(const _Locale_collate_t* lcol, char* buf) -{ return __GetLocaleName(lcol->lc.id, lcol->cp, buf); } - -char const* _Locale_monetary_name(const _Locale_monetary_t* lmon, char* buf) -{ return __GetLocaleName(lmon->lc.id, lmon->cp, buf); } - -char const* _Locale_messages_name(const struct _Locale_messages* lmes, char* buf) { - _STLP_MARK_PARAMETER_AS_UNUSED(lmes) - _STLP_MARK_PARAMETER_AS_UNUSED(buf) - return NULL; -} - -void _Locale_ctype_destroy(_Locale_ctype_t* ltype) { - if (!ltype) return; - - free(ltype); -} - -void _Locale_numeric_destroy(_Locale_numeric_t* lnum) { - if (!lnum) return; - - if (lnum->grouping) free(lnum->grouping); - free(lnum); -} - -void _Locale_time_destroy(_Locale_time_t* ltime) { - int i; - if (!ltime) return; - - for (i = 0; i < 12; ++i) { - if (ltime->month[i]) free(ltime->month[i]); - if (ltime->abbrev_month[i]) free(ltime->abbrev_month[i]); - } - - for (i = 0; i < 7; ++i) { - if (ltime->dayofweek[i]) free(ltime->dayofweek[i]); - if (ltime->abbrev_dayofweek[i]) free(ltime->abbrev_dayofweek[i]); - } - - if (ltime->date_format) free(ltime->date_format); - if (ltime->long_date_format) free(ltime->long_date_format); - if (ltime->time_format) free(ltime->time_format); - if (ltime->date_time_format) free(ltime->date_time_format); - if (ltime->long_date_time_format) free(ltime->long_date_time_format); - - free(ltime); -} - -void _Locale_collate_destroy(_Locale_collate_t* lcol) { - if (!lcol) return; - - free(lcol); -} - -void _Locale_monetary_destroy(_Locale_monetary_t* lmon) { - if (!lmon) return; - - if (lmon->grouping) free(lmon->grouping); - free(lmon); -} - -void _Locale_messages_destroy(struct _Locale_messages* lmes) -{ _STLP_MARK_PARAMETER_AS_UNUSED(lmes) } - -static char const* _Locale_extract_category_name(const char* name, const char* category, char* buf, - _Locale_lcid_t* hint, int *__err_code) { - const char* cname = __Extract_locale_name(name, category, buf); - if (cname == 0 || (cname[0] == 'C' && cname[1] == 0)) { - return cname; - } - return __TranslateToSystem(cname, buf, hint, __err_code); -} - -char const* _Locale_extract_ctype_name(const char* cname, char* buf, - _Locale_lcid_t* hint, int *__err_code) -{ return _Locale_extract_category_name(cname, "LC_CTYPE", buf, hint, __err_code); } - -char const* _Locale_extract_numeric_name(const char* cname, char* buf, - _Locale_lcid_t* hint, int *__err_code) -{ return _Locale_extract_category_name(cname, "LC_NUMERIC", buf, hint, __err_code); } - -char const* _Locale_extract_time_name(const char* cname, char* buf, - _Locale_lcid_t* hint, int *__err_code) -{ return _Locale_extract_category_name(cname, "LC_TIME", buf, hint, __err_code); } - -char const* _Locale_extract_collate_name(const char* cname, char* buf, - _Locale_lcid_t* hint, int *__err_code) -{ return _Locale_extract_category_name(cname, "LC_COLLATE", buf, hint, __err_code); } - -char const* _Locale_extract_monetary_name(const char* cname, char* buf, - _Locale_lcid_t* hint, int *__err_code) -{ return _Locale_extract_category_name(cname, "LC_MONETARY", buf, hint, __err_code); } - -char const* _Locale_extract_messages_name(const char* cname, char* buf, - _Locale_lcid_t* hint, int *__err_code) { - if (cname[0] == 'L' && cname[1] == 'C' && cname[2] == '_') { - return _C_name; - } - if (cname[0] == 'C' && cname[1] == 0) { - return _C_name; - } - return __TranslateToSystem(cname, buf, hint, __err_code); -} - -/* ctype */ - -const _Locale_mask_t* _Locale_ctype_table(_Locale_ctype_t* ltype) { - _STLP_STATIC_ASSERT(sizeof(_Locale_mask_t) == sizeof(ltype->ctable[0])) - return (const _Locale_mask_t*)ltype->ctable; -} - -int _Locale_toupper(_Locale_ctype_t* ltype, int c) { - char buf[2], out_buf[2]; - buf[0] = (char)c; buf[1] = 0; - if ((UINT)__GetDefaultCP(ltype->lc.id) == ltype->cp) { - LCMapStringA(ltype->lc.id, LCMAP_LINGUISTIC_CASING | LCMAP_UPPERCASE, buf, 2, out_buf, 2); - return out_buf[0]; - } - else { - wchar_t wbuf[2]; - MultiByteToWideChar(ltype->cp, MB_PRECOMPOSED, buf, 2, wbuf, 2); - WideCharToMultiByte(__GetDefaultCP(ltype->lc.id), WC_COMPOSITECHECK | WC_SEPCHARS, wbuf, 2, buf, 2, NULL, FALSE); - - LCMapStringA(ltype->lc.id, LCMAP_LINGUISTIC_CASING | LCMAP_UPPERCASE, buf, 2, out_buf, 2); - - MultiByteToWideChar(__GetDefaultCP(ltype->lc.id), MB_PRECOMPOSED, out_buf, 2, wbuf, 2); - WideCharToMultiByte(ltype->cp, WC_COMPOSITECHECK | WC_SEPCHARS, wbuf, 2, out_buf, 2, NULL, FALSE); - return out_buf[0]; - } -} - -int _Locale_tolower(_Locale_ctype_t* ltype, int c) { - char buf[2], out_buf[2]; - buf[0] = (char)c; buf[1] = 0; - if ((UINT)__GetDefaultCP(ltype->lc.id) == ltype->cp) { - LCMapStringA(ltype->lc.id, LCMAP_LINGUISTIC_CASING | LCMAP_LOWERCASE, buf, 2, out_buf, 2); - return out_buf[0]; - } - else { - wchar_t wbuf[2]; - MultiByteToWideChar(ltype->cp, MB_PRECOMPOSED, buf, 2, wbuf, 2); - WideCharToMultiByte(__GetDefaultCP(ltype->lc.id), WC_COMPOSITECHECK | WC_SEPCHARS, wbuf, 2, buf, 2, NULL, FALSE); - - LCMapStringA(ltype->lc.id, LCMAP_LINGUISTIC_CASING | LCMAP_LOWERCASE, buf, 2, out_buf, 2); - - MultiByteToWideChar(__GetDefaultCP(ltype->lc.id), MB_PRECOMPOSED, out_buf, 2, wbuf, 2); - WideCharToMultiByte(ltype->cp, WC_COMPOSITECHECK | WC_SEPCHARS, wbuf, 2, out_buf, 2, NULL, FALSE); - return out_buf[0]; - } -} - -#ifndef CSTR_EQUAL /* VC5SP3*/ -# define CSTR_EQUAL 2 -#endif -#ifndef CSTR_LESS_THAN /* VC5SP3 */ -# define CSTR_LESS_THAN 1 -#endif - -static DWORD max_DWORD = 0xffffffff; -static DWORD trim_size_t_to_DWORD(size_t n) { return n < (size_t)max_DWORD ? (DWORD)n : max_DWORD; } - -/* Collate */ -/* This function takes care of the potential size_t DWORD different size. */ -static int _Locale_strcmp_auxA(_Locale_collate_t* lcol, - const char* s1, size_t n1, - const char* s2, size_t n2) { - int result = CSTR_EQUAL; - while (n1 > 0 || n2 > 0) { - DWORD size1 = trim_size_t_to_DWORD(n1); - DWORD size2 = trim_size_t_to_DWORD(n2); - result = CompareStringA(lcol->lc.id, 0, s1, size1, s2, size2); - if (result != CSTR_EQUAL) - break; - n1 -= size1; - n2 -= size2; - } - return result; -} - -int _Locale_strcmp(_Locale_collate_t* lcol, - const char* s1, size_t n1, - const char* s2, size_t n2) { - int result; - if (__GetDefaultCP(lcol->lc.id) == atoi(lcol->cp)) { - result = _Locale_strcmp_auxA(lcol, s1, n1, s2, n2); - } - else { - char *buf1, *buf2; - size_t size1, size2; - buf1 = __ConvertToCP(atoi(lcol->cp), __GetDefaultCP(lcol->lc.id), s1, n1, &size1); - buf2 = __ConvertToCP(atoi(lcol->cp), __GetDefaultCP(lcol->lc.id), s2, n2, &size2); - - result = _Locale_strcmp_auxA(lcol, buf1, size1, buf2, size2); - free(buf1); free(buf2); - } - return (result == CSTR_EQUAL) ? 0 : (result == CSTR_LESS_THAN) ? -1 : 1; -} - -size_t _Locale_strxfrm(_Locale_collate_t* lcol, - char* dst, size_t dst_size, - const char* src, size_t src_size) { - int result; - - /* The Windows API do not support transformation of very long strings (src_size > INT_MAX) - * In this case the result will just be the input string: - */ - if (src_size > INT_MAX) { - if (dst != 0) { - _STLP_STRNCPY(dst, dst_size, src, src_size); - } - return src_size; - } - if (dst_size > INT_MAX) { - /* now that we know that src_size <= INT_MAX we can safely decrease dst_size to INT_MAX. */ - dst_size = INT_MAX; - } - - if (__GetDefaultCP(lcol->lc.id) == atoi(lcol->cp)) - result = LCMapStringA(lcol->lc.id, LCMAP_SORTKEY, src, (int)src_size, dst, (int)dst_size); - else { - char *buf; - size_t size; - buf = __ConvertToCP(atoi(lcol->cp), __GetDefaultCP(lcol->lc.id), src, src_size, &size); - - result = LCMapStringA(lcol->lc.id, LCMAP_SORTKEY, buf, (int)size, dst, (int)dst_size); - free(buf); - } - return result != 0 ? result - 1 : 0; -} - -/* Numeric */ -static const char* __true_name = "true"; -static const char* __false_name = "false"; - -char _Locale_decimal_point(_Locale_numeric_t* lnum) -{ return lnum->decimal_point[0]; } - -char _Locale_thousands_sep(_Locale_numeric_t* lnum) -{ return lnum->thousands_sep[0]; } - -const char* _Locale_grouping(_Locale_numeric_t * lnum) { - if (!lnum->grouping) return ""; - else return lnum->grouping; -} - -const char * _Locale_true(_Locale_numeric_t * lnum) { - _STLP_MARK_PARAMETER_AS_UNUSED(lnum) - return __true_name; /* NT does't provide information about this */ -} - -const char * _Locale_false(_Locale_numeric_t * lnum) { - _STLP_MARK_PARAMETER_AS_UNUSED(lnum) - return __false_name; /* NT does't provide information about this */ -} - -/* Monetary */ -const char* _Locale_int_curr_symbol(_Locale_monetary_t * lmon) -{ return lmon->int_curr_symbol; } - -const char* _Locale_currency_symbol(_Locale_monetary_t * lmon) -{ return lmon->curr_symbol; } - -char _Locale_mon_decimal_point(_Locale_monetary_t * lmon) -{ return lmon->decimal_point[0]; } - -char _Locale_mon_thousands_sep(_Locale_monetary_t * lmon) -{ return lmon->thousands_sep[0]; } - -const char* _Locale_mon_grouping(_Locale_monetary_t * lmon) { - if (!lmon->grouping) return ""; - else return lmon->grouping; -} - -const char* _Locale_positive_sign(_Locale_monetary_t * lmon) -{ return lmon->positive_sign; } - -const char* _Locale_negative_sign(_Locale_monetary_t * lmon) -{ return lmon->negative_sign; } - -char _Locale_int_frac_digits(_Locale_monetary_t * lmon) -{ return (char)lmon->int_frac_digits; } - -char _Locale_frac_digits(_Locale_monetary_t * lmon) -{ return (char)lmon->frac_digits; } - -int _Locale_p_cs_precedes(_Locale_monetary_t * lmon) { - char loc_data[2]; - GetLocaleInfoA(lmon->lc.id, LOCALE_IPOSSYMPRECEDES, loc_data, 2); - if (loc_data[0] == '0') return 0; - else if (loc_data[0] == '1') return 1; - else return -1; -} - -int _Locale_p_sep_by_space(_Locale_monetary_t * lmon) { - char loc_data[2]; - GetLocaleInfoA(lmon->lc.id, LOCALE_IPOSSEPBYSPACE, loc_data, 2); - if (loc_data[0] == '0') return 0; - else if (loc_data[0] == '1') return 1; - else return -1; -} - -int _Locale_p_sign_posn(_Locale_monetary_t * lmon) { - char loc_data[2]; - if (lmon->lc.id != INVARIANT_LCID) { - GetLocaleInfoA(lmon->lc.id, LOCALE_IPOSSIGNPOSN, loc_data, 2); - return atoi(loc_data); - } - else { - return CHAR_MAX; - } -} - -int _Locale_n_cs_precedes(_Locale_monetary_t * lmon) { - char loc_data[2]; - GetLocaleInfoA(lmon->lc.id, LOCALE_INEGSYMPRECEDES, loc_data, 2); - if (loc_data[0] == '0') return 0; - else if (loc_data[0] == '1') return 1; - else return -1; -} - -int _Locale_n_sep_by_space(_Locale_monetary_t * lmon) { - char loc_data[2]; - GetLocaleInfoA(lmon->lc.id, LOCALE_INEGSEPBYSPACE, loc_data, 2); - if (loc_data[0] == '0') return 0; - else if (loc_data[0] == '1') return 1; - else return -1; -} - -int _Locale_n_sign_posn(_Locale_monetary_t * lmon) { - char loc_data[2]; - if (lmon->lc.id != INVARIANT_LCID) { - GetLocaleInfoA(lmon->lc.id, LOCALE_INEGSIGNPOSN, loc_data, 2); - return atoi(loc_data); - } - else { - return CHAR_MAX; - } -} - -/* Time */ -const char * _Locale_full_monthname(_Locale_time_t * ltime, int month) { - const char **names = (const char**)ltime->month; - return names[month]; -} - -const char * _Locale_abbrev_monthname(_Locale_time_t * ltime, int month) { - const char **names = (const char**)ltime->abbrev_month; - return names[month]; -} - -const char * _Locale_full_dayofweek(_Locale_time_t * ltime, int day) { - const char **names = (const char**)ltime->dayofweek; - return names[day]; -} - -const char * _Locale_abbrev_dayofweek(_Locale_time_t * ltime, int day) { - const char **names = (const char**)ltime->abbrev_dayofweek; - return names[day]; -} - -const char* _Locale_d_t_fmt(_Locale_time_t* ltime) -{ return ltime->date_time_format; } - -const char* _Locale_long_d_t_fmt(_Locale_time_t* ltime) -{ return ltime->long_date_time_format; } - -const char* _Locale_d_fmt(_Locale_time_t* ltime) -{ return ltime->date_format; } - -const char* _Locale_long_d_fmt(_Locale_time_t* ltime) -{ return ltime->long_date_format; } - -const char* _Locale_t_fmt(_Locale_time_t* ltime) -{ return ltime->time_format; } - -const char* _Locale_am_str(_Locale_time_t* ltime) -{ return ltime->am; } - -const char* _Locale_pm_str(_Locale_time_t* ltime) -{ return ltime->pm; } - -/* Messages */ -nl_catd_type _Locale_catopen(struct _Locale_messages* lmes, const char* cat_name) { - _STLP_MARK_PARAMETER_AS_UNUSED(lmes) - _STLP_MARK_PARAMETER_AS_UNUSED(cat_name) - return -1; -} -void _Locale_catclose(struct _Locale_messages* lmes, nl_catd_type cat) { - _STLP_MARK_PARAMETER_AS_UNUSED(lmes) - _STLP_MARK_PARAMETER_AS_UNUSED(&cat) -} -const char* _Locale_catgets(struct _Locale_messages* lmes, nl_catd_type cat, - int setid, int msgid, const char *dfault) { - _STLP_MARK_PARAMETER_AS_UNUSED(lmes) - _STLP_MARK_PARAMETER_AS_UNUSED(&cat) - _STLP_MARK_PARAMETER_AS_UNUSED(&setid) - _STLP_MARK_PARAMETER_AS_UNUSED(&msgid) - return dfault; -} - -#ifdef __cplusplus -} /* extern C */ -_STLP_END_NAMESPACE -#endif - -void __FixGrouping(char *grouping) { - /* This converts NT version which uses '0' instead of 0, etc ; to ANSI */ - char *g = grouping; - char building_group = 0; - char repeat_last = 0; - /* Check there is a grouping info otherwise we would add a useless CHAR_MAX */ - if (*g) { - for (; *g; ++g) { - if (*g > '0' && *g <= '9') { - if (!building_group) { - *grouping = *g - '0'; - building_group = 1; - } - else { - /* Known issue: grouping might roll. */ - *grouping = *grouping * 10 + *g - '0'; - } - } - else if (*g == '0') { - if (!building_group) { - repeat_last = 1; - } - else - /* Known issue: grouping might roll. */ - *grouping *= 10; - } - else if (*g == ';') { - /* Stop adding to the current group */ - building_group = 0; - ++grouping; - } - /* else we ignore the character */ - } - - if (!repeat_last) - *grouping++ = CHAR_MAX; - *grouping = 0; - } -} - -const char* __ConvertName(const char* lname, LOCALECONV* ConvTable, int TableSize) { - int i; - int cmp; - int low = 0; - int high = TableSize - 1; - - /* typical binary search - do until no more to search or match */ - while (low <= high) { - i = (low + high) / 2; - - if ((cmp = lstrcmpiA(lname, (*(ConvTable + i)).name)) == 0) - return (*(ConvTable + i)).abbrev; - else if (cmp < 0) - high = i - 1; - else - low = i + 1; - } - return lname; -} - -int __ParseLocaleString(const char* lname, - char* lang, char* ctry, char* page) { - int param = 0; - size_t len; - size_t tmpLen; - - if (lname[0] == 0) - return 0; - - /* We look for the first country separator '_' */ - len = strcspn(lname, "_"); - if (lname[len] == '_') { - if (len == 0 || len > MAX_LANG_LEN) return -1; /* empty lang is invalid*/ - _STLP_STRNCPY(lang, MAX_LANG_LEN + 1, lname, len); - lname += len + 1; - ++param; - } - - /* We look for the last code page separator '.' */ - len = -1; - tmpLen = strcspn(lname, "."); - while (lname[tmpLen] == '.') { - len = tmpLen; ++tmpLen; - tmpLen += strcspn(lname + tmpLen, "."); - } - if (len != -1) { /* Means that we found a '.' */ - if (param == 0) { - /* We have no lang yet so we have to fill it first, no country */ - if (len > MAX_LANG_LEN) return -1; - if (len == 0) { - /* No language nor country, only code page */ - ++param; - } - else - { _STLP_STRNCPY(lang, MAX_LANG_LEN + 1, lname, len); } - ++param; - } - else { - /* We already have a lang so we are now looking for the country: */ - if (len == 0) return -1; /* We forbid locale name with the "_." motif in it */ - if (len > MAX_CTRY_LEN) return -1; - _STLP_STRNCPY(ctry, MAX_CTRY_LEN + 1, lname, len); - } - ++param; - lname += len + 1; - } - - /* We look for ',' for compatibility with POSIX */ - len = strcspn(lname, ","); - switch (param) { - case 0: - if (len > MAX_LANG_LEN) return -1; - _STLP_STRNCPY(lang, MAX_LANG_LEN + 1, lname, len); - break; - case 1: - if (len > MAX_CTRY_LEN) return -1; - _STLP_STRNCPY(ctry, MAX_CTRY_LEN + 1, lname, len); - break; - default: - if (len > MAX_CP_LEN) return -1; - _STLP_STRNCPY(page, MAX_CP_LEN + 1, lname, len); - break; - } - - /* ',' POSIX modifier is not used in NT */ - return 0; -} - -/* Data necessary for find LCID*/ -static CRITICAL_SECTION __criticalSection; -static int __FindFlag; -static LCID __FndLCID; -static const char* __FndLang; -static const char* __FndCtry; - -void _Locale_init() -{ InitializeCriticalSection(&__criticalSection); } - -void _Locale_final() -{ DeleteCriticalSection(&__criticalSection); } - -static LCID LocaleFromHex(const char* locale) { - unsigned long result = 0; - int digit; - while (*locale) { - result <<= 4; - digit = (*locale >= '0' && *locale <= '9') ? *locale - '0': - (*locale >= 'A' && *locale <= 'F') ? (*locale - 'A') + 10 - : (*locale - 'a') + 10; - result += digit; - ++locale; - } - return (LCID)result; -} - -static BOOL CALLBACK EnumLocalesProcA(LPSTR locale) { - LCID lcid = LocaleFromHex(locale); - int LangFlag = 0, CtryFlag = !__FndCtry; - static char Lang[MAX_LANG_LEN], Ctry[MAX_CTRY_LEN]; - - GetLocaleInfoA(lcid, LOCALE_SENGLANGUAGE, Lang, MAX_LANG_LEN); - if (lstrcmpiA(Lang, __FndLang) != 0) { - GetLocaleInfoA(lcid, LOCALE_SABBREVLANGNAME, Lang, MAX_LANG_LEN); - if (lstrcmpiA(Lang, __FndLang) != 0) { - GetLocaleInfoA(lcid, LOCALE_SISO639LANGNAME, Lang, MAX_LANG_LEN); - if (lstrcmpiA(Lang, __FndLang) == 0) LangFlag = 1; - } - else LangFlag = 1; - } - else LangFlag = 1; - - if (__FndCtry) { - GetLocaleInfoA(lcid, LOCALE_SENGCOUNTRY, Ctry, MAX_CTRY_LEN); - if (lstrcmpiA(Ctry, __FndCtry) != 0) { - GetLocaleInfoA(lcid, LOCALE_SABBREVCTRYNAME, Ctry, MAX_CTRY_LEN); - if (lstrcmpiA(Ctry, __FndCtry) != 0) { - GetLocaleInfoA(lcid, LOCALE_SISO3166CTRYNAME, Ctry, MAX_CTRY_LEN); - if (lstrcmpiA(Ctry, __FndCtry) == 0) CtryFlag = 1; - } - else CtryFlag = 1; - } - else - CtryFlag = 1; - } - - if (LangFlag && CtryFlag) { - __FindFlag = 1; - __FndLCID = lcid; - return FALSE; - } - - return TRUE; -} - -int __GetLCID(const char* lang, const char* ctry, LCID* lcid) { - int ret; - EnterCriticalSection(&__criticalSection); - - __FindFlag = 0; - __FndLang = lang; - __FndCtry = ctry; - EnumSystemLocalesA(EnumLocalesProcA, LCID_INSTALLED); - - if (__FindFlag != 0) *lcid = __FndLCID; - ret = __FindFlag != 0 ? 0 : -1; - - LeaveCriticalSection(&__criticalSection); - return ret; -} - -int __GetLCIDFromName(const char* lname, LCID* lcid, char* cp, _Locale_lcid_t *hint) { - char lang[MAX_LANG_LEN + 1], ctry[MAX_CTRY_LEN + 1], page[MAX_CP_LEN + 1]; - int result = 0; - if (lname == NULL || lname[0] == 0) { - *lcid = LOCALE_USER_DEFAULT; - return 0; - } - - memset(lang, 0, MAX_LANG_LEN + 1); - memset(ctry, 0, MAX_CTRY_LEN + 1); - memset(page, 0, MAX_CP_LEN + 1); - if (__ParseLocaleString(lname, lang, ctry, page) == -1) return -1; - - if (hint != 0) { - *lcid = hint->id; - } - else { - if (lang[0] == 0 && ctry[0] == 0) - *lcid = LOCALE_USER_DEFAULT; /* Only code page given. */ - else { - if (ctry[0] == 0) { - result = __GetLCID(__ConvertName(lang, __rg_language, sizeof(__rg_language) / sizeof(LOCALECONV)), NULL, lcid); - if (result != 0) { - /* Check 'C' special case. Check is done after call to __GetLCID because normal programs do not - * generate facet from 'C' name, they use the locale::classic() facets. */ - if (lang[0] == 'C' && lang[1] == 0) { - *lcid = INVARIANT_LCID; - result = 0; - } - } - } - else { - result = __GetLCID(__ConvertName(lang, __rg_language, sizeof(__rg_language) / sizeof(LOCALECONV)), - __ConvertName(ctry, __rg_country, sizeof(__rg_country) / sizeof(LOCALECONV)), - lcid); - if (result != 0) { - /* Non NLS mapping might introduce problem with some locales when only one entry is mapped, - * the lang or the country (example: chinese locales like 'chinese_taiwan' gives 'CHS_taiwan' - * that do not exists in system). This is why we are giving this locale an other chance by - * calling __GetLCID without the mapping. */ - result = __GetLCID(lang, ctry, lcid); - } - } - } - } - - if (result == 0) { - /* Handling code page */ - if (lstrcmpiA(page, "ACP") == 0 || page[0] == 0) - my_ltoa(__intGetACP(*lcid), cp); - else if (lstrcmpiA(page, "OCP") == 0) - my_ltoa(__intGetOCP(*lcid), cp); - else if (lstrcmpiA(page, "UTF7") == 0) - my_ltoa(CP_UTF7, cp); - else if (lstrcmpiA(page, "UTF8") == 0) - my_ltoa(CP_UTF8, cp); - else - _STLP_STRNCPY(cp, MAX_CP_LEN + 1, page, 5); - - /* Code page must be an integer value, - * 0 returned by __intGetACP and 1 returned by __intGetOCP are invalid - * values. - */ - if (cp[1] == 0 && (cp[0] == '0' || cp[1] == '1')) - return -1; - else if (atoi(cp) == 0) - return -1; - } - - return result; -} - -char const* __GetLocaleName(LCID lcid, const char* cp, char* buf) { - if (lcid == INVARIANT_LCID) { - return _C_name; - } - else { - char lang[MAX_LANG_LEN + 1], ctry[MAX_CTRY_LEN + 1]; - GetLocaleInfoA(lcid, LOCALE_SENGLANGUAGE, lang, MAX_LANG_LEN); - GetLocaleInfoA(lcid, LOCALE_SENGCOUNTRY, ctry, MAX_CTRY_LEN); - _STLP_STRCPY(buf, _Locale_MAX_SIMPLE_NAME, lang); - _STLP_STRCAT(buf, _Locale_MAX_SIMPLE_NAME, "_"); - _STLP_STRCAT(buf, _Locale_MAX_SIMPLE_NAME, ctry); - _STLP_STRCAT(buf, _Locale_MAX_SIMPLE_NAME, "."); - _STLP_STRCAT(buf, _Locale_MAX_SIMPLE_NAME, cp); - return buf; - } -} - -char const* __Extract_locale_name(const char* loc, const char* category, char* buf) { - char *expr; - size_t len_name; - - if (loc[0] == 'L' && loc[1] == 'C' && loc[2] == '_') { - expr = strstr((char*)loc, category); - if (expr == NULL) return NULL; /* Category not found. */ - expr = strchr(expr, '='); - if (expr == NULL) return NULL; - ++expr; - len_name = strcspn(expr, ";"); - len_name = len_name >= _Locale_MAX_SIMPLE_NAME ? _Locale_MAX_SIMPLE_NAME - 1 - : len_name; - _STLP_STRNCPY(buf, _Locale_MAX_SIMPLE_NAME, expr, len_name); buf[len_name] = 0; - return buf; - } - else { - return loc; - } -} - -char const* __TranslateToSystem(const char* lname, char* buf, _Locale_lcid_t* hint, - int *__err_code) { - LCID lcid; - char cp[MAX_CP_LEN + 1]; - if (__GetLCIDFromName(lname, &lcid, cp, hint) != 0) - { *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - - return __GetLocaleName(lcid, cp, buf); -} - -void __GetLocaleInfoUsingACP(LCID lcid, const char* cp, LCTYPE lctype, char* buf, int buf_size, wchar_t* wbuf, int wbuf_size) { - wchar_t *Buffer; - int BufferSize; - int icp; - - GetLocaleInfoA(lcid, lctype, buf, buf_size); - - icp = atoi(cp); - if (icp != CP_ACP && buf[0] != 0) { - BufferSize = MultiByteToWideChar(CP_ACP, 0, buf, -1, NULL, 0); - if (BufferSize > wbuf_size) - { - Buffer = (wchar_t*)malloc(sizeof(wchar_t) * BufferSize); - } - else - { - Buffer = wbuf; - } - MultiByteToWideChar(CP_ACP, 0, buf, -1, Buffer, BufferSize); - WideCharToMultiByte(icp, 0, Buffer, -1, buf, buf_size, NULL, NULL); - if (Buffer != wbuf) - { - free(Buffer); - } - } -} - -/* Return 0 if ANSI code page not used */ -int __intGetACP(LCID lcid) { - char cp[6]; - if (!GetLocaleInfoA(lcid, LOCALE_IDEFAULTANSICODEPAGE, cp, 6)) { -#if defined (_STLP_LANG_INVARIANT_DEFINED) - if (lcid == INVARIANT_LCID) { - /* We are using a limited PSDK, we rely on the most common code page */ - return 1252; - } -#endif - return 0; - } - return atoi(cp); -} - -/* Return 1 if OEM code page not used */ -int __intGetOCP(LCID lcid) { - char cp[6]; - if (!GetLocaleInfoA(lcid, LOCALE_IDEFAULTCODEPAGE, cp, 6)) - return 0; - return atoi(cp); -} - -int __GetDefaultCP(LCID lcid) { - int cp = __intGetACP(lcid); - if (cp == 0) return __intGetOCP(lcid); - else return cp; -} - -static int trim_size_t_to_int(size_t n) { return n < (size_t)INT_MAX ? (int)n : INT_MAX; } - -char* __ConvertToCP(int from_cp, int to_cp, const char *from, size_t size, size_t *ret_buf_size) { - size_t wbuffer_size, buffer_size, from_offset, wbuf_offset; - int from_size, to_size, wbuf_size; - wchar_t *wbuffer; - char* buffer; - - size_t orig_size = size; - - wbuffer_size = 0; - from_offset = 0; - while (size > 0) { - from_size = trim_size_t_to_int(size); - wbuffer_size += MultiByteToWideChar(from_cp, MB_PRECOMPOSED, - from + from_offset, from_size, NULL, 0); - from_offset += from_size; - size -= from_size; - } - - wbuffer = (wchar_t*)malloc(sizeof(wchar_t)*wbuffer_size); - - size = orig_size; - wbuf_offset = 0; - from_offset = 0; - while (size > 0) { - from_size = trim_size_t_to_int(size); - wbuf_size = trim_size_t_to_int(wbuffer_size - wbuf_offset); - wbuf_offset += MultiByteToWideChar(from_cp, MB_PRECOMPOSED, - from + from_offset, from_size, wbuffer + wbuf_offset, wbuf_size); - from_offset += from_size; - size -= from_size; - } - - buffer_size = 0; - wbuf_offset = 0; - size = wbuffer_size; - while (size > 0) { - wbuf_size = trim_size_t_to_int(size); - buffer_size += WideCharToMultiByte(to_cp, WC_COMPOSITECHECK | WC_SEPCHARS, - wbuffer + wbuf_offset, wbuf_size, - NULL, 0, NULL, FALSE); - wbuf_offset += wbuf_size; - size -= wbuf_size; - } - - buffer = (char*)malloc(buffer_size); - *ret_buf_size = buffer_size; - - size = wbuffer_size; - wbuf_offset = 0; - while (size > 0) { - wbuf_size = trim_size_t_to_int(size); - to_size = trim_size_t_to_int(buffer_size); - buffer_size -= WideCharToMultiByte(to_cp, WC_COMPOSITECHECK | WC_SEPCHARS, - wbuffer + wbuf_offset, wbuf_size, - buffer, to_size, NULL, FALSE); - wbuf_offset += wbuf_size; - size -= wbuf_size; - } - - free(wbuffer); - return buffer; -} - -#ifdef __cplusplus -} -#endif - -#ifndef _STLP_NO_WCHAR_T -# include "c_wlocale_win32.c" -#endif diff --git a/build/stlport/src/c_locale_win32/c_wlocale_win32.c b/build/stlport/src/c_locale_win32/c_wlocale_win32.c deleted file mode 100644 index a12659b685df..000000000000 --- a/build/stlport/src/c_locale_win32/c_wlocale_win32.c +++ /dev/null @@ -1,314 +0,0 @@ -/* - * Copyright (c) 2007 2008 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if defined (_STLP_USE_SAFE_STRING_FUNCTIONS) -# define _STLP_WCSNCPY(D, DS, S, C) wcsncpy_s(D, DS, S, C) -#else -# define _STLP_WCSNCPY(D, DS, S, C) wcsncpy(D, S, C) -#endif - -static const wchar_t* __wtrue_name = L"true"; -static const wchar_t* __wfalse_name = L"false"; - -typedef struct _Locale_codecvt { - _Locale_lcid_t lc; - UINT cp; - unsigned char cleads[256 / CHAR_BIT]; - unsigned char max_char_size; - DWORD mbtowc_flags; - DWORD wctomb_flags; -} _Locale_codecvt_t; - -/* Ctype */ -_Locale_mask_t _WLocale_ctype(_Locale_ctype_t* ltype, wint_t c, - _Locale_mask_t which_bits) { - wchar_t buf[2]; - WORD out[2]; - buf[0] = c; buf[1] = 0; - GetStringTypeW(CT_CTYPE1, buf, -1, out); - _STLP_MARK_PARAMETER_AS_UNUSED(ltype) - return (_Locale_mask_t)(MapCtypeMask(out[0]) & which_bits); -} - -wint_t _WLocale_tolower(_Locale_ctype_t* ltype, wint_t c) { - wchar_t in_c = c; - wchar_t res; - - LCMapStringW(ltype->lc.id, LCMAP_LOWERCASE, &in_c, 1, &res, 1); - return res; -} - -wint_t _WLocale_toupper(_Locale_ctype_t* ltype, wint_t c) { - wchar_t in_c = c; - wchar_t res; - - LCMapStringW(ltype->lc.id, LCMAP_UPPERCASE, &in_c, 1, &res, 1); - return res; -} - -_Locale_codecvt_t* _Locale_codecvt_create(const char * name, _Locale_lcid_t* lc_hint, int *__err_code) { - char cp_name[MAX_CP_LEN + 1]; - unsigned char *ptr; - CPINFO CPInfo; - int i; - - _Locale_codecvt_t *lcodecvt = (_Locale_codecvt_t*)malloc(sizeof(_Locale_codecvt_t)); - - if (!lcodecvt) { *__err_code = _STLP_LOC_NO_MEMORY; return lcodecvt; } - memset(lcodecvt, 0, sizeof(_Locale_codecvt_t)); - - if (__GetLCIDFromName(name, &lcodecvt->lc.id, cp_name, lc_hint) == -1) - { free(lcodecvt); *__err_code = _STLP_LOC_UNKNOWN_NAME; return NULL; } - - lcodecvt->cp = atoi(cp_name); - if (!GetCPInfo(lcodecvt->cp, &CPInfo)) { free(lcodecvt); return NULL; } - - if (lcodecvt->cp != CP_UTF7 && lcodecvt->cp != CP_UTF8) { - lcodecvt->mbtowc_flags = MB_PRECOMPOSED; - lcodecvt->wctomb_flags = WC_COMPOSITECHECK | WC_SEPCHARS; - } - lcodecvt->max_char_size = CPInfo.MaxCharSize; - - if (CPInfo.MaxCharSize > 1) { - for (ptr = (unsigned char*)CPInfo.LeadByte; *ptr && *(ptr + 1); ptr += 2) - for (i = *ptr; i <= *(ptr + 1); ++i) lcodecvt->cleads[i / CHAR_BIT] |= (0x01 << i % CHAR_BIT); - } - - return lcodecvt; -} - -char const* _Locale_codecvt_name(const _Locale_codecvt_t* lcodecvt, char* buf) { - char cp_buf[MAX_CP_LEN + 1]; - my_ltoa(lcodecvt->cp, cp_buf); - return __GetLocaleName(lcodecvt->lc.id, cp_buf, buf); -} - -void _Locale_codecvt_destroy(_Locale_codecvt_t* lcodecvt) { - if (!lcodecvt) return; - - free(lcodecvt); -} - -int _WLocale_mb_cur_max (_Locale_codecvt_t * lcodecvt) -{ return lcodecvt->max_char_size; } - -int _WLocale_mb_cur_min (_Locale_codecvt_t *lcodecvt) { - _STLP_MARK_PARAMETER_AS_UNUSED(lcodecvt) - return 1; -} - -int _WLocale_is_stateless (_Locale_codecvt_t * lcodecvt) -{ return (lcodecvt->max_char_size == 1) ? 1 : 0; } - -static int __isleadbyte(int i, unsigned char *ctable) { - unsigned char c = (unsigned char)i; - return (ctable[c / CHAR_BIT] & (0x01 << c % CHAR_BIT)); -} - -static int __mbtowc(_Locale_codecvt_t *l, wchar_t *dst, const char *from, unsigned int count) { - int result; - - if (l->cp == CP_UTF7 || l->cp == CP_UTF8) { - result = MultiByteToWideChar(l->cp, l->mbtowc_flags, from, count, dst, 1); - if (result == 0) { - switch (GetLastError()) { - case ERROR_NO_UNICODE_TRANSLATION: - return -2; - default: - return -1; - } - } - } - else { - if (count == 1 && __isleadbyte(*from, l->cleads)) return (size_t)-2; - result = MultiByteToWideChar(l->cp, l->mbtowc_flags, from, count, dst, 1); - if (result == 0) return -1; - } - - return result; -} - -size_t _WLocale_mbtowc(_Locale_codecvt_t *lcodecvt, wchar_t *to, - const char *from, size_t n, mbstate_t *shift_state) { - int result; - _STLP_MARK_PARAMETER_AS_UNUSED(shift_state) - if (lcodecvt->max_char_size == 1) { /* Single byte encoding. */ - result = MultiByteToWideChar(lcodecvt->cp, lcodecvt->mbtowc_flags, from, 1, to, 1); - if (result == 0) return (size_t)-1; - return result; - } - else { /* Multi byte encoding. */ - int retval; - unsigned int count = 1; - while (n--) { - retval = __mbtowc(lcodecvt, to, from, count); - if (retval == -2) - { if (++count > ((unsigned int)lcodecvt->max_char_size)) return (size_t)-1; } - else if (retval == -1) - { return (size_t)-1; } - else - { return count; } - } - return (size_t)-2; - } -} - -size_t _WLocale_wctomb(_Locale_codecvt_t *lcodecvt, char *to, size_t n, - const wchar_t c, mbstate_t *shift_state) { - int size = WideCharToMultiByte(lcodecvt->cp, lcodecvt->wctomb_flags, &c, 1, NULL, 0, NULL, NULL); - - if (!size) return (size_t)-1; - if ((size_t)size > n) return (size_t)-2; - - if (n > INT_MAX) - /* Limiting the output buf size to INT_MAX seems like reasonable to transform a single wchar_t. */ - n = INT_MAX; - - WideCharToMultiByte(lcodecvt->cp, lcodecvt->wctomb_flags, &c, 1, to, (int)n, NULL, NULL); - - _STLP_MARK_PARAMETER_AS_UNUSED(shift_state) - return (size_t)size; -} - -size_t _WLocale_unshift(_Locale_codecvt_t *lcodecvt, mbstate_t *st, - char *buf, size_t n, char **next) { - /* _WLocale_wctomb do not even touch to st, there is nothing to unshift in this localization implementation. */ - _STLP_MARK_PARAMETER_AS_UNUSED(lcodecvt) - _STLP_MARK_PARAMETER_AS_UNUSED(st) - _STLP_MARK_PARAMETER_AS_UNUSED(&n) - *next = buf; - return 0; -} - -/* Collate */ -/* This function takes care of the potential size_t DWORD different size. */ -static int _WLocale_strcmp_aux(_Locale_collate_t* lcol, - const wchar_t* s1, size_t n1, - const wchar_t* s2, size_t n2) { - int result = CSTR_EQUAL; - while (n1 > 0 || n2 > 0) { - DWORD size1 = trim_size_t_to_DWORD(n1); - DWORD size2 = trim_size_t_to_DWORD(n2); - result = CompareStringW(lcol->lc.id, 0, s1, size1, s2, size2); - if (result != CSTR_EQUAL) - break; - n1 -= size1; - n2 -= size2; - } - return result; -} - -int _WLocale_strcmp(_Locale_collate_t* lcol, - const wchar_t* s1, size_t n1, - const wchar_t* s2, size_t n2) { - int result; - result = _WLocale_strcmp_aux(lcol, s1, n1, s2, n2); - return (result == CSTR_EQUAL) ? 0 : (result == CSTR_LESS_THAN) ? -1 : 1; -} - -size_t _WLocale_strxfrm(_Locale_collate_t* lcol, - wchar_t* dst, size_t dst_size, - const wchar_t* src, size_t src_size) { - int result, i; - - /* see _Locale_strxfrm: */ - if (src_size > INT_MAX) { - if (dst != 0) { - _STLP_WCSNCPY(dst, dst_size, src, src_size); - } - return src_size; - } - if (dst_size > INT_MAX) { - dst_size = INT_MAX; - } - result = LCMapStringW(lcol->lc.id, LCMAP_SORTKEY, src, (int)src_size, dst, (int)dst_size); - if (result != 0 && dst != 0) { - for (i = result - 1; i >= 0; --i) { - dst[i] = ((unsigned char*)dst)[i]; - } - } - return result != 0 ? result - 1 : 0; -} - -/* Numeric */ -wchar_t _WLocale_decimal_point(_Locale_numeric_t* lnum) { - wchar_t buf[4]; - GetLocaleInfoW(lnum->lc.id, LOCALE_SDECIMAL, buf, 4); - return buf[0]; -} - -wchar_t _WLocale_thousands_sep(_Locale_numeric_t* lnum) { - wchar_t buf[4]; - GetLocaleInfoW(lnum->lc.id, LOCALE_STHOUSAND, buf, 4); - return buf[0]; -} - -const wchar_t * _WLocale_true(_Locale_numeric_t* lnum, wchar_t* buf, size_t bufSize) { - _STLP_MARK_PARAMETER_AS_UNUSED(lnum) - _STLP_MARK_PARAMETER_AS_UNUSED(buf) - _STLP_MARK_PARAMETER_AS_UNUSED(&bufSize) - return __wtrue_name; -} - -const wchar_t * _WLocale_false(_Locale_numeric_t* lnum, wchar_t* buf, size_t bufSize) { - _STLP_MARK_PARAMETER_AS_UNUSED(lnum) - _STLP_MARK_PARAMETER_AS_UNUSED(buf) - _STLP_MARK_PARAMETER_AS_UNUSED(&bufSize) - return __wfalse_name; -} - -/* Monetary */ -const wchar_t* _WLocale_int_curr_symbol(_Locale_monetary_t * lmon, wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(lmon->lc.id, LOCALE_SINTLSYMBOL, buf, (int)bufSize); return buf; } - -const wchar_t* _WLocale_currency_symbol(_Locale_monetary_t * lmon, wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(lmon->lc.id, LOCALE_SCURRENCY, buf, (int)bufSize); return buf; } - -wchar_t _WLocale_mon_decimal_point(_Locale_monetary_t * lmon) -{ return lmon->decimal_point[0]; } - -wchar_t _WLocale_mon_thousands_sep(_Locale_monetary_t * lmon) -{ return lmon->thousands_sep[0]; } - -const wchar_t* _WLocale_positive_sign(_Locale_monetary_t * lmon, wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(lmon->lc.id, LOCALE_SPOSITIVESIGN, buf, (int)bufSize); return buf; } - -const wchar_t* _WLocale_negative_sign(_Locale_monetary_t * lmon, wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(lmon->lc.id, LOCALE_SNEGATIVESIGN, buf, (int)bufSize); return buf; } - -/* Time */ -const wchar_t * _WLocale_full_monthname(_Locale_time_t * ltime, int month, - wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(ltime->lc.id, LOCALE_SMONTHNAME1 + month, buf, (int)bufSize); return buf; } - -const wchar_t * _WLocale_abbrev_monthname(_Locale_time_t * ltime, int month, - wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(ltime->lc.id, LOCALE_SABBREVMONTHNAME1 + month, buf, (int)bufSize); return buf; } - -const wchar_t * _WLocale_full_dayofweek(_Locale_time_t * ltime, int day, - wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(ltime->lc.id, LOCALE_SDAYNAME1 + day, buf, (int)bufSize); return buf; } - -const wchar_t * _WLocale_abbrev_dayofweek(_Locale_time_t * ltime, int day, - wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(ltime->lc.id, LOCALE_SABBREVDAYNAME1 + day, buf, (int)bufSize); return buf; } - -const wchar_t* _WLocale_am_str(_Locale_time_t* ltime, - wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(ltime->lc.id, LOCALE_S1159, buf, (int)bufSize); return buf; } - -const wchar_t* _WLocale_pm_str(_Locale_time_t* ltime, - wchar_t* buf, size_t bufSize) -{ GetLocaleInfoW(ltime->lc.id, LOCALE_S2359, buf, (int)bufSize); return buf; } diff --git a/build/stlport/src/codecvt.cpp b/build/stlport/src/codecvt.cpp deleted file mode 100644 index 113a262340a7..000000000000 --- a/build/stlport/src/codecvt.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include -#include - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// codecvt - -codecvt::~codecvt() {} - -int codecvt::do_length(state_type&, - const char* from, - const char* end, - size_t mx) const -{ return (int)(min) ( __STATIC_CAST(size_t, (end - from)), mx); } - -int codecvt::do_max_length() const _STLP_NOTHROW -{ return 1; } - -bool -codecvt::do_always_noconv() const _STLP_NOTHROW -{ return true; } - -int -codecvt::do_encoding() const _STLP_NOTHROW -{ return 1; } - -codecvt_base::result -codecvt::do_unshift(state_type& /* __state */, - char* __to, - char* /* __to_limit */, - char*& __to_next) const -{ __to_next = __to; return noconv; } - -codecvt_base::result -codecvt::do_in (state_type& /* __state */ , - const char* __from, - const char* /* __from_end */, - const char*& __from_next, - char* __to, - char* /* __to_end */, - char*& __to_next) const -{ __from_next = __from; __to_next = __to; return noconv; } - -codecvt_base::result -codecvt::do_out(state_type& /* __state */, - const char* __from, - const char* /* __from_end */, - const char*& __from_next, - char* __to, - char* /* __to_limit */, - char*& __to_next) const -{ __from_next = __from; __to_next = __to; return noconv; } - - -#if !defined (_STLP_NO_WCHAR_T) -//---------------------------------------------------------------------- -// codecvt - -codecvt::~codecvt() {} - - -codecvt::result -codecvt::do_out(state_type& /* state */, - const intern_type* from, - const intern_type* from_end, - const intern_type*& from_next, - extern_type* to, - extern_type* to_limit, - extern_type*& to_next) const { - ptrdiff_t len = (min) (from_end - from, to_limit - to); - copy(from, from + len, to); - from_next = from + len; - to_next = to + len; - return ok; -} - -codecvt::result -codecvt::do_in (state_type& /* state */, - const extern_type* from, - const extern_type* from_end, - const extern_type*& from_next, - intern_type* to, - intern_type* to_limit, - intern_type*& to_next) const { - ptrdiff_t len = (min) (from_end - from, to_limit - to); - copy(__REINTERPRET_CAST(const unsigned char*, from), - __REINTERPRET_CAST(const unsigned char*, from) + len, to); - from_next = from + len; - to_next = to + len; - return ok; -} - -codecvt::result -codecvt::do_unshift(state_type& /* state */, - extern_type* to, - extern_type* , - extern_type*& to_next) const { - to_next = to; - return noconv; -} - -int codecvt::do_encoding() const _STLP_NOTHROW -{ return 1; } - -bool codecvt::do_always_noconv() const _STLP_NOTHROW -{ return true; } - -int codecvt::do_length(state_type&, - const extern_type* from, - const extern_type* end, - size_t mx) const -{ return (int)(min) ((size_t) (end - from), mx); } - -int codecvt::do_max_length() const _STLP_NOTHROW -{ return 1; } -#endif /* wchar_t */ - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/src/collate.cpp b/build/stlport/src/collate.cpp deleted file mode 100644 index ee5540dfed07..000000000000 --- a/build/stlport/src/collate.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include - -_STLP_BEGIN_NAMESPACE - -// collate - -collate::~collate() {} - -int collate::do_compare(const char* low1, const char* high1, - const char* low2, const char* high2) const -{ return _STLP_PRIV __lexicographical_compare_3way(low1, high1, low2, high2); } - -string collate::do_transform(const char* low, const char* high) const -{ return string(low, high); } - -long collate::do_hash(const char* low, const char* high) const { - unsigned long result = 0; - for ( ; low < high; ++low) - result = 5 * result + *low; - return result; -} - -#if !defined (_STLP_NO_WCHAR_T) -// collate - -collate::~collate() {} - -int -collate::do_compare(const wchar_t* low1, const wchar_t* high1, - const wchar_t* low2, const wchar_t* high2) const -{ return _STLP_PRIV __lexicographical_compare_3way(low1, high1, low2, high2); } - -wstring collate::do_transform(const wchar_t* low, const wchar_t* high) const -{ return wstring(low, high); } - -long collate::do_hash(const wchar_t* low, const wchar_t* high) const { - unsigned long result = 0; - for ( ; low < high; ++low) - result = 5 * result + *low; - return result; -} -#endif - -_STLP_END_NAMESPACE - - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/src/complex.cpp b/build/stlport/src/complex.cpp deleted file mode 100644 index 6da5bc1a7c9a..000000000000 --- a/build/stlport/src/complex.cpp +++ /dev/null @@ -1,353 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include -#include - -#if defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB >= 1400) -// hypot is deprecated. -# if defined (_STLP_MSVC) -# pragma warning (disable : 4996) -# elif defined (__ICL) -# pragma warning (disable : 1478) -# endif -#endif - -_STLP_BEGIN_NAMESPACE - -// Complex division and square roots. - -// Absolute value -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC float _STLP_CALL abs(const complex& __z) -{ return ::hypot(__z._M_re, __z._M_im); } -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC double _STLP_CALL abs(const complex& __z) -{ return ::hypot(__z._M_re, __z._M_im); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC long double _STLP_CALL abs(const complex& __z) -{ return ::hypot(__z._M_re, __z._M_im); } -#endif - -// Phase - -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC float _STLP_CALL arg(const complex& __z) -{ return ::atan2(__z._M_im, __z._M_re); } - -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC double _STLP_CALL arg(const complex& __z) -{ return ::atan2(__z._M_im, __z._M_re); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC long double _STLP_CALL arg(const complex& __z) -{ return ::atan2(__z._M_im, __z._M_re); } -#endif - -// Construct a complex number from polar representation -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC complex _STLP_CALL polar(const float& __rho, const float& __phi) -{ return complex(__rho * ::cos(__phi), __rho * ::sin(__phi)); } -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC complex _STLP_CALL polar(const double& __rho, const double& __phi) -{ return complex(__rho * ::cos(__phi), __rho * ::sin(__phi)); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC complex _STLP_CALL polar(const long double& __rho, const long double& __phi) -{ return complex(__rho * ::cos(__phi), __rho * ::sin(__phi)); } -#endif - -// Division -template -static void _divT(const _Tp& __z1_r, const _Tp& __z1_i, - const _Tp& __z2_r, const _Tp& __z2_i, - _Tp& __res_r, _Tp& __res_i) { - _Tp __ar = __z2_r >= 0 ? __z2_r : -__z2_r; - _Tp __ai = __z2_i >= 0 ? __z2_i : -__z2_i; - - if (__ar <= __ai) { - _Tp __ratio = __z2_r / __z2_i; - _Tp __denom = __z2_i * (1 + __ratio * __ratio); - __res_r = (__z1_r * __ratio + __z1_i) / __denom; - __res_i = (__z1_i * __ratio - __z1_r) / __denom; - } - else { - _Tp __ratio = __z2_i / __z2_r; - _Tp __denom = __z2_r * (1 + __ratio * __ratio); - __res_r = (__z1_r + __z1_i * __ratio) / __denom; - __res_i = (__z1_i - __z1_r * __ratio) / __denom; - } -} - -template -static void _divT(const _Tp& __z1_r, - const _Tp& __z2_r, const _Tp& __z2_i, - _Tp& __res_r, _Tp& __res_i) { - _Tp __ar = __z2_r >= 0 ? __z2_r : -__z2_r; - _Tp __ai = __z2_i >= 0 ? __z2_i : -__z2_i; - - if (__ar <= __ai) { - _Tp __ratio = __z2_r / __z2_i; - _Tp __denom = __z2_i * (1 + __ratio * __ratio); - __res_r = (__z1_r * __ratio) / __denom; - __res_i = - __z1_r / __denom; - } - else { - _Tp __ratio = __z2_i / __z2_r; - _Tp __denom = __z2_r * (1 + __ratio * __ratio); - __res_r = __z1_r / __denom; - __res_i = - (__z1_r * __ratio) / __denom; - } -} - -void _STLP_CALL -complex::_div(const float& __z1_r, const float& __z1_i, - const float& __z2_r, const float& __z2_i, - float& __res_r, float& __res_i) -{ _divT(__z1_r, __z1_i, __z2_r, __z2_i, __res_r, __res_i); } - -void _STLP_CALL -complex::_div(const float& __z1_r, - const float& __z2_r, const float& __z2_i, - float& __res_r, float& __res_i) -{ _divT(__z1_r, __z2_r, __z2_i, __res_r, __res_i); } - - -void _STLP_CALL -complex::_div(const double& __z1_r, const double& __z1_i, - const double& __z2_r, const double& __z2_i, - double& __res_r, double& __res_i) -{ _divT(__z1_r, __z1_i, __z2_r, __z2_i, __res_r, __res_i); } - -void _STLP_CALL -complex::_div(const double& __z1_r, - const double& __z2_r, const double& __z2_i, - double& __res_r, double& __res_i) -{ _divT(__z1_r, __z2_r, __z2_i, __res_r, __res_i); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -void _STLP_CALL -complex::_div(const long double& __z1_r, const long double& __z1_i, - const long double& __z2_r, const long double& __z2_i, - long double& __res_r, long double& __res_i) -{ _divT(__z1_r, __z1_i, __z2_r, __z2_i, __res_r, __res_i); } - -void _STLP_CALL -complex::_div(const long double& __z1_r, - const long double& __z2_r, const long double& __z2_i, - long double& __res_r, long double& __res_i) -{ _divT(__z1_r, __z2_r, __z2_i, __res_r, __res_i); } -#endif - -//---------------------------------------------------------------------- -// Square root -template -static complex<_Tp> sqrtT(const complex<_Tp>& z) { - _Tp re = z._M_re; - _Tp im = z._M_im; - _Tp mag = ::hypot(re, im); - complex<_Tp> result; - - if (mag == 0.f) { - result._M_re = result._M_im = 0.f; - } else if (re > 0.f) { - result._M_re = ::sqrt(0.5f * (mag + re)); - result._M_im = im/result._M_re/2.f; - } else { - result._M_im = ::sqrt(0.5f * (mag - re)); - if (im < 0.f) - result._M_im = - result._M_im; - result._M_re = im/result._M_im/2.f; - } - return result; -} - -complex _STLP_CALL -sqrt(const complex& z) { return sqrtT(z); } - -complex _STLP_CALL -sqrt(const complex& z) { return sqrtT(z); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -complex _STLP_CALL -sqrt(const complex& z) { return sqrtT(z); } -#endif - -// exp, log, pow for complex, complex, and complex -//---------------------------------------------------------------------- -// exp -template -static complex<_Tp> expT(const complex<_Tp>& z) { - _Tp expx = ::exp(z._M_re); - return complex<_Tp>(expx * ::cos(z._M_im), - expx * ::sin(z._M_im)); -} -_STLP_DECLSPEC complex _STLP_CALL exp(const complex& z) -{ return expT(z); } - -_STLP_DECLSPEC complex _STLP_CALL exp(const complex& z) -{ return expT(z); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL exp(const complex& z) -{ return expT(z); } -#endif - -//---------------------------------------------------------------------- -// log10 -template -static complex<_Tp> log10T(const complex<_Tp>& z, const _Tp& ln10_inv) { - complex<_Tp> r; - - r._M_im = ::atan2(z._M_im, z._M_re) * ln10_inv; - r._M_re = ::log10(::hypot(z._M_re, z._M_im)); - return r; -} - -_STLP_DECLSPEC complex _STLP_CALL log10(const complex& z) -{ - const float LN10_INVF = 1.f / ::log(10.f); - return log10T(z, LN10_INVF); -} - -_STLP_DECLSPEC complex _STLP_CALL log10(const complex& z) -{ - const double LN10_INV = 1. / ::log10(10.); - return log10T(z, LN10_INV); -} - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL log10(const complex& z) -{ - const long double LN10_INVL = 1.l / ::log(10.l); - return log10T(z, LN10_INVL); -} -#endif - -//---------------------------------------------------------------------- -// log -template -static complex<_Tp> logT(const complex<_Tp>& z) { - complex<_Tp> r; - - r._M_im = ::atan2(z._M_im, z._M_re); - r._M_re = ::log(::hypot(z._M_re, z._M_im)); - return r; -} -_STLP_DECLSPEC complex _STLP_CALL log(const complex& z) -{ return logT(z); } - -_STLP_DECLSPEC complex _STLP_CALL log(const complex& z) -{ return logT(z); } - -#ifndef _STLP_NO_LONG_DOUBLE -_STLP_DECLSPEC complex _STLP_CALL log(const complex& z) -{ return logT(z); } -# endif - -//---------------------------------------------------------------------- -// pow -template -static complex<_Tp> powT(const _Tp& a, const complex<_Tp>& b) { - _Tp logr = ::log(a); - _Tp x = ::exp(logr * b._M_re); - _Tp y = logr * b._M_im; - - return complex<_Tp>(x * ::cos(y), x * ::sin(y)); -} - -template -static complex<_Tp> powT(const complex<_Tp>& z_in, int n) { - complex<_Tp> z = z_in; - z = _STLP_PRIV __power(z, (n < 0 ? -n : n), multiplies< complex<_Tp> >()); - if (n < 0) - return _Tp(1.0) / z; - else - return z; -} - -template -static complex<_Tp> powT(const complex<_Tp>& a, const _Tp& b) { - _Tp logr = ::log(::hypot(a._M_re,a._M_im)); - _Tp logi = ::atan2(a._M_im, a._M_re); - _Tp x = ::exp(logr * b); - _Tp y = logi * b; - - return complex<_Tp>(x * ::cos(y), x * ::sin(y)); -} - -template -static complex<_Tp> powT(const complex<_Tp>& a, const complex<_Tp>& b) { - _Tp logr = ::log(::hypot(a._M_re,a._M_im)); - _Tp logi = ::atan2(a._M_im, a._M_re); - _Tp x = ::exp(logr * b._M_re - logi * b._M_im); - _Tp y = logr * b._M_im + logi * b._M_re; - - return complex<_Tp>(x * ::cos(y), x * ::sin(y)); -} - -_STLP_DECLSPEC complex _STLP_CALL pow(const float& a, const complex& b) -{ return powT(a, b); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& z_in, int n) -{ return powT(z_in, n); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& a, const float& b) -{ return powT(a, b); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& a, const complex& b) -{ return powT(a, b); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const double& a, const complex& b) -{ return powT(a, b); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& z_in, int n) -{ return powT(z_in, n); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& a, const double& b) -{ return powT(a, b); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& a, const complex& b) -{ return powT(a, b); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL pow(const long double& a, - const complex& b) -{ return powT(a, b); } - - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& z_in, int n) -{ return powT(z_in, n); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& a, - const long double& b) -{ return powT(a, b); } - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex& a, - const complex& b) -{ return powT(a, b); } -#endif - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/complex_io.cpp b/build/stlport/src/complex_io.cpp deleted file mode 100644 index 4cb6636f634d..000000000000 --- a/build/stlport/src/complex_io.cpp +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include - -_STLP_BEGIN_NAMESPACE - -// Specializations for narrow characters; lets us avoid the nuisance of -// widening. -_STLP_OPERATOR_SPEC -basic_ostream >& _STLP_CALL -operator<< (basic_ostream >& __os, const complex& __z) -{ return __os << '(' << (double)__z.real() << ',' << (double)__z.imag() << ')'; } - -_STLP_OPERATOR_SPEC -basic_ostream >& _STLP_CALL -operator<< (basic_ostream >& __os, const complex& __z) -{ return __os << '(' << __z.real() << ',' << __z.imag() << ')'; } - -#ifndef _STLP_NO_LONG_DOUBLE -_STLP_OPERATOR_SPEC -basic_ostream >& _STLP_CALL -operator<< (basic_ostream >& __os, const complex& __z) -{ return __os << '(' << __z.real() << ',' << __z.imag() << ')'; } -#endif - -// Specialization for narrow characters; lets us avoid widen. -_STLP_OPERATOR_SPEC -basic_istream >& _STLP_CALL -operator>>(basic_istream >& __is, complex& __z) { - float __re = 0; - float __im = 0; - - char __c; - - __is >> __c; - if (__c == '(') { - __is >> __re >> __c; - if (__c == ',') - __is >> __im >> __c; - if (__c != ')') - __is.setstate(ios_base::failbit); - } - else { - __is.putback(__c); - __is >> __re; - } - - if (__is) - __z = complex(__re, __im); - return __is; -} - -_STLP_OPERATOR_SPEC -basic_istream >& _STLP_CALL -operator>>(basic_istream >& __is, complex& __z) { - double __re = 0; - double __im = 0; - - char __c; - - __is >> __c; - if (__c == '(') { - __is >> __re >> __c; - if (__c == ',') - __is >> __im >> __c; - if (__c != ')') - __is.setstate(ios_base::failbit); - } - else { - __is.putback(__c); - __is >> __re; - } - - if (__is) - __z = complex(__re, __im); - return __is; -} - -#ifndef _STLP_NO_LONG_DOUBLE -_STLP_OPERATOR_SPEC -basic_istream >& _STLP_CALL -operator>>(basic_istream >& __is, complex& __z) { - long double __re = 0; - long double __im = 0; - - char __c; - - __is >> __c; - if (__c == '(') { - __is >> __re >> __c; - if (__c == ',') - __is >> __im >> __c; - if (__c != ')') - __is.setstate(ios_base::failbit); - } - else { - __is.putback(__c); - __is >> __re; - } - - if (__is) - __z = complex(__re, __im); - return __is; -} -#endif - -// Force instantiation of complex I/O functions -#if !(defined (_STLP_NO_FORCE_INSTANTIATE) || defined (_STLP_NO_WCHAR_T)) - -_STLP_OPERATOR_SPEC basic_istream >& _STLP_CALL -operator>>(basic_istream >&, complex&); - -_STLP_OPERATOR_SPEC basic_istream >& _STLP_CALL -operator>>(basic_istream >&, complex&); - -#ifndef _STLP_NO_LONG_DOUBLE -_STLP_OPERATOR_SPEC basic_istream >& _STLP_CALL -operator>>(basic_istream >&, complex&); - -_STLP_OPERATOR_SPEC basic_ostream >& _STLP_CALL -operator<<(basic_ostream >&, const complex&); -#endif - -_STLP_OPERATOR_SPEC basic_ostream >& _STLP_CALL -operator<<(basic_ostream >&, const complex&); - -_STLP_OPERATOR_SPEC basic_ostream >& _STLP_CALL -operator<<(basic_ostream >&, const complex&); - -#endif /* _STLP_NO_WCHAR_T */ - -_STLP_END_NAMESPACE - - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/src/complex_trig.cpp b/build/stlport/src/complex_trig.cpp deleted file mode 100644 index 62d6be70fa00..000000000000 --- a/build/stlport/src/complex_trig.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - - -// Trigonometric and hyperbolic functions for complex, -// complex, and complex -#include -#include -#include - -_STLP_BEGIN_NAMESPACE - - -//---------------------------------------------------------------------- -// helpers -#if defined (__sgi) - static const union { unsigned int i; float f; } float_ulimit = { 0x42b2d4fc }; - static const float float_limit = float_ulimit.f; - static union { - struct { unsigned int h; unsigned int l; } w; - double d; - } double_ulimit = { 0x408633ce, 0x8fb9f87d }; - static const double double_limit = double_ulimit.d; - static union { - struct { unsigned int h[2]; unsigned int l[2]; } w; - long double ld; - } ldouble_ulimit = {0x408633ce, 0x8fb9f87e, 0xbd23b659, 0x4e9bd8b1}; -# if !defined (_STLP_NO_LONG_DOUBLE) -# define ldouble_limit ldouble_ulimit.ld -# endif -#else -# if defined (M_LN2) && defined (FLT_MAX_EXP) - static const float float_limit = float(M_LN2 * FLT_MAX_EXP); - static const double double_limit = M_LN2 * DBL_MAX_EXP; -# else - static const float float_limit = ::log(FLT_MAX); - static const double double_limit = ::log(DBL_MAX); -# endif -# if !defined (_STLP_NO_LONG_DOUBLE) -# if defined (M_LN2l) -# define ldouble_limit (M_LN2l * LDBL_MAX_EXP) -# else -# define ldouble_limit ::log(LDBL_MAX) -# endif -# endif -#endif - - -//---------------------------------------------------------------------- -// sin -template -static complex<_Tp> sinT(const complex<_Tp>& z) { - return complex<_Tp>(::sin(z._M_re) * ::cosh(z._M_im), - ::cos(z._M_re) * ::sinh(z._M_im)); -} - -_STLP_DECLSPEC complex _STLP_CALL sin(const complex& z) -{ return sinT(z); } - -_STLP_DECLSPEC complex _STLP_CALL sin(const complex& z) -{ return sinT(z); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL sin(const complex& z) -{ return sinT(z); } -#endif - -//---------------------------------------------------------------------- -// cos -template -static complex<_Tp> cosT(const complex<_Tp>& z) { - return complex<_Tp>(::cos(z._M_re) * ::cosh(z._M_im), - -::sin(z._M_re) * ::sinh(z._M_im)); -} - -_STLP_DECLSPEC complex _STLP_CALL cos(const complex& z) -{ return cosT(z); } - -_STLP_DECLSPEC complex _STLP_CALL cos(const complex& z) -{ return cosT(z); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL cos(const complex& z) -{ return cosT(z); } -#endif - -//---------------------------------------------------------------------- -// tan -template -static complex<_Tp> tanT(const complex<_Tp>& z, const _Tp& Tp_limit) { - _Tp re2 = 2.f * z._M_re; - _Tp im2 = 2.f * z._M_im; - - if (::abs(im2) > Tp_limit) - return complex<_Tp>(0.f, (im2 > 0 ? 1.f : -1.f)); - else { - _Tp den = ::cos(re2) + ::cosh(im2); - return complex<_Tp>(::sin(re2) / den, ::sinh(im2) / den); - } -} - -_STLP_DECLSPEC complex _STLP_CALL tan(const complex& z) -{ return tanT(z, float_limit); } - -_STLP_DECLSPEC complex _STLP_CALL tan(const complex& z) -{ return tanT(z, double_limit); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL tan(const complex& z) -{ return tanT(z, ldouble_limit); } -#endif - -//---------------------------------------------------------------------- -// sinh -template -static complex<_Tp> sinhT(const complex<_Tp>& z) { - return complex<_Tp>(::sinh(z._M_re) * ::cos(z._M_im), - ::cosh(z._M_re) * ::sin(z._M_im)); -} - -_STLP_DECLSPEC complex _STLP_CALL sinh(const complex& z) -{ return sinhT(z); } - -_STLP_DECLSPEC complex _STLP_CALL sinh(const complex& z) -{ return sinhT(z); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL sinh(const complex& z) -{ return sinhT(z); } -#endif - -//---------------------------------------------------------------------- -// cosh -template -static complex<_Tp> coshT(const complex<_Tp>& z) { - return complex<_Tp>(::cosh(z._M_re) * ::cos(z._M_im), - ::sinh(z._M_re) * ::sin(z._M_im)); -} - -_STLP_DECLSPEC complex _STLP_CALL cosh(const complex& z) -{ return coshT(z); } - -_STLP_DECLSPEC complex _STLP_CALL cosh(const complex& z) -{ return coshT(z); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL cosh(const complex& z) -{ return coshT(z); } -#endif - -//---------------------------------------------------------------------- -// tanh -template -static complex<_Tp> tanhT(const complex<_Tp>& z, const _Tp& Tp_limit) { - _Tp re2 = 2.f * z._M_re; - _Tp im2 = 2.f * z._M_im; - if (::abs(re2) > Tp_limit) - return complex<_Tp>((re2 > 0 ? 1.f : -1.f), 0.f); - else { - _Tp den = ::cosh(re2) + ::cos(im2); - return complex<_Tp>(::sinh(re2) / den, ::sin(im2) / den); - } -} - -_STLP_DECLSPEC complex _STLP_CALL tanh(const complex& z) -{ return tanhT(z, float_limit); } - -_STLP_DECLSPEC complex _STLP_CALL tanh(const complex& z) -{ return tanhT(z, double_limit); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL tanh(const complex& z) -{ return tanhT(z, ldouble_limit); } -#endif - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/ctype.cpp b/build/stlport/src/ctype.cpp deleted file mode 100644 index b1e84b156869..000000000000 --- a/build/stlport/src/ctype.cpp +++ /dev/null @@ -1,486 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include -#include - -#include "c_locale.h" - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// ctype - -// The classic table: static data members. - -#if !defined (_STLP_STATIC_CONST_INIT_BUG) && !defined (_STLP_NO_STATIC_CONST_DEFINITION) -//*TY 02/25/2000 - added workaround for MPW compilers; they confuse on in-class static const -const size_t ctype::table_size; -#endif - -// This macro is specifically for platforms where isprint() relies -// on separate flag - -const ctype_base::mask* -ctype::classic_table() _STLP_NOTHROW { - /* Ctype table for the ASCII character set. */ - static const ctype_base::mask _S_classic_table[table_size] = { - cntrl /* null */, - cntrl /* ^A */, - cntrl /* ^B */, - cntrl /* ^C */, - cntrl /* ^D */, - cntrl /* ^E */, - cntrl /* ^F */, - cntrl /* ^G */, - cntrl /* ^H */, - ctype_base::mask(space | cntrl) /* tab */, - ctype_base::mask(space | cntrl) /* LF */, - ctype_base::mask(space | cntrl) /* ^K */, - ctype_base::mask(space | cntrl) /* FF */, - ctype_base::mask(space | cntrl) /* ^M */, - cntrl /* ^N */, - cntrl /* ^O */, - cntrl /* ^P */, - cntrl /* ^Q */, - cntrl /* ^R */, - cntrl /* ^S */, - cntrl /* ^T */, - cntrl /* ^U */, - cntrl /* ^V */, - cntrl /* ^W */, - cntrl /* ^X */, - cntrl /* ^Y */, - cntrl /* ^Z */, - cntrl /* esc */, - cntrl /* ^\ */, - cntrl /* ^] */, - cntrl /* ^^ */, - cntrl /* ^_ */, - ctype_base::mask(space | print) /* */, - ctype_base::mask(punct | print) /* ! */, - ctype_base::mask(punct | print) /* " */, - ctype_base::mask(punct | print) /* # */, - ctype_base::mask(punct | print) /* $ */, - ctype_base::mask(punct | print) /* % */, - ctype_base::mask(punct | print) /* & */, - ctype_base::mask(punct | print) /* ' */, - ctype_base::mask(punct | print) /* ( */, - ctype_base::mask(punct | print) /* ) */, - ctype_base::mask(punct | print) /* * */, - ctype_base::mask(punct | print) /* + */, - ctype_base::mask(punct | print) /* , */, - ctype_base::mask(punct | print) /* - */, - ctype_base::mask(punct | print) /* . */, - ctype_base::mask(punct | print) /* / */, - ctype_base::mask(digit | print | xdigit) /* 0 */, - ctype_base::mask(digit | print | xdigit) /* 1 */, - ctype_base::mask(digit | print | xdigit) /* 2 */, - ctype_base::mask(digit | print | xdigit) /* 3 */, - ctype_base::mask(digit | print | xdigit) /* 4 */, - ctype_base::mask(digit | print | xdigit) /* 5 */, - ctype_base::mask(digit | print | xdigit) /* 6 */, - ctype_base::mask(digit | print | xdigit) /* 7 */, - ctype_base::mask(digit | print | xdigit) /* 8 */, - ctype_base::mask(digit | print | xdigit) /* 9 */, - ctype_base::mask(punct | print) /* : */, - ctype_base::mask(punct | print) /* ; */, - ctype_base::mask(punct | print) /* < */, - ctype_base::mask(punct | print) /* = */, - ctype_base::mask(punct | print) /* > */, - ctype_base::mask(punct | print) /* ? */, - ctype_base::mask(punct | print) /* ! */, - ctype_base::mask(alpha | print | upper | xdigit) /* A */, - ctype_base::mask(alpha | print | upper | xdigit) /* B */, - ctype_base::mask(alpha | print | upper | xdigit) /* C */, - ctype_base::mask(alpha | print | upper | xdigit) /* D */, - ctype_base::mask(alpha | print | upper | xdigit) /* E */, - ctype_base::mask(alpha | print | upper | xdigit) /* F */, - ctype_base::mask(alpha | print | upper) /* G */, - ctype_base::mask(alpha | print | upper) /* H */, - ctype_base::mask(alpha | print | upper) /* I */, - ctype_base::mask(alpha | print | upper) /* J */, - ctype_base::mask(alpha | print | upper) /* K */, - ctype_base::mask(alpha | print | upper) /* L */, - ctype_base::mask(alpha | print | upper) /* M */, - ctype_base::mask(alpha | print | upper) /* N */, - ctype_base::mask(alpha | print | upper) /* O */, - ctype_base::mask(alpha | print | upper) /* P */, - ctype_base::mask(alpha | print | upper) /* Q */, - ctype_base::mask(alpha | print | upper) /* R */, - ctype_base::mask(alpha | print | upper) /* S */, - ctype_base::mask(alpha | print | upper) /* T */, - ctype_base::mask(alpha | print | upper) /* U */, - ctype_base::mask(alpha | print | upper) /* V */, - ctype_base::mask(alpha | print | upper) /* W */, - ctype_base::mask(alpha | print | upper) /* X */, - ctype_base::mask(alpha | print | upper) /* Y */, - ctype_base::mask(alpha | print | upper) /* Z */, - ctype_base::mask(punct | print) /* [ */, - ctype_base::mask(punct | print) /* \ */, - ctype_base::mask(punct | print) /* ] */, - ctype_base::mask(punct | print) /* ^ */, - ctype_base::mask(punct | print) /* _ */, - ctype_base::mask(punct | print) /* ` */, - ctype_base::mask(alpha | print | lower | xdigit) /* a */, - ctype_base::mask(alpha | print | lower | xdigit) /* b */, - ctype_base::mask(alpha | print | lower | xdigit) /* c */, - ctype_base::mask(alpha | print | lower | xdigit) /* d */, - ctype_base::mask(alpha | print | lower | xdigit) /* e */, - ctype_base::mask(alpha | print | lower | xdigit) /* f */, - ctype_base::mask(alpha | print | lower) /* g */, - ctype_base::mask(alpha | print | lower) /* h */, - ctype_base::mask(alpha | print | lower) /* i */, - ctype_base::mask(alpha | print | lower) /* j */, - ctype_base::mask(alpha | print | lower) /* k */, - ctype_base::mask(alpha | print | lower) /* l */, - ctype_base::mask(alpha | print | lower) /* m */, - ctype_base::mask(alpha | print | lower) /* n */, - ctype_base::mask(alpha | print | lower) /* o */, - ctype_base::mask(alpha | print | lower) /* p */, - ctype_base::mask(alpha | print | lower) /* q */, - ctype_base::mask(alpha | print | lower) /* r */, - ctype_base::mask(alpha | print | lower) /* s */, - ctype_base::mask(alpha | print | lower) /* t */, - ctype_base::mask(alpha | print | lower) /* u */, - ctype_base::mask(alpha | print | lower) /* v */, - ctype_base::mask(alpha | print | lower) /* w */, - ctype_base::mask(alpha | print | lower) /* x */, - ctype_base::mask(alpha | print | lower) /* y */, - ctype_base::mask(alpha | print | lower) /* z */, - ctype_base::mask(punct | print) /* { */, - ctype_base::mask(punct | print) /* | */, - ctype_base::mask(punct | print) /* } */, - ctype_base::mask(punct | print) /* ~ */, - cntrl /* del (0x7f)*/, - /* ASCII is a 7-bit code, so everything else is non-ASCII */ - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), - ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0), ctype_base::mask(0) - }; - return _S_classic_table; -} - -// For every c in the range 0 <= c < 256, _S_upper[c] is the -// uppercased version of c and _S_lower[c] is the lowercased -// version. As before, these two tables assume the ASCII character -// set. - -const unsigned char _S_upper[ctype::table_size] = -{ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, - 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, - 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, - 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, - 0x60, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, - 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, - 0x58, 0x59, 0x5a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, - 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, - 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; - -const unsigned char _S_lower[ctype::table_size] = -{ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, - 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, - 0x40, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, - 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, - 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, - 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, - 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff -}; - -//An helper struct to check wchar_t index without generating warnings -//under some compilers (gcc) because of a limited range of value -//(when wchar_t is unsigned) -template -struct _WCharIndexT; - -#if !(defined (__BORLANDC__) && !defined(__linux__)) && \ - !(defined (__GNUC__) && (defined (__MINGW32__) || defined (__CYGWIN__))) && \ - !defined (__ICL) -_STLP_TEMPLATE_NULL -struct _WCharIndexT { - static bool in_range(wchar_t c, size_t upperBound) { - return c >= 0 && size_t(c) < upperBound; - } -}; -#endif - -_STLP_TEMPLATE_NULL -struct _WCharIndexT { - static bool in_range(wchar_t c, size_t upperBound) { - return size_t(c) < upperBound; - } -}; - -typedef _WCharIndexT _WCharIndex; - -// Some helper functions used in ctype<>::scan_is and scan_is_not. - -struct _Ctype_is_mask : public unary_function { - ctype_base::mask _Mask; - const ctype_base::mask* _M_table; - - _Ctype_is_mask(ctype_base::mask __m, const ctype_base::mask* __t) : _Mask(__m), _M_table(__t) {} - bool operator()(char __c) const { return (_M_table[(unsigned char) __c] & _Mask) != 0; } -}; - -struct _Ctype_not_mask : public unary_function { - ctype_base::mask _Mask; - const ctype_base::mask* _M_table; - - _Ctype_not_mask(ctype_base::mask __m, const ctype_base::mask* __t) : _Mask(__m), _M_table(__t) {} - bool operator()(char __c) const { return (_M_table[(unsigned char) __c] & _Mask) == 0; } -}; - -ctype::ctype(const ctype_base::mask * __tab, bool __del, size_t __refs) : - locale::facet(__refs), - _M_ctype_table(__tab ? __tab : classic_table()), - _M_delete(__tab && __del) -{} - -ctype::~ctype() { - if (_M_delete) - delete[] __CONST_CAST(ctype_base::mask *, _M_ctype_table); -} - -const char* -#if defined (__DMC__) -_STLP_DECLSPEC -#endif -ctype::scan_is(ctype_base::mask __m, const char* __low, const char* __high) const -{ return _STLP_STD::find_if(__low, __high, _Ctype_is_mask(__m, _M_ctype_table)); } - -const char* -#if defined (__DMC__) -_STLP_DECLSPEC -#endif -ctype::scan_not(ctype_base::mask __m, const char* __low, const char* __high) const -{ return _STLP_STD::find_if(__low, __high, _Ctype_not_mask(__m, _M_ctype_table)); } - -char ctype::do_toupper(char __c) const -{ return (char) _S_upper[(unsigned char) __c]; } -char ctype::do_tolower(char __c) const -{ return (char) _S_lower[(unsigned char) __c]; } - -const char* ctype::do_toupper(char* __low, const char* __high) const { - for ( ; __low < __high; ++__low) - *__low = (char) _S_upper[(unsigned char) *__low]; - return __high; -} -const char* ctype::do_tolower(char* __low, const char* __high) const { - for ( ; __low < __high; ++__low) - *__low = (char) _S_lower[(unsigned char) *__low]; - return __high; -} - -char -ctype::do_widen(char __c) const { return __c; } - -const char* -ctype::do_widen(const char* __low, const char* __high, - char* __to) const { - _STLP_PRIV __copy_trivial(__low, __high, __to); - return __high; -} -char -ctype::do_narrow(char __c, char /* dfault */ ) const { return __c; } -const char* -ctype::do_narrow(const char* __low, const char* __high, - char /* dfault */, char* __to) const { - _STLP_PRIV __copy_trivial(__low, __high, __to); - return __high; -} - - -#if !defined (_STLP_NO_WCHAR_T) - -struct _Ctype_w_is_mask : public unary_function { - ctype_base::mask M; - const ctype_base::mask* table; - - _Ctype_w_is_mask(ctype_base::mask m, const ctype_base::mask* t) - : M(m), table(t) {} - bool operator()(wchar_t c) const - { return _WCharIndex::in_range(c, ctype::table_size) && (table[c] & M); } -}; - -//---------------------------------------------------------------------- -// ctype - -ctype::~ctype() {} - - -bool ctype::do_is(ctype_base::mask m, wchar_t c) const { - const ctype_base::mask * table = ctype::classic_table(); - return _WCharIndex::in_range(c, ctype::table_size) && (m & table[c]); -} - -const wchar_t* ctype::do_is(const wchar_t* low, const wchar_t* high, - ctype_base::mask * vec) const { - // boris : not clear if this is the right thing to do... - const ctype_base::mask * table = ctype::classic_table(); - wchar_t c; - for ( ; low < high; ++low, ++vec) { - c = *low; - *vec = _WCharIndex::in_range(c, ctype::table_size) ? table[c] : ctype_base::mask(0); - } - return high; -} - -const wchar_t* -ctype::do_scan_is(ctype_base::mask m, - const wchar_t* low, const wchar_t* high) const { - return find_if(low, high, _Ctype_w_is_mask(m, ctype::classic_table())); -} - - -const wchar_t* -ctype::do_scan_not(ctype_base::mask m, - const wchar_t* low, const wchar_t* high) const { - return find_if(low, high, not1(_Ctype_w_is_mask(m, ctype::classic_table()))); -} - -wchar_t ctype::do_toupper(wchar_t c) const { - return _WCharIndex::in_range(c, ctype::table_size) ? (wchar_t)_S_upper[c] - : c; -} - -const wchar_t* -ctype::do_toupper(wchar_t* low, const wchar_t* high) const { - for ( ; low < high; ++low) { - wchar_t c = *low; - *low = _WCharIndex::in_range(c, ctype::table_size) ? (wchar_t)_S_upper[c] - : c; - } - return high; -} - -wchar_t ctype::do_tolower(wchar_t c) const { - return _WCharIndex::in_range(c, ctype::table_size) ? (wchar_t)_S_lower[c] - : c; -} - -const wchar_t* -ctype::do_tolower(wchar_t* low, const wchar_t* high) const { - for ( ; low < high; ++low) { - wchar_t c = *low; - *low = _WCharIndex::in_range(c, ctype::table_size) ? (wchar_t)_S_lower[c] - : c; - } - return high; -} - -wchar_t ctype::do_widen(char c) const { - return (wchar_t)(unsigned char)c; -} - -const char* -ctype::do_widen(const char* low, const char* high, - wchar_t* dest) const { - while (low != high) - *dest++ = (wchar_t)(unsigned char)*low++; - return high; -} - -char ctype::do_narrow(wchar_t c, char dfault) const -{ return (unsigned char)c == c ? (char)c : dfault; } - -const wchar_t* ctype::do_narrow(const wchar_t* low, - const wchar_t* high, - char dfault, char* dest) const { - while (low != high) { - wchar_t c = *low++; - *dest++ = (unsigned char)c == c ? (char)c : dfault; - } - - return high; -} - -# endif -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/src/cxa.c b/build/stlport/src/cxa.c deleted file mode 100644 index 998170e0f110..000000000000 --- a/build/stlport/src/cxa.c +++ /dev/null @@ -1,198 +0,0 @@ -#include "stlport_prefix.h" - -#if defined(__unix) && defined(__GNUC__) - -#ifdef __FreeBSD__ -# include -#endif - -#if (defined(__FreeBSD__) && (__FreeBSD_version < 503001)) || defined(__sun) || defined (__hpux) -/* Note: __cxa_finalize and __cxa_atexit present in libc in FreeBSD 5.3 */ - -#include -#include -#include - -/* __asm__ (".symver " "__cxa_finalize" "," "__cxa_finalize" "@" "STLPORT_5_0_0"); */ -/* __asm__ (".symver " "__cxa_finalize" "," "__cxa_finalize" "@@" "STLPORT_5_0_0"); */ - -/* Not atomic! */ -/* But we can use static mutexes here: I hope that performance issue isn't very - significant on unloading (for only few calls, ~10) - ptr */ - -/* -#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \ - ({ __typeof (mem) __gmemp = (mem); \ - __typeof (*mem) __gnewval = (newval); \ - \ - *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; }) -*/ - -enum { - ef_free, /* `ef_free' MUST be zero! */ - ef_us, - ef_on, - ef_at, - ef_cxa -}; - -struct exit_function -{ - /* `flavour' should be of type of the `enum' above but since we need - this element in an atomic operation we have to use `long int'. */ - long int flavor; - union { - void (*at)(void); - struct { - void (*fn)(int status, void *arg); - void *arg; - } on; - struct { - void (*fn)(void *arg, int status); - void *arg; - void *dso_handle; - } cxa; - } func; -}; - -struct exit_function_list -{ - struct exit_function_list *next; - size_t idx; - struct exit_function fns[32]; -}; - -struct exit_function *__new_exitfn (void); - -/* Register a function to be called by exit or when a shared library - is unloaded. This function is only called from code generated by - the C++ compiler. */ -int __cxa_atexit(void (*func)(void *), void *arg, void *d) -{ - struct exit_function *new = __new_exitfn (); - - if ( new == NULL ) - return -1; - - new->flavor = ef_cxa; - new->func.cxa.fn = (void (*) (void *, int)) func; - new->func.cxa.arg = arg; - new->func.cxa.dso_handle = d; - return 0; -} - - -/* We change global data, so we need locking. */ -#ifdef __linux__ -static pthread_mutex_t lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; -#endif -/* #ifdef __FreeBSD__ */ -#if 0 -static pthread_mutex_t lock = - { PTHREAD_MUTEX_RECURSIVE /* PTHREAD_MUTEX_DEFAULT */, PTHREAD_PRIO_NONE, {NULL,NULL}, - NULL, { NULL }, /* MUTEX_FLAGS_PRIVATE */ 0x1, 0, 0, 0, {NULL, NULL}, - { 0, 0, 0, 0 } }; -#endif -#ifdef __sun -static pthread_mutex_t lock = - {{0, 0, 0, PTHREAD_MUTEX_RECURSIVE, _MUTEX_MAGIC}, {{{0}}}, 0}; -#endif -#ifdef __hpux -static pthread_mutex_t lock = PTHREAD_MUTEX_RECURSIVE_INITIALIZER_NP; -# ifdef __ia64 -void *__dso_handle = (void *) &__dso_handle; -# endif -#endif - - -static struct exit_function_list initial; -struct exit_function_list *__exit_funcs = &initial; - -struct exit_function *__new_exitfn(void) -{ - struct exit_function_list *l; - size_t i = 0; - -#ifndef __FreeBSD__ - pthread_mutex_lock( &lock ); -#endif - - for (l = __exit_funcs; l != NULL; l = l->next) { - for (i = 0; i < l->idx; ++i) - if (l->fns[i].flavor == ef_free) - break; - if ( i < l->idx ) - break; - - if (l->idx < sizeof (l->fns) / sizeof (l->fns[0])) { - i = l->idx++; - break; - } - } - - if (l == NULL) { - l = (struct exit_function_list *)malloc( sizeof(struct exit_function_list) ); - if (l != NULL) { - l->next = __exit_funcs; - __exit_funcs = l; - - l->idx = 1; - i = 0; - } - } - - /* Mark entry as used, but we don't know the flavor now. */ - if ( l != NULL ) - l->fns[i].flavor = ef_us; - -#ifndef __FreeBSD__ - pthread_mutex_unlock( &lock ); -#endif - - return l == NULL ? NULL : &l->fns[i]; -} - -/* If D is non-NULL, call all functions registered with `__cxa_atexit' - with the same dso handle. Otherwise, if D is NULL, call all of the - registered handlers. */ - -/* - * Note, that original __cxa_finalize don't use lock, but use __exit_funcs - * i.e. global data. - */ -void __cxa_finalize(void *d) -{ - struct exit_function_list *funcs; - -#ifndef __FreeBSD__ - pthread_mutex_lock( &lock ); -#endif - - for (funcs = __exit_funcs; funcs; funcs = funcs->next) { - struct exit_function *f; - - for (f = &funcs->fns[funcs->idx - 1]; f >= &funcs->fns[0]; --f) { - if ( (d == NULL || d == f->func.cxa.dso_handle) && (f->flavor == ef_cxa) ) { - f->flavor = ef_free; - (*f->func.cxa.fn) (f->func.cxa.arg, 0); - } - } - } - - /* Remove the registered fork handlers. We do not have to - unregister anything if the program is going to terminate anyway. */ -#ifdef UNREGISTER_ATFORK - if (d != NULL) - UNREGISTER_ATFORK (d); -#endif -#ifndef __FreeBSD__ - pthread_mutex_unlock( &lock ); -#endif -} - -/* __asm__ (".symver " "__cxa_finalize" "," "__cxa_finalize" "@@" "STLPORT_5_0_0"); */ -/* void __cxa_finalize(void *d) __attribute__ ((weak)); */ - -#endif /* OS name */ -#endif /* __unix */ - diff --git a/build/stlport/src/details/fstream_stdio.cpp b/build/stlport/src/details/fstream_stdio.cpp deleted file mode 100644 index 8392ffdebc9f..000000000000 --- a/build/stlport/src/details/fstream_stdio.cpp +++ /dev/null @@ -1,387 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if defined (__SUNPPRO_CC) && !defined (_STLP_NO_NEW_C_HEADERS) -# include -// For sunpro, it chokes if time.h is included through stat.h -#endif - -#include - -#ifdef __CYGWIN__ -# define __int64 long long -#endif - -#include -#if !defined(__ISCPP__) -extern "C" { -# include -} -#endif - -#if defined( __MSL__ ) -# include -#endif - -#if defined(__ISCPP__) -# include -#endif - -#if defined(__BEOS__) && defined(__INTEL__) -# include -# include // For _fstat -#endif - -#if defined (_STLP_MSVC) || defined (__MINGW32__) -# include -# define S_IREAD _S_IREAD -# define S_IWRITE _S_IWRITE -# define S_IFREG _S_IFREG - // map permission masks -# ifndef S_IRUSR -# define S_IRUSR _S_IREAD -# define S_IWUSR _S_IWRITE -# endif -# ifndef S_IRGRP -# define S_IRGRP _S_IREAD -# define S_IWGRP _S_IWRITE -# endif -# ifndef S_IROTH -# define S_IROTH _S_IREAD -# define S_IWOTH _S_IWRITE -# endif - -# ifndef O_RDONLY -# define O_RDONLY _O_RDONLY -# define O_WRONLY _O_WRONLY -# define O_RDWR _O_RDWR -# define O_APPEND _O_APPEND -# define O_CREAT _O_CREAT -# define O_TRUNC _O_TRUNC -# define O_TEXT _O_TEXT -# define O_BINARY _O_BINARY -# endif - -# ifndef O_ACCMODE -# define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) -# endif -#endif - -const _STLP_fd INVALID_STLP_FD = -1; - - -# ifdef __MSL__ -# define _O_TEXT 0x0 -# if !defined( O_TEXT ) -# define O_TEXT _O_TEXT -# endif -# define _S_IFREG S_IFREG -# define S_IREAD S_IRUSR -# define S_IWRITE S_IWUSR -# define S_IEXEC S_IXUSR -# define _S_IWRITE S_IWRITE -# define _S_IREAD S_IREAD -# define _open open -# define _close close -# define _read read -# define _write write -# endif - -_STLP_BEGIN_NAMESPACE - -// Compare with streamoff definition in stl/char_traits.h! - -#if defined (_STLP_USE_DEFAULT_FILE_OFFSET) || \ - (!defined(_LARGEFILE_SOURCE) && !defined(_LARGEFILE64_SOURCE)) -# define FOPEN fopen -# define FSEEK fseek -# define FSTAT fstat -# define STAT stat -# define FTELL ftell -#else -# define FOPEN fopen64 -# define FSEEK fseeko64 -# define FSTAT fstat64 -# define STAT stat64 -# define FTELL ftello64 -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Helper functions for _Filebuf_base. - -static bool __is_regular_file(_STLP_fd fd) { - struct STAT buf; - return FSTAT(fd, &buf) == 0 && (buf.st_mode & S_IFREG) != 0 ; -} - -// Number of characters in the file. -static streamoff __file_size(_STLP_fd fd) { - streamoff ret = 0; - - struct STAT buf; - if (FSTAT(fd, &buf) == 0 && (buf.st_mode & S_IFREG) != 0) - ret = buf.st_size > 0 ? buf.st_size : 0; - - return ret; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -// All version of Unix have mmap and lseek system calls. Some also have -// longer versions of those system calls to accommodate 64-bit offsets. -// If we're on a Unix system, define some macros to encapsulate those -// differences. - -size_t _Filebuf_base::_M_page_size = 4096; - -_Filebuf_base::_Filebuf_base() - : _M_file_id(INVALID_STLP_FD), - _M_openmode(0), - _M_is_open(false), - _M_should_close(false) -{} - -void _Filebuf_base::_S_initialize() -{ - -} - -// Return the size of the file. This is a wrapper for stat. -// Returns zero if the size cannot be determined or is ill-defined. -streamoff _Filebuf_base::_M_file_size() -{ - return _STLP_PRIV __file_size(_M_file_id); -} - -bool _Filebuf_base::_M_open(const char* name, ios_base::openmode openmode, - long permission) -{ - _STLP_fd file_no; - - if (_M_is_open) - return false; - - // use FILE-based i/o - const char* flags; - - switch (openmode & (~ios_base::ate)) { - case ios_base::out: - case ios_base::out | ios_base::trunc: - flags = "w"; - break; - - case ios_base::out | ios_base::binary: - case ios_base::out | ios_base::trunc | ios_base::binary: - flags = "wb"; - break; - - case ios_base::out | ios_base::app: - flags = "a"; - break; - - case ios_base::out | ios_base::app | ios_base::binary: - flags = "ab"; - break; - - case ios_base::in: - flags = "r"; - break; - - case ios_base::in | ios_base::binary: - flags = "rb"; - break; - - case ios_base::in | ios_base::out: - flags = "r+"; - break; - - case ios_base::in | ios_base::out | ios_base::binary: - flags = "r+b"; - break; - - case ios_base::in | ios_base::out | ios_base::trunc: - flags = "w+"; - break; - - case ios_base::in | ios_base::out | ios_base::trunc | ios_base::binary: - flags = "w+b"; - break; - - default: // The above are the only combinations of - return false; // flags allowed by the C++ standard. - } - - // fbp : TODO : set permissions ! - (void)permission; // currently unused //*TY 02/26/2000 - added to suppress warning message - _M_file = FOPEN(name, flags); - - if (_M_file) { - file_no = fileno(_M_file); - } else { - return false; - } - - // unset buffering immediately - setbuf(_M_file, 0); - - _M_is_open = true; - - if (openmode & ios_base::ate) { - if (FSEEK(_M_file, 0, SEEK_END) != 0) - _M_is_open = false; - } - - _M_file_id = file_no; - _M_should_close = _M_is_open; - _M_openmode = openmode; - - if (_M_is_open) - _M_regular_file = _STLP_PRIV __is_regular_file(_M_file_id); - - return (_M_is_open != 0); -} - - -bool _Filebuf_base::_M_open(const char* name, ios_base::openmode openmode) -{ - // This doesn't really grant everyone in the world read/write - // access. On Unix, file-creation system calls always clear - // bits that are set in the umask from the permissions flag. - return this->_M_open(name, openmode, S_IRUSR | S_IWUSR | S_IRGRP | - S_IWGRP | S_IROTH | S_IWOTH); -} - -// Associated the filebuf with a file descriptor pointing to an already- -// open file. Mode is set to be consistent with the way that the file -// was opened. -bool _Filebuf_base::_M_open( int file_no, ios_base::openmode ) -{ - if (_M_is_open || file_no < 0) - return false; - - struct STAT buf; - if (FSTAT(file_no, &buf) != 0) - return false; - int mode = buf.st_mode; - - switch ( mode & (S_IWRITE | S_IREAD) ) { - case S_IREAD: - _M_openmode = ios_base::in; - break; - case S_IWRITE: - _M_openmode = ios_base::out; - break; - case (S_IWRITE | S_IREAD): - _M_openmode = ios_base::in | ios_base::out; - break; - default: - return false; - } - _M_file_id = file_no; - _M_is_open = true; - _M_should_close = false; - _M_regular_file = _STLP_PRIV __is_regular_file(_M_file_id); - return true; -} - -bool _Filebuf_base::_M_close() -{ - if (!_M_is_open) - return false; - - bool ok = _M_should_close ? (fclose(_M_file) == 0) : true; - - _M_is_open = _M_should_close = false; - _M_openmode = 0; - return ok; -} - -// Read up to n characters into a buffer. Return value is number of -// characters read. -ptrdiff_t _Filebuf_base::_M_read(char* buf, ptrdiff_t n) { - return fread(buf, 1, n, _M_file); -} - -// Write n characters from a buffer. Return value: true if we managed -// to write the entire buffer, false if we didn't. -bool _Filebuf_base::_M_write(char* buf, ptrdiff_t n) -{ - for (;;) { - ptrdiff_t written = fwrite(buf, 1, n, _M_file); - - if (n == written) { - return true; - } - - if (written > 0 && written < n) { - n -= written; - buf += written; - } else { - return false; - } - } -} - -// Wrapper for lseek or the like. -streamoff _Filebuf_base::_M_seek(streamoff offset, ios_base::seekdir dir) -{ - int whence; - - switch ( dir ) { - case ios_base::beg: - if (offset < 0 /* || offset > _M_file_size() */ ) - return streamoff(-1); - whence = SEEK_SET; - break; - case ios_base::cur: - whence = SEEK_CUR; - break; - case ios_base::end: - if (/* offset > 0 || */ -offset > _M_file_size() ) - return streamoff(-1); - whence = SEEK_END; - break; - default: - return streamoff(-1); - } - - if ( FSEEK(_M_file, offset, whence) == 0 ) { - return FTELL(_M_file); - } - - return streamoff(-1); -} - - -// Attempts to memory-map len bytes of the current file, starting -// at position offset. Precondition: offset is a multiple of the -// page size. Postcondition: return value is a null pointer if the -// memory mapping failed. Otherwise the return value is a pointer to -// the memory-mapped file and the file position is set to offset. -void *_Filebuf_base::_M_mmap(streamoff, streamoff ) -{ - return 0; -} - -void _Filebuf_base::_M_unmap(void*, streamoff) -{ - // precondition : there is a valid mapping at the moment -} - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/details/fstream_unistd.cpp b/build/stlport/src/details/fstream_unistd.cpp deleted file mode 100644 index 744088302f57..000000000000 --- a/build/stlport/src/details/fstream_unistd.cpp +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if defined (__SUNPPRO_CC) && !defined (_STLP_NO_NEW_C_HEADERS) -# include -// For sunpro, it chokes if time.h is included through stat.h -#endif - -#include - -#ifdef __CYGWIN__ -# define __int64 long long -#endif - -extern "C" { -// open/close/read/write -#include // For stat -#if !defined (_CRAY) && ! defined (__EMX__) -# include // For mmap -#endif - -// on HP-UX 11, this one contradicts with pthread.h on pthread_atfork, unless we unset this -#if defined (__hpux) && defined (__GNUC__) -# undef _INCLUDE_POSIX1C_SOURCE -#endif - -#include -#include -} - -#ifdef __APPLE__ -# include -#endif - -const _STLP_fd INVALID_STLP_FD = -1; - -#ifndef O_ACCMODE -# define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) -#endif - -// Compare with streamoff definition in stl/char_traits.h! -#if defined (_STLP_USE_DEFAULT_FILE_OFFSET) || \ - (!defined(_LARGEFILE_SOURCE) && !defined (_LARGEFILE64_SOURCE)) -# define FSTAT fstat -# define STAT stat -# define LSEEK lseek -# define MMAP mmap -# define OPEN open -#else -# define FSTAT fstat64 -# define STAT stat64 -# define LSEEK lseek64 -# define MMAP mmap64 -# define OPEN open64 -#endif - -#ifndef MAP_FAILED /* MMAP failure return code */ -# define MAP_FAILED -1 -#endif - -_STLP_BEGIN_NAMESPACE - -static ios_base::openmode flag_to_openmode(int mode) -{ - ios_base::openmode ret = ios_base::__default_mode; - - switch ( mode & O_ACCMODE ) { - case O_RDONLY: - ret = ios_base::in; - break; - case O_WRONLY: - ret = ios_base::out; - break; - case O_RDWR: - ret = ios_base::in | ios_base::out; - break; - } - - if ( mode & O_APPEND ) - ret |= ios_base::app; - - return ret; -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Helper functions for _Filebuf_base. - -static bool __is_regular_file(_STLP_fd fd) { - struct STAT buf; - return FSTAT(fd, &buf) == 0 && S_ISREG(buf.st_mode); -} - -// Number of characters in the file. -static streamoff __file_size(_STLP_fd fd) { - streamoff ret = 0; - - struct STAT buf; - if (FSTAT(fd, &buf) == 0 && S_ISREG(buf.st_mode)) - ret = buf.st_size > 0 ? buf.st_size : 0; - - return ret; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -size_t _Filebuf_base::_M_page_size = 4096; - -_Filebuf_base::_Filebuf_base() - : _M_file_id(INVALID_STLP_FD), - _M_openmode(0), - _M_is_open(false), - _M_should_close(false) -{} - -void _Filebuf_base::_S_initialize() -{ -#if defined (__APPLE__) - int mib[2]; - size_t pagesize, len; - mib[0] = CTL_HW; - mib[1] = HW_PAGESIZE; - len = sizeof(pagesize); - sysctl(mib, 2, &pagesize, &len, NULL, 0); - _M_page_size = pagesize; -#elif defined (__DJGPP) && defined (_CRAY) - _M_page_size = BUFSIZ; -#else - _M_page_size = sysconf(_SC_PAGESIZE); -#endif -} - -// Return the size of the file. This is a wrapper for stat. -// Returns zero if the size cannot be determined or is ill-defined. -streamoff _Filebuf_base::_M_file_size() -{ - return _STLP_PRIV __file_size(_M_file_id); -} - -bool _Filebuf_base::_M_open(const char* name, ios_base::openmode openmode, - long permission) -{ - _STLP_fd file_no; - - if (_M_is_open) - return false; - - int flags = 0; - - // Unix makes no distinction between text and binary files. - switch ( openmode & (~ios_base::ate & ~ios_base::binary) ) { - case ios_base::out: - case ios_base::out | ios_base::trunc: - flags = O_WRONLY | O_CREAT | O_TRUNC; - break; - case ios_base::app: - case ios_base::out | ios_base::app: - flags = O_WRONLY | O_CREAT | O_APPEND; - break; - case ios_base::in: - flags = O_RDONLY; - permission = 0; // Irrelevant unless we're writing. - break; - case ios_base::in | ios_base::out: - flags = O_RDWR; - break; - case ios_base::in | ios_base::out | ios_base::trunc: - flags = O_RDWR | O_CREAT | O_TRUNC; - break; - case ios_base::in | ios_base::app: - case ios_base::in | ios_base::out | ios_base::app: - flags = O_RDWR | O_CREAT | O_APPEND; - break; - default: // The above are the only combinations of - return false; // flags allowed by the C++ standard. - } - - file_no = OPEN(name, flags, permission); - - if (file_no < 0) - return false; - - _M_is_open = true; - - if ((openmode & (ios_base::ate | ios_base::app)) && (LSEEK(file_no, 0, SEEK_END) == -1)) { - _M_is_open = false; - } - - _M_file_id = file_no; - _M_should_close = _M_is_open; - _M_openmode = openmode; - - if (_M_is_open) - _M_regular_file = _STLP_PRIV __is_regular_file(_M_file_id); - - return (_M_is_open != 0); -} - - -bool _Filebuf_base::_M_open(const char* name, ios_base::openmode openmode) -{ - // This doesn't really grant everyone in the world read/write - // access. On Unix, file-creation system calls always clear - // bits that are set in the umask from the permissions flag. - return this->_M_open(name, openmode, S_IRUSR | S_IWUSR | S_IRGRP | - S_IWGRP | S_IROTH | S_IWOTH); -} - -// Associated the filebuf with a file descriptor pointing to an already- -// open file. Mode is set to be consistent with the way that the file -// was opened. -bool _Filebuf_base::_M_open(int file_no, ios_base::openmode) -{ - if (_M_is_open || file_no < 0) - return false; - - int mode = fcntl(file_no, F_GETFL); - - if (mode == -1) - return false; - - _M_openmode = flag_to_openmode(mode); - _M_file_id = file_no; - - _M_is_open = true; - _M_should_close = false; - _M_regular_file = _STLP_PRIV __is_regular_file(_M_file_id); - return true; -} - -bool _Filebuf_base::_M_close() -{ - if (!_M_is_open) - return false; - - bool ok = _M_should_close ? (close(_M_file_id) == 0) : true; - - _M_is_open = _M_should_close = false; - _M_openmode = 0; - return ok; -} - -// Read up to n characters into a buffer. Return value is number of -// characters read. -ptrdiff_t _Filebuf_base::_M_read(char* buf, ptrdiff_t n) -{ - return read(_M_file_id, buf, n); -} - -// Write n characters from a buffer. Return value: true if we managed -// to write the entire buffer, false if we didn't. -bool _Filebuf_base::_M_write(char* buf, ptrdiff_t n) -{ - for (;;) { - ptrdiff_t written = write(_M_file_id, buf, n); - - if (n == written) { - return true; - } - - if (written > 0 && written < n) { - n -= written; - buf += written; - } else { - return false; - } - } -} - -// Wrapper for lseek or the like. -streamoff _Filebuf_base::_M_seek(streamoff offset, ios_base::seekdir dir) -{ - int whence; - - switch ( dir ) { - case ios_base::beg: - if (offset < 0 /* || offset > _M_file_size() */ ) - return streamoff(-1); - whence = SEEK_SET; - break; - case ios_base::cur: - whence = SEEK_CUR; - break; - case ios_base::end: - if (/* offset > 0 || */ -offset > _M_file_size() ) - return streamoff(-1); - whence = SEEK_END; - break; - default: - return streamoff(-1); - } - - return LSEEK(_M_file_id, offset, whence); -} - -// Attempts to memory-map len bytes of the current file, starting -// at position offset. Precondition: offset is a multiple of the -// page size. Postcondition: return value is a null pointer if the -// memory mapping failed. Otherwise the return value is a pointer to -// the memory-mapped file and the file position is set to offset. -void* _Filebuf_base::_M_mmap(streamoff offset, streamoff len) -{ - void* base; -#if !defined (__DJGPP) && !defined (_CRAY) - base = MMAP(0, len, PROT_READ, MAP_PRIVATE, _M_file_id, offset); - if (base != (void*)MAP_FAILED) { - if (LSEEK(_M_file_id, offset + len, SEEK_SET) < 0) { - this->_M_unmap(base, len); - base = 0; - } - } else - base =0; -#else - _STLP_MARK_PARAMETER_AS_UNUSED(&offset) - _STLP_MARK_PARAMETER_AS_UNUSED(&len) - base = 0; -#endif - return base; -} - -void _Filebuf_base::_M_unmap(void* base, streamoff len) -{ - // precondition : there is a valid mapping at the moment -#if !defined (__DJGPP) && !defined (_CRAY) - munmap((char*)base, len); -#else - _STLP_MARK_PARAMETER_AS_UNUSED(&len) - _STLP_MARK_PARAMETER_AS_UNUSED(base) -#endif -} - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/details/fstream_win32io.cpp b/build/stlport/src/details/fstream_win32io.cpp deleted file mode 100644 index 673f3670c189..000000000000 --- a/build/stlport/src/details/fstream_win32io.cpp +++ /dev/null @@ -1,629 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include - -#if !defined (_STLP_WCE) -# ifdef __BORLANDC__ -# include // For _O_RDONLY, etc -# else -# include // For _get_osfhandle -# include // For _O_RDONLY, etc -# endif -# include // For _fstat -#endif - -#define _TEXTBUF_SIZE 0x1000 - -const _STLP_fd INVALID_STLP_FD = INVALID_HANDLE_VALUE; - -#if !defined (INVALID_SET_FILE_POINTER) -# define INVALID_SET_FILE_POINTER 0xffffffff -#endif - -#ifndef O_ACCMODE -# define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) -#endif - -_STLP_BEGIN_NAMESPACE - -#if !defined(__MSL__) && !defined(_STLP_WCE) -static ios_base::openmode flag_to_openmode(int mode) { - ios_base::openmode ret = ios_base::__default_mode; - - switch (mode & O_ACCMODE) { - case O_RDONLY: - ret = ios_base::in; break; - case O_WRONLY: - ret = ios_base::out; break; - case O_RDWR: - ret = ios_base::in | ios_base::out; break; - } - - if (mode & O_APPEND) - ret |= ios_base::app; - - if (mode & O_BINARY) - ret |= ios_base::binary; - - return ret; -} -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Helper functions for _Filebuf_base. - -static bool __is_regular_file(_STLP_fd fd) { - BY_HANDLE_FILE_INFORMATION info; - - // Return true if the file handle isn't a directory. - return GetFileInformationByHandle(fd, &info) && - ((info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0); -} - -// Number of characters in the file. -static streamoff __file_size(_STLP_fd fd) { - streamoff ret = 0; - - LARGE_INTEGER li; - li.LowPart = GetFileSize(fd, (unsigned long*) &li.HighPart); - if (li.LowPart != INVALID_FILE_SIZE || GetLastError() == NO_ERROR) - ret = li.QuadPart; - - return ret; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -// Visual C++ and Intel use this, but not Metrowerks -// Also MinGW, msvcrt.dll (but not crtdll.dll) dependent version -#if (defined (_STLP_MSVC_LIB) && !defined (_STLP_WCE)) || \ - (defined (__MINGW32__) && defined (__MSVCRT__)) - -// fcntl(fileno, F_GETFL) for Microsoft library -// 'semi-documented' defines: -# define IOINFO_L2E 5 -# define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E) -# define _pioinfo(i) ( __pioinfo[(i) >> IOINFO_L2E] + \ - ((i) & (IOINFO_ARRAY_ELTS - 1)) ) -# define FAPPEND 0x20 // O_APPEND flag -# define FTEXT 0x80 // O_TEXT flag -// end of 'semi-documented' defines - -// 'semi-documented' internal structure -extern "C" { - struct ioinfo { - long osfhnd; // the real os HANDLE - char osfile; // file handle flags - char pipech; // pipe buffer -# if defined (_MT) - // multi-threaded locking - int lockinitflag; - CRITICAL_SECTION lock; -# endif - }; -# if defined (__MINGW32__) - __MINGW_IMPORT ioinfo * __pioinfo[]; -# else - extern _CRTIMP ioinfo * __pioinfo[]; -# endif -} // extern "C" -// end of 'semi-documented' declarations - -static ios_base::openmode _get_osfflags(int fd, HANDLE oshandle) { - char dosflags = 0; - if (fd >= 0) - dosflags = _pioinfo(fd)->osfile; - //else - //the file will be considered as open in binary mode with no append attribute - // end of 'semi-documented' stuff - - int mode = 0; - if (dosflags & FAPPEND) - mode |= O_APPEND; - - if (dosflags & FTEXT) - mode |= O_TEXT; - else - mode |= O_BINARY; - - // For Read/Write access we have to guess - DWORD dummy, dummy2; - BOOL writeOk = WriteFile(oshandle, &dummy2, 0, &dummy, 0); - BOOL readOk = ReadFile(oshandle, &dummy2, 0, &dummy, NULL); - if (writeOk && readOk) - mode |= O_RDWR; - else if (readOk) - mode |= O_RDONLY; - else - mode |= O_WRONLY; - - return flag_to_openmode(mode); -} - -#elif defined (__DMC__) - -# define FHND_APPEND 0x04 -# define FHND_DEVICE 0x08 -# define FHND_TEXT 0x10 - -extern "C" unsigned char __fhnd_info[_NFILE]; - -static ios_base::openmode _get_osfflags(int fd, HANDLE oshandle) { - int mode = 0; - - if (__fhnd_info[fd] & FHND_APPEND) - mode |= O_APPEND; - - if (__fhnd_info[fd] & FHND_TEXT == 0) - mode |= O_BINARY; - - for (FILE *fp = &_iob[0]; fp < &_iob[_NFILE]; fp++) { - if ((fileno(fp) == fd) && (fp->_flag & (_IOREAD | _IOWRT | _IORW))) { - const int osflags = fp->_flag; - - if ((osflags & _IOREAD) && !(osflags & _IOWRT) && !(osflags & _IORW)) - mode |= O_RDONLY; - else if ((osflags & _IOWRT) && !(osflags & _IOREAD) && !(osflags & _IORW)) - mode |= O_WRONLY; - else - mode |= O_RDWR; - break; - } - } - - return flag_to_openmode(mode); -} -#endif - -size_t _Filebuf_base::_M_page_size = 4096; - -_Filebuf_base::_Filebuf_base() - : _M_file_id(INVALID_STLP_FD), - _M_openmode(0), - _M_is_open(false), - _M_should_close(false), - _M_view_id(0) -{} - -void _Filebuf_base::_S_initialize() { - SYSTEM_INFO SystemInfo; - GetSystemInfo(&SystemInfo); - _M_page_size = SystemInfo.dwPageSize; - // might be .dwAllocationGranularity -} - -// Return the size of the file. This is a wrapper for stat. -// Returns zero if the size cannot be determined or is ill-defined. -streamoff _Filebuf_base::_M_file_size() { - return _STLP_PRIV __file_size(_M_file_id); -} - -bool _Filebuf_base::_M_open(const char* name, ios_base::openmode openmode, - long permission) { - _STLP_fd file_no; - - if (_M_is_open) - return false; - - DWORD dwDesiredAccess, dwCreationDisposition; - bool doTruncate = false; - - switch (openmode & (~ios_base::ate & ~ios_base::binary)) { - case ios_base::out: - case ios_base::out | ios_base::trunc: - dwDesiredAccess = GENERIC_WRITE; - dwCreationDisposition = OPEN_ALWAYS; - // boris : even though it is very non-intuitive, standard - // requires them both to behave same. - doTruncate = true; - break; - case ios_base::out | ios_base::app: - dwDesiredAccess = GENERIC_WRITE; - dwCreationDisposition = OPEN_ALWAYS; - break; - case ios_base::in: - dwDesiredAccess = GENERIC_READ; - dwCreationDisposition = OPEN_EXISTING; - permission = 0; // Irrelevant unless we're writing. - break; - case ios_base::in | ios_base::out: - dwDesiredAccess = GENERIC_READ | GENERIC_WRITE; - dwCreationDisposition = OPEN_EXISTING; - break; - case ios_base::in | ios_base::out | ios_base::trunc: - dwDesiredAccess = GENERIC_READ | GENERIC_WRITE; - dwCreationDisposition = OPEN_ALWAYS; - doTruncate = true; - break; - default: // The above are the only combinations of - return false; // flags allowed by the C++ standard. - } - - DWORD dwShareMode = FILE_SHARE_READ | FILE_SHARE_WRITE; - -#if defined(_STLP_USE_WIDE_INTERFACE) - file_no = CreateFile (_STLP_PRIV __ASCIIToWide(name).c_str(), -#else - file_no = CreateFileA(name, -#endif - dwDesiredAccess, dwShareMode, 0, - dwCreationDisposition, permission, 0); - - if (file_no == INVALID_STLP_FD) - return false; - - if ( -#if !defined (_STLP_WCE) - GetFileType(file_no) == FILE_TYPE_DISK && -#endif - ((doTruncate && SetEndOfFile(file_no) == 0) || - (((openmode & ios_base::ate) != 0) && - (SetFilePointer(file_no, 0, NULL, FILE_END) == INVALID_SET_FILE_POINTER)))) { - CloseHandle(file_no); - return false; - } - - _M_is_open = true; - _M_file_id = file_no; - _M_should_close = _M_is_open; - _M_openmode = openmode; - - if (_M_is_open) - _M_regular_file = _STLP_PRIV __is_regular_file(_M_file_id); - - return (_M_is_open != 0); -} - -bool _Filebuf_base::_M_open(const char* name, ios_base::openmode openmode) { - // This doesn't really grant everyone in the world read/write - // access. On Unix, file-creation system calls always clear - // bits that are set in the umask from the permissions flag. - return this->_M_open(name, openmode, FILE_ATTRIBUTE_NORMAL); -} - -bool _Filebuf_base::_M_open(_STLP_fd __id, ios_base::openmode init_mode) { -#if (defined (_STLP_MSVC_LIB) && !defined (_STLP_WCE)) || \ - (defined (__MINGW32__) && defined (__MSVCRT__)) || defined (__DMC__) - - if (_M_is_open || __id == INVALID_STLP_FD) - return false; - - if (init_mode != ios_base::__default_mode) - _M_openmode = init_mode; - else - _M_openmode = _get_osfflags(-1, __id); - - _M_is_open = true; - _M_file_id = __id; - _M_should_close = false; - _M_regular_file = _STLP_PRIV __is_regular_file(_M_file_id); - - return true; -#else - (void)__id; - (void)init_mode; // dwa 4/27/00 - suppress unused parameter warning - - // not available for the API - return false; - -#endif -} - -// Associated the filebuf with a file descriptor pointing to an already- -// open file. Mode is set to be consistent with the way that the file -// was opened. -bool _Filebuf_base::_M_open(int file_no, ios_base::openmode init_mode) { - if (_M_is_open || file_no < 0) - return false; - -#if (defined (_STLP_MSVC_LIB) && !defined (_STLP_WCE)) || \ - (defined (__MINGW32__) && defined (__MSVCRT__)) || defined (__DMC__) - - HANDLE oshandle = (HANDLE)_get_osfhandle(file_no); - if (oshandle == INVALID_STLP_FD) - return false; - - if (init_mode != ios_base::__default_mode) - _M_openmode = init_mode; - else - _M_openmode = _get_osfflags(file_no, oshandle); - - _M_file_id = oshandle; - _M_is_open = true; - _M_should_close = false; - _M_regular_file = _STLP_PRIV __is_regular_file(_M_file_id); - return true; -#else - _STLP_MARK_PARAMETER_AS_UNUSED(&init_mode) - // not available for the API - return false; -#endif -} - -bool _Filebuf_base::_M_close() { - if (!_M_is_open) - return false; - - bool ok; - - if (!_M_should_close) - ok = true; - else { - if (_M_file_id != INVALID_STLP_FD) { - ok = (CloseHandle(_M_file_id) != 0); - } - else { - ok = false; - } - } - - _M_is_open = _M_should_close = false; - _M_openmode = 0; - return ok; -} - - -#define _STLP_LF 10 -#define _STLP_CR 13 -#define _STLP_CTRLZ 26 - -// Read up to n characters into a buffer. Return value is number of -// characters read. -ptrdiff_t _Filebuf_base::_M_read(char* buf, ptrdiff_t n) { - ptrdiff_t readen = 0; - //Here cast to size_t is safe as n cannot be negative. - size_t chunkSize = (min)(size_t(0xffffffff), __STATIC_CAST(size_t, n)); - // The following, while validating that we are still able to extract chunkSize - // charaters to the buffer, avoids extraction of too small chunk of datas - // which would be counter performant. - while (__STATIC_CAST(size_t, (n - readen)) >= chunkSize) { - DWORD numberOfBytesRead; - ReadFile(_M_file_id, buf + readen, __STATIC_CAST(DWORD, chunkSize), &numberOfBytesRead, 0); - - if (numberOfBytesRead == 0) - break; - - if (!(_M_openmode & ios_base::binary)) { - // translate CR-LFs to LFs in the buffer - char *to = buf + readen; - char *from = to; - char *last = from + numberOfBytesRead - 1; - for (; from <= last && *from != _STLP_CTRLZ; ++from) { - if (*from != _STLP_CR) - *to++ = *from; - else { // found CR - if (from < last) { // not at buffer end - if (*(from + 1) != _STLP_LF) - *to++ = _STLP_CR; - } - else { // last char is CR, peek for LF - char peek = ' '; - DWORD NumberOfBytesPeeked; - ReadFile(_M_file_id, (LPVOID)&peek, 1, &NumberOfBytesPeeked, 0); - if (NumberOfBytesPeeked != 0) { - if (peek != _STLP_LF) { //not a combination - *to++ = _STLP_CR; - if ((to < buf + n) && (peek != _STLP_CR)) - //We have enough place to store peek and it is no a special - //_STLP_CR character, we can store it. - *to++ = peek; - else - SetFilePointer(_M_file_id, (LONG)-1, 0, FILE_CURRENT); - } - else { - // A combination, we keep the : - *to++ = _STLP_LF; - } - } - else { - /* This case is tedious, we could - * - put peek back in the file but this would then generate an infinite loop - * - report an error as we don't know if in a future call to ReadFile we won't then - * get a . Doing so would make all files with a last an invalid file - * for STLport, a hard solution for STLport clients. - * - store the in the returned buffer, the chosen solution, even if in this - * case we could miss a combination. - */ - *to++ = _STLP_CR; - } - } - } // found CR - } // for - readen = to - buf; - // seek back to TEXT end of file if hit CTRL-Z - if (from <= last) { // terminated due to CTRLZ - SetFilePointer(_M_file_id, -(LONG)((last + 1) - from), 0, FILE_CURRENT); - break; - } - } - else - readen += numberOfBytesRead; - } - return readen; -} - -// Write n characters from a buffer. Return value: true if we managed -// to write the entire buffer, false if we didn't. -bool _Filebuf_base::_M_write(char* buf, ptrdiff_t n) { - for (;;) { - ptrdiff_t written; - - //In the following implementation we are going to cast most of the ptrdiff_t - //values in size_t to work with coherent unsigned values. Doing so make code - //more simple especially in the min function call. - - // In append mode, every write does an implicit seek to the end - // of the file. - if (_M_openmode & ios_base::app) - _M_seek(0, ios_base::end); - - if (_M_openmode & ios_base::binary) { - // binary mode - size_t bytes_to_write = (size_t)n; - DWORD NumberOfBytesWritten; - written = 0; - for (; bytes_to_write != 0;) { - WriteFile(_M_file_id, buf + written, - __STATIC_CAST(DWORD, (min)(size_t(0xffffffff), bytes_to_write)), - &NumberOfBytesWritten, 0); - if (NumberOfBytesWritten == 0) - return false; - bytes_to_write -= NumberOfBytesWritten; - written += NumberOfBytesWritten; - } - } - else { - char textbuf[_TEXTBUF_SIZE + 1]; // extra 1 in case LF at end - char * nextblock = buf, * ptrtextbuf = textbuf; - char * endtextbuf = textbuf + _TEXTBUF_SIZE; - char * endblock = buf + n; - ptrdiff_t nextblocksize = (min) (n, (ptrdiff_t)_TEXTBUF_SIZE); - char * nextlf; - - while ( (nextblocksize > 0) && - (nextlf = (char *)memchr(nextblock, _STLP_LF, nextblocksize)) != 0) { - ptrdiff_t linelength = nextlf - nextblock; - memcpy(ptrtextbuf, nextblock, linelength); - ptrtextbuf += linelength; - nextblock += (linelength + 1); - * ptrtextbuf ++ = _STLP_CR; - * ptrtextbuf ++ = _STLP_LF; - nextblocksize = (min) (ptrdiff_t(endblock - nextblock), - (max) (ptrdiff_t(0), ptrdiff_t(endtextbuf - ptrtextbuf))); - } - // write out what's left, > condition is here since for LF at the end , - // endtextbuf may get < ptrtextbuf ... - if (nextblocksize > 0) { - memcpy(ptrtextbuf, nextblock, nextblocksize); - ptrtextbuf += nextblocksize; - nextblock += nextblocksize; - } - // now write out the translated buffer - char * writetextbuf = textbuf; - for (size_t NumberOfBytesToWrite = (size_t)(ptrtextbuf - textbuf); - NumberOfBytesToWrite;) { - DWORD NumberOfBytesWritten; - WriteFile((HANDLE)_M_file_id, writetextbuf, - __STATIC_CAST(DWORD, (min)(size_t(0xffffffff), NumberOfBytesToWrite)), - &NumberOfBytesWritten, 0); - if (!NumberOfBytesWritten) // write shortfall - return false; - writetextbuf += NumberOfBytesWritten; - NumberOfBytesToWrite -= NumberOfBytesWritten; - } - // count non-translated characters - written = (nextblock - buf); - } - - if (n == written) - return true; - else if (written > 0 && written < n) { - n -= written; - buf += written; - } - else - return false; - } -} - -// Wrapper for lseek or the like. -streamoff _Filebuf_base::_M_seek(streamoff offset, ios_base::seekdir dir) { - streamoff result = -1; - int whence; - - switch(dir) { - case ios_base::beg: - if (offset < 0 /* || offset > _M_file_size() */ ) - return streamoff(-1); - whence = FILE_BEGIN; - break; - case ios_base::cur: - whence = FILE_CURRENT; - break; - case ios_base::end: - if (/* offset > 0 || */ -offset > _M_file_size() ) - return streamoff(-1); - whence = FILE_END; - break; - default: - return streamoff(-1); - } - - LARGE_INTEGER li; - li.QuadPart = offset; - li.LowPart = SetFilePointer(_M_file_id, li.LowPart, &li.HighPart, whence); - if (li.LowPart != INVALID_SET_FILE_POINTER || GetLastError() == NO_ERROR) - result = li.QuadPart; - - return result; -} - - -// Attempts to memory-map len bytes of the current file, starting -// at position offset. Precondition: offset is a multiple of the -// page size. Postcondition: return value is a null pointer if the -// memory mapping failed. Otherwise the return value is a pointer to -// the memory-mapped file and the file position is set to offset. -void* _Filebuf_base::_M_mmap(streamoff offset, streamoff len) { - void* base; - _M_view_id = CreateFileMapping(_M_file_id, (PSECURITY_ATTRIBUTES)0 , - PAGE_READONLY, 0 /* len >> 32 */ , - 0 /* len & 0xFFFFFFFF */ , // low-order DWORD of size - 0); - - if (_M_view_id) { -#if 0 -/* - printf("view %x created from file %x, error = %d, size = %d, map_offset = %d map_len = %d\n", - _M_view_id, _M_file_id, GetLastError(), - (int)cur_filesize, ULL(offset) & 0xffffffff, len); -*/ -#endif - LARGE_INTEGER li; - li.QuadPart = offset; - base = MapViewOfFile(_M_view_id, FILE_MAP_READ, li.HighPart, li.LowPart, -#if !defined (__DMC__) - __STATIC_CAST(SIZE_T, len)); -#else - __STATIC_CAST(DWORD, len)); -#endif - // check if mapping succeded and is usable - if (base == 0 || _M_seek(offset + len, ios_base::beg) < 0) { - this->_M_unmap(base, len); - base = 0; - } - } else - base = 0; - - return base; -} - -void _Filebuf_base::_M_unmap(void* base, streamoff len) { - // precondition : there is a valid mapping at the moment - if (base != NULL) - UnmapViewOfFile(base); - // destroy view handle as well - if (_M_view_id != NULL) - CloseHandle(_M_view_id); - _M_view_id = NULL; - (void)len; //unused variable -} - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/dll_main.cpp b/build/stlport/src/dll_main.cpp deleted file mode 100644 index faaa721a70b4..000000000000 --- a/build/stlport/src/dll_main.cpp +++ /dev/null @@ -1,262 +0,0 @@ - /* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION - -#include "stlport_prefix.h" - -#if !defined (_STLP_DEBUG) && ! defined (_STLP_ASSERTIONS) -# if !defined (__APPLE__) || !defined (__GNUC__) || (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3)) -/* dums: Please if the following code was being uncommented please explain why - * as for the moment it only looks like a source of inconsistency in the way - * STLport different translation units are compiled. - */ -//# define _STLP_ASSERTIONS 1 -# endif -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined (__DMC__) -// for rope static members -# include -#endif - -#include - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_NO_EXCEPTION_HEADER) || defined (_STLP_BROKEN_EXCEPTION_CLASS) -exception::exception() _STLP_NOTHROW {} -exception::~exception() _STLP_NOTHROW {} -bad_exception::bad_exception() _STLP_NOTHROW {} -bad_exception::~bad_exception() _STLP_NOTHROW {} -const char* exception::what() const _STLP_NOTHROW { return "class exception"; } -const char* bad_exception::what() const _STLP_NOTHROW { return "class bad_exception"; } -#endif - -#if defined (_STLP_OWN_STDEXCEPT) -# include - -// boris : those are needed to force typeinfo nodes to be created in here only -logic_error::~logic_error() _STLP_NOTHROW_INHERENTLY {} -runtime_error::~runtime_error() _STLP_NOTHROW_INHERENTLY {} -domain_error::~domain_error() _STLP_NOTHROW_INHERENTLY {} -invalid_argument::~invalid_argument() _STLP_NOTHROW_INHERENTLY {} -length_error::~length_error() _STLP_NOTHROW_INHERENTLY {} -out_of_range::~out_of_range() _STLP_NOTHROW_INHERENTLY {} -range_error::~range_error() _STLP_NOTHROW_INHERENTLY {} -overflow_error::~overflow_error() _STLP_NOTHROW_INHERENTLY {} -underflow_error::~underflow_error() _STLP_NOTHROW_INHERENTLY {} - -#endif - -#if !defined(_STLP_WCE_EVC3) -# if defined (_STLP_NO_BAD_ALLOC) -const nothrow_t nothrow /* = {} */; -# endif -#endif - -#if !defined (_STLP_NO_FORCE_INSTANTIATE) - -# if defined (_STLP_DEBUG) || defined (_STLP_ASSERTIONS) -_STLP_MOVE_TO_PRIV_NAMESPACE -template class _STLP_CLASS_DECLSPEC __stl_debug_engine; -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -template class _STLP_CLASS_DECLSPEC __debug_alloc<__node_alloc>; -template class _STLP_CLASS_DECLSPEC __debug_alloc<__new_alloc>; - -//Export of the types used to represent buckets in the hashtable implementation. -/* - * For the vector class we do not use any MSVC6 workaround even if we export it from - * the STLport dynamic libraries because we know what methods are called and none is - * a template method. Moreover the exported class is an instanciation of vector with - * _Slist_node_base struct that is an internal STLport class that no user should ever - * use. - */ -# if !defined (_STLP_USE_PTR_SPECIALIZATIONS) -template class _STLP_CLASS_DECLSPEC allocator<_STLP_PRIV _Slist_node_base*>; - -_STLP_MOVE_TO_PRIV_NAMESPACE -template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<_Slist_node_base**, _Slist_node_base*, - allocator<_Slist_node_base*> >; -template class _STLP_CLASS_DECLSPEC _Vector_base<_Slist_node_base*, - allocator<_Slist_node_base*> >; -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -# if defined (_STLP_DEBUG) -_STLP_MOVE_TO_PRIV_NAMESPACE -template class _STLP_CLASS_DECLSPEC _STLP_NON_DBG_NAME(vector)<_Slist_node_base*, - allocator<_Slist_node_base*> >; -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -template class _STLP_CLASS_DECLSPEC vector<_STLP_PRIV _Slist_node_base*, - allocator<_STLP_PRIV _Slist_node_base*> >; -//End of hashtable bucket types export. - -//Export of _Locale_impl facets container: -# if !defined (_STLP_USE_PTR_SPECIALIZATIONS) -template class _STLP_CLASS_DECLSPEC allocator; - -_STLP_MOVE_TO_PRIV_NAMESPACE -template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy >; -template class _STLP_CLASS_DECLSPEC _Vector_base >; -_STLP_MOVE_TO_STD_NAMESPACE - -# endif -# if defined (_STLP_DEBUG) -_STLP_MOVE_TO_PRIV_NAMESPACE -# define _STLP_NON_DBG_VECTOR _STLP_NON_DBG_NAME(vector) -template class _STLP_CLASS_DECLSPEC __construct_checker<_STLP_PRIV _STLP_NON_DBG_VECTOR > >; -template class _STLP_CLASS_DECLSPEC _STLP_NON_DBG_VECTOR >; -# undef _STLP_NON_DBG_VECTOR -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -template class _STLP_CLASS_DECLSPEC vector >; -//End of export of _Locale_impl facets container. - -# if defined (_STLP_USE_PTR_SPECIALIZATIONS) -template class _STLP_CLASS_DECLSPEC allocator; - -typedef _STLP_PRIV _List_node _VoidPtr_Node; -template class _STLP_CLASS_DECLSPEC allocator<_VoidPtr_Node>; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy >; -template class _STLP_CLASS_DECLSPEC _Vector_base >; -template class _STLP_CLASS_DECLSPEC _STLP_PTR_IMPL_NAME(vector) >; - -template class _STLP_CLASS_DECLSPEC _List_node; -template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<_List_node_base, _VoidPtr_Node, allocator<_VoidPtr_Node> >; -template class _STLP_CLASS_DECLSPEC _List_base >; -template class _STLP_CLASS_DECLSPEC _STLP_PTR_IMPL_NAME(list) >; - -template class _STLP_CLASS_DECLSPEC _Slist_node; -template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<_Slist_node_base, _Slist_node, allocator<_Slist_node > >; -template class _STLP_CLASS_DECLSPEC _Slist_base >; -template class _STLP_CLASS_DECLSPEC _STLP_PTR_IMPL_NAME(slist) >; - -template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy >; -template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy >; -template struct _STLP_CLASS_DECLSPEC _Deque_iterator >; -template class _STLP_CLASS_DECLSPEC _Deque_base >; -template class _STLP_CLASS_DECLSPEC _STLP_PTR_IMPL_NAME(deque) >; - -_STLP_MOVE_TO_STD_NAMESPACE - -# endif /* _STLP_USE_PTR_SPECIALIZATIONS */ - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template class _STLP_CLASS_DECLSPEC _Rb_global; -template class _STLP_CLASS_DECLSPEC _List_global; - -template class _STLP_CLASS_DECLSPEC _Sl_global; -template class _STLP_CLASS_DECLSPEC _Stl_prime; - -template class _STLP_CLASS_DECLSPEC _LimG; - -_STLP_MOVE_TO_STD_NAMESPACE - -#endif /* _STLP_NO_FORCE_INSTANTIATE */ - -_STLP_END_NAMESPACE - -#if defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) -extern "C" void _STLP_DECLSPEC _STLP_CALL _STLP_SIGNAL_RUNTIME_COMPATIBILITY() {} -#endif - -#define FORCE_SYMBOL extern - -#if defined (_WIN32) && defined (_STLP_USE_DECLSPEC) && !defined (_STLP_USE_STATIC_LIB) -// stlportmt.cpp : Defines the entry point for the DLL application. -// -# undef FORCE_SYMBOL -# define FORCE_SYMBOL APIENTRY - -extern "C" { - -BOOL APIENTRY DllMain( HANDLE hModule, - DWORD ul_reason_for_call, - LPVOID) { - switch (ul_reason_for_call) { - case DLL_PROCESS_ATTACH: - DisableThreadLibraryCalls((HINSTANCE)hModule); - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return TRUE; -} - -} /* extern "C" */ - -#if !defined (_STLP_MSVC) && !defined (__MINGW32__) -_STLP_BEGIN_NAMESPACE - -static void FORCE_SYMBOL -force_link() { - set::iterator iter; - // _M_increment; _M_decrement instantiation - ++iter; - --iter; -} - -_STLP_END_NAMESPACE -#endif - -#endif /* _WIN32 */ - -#if defined (__ICL) && (__ICL >= 900) && (_STLP_MSVC_LIB < 1300) -# undef std - -namespace std -{ - void _STLP_CALL unexpected() { - unexpected_handler hdl; - set_unexpected(hdl = set_unexpected((unexpected_handler)0)); - hdl(); - } -} -#endif diff --git a/build/stlport/src/facets_byname.cpp b/build/stlport/src/facets_byname.cpp deleted file mode 100644 index 07d1a3d67cc9..000000000000 --- a/build/stlport/src/facets_byname.cpp +++ /dev/null @@ -1,1057 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include -#include - -#include -#include - -#include -#include - -#include "c_locale.h" -#include "locale_impl.h" -#include "acquire_release.h" - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// ctype_byname - -#if defined (__DMC__) -_STLP_DECLSPEC -#endif -ctype_byname::ctype_byname(const char* name, size_t refs) - : ctype( 0, false, refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_ctype = _STLP_PRIV __acquire_ctype(name, buf, 0, &__err_code); - if (!_M_ctype) - locale::_M_throw_on_creation_failure(__err_code, name, "ctype"); - - _M_init(); -} - -void ctype_byname::_M_init() { - _M_ctype_table = _M_byname_table; - - // We have to do this, instead of just pointer twiddling, because - // ctype_base::mask isn't the same type as _Locale_mask_t. - const _Locale_mask_t* p = _Locale_ctype_table(_M_ctype); - for (size_t i = 0; i != table_size; ++i) { - _M_byname_table[i] = ctype_base::mask(p[i]); - } -} - -ctype_byname::~ctype_byname() -{ _STLP_PRIV __release_ctype(_M_ctype); } - -char ctype_byname::do_toupper(char c) const -{ return (char)_Locale_toupper(_M_ctype, c); } - -char ctype_byname::do_tolower(char c) const -{ return (char)_Locale_tolower(_M_ctype, c); } - -const char* -ctype_byname::do_toupper(char* first, const char* last) const { - for ( ; first != last ; ++first) - *first = (char)_Locale_toupper(_M_ctype, *first); - return last; -} - -const char* -ctype_byname::do_tolower(char* first, const char* last) const { - for ( ; first != last ; ++first) - *first = (char)_Locale_tolower(_M_ctype, *first); - return last; -} - - -// Some helper functions used in ctype<>::scan_is and scan_is_not. -#if !defined (_STLP_NO_WCHAR_T) - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// ctype_byname - -struct _Ctype_byname_w_is_mask : public unary_function { - _Locale_mask_t M; - _Locale_ctype* M_ctp; - - _Ctype_byname_w_is_mask(_Locale_mask_t m, _Locale_ctype* c) - : M(m), M_ctp(c) {} - bool operator()(wchar_t c) const - { return _WLocale_ctype(M_ctp, c, M) != 0; } -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -#if defined (__DMC__) -_STLP_DECLSPEC -#endif -ctype_byname::ctype_byname(const char* name, size_t refs) - : ctype(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_ctype = _STLP_PRIV __acquire_ctype(name, buf, 0, &__err_code); - if (!_M_ctype) - locale::_M_throw_on_creation_failure(__err_code, name, "ctype"); -} - -ctype_byname::~ctype_byname() -{ _STLP_PRIV __release_ctype(_M_ctype); } - -bool ctype_byname::do_is(ctype_base::mask m, wchar_t c) const -{ return _WLocale_ctype(_M_ctype, c, (_Locale_mask_t)m) != 0; } - -const wchar_t* -ctype_byname::do_is(const wchar_t* low, const wchar_t* high, - ctype_base::mask * m) const { - _Locale_mask_t all_bits = _Locale_mask_t(ctype_base::space | - ctype_base::print | - ctype_base::cntrl | - ctype_base::upper | - ctype_base::lower | - ctype_base::alpha | - ctype_base::digit | - ctype_base::punct | - ctype_base::xdigit); - - for ( ; low < high; ++low, ++m) - *m = ctype_base::mask (_WLocale_ctype(_M_ctype, *low, all_bits)); - return high; -} - -const wchar_t* -ctype_byname - ::do_scan_is(ctype_base::mask m, const wchar_t* low, const wchar_t* high) const -{ return find_if(low, high, _STLP_PRIV _Ctype_byname_w_is_mask(m, _M_ctype)); } - -const wchar_t* -ctype_byname - ::do_scan_not(ctype_base::mask m, const wchar_t* low, const wchar_t* high) const -{ return find_if(low, high, not1(_STLP_PRIV _Ctype_byname_w_is_mask(m, _M_ctype))); } - -wchar_t ctype_byname::do_toupper(wchar_t c) const -{ return _WLocale_toupper(_M_ctype, c); } - -const wchar_t* -ctype_byname::do_toupper(wchar_t* low, const wchar_t* high) const { - for ( ; low < high; ++low) - *low = _WLocale_toupper(_M_ctype, *low); - return high; -} - -wchar_t ctype_byname::do_tolower(wchar_t c) const -{ return _WLocale_tolower(_M_ctype, c); } - -const wchar_t* -ctype_byname::do_tolower(wchar_t* low, const wchar_t* high) const { - for ( ; low < high; ++low) - *low = _WLocale_tolower(_M_ctype, *low); - return high; -} - -#endif /* WCHAR_T */ - -// collate_byname -#if defined (__DMC__) -_STLP_DECLSPEC -#endif -collate_byname::collate_byname(const char* name, size_t refs) - : collate(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_collate = _STLP_PRIV __acquire_collate(name, buf, 0, &__err_code); - if (!_M_collate) - locale::_M_throw_on_creation_failure(__err_code, name, "collate"); -} - -collate_byname::~collate_byname() -{ _STLP_PRIV __release_collate(_M_collate); } - -int collate_byname::do_compare(const char* __low1, - const char* __high1, - const char* __low2, - const char* __high2) const { - return _Locale_strcmp(_M_collate, - __low1, __high1 - __low1, - __low2, __high2 - __low2); -} - -collate_byname::string_type -collate_byname::do_transform(const char* low, const char* high) const { - if (low == high) - return string_type(); - - size_t n = _Locale_strxfrm(_M_collate, NULL, 0, low, high - low); - - // NOT PORTABLE. What we're doing relies on internal details of the - // string implementation. (Contiguity of string elements and presence - // of trailing zero.) - string_type buf(n, 0); - _Locale_strxfrm(_M_collate, &(*buf.begin()), n + 1, low, high - low); - return buf; -} - - -#if !defined (_STLP_NO_WCHAR_T) - -// collate_byname - -#if defined (__DMC__) -_STLP_DECLSPEC -#endif -collate_byname::collate_byname(const char* name, size_t refs) - : collate(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_collate = _STLP_PRIV __acquire_collate(name, buf, 0, &__err_code); - if (!_M_collate) - locale::_M_throw_on_creation_failure(__err_code, name, "collate"); -} - -collate_byname::~collate_byname() -{ _STLP_PRIV __release_collate(_M_collate); } - -int collate_byname::do_compare(const wchar_t* low1, - const wchar_t* high1, - const wchar_t* low2, - const wchar_t* high2) const { - return _WLocale_strcmp(_M_collate, - low1, high1 - low1, - low2, high2 - low2); -} - -collate_byname::string_type -collate_byname::do_transform(const wchar_t* low, - const wchar_t* high) const { - if (low == high) - return string_type(); - - size_t n = _WLocale_strxfrm(_M_collate, NULL, 0, low, high - low); - - // NOT PORTABLE. What we're doing relies on internal details of the - // string implementation. (Contiguity of string elements and presence - // of trailing zero.) - string_type buf(n, 0); - _WLocale_strxfrm(_M_collate, &(*buf.begin()), n + 1, low, high - low); - return buf; -} - -#endif /* _STLP_NO_WCHAR_T */ - -//---------------------------------------------------------------------- -// codecvt_byname - -codecvt_byname - ::codecvt_byname(const char* name, size_t refs) - : codecvt(refs) { - if (!name) - locale::_M_throw_on_null_name(); -} - -codecvt_byname::~codecvt_byname() {} - - -#if !defined (_STLP_NO_WCHAR_T) - -//---------------------------------------------------------------------- -// codecvt_byname -codecvt_byname::codecvt_byname(const char* name, size_t refs) - : codecvt(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_codecvt = _STLP_PRIV __acquire_codecvt(name, buf, 0, &__err_code); - if (!_M_codecvt) - locale::_M_throw_on_creation_failure(__err_code, name, "ctype"); -} - -codecvt_byname::~codecvt_byname() -{ _STLP_PRIV __release_codecvt(_M_codecvt); } - -codecvt::result -codecvt_byname::do_out(state_type& state, - const intern_type* from, - const intern_type* from_end, - const intern_type*& from_next, - extern_type* to, - extern_type* to_limit, - extern_type*& to_next) const { - while (from != from_end && to != to_limit) { - size_t chars_stored = _WLocale_wctomb(_M_codecvt, - to, to_limit - to, *from, - &state); - if (chars_stored == (size_t) -1) { - from_next = from; - to_next = to; - return error; - } - else if (chars_stored == (size_t) -2) { - from_next = from; - to_next = to; - return partial; - } - - ++from; - to += chars_stored; - } - - from_next = from; - to_next = to; - return ok; -} - -codecvt::result -codecvt_byname::do_in(state_type& state, - const extern_type* from, - const extern_type* from_end, - const extern_type*& from_next, - intern_type* to, - intern_type* to_end, - intern_type*& to_next) const { - while (from != from_end && to != to_end) { - size_t chars_read = _WLocale_mbtowc(_M_codecvt, - to, from, from_end - from, - &state); - if (chars_read == (size_t) -1) { - from_next = from; - to_next = to; - return error; - } - - if (chars_read == (size_t) -2) { - from_next = from; - to_next = to; - return partial; - } - - from += chars_read; - to++; - } - - from_next = from; - to_next = to; - return ok; -} - -codecvt::result -codecvt_byname::do_unshift(state_type& state, - extern_type* to, - extern_type* to_limit, - extern_type*& to_next) const { - to_next = to; - size_t result = _WLocale_unshift(_M_codecvt, &state, - to, to_limit - to, &to_next); - if (result == (size_t) -1) - return error; - else if (result == (size_t) -2) - return partial; - else -# if defined (__ISCPP__) - return /*to_next == to ? noconv :*/ ok; -# else - return to_next == to ? noconv : ok; -# endif -} - -int -codecvt_byname::do_encoding() const _STLP_NOTHROW { - if (_WLocale_is_stateless(_M_codecvt)) { - int max_width = _WLocale_mb_cur_max(_M_codecvt); - int min_width = _WLocale_mb_cur_min(_M_codecvt); - return min_width == max_width ? min_width : 0; - } - else - return -1; -} - -bool -codecvt_byname::do_always_noconv() const _STLP_NOTHROW -{ return false; } - -int -codecvt_byname::do_length(state_type& state, - const extern_type* from, - const extern_type* end, - size_t mx) const { - size_t __count = 0; - while (from != end && mx--) { - intern_type __dummy; - size_t chars_read = _WLocale_mbtowc(_M_codecvt, - &__dummy, from, end - from, - &state); - if ((chars_read == (size_t) -1) || (chars_read == (size_t) -2)) // error or partial - break; - __count += chars_read; - from += chars_read; - } - return int(__count); -} - -int -codecvt_byname::do_max_length() const _STLP_NOTHROW -{ return _WLocale_mb_cur_max(_M_codecvt); } -#endif - -// numpunct_byname -numpunct_byname::numpunct_byname(const char* name, size_t refs) -: numpunct(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_numeric = _STLP_PRIV __acquire_numeric(name, buf, 0, &__err_code); - if (!_M_numeric) - locale::_M_throw_on_creation_failure(__err_code, name, "numpunct"); -} - -numpunct_byname::~numpunct_byname() -{ _STLP_PRIV __release_numeric(_M_numeric); } - -char numpunct_byname::do_decimal_point() const -{ return _Locale_decimal_point(_M_numeric); } - -char numpunct_byname::do_thousands_sep() const -{ return _Locale_thousands_sep(_M_numeric); } - -string numpunct_byname::do_grouping() const { - const char * __grouping = _Locale_grouping(_M_numeric); - if (__grouping != NULL && __grouping[0] == CHAR_MAX) - __grouping = ""; - return __grouping; -} - -string numpunct_byname::do_truename() const -{ return _Locale_true(_M_numeric); } - -string numpunct_byname::do_falsename() const -{ return _Locale_false(_M_numeric); } - -//---------------------------------------------------------------------- -// numpunct - -#if !defined (_STLP_NO_WCHAR_T) - -// numpunct_byname - -numpunct_byname::numpunct_byname(const char* name, size_t refs) -: numpunct(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_numeric = _STLP_PRIV __acquire_numeric(name, buf, 0, &__err_code); - if (!_M_numeric) - locale::_M_throw_on_creation_failure(__err_code, name, "numpunct"); -} - -numpunct_byname::~numpunct_byname() -{ _STLP_PRIV __release_numeric(_M_numeric); } - -wchar_t numpunct_byname::do_decimal_point() const -{ return _WLocale_decimal_point(_M_numeric); } - -wchar_t numpunct_byname::do_thousands_sep() const -{ return _WLocale_thousands_sep(_M_numeric); } - -string numpunct_byname::do_grouping() const { - const char * __grouping = _Locale_grouping(_M_numeric); - if (__grouping != NULL && __grouping[0] == CHAR_MAX) - __grouping = ""; - return __grouping; -} - -wstring numpunct_byname::do_truename() const { - wchar_t buf[16]; - return _WLocale_true(_M_numeric, _STLP_ARRAY_AND_SIZE(buf)); -} - -wstring numpunct_byname::do_falsename() const { - wchar_t buf[16]; - return _WLocale_false(_M_numeric, _STLP_ARRAY_AND_SIZE(buf)); -} - -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -static void _Init_monetary_formats(money_base::pattern& pos_format, - money_base::pattern& neg_format, - _Locale_monetary * monetary) { - switch (_Locale_p_sign_posn(monetary)) { - case 0: // Parentheses surround the quantity and currency symbol - case 1: // The sign string precedes the quantity and currency symbol - pos_format.field[0] = (char) money_base::sign; - if (_Locale_p_cs_precedes(monetary)) { - // 1 if currency symbol precedes a positive value - pos_format.field[1] = (char) money_base::symbol; - if (_Locale_p_sep_by_space(monetary)) { - // a space separates currency symbol from a positive value. - pos_format.field[2] = (char) money_base::space; - pos_format.field[3] = (char) money_base::value; - } else { - // a space not separates currency symbol from a positive value. - pos_format.field[2] = (char) money_base::value; - pos_format.field[3] = (char) money_base::none; - } - } else { - // 0 if currency symbol succeeds a positive value - pos_format.field[1] = (char) money_base::value; - if (_Locale_p_sep_by_space(monetary)) { - // a space separates currency symbol from a positive value. - pos_format.field[2] = (char) money_base::space; - pos_format.field[3] = (char) money_base::symbol; - } else { - // a space not separates currency symbol from a positive value. - pos_format.field[2] = (char) money_base::symbol; - pos_format.field[3] = (char) money_base::none; - } - } - break; - case 2: // The sign string succeeds the quantity and currency symbol. - if (_Locale_p_cs_precedes(monetary)) { - // 1 if currency symbol precedes a positive value - pos_format.field[0] = (char) money_base::symbol; - if (_Locale_p_sep_by_space(monetary)) { - // a space separates currency symbol from a positive value. - pos_format.field[1] = (char) money_base::space; - pos_format.field[2] = (char) money_base::value; - pos_format.field[3] = (char) money_base::sign; - } else { - // a space not separates currency symbol from a positive value. - pos_format.field[1] = (char) money_base::value; - pos_format.field[2] = (char) money_base::sign; - pos_format.field[3] = (char) money_base::none; - } - } else { - // 0 if currency symbol succeeds a positive value - pos_format.field[0] = (char) money_base::value; - if (_Locale_p_sep_by_space(monetary)) { - // a space separates currency symbol from a positive value. - pos_format.field[1] = (char) money_base::space; - pos_format.field[2] = (char) money_base::symbol; - pos_format.field[3] = (char) money_base::sign; - } else { - // a space not separates currency symbol from a positive value. - pos_format.field[1] = (char) money_base::symbol; - pos_format.field[2] = (char) money_base::sign; - pos_format.field[3] = (char) money_base::none; - } - } - break; - case 3: // The sign string immediately precedes the currency symbol. - if (_Locale_p_cs_precedes(monetary)) { - // 1 if currency symbol precedes a positive value - pos_format.field[0] = (char) money_base::sign; - pos_format.field[1] = (char) money_base::symbol; - if (_Locale_p_sep_by_space(monetary)) { - // a space separates currency symbol from a positive value. - pos_format.field[2] = (char) money_base::space; - pos_format.field[3] = (char) money_base::value; - } else { - // a space not separates currency symbol from a positive value. - pos_format.field[2] = (char) money_base::value; - pos_format.field[3] = (char) money_base::none; - } - } else { - // 0 if currency symbol succeeds a positive value - pos_format.field[0] = (char) money_base::value; - pos_format.field[1] = (char) money_base::sign; - pos_format.field[2] = (char) money_base::symbol; - pos_format.field[3] = (char) money_base::none; - } - break; - case 4: // The sign string immediately succeeds the currency symbol. - if (_Locale_p_cs_precedes(monetary)) { - // 1 if currency symbol precedes a positive value - pos_format.field[0] = (char) money_base::symbol; - pos_format.field[1] = (char) money_base::sign; - pos_format.field[2] = (char) money_base::value; - pos_format.field[3] = (char) money_base::none; - } else { - // 0 if currency symbol succeeds a positive value - pos_format.field[0] = (char) money_base::value; - if (_Locale_p_sep_by_space(monetary)) { - // a space separates currency symbol from a positive value. - pos_format.field[1] = (char) money_base::space; - pos_format.field[2] = (char) money_base::symbol; - pos_format.field[3] = (char) money_base::sign; - } else { - // a space not separates currency symbol from a positive value. - pos_format.field[1] = (char) money_base::symbol; - pos_format.field[2] = (char) money_base::sign; - pos_format.field[3] = (char) money_base::none; - } - } - break; - default: // Default C++ Standard format - pos_format.field[0] = (char) money_base::symbol; - pos_format.field[1] = (char) money_base::sign; - pos_format.field[2] = (char) money_base::none; - pos_format.field[3] = (char) money_base::value; - break; - } - - switch (_Locale_n_sign_posn(monetary)) { - case 0: // Parentheses surround the quantity and currency symbol - case 1: // The sign string precedes the quantity and currency symbol - neg_format.field[0] = (char) money_base::sign; - if (_Locale_n_cs_precedes(monetary)) { - // 1 if currency symbol precedes a negative value - neg_format.field[1] = (char) money_base::symbol; - if (_Locale_n_sep_by_space(monetary)) { - // a space separates currency symbol from a negative value. - neg_format.field[2] = (char) money_base::space; - neg_format.field[3] = (char) money_base::value; - } else { - // a space not separates currency symbol from a negative value. - neg_format.field[2] = (char) money_base::value; - neg_format.field[3] = (char) money_base::none; - } - } else { - // 0 if currency symbol succeeds a negative value - neg_format.field[1] = (char) money_base::value; - if (_Locale_n_sep_by_space(monetary)) { - // a space separates currency symbol from a negative value. - neg_format.field[2] = (char) money_base::space; - neg_format.field[3] = (char) money_base::symbol; - } else { - // a space not separates currency symbol from a negative value. - neg_format.field[2] = (char) money_base::symbol; - neg_format.field[3] = (char) money_base::none; - } - } - break; - case 2: // The sign string succeeds the quantity and currency symbol. - if (_Locale_n_cs_precedes(monetary)) { - // 1 if currency symbol precedes a negative value - neg_format.field[0] = (char) money_base::symbol; - if (_Locale_n_sep_by_space(monetary)) { - // a space separates currency symbol from a negative value. - neg_format.field[1] = (char) money_base::space; - neg_format.field[2] = (char) money_base::value; - neg_format.field[3] = (char) money_base::sign; - } else { - // a space not separates currency symbol from a negative value. - neg_format.field[1] = (char) money_base::value; - neg_format.field[2] = (char) money_base::sign; - neg_format.field[3] = (char) money_base::none; - } - } else { - // 0 if currency symbol succeeds a negative value - neg_format.field[0] = (char) money_base::value; - if (_Locale_n_sep_by_space(monetary)) { - // a space separates currency symbol from a negative value. - neg_format.field[1] = (char) money_base::space; - neg_format.field[2] = (char) money_base::symbol; - neg_format.field[3] = (char) money_base::sign; - } else { - // a space not separates currency symbol from a negative value. - neg_format.field[1] = (char) money_base::symbol; - neg_format.field[2] = (char) money_base::sign; - neg_format.field[3] = (char) money_base::none; - } - } - break; - case 3: // The sign string immediately precedes the currency symbol. - if (_Locale_n_cs_precedes(monetary)) { - // 1 if currency symbol precedes a negative value - neg_format.field[0] = (char) money_base::sign; - neg_format.field[1] = (char) money_base::symbol; - if (_Locale_n_sep_by_space(monetary)) { - // a space separates currency symbol from a negative value. - neg_format.field[2] = (char) money_base::space; - neg_format.field[3] = (char) money_base::value; - } else { - // a space not separates currency symbol from a negative value. - neg_format.field[2] = (char) money_base::value; - neg_format.field[3] = (char) money_base::none; - } - } else { - // 0 if currency symbol succeeds a negative value - neg_format.field[0] = (char) money_base::value; - neg_format.field[1] = (char) money_base::sign; - neg_format.field[2] = (char) money_base::symbol; - neg_format.field[3] = (char) money_base::none; - } - break; - case 4: // The sign string immediately succeeds the currency symbol. - if (_Locale_n_cs_precedes(monetary)) { - // 1 if currency symbol precedes a negative value - neg_format.field[0] = (char) money_base::symbol; - neg_format.field[1] = (char) money_base::sign; - neg_format.field[2] = (char) money_base::none; - neg_format.field[3] = (char) money_base::value; - } else { - // 0 if currency symbol succeeds a negative value - neg_format.field[0] = (char) money_base::value; - if (_Locale_n_sep_by_space(monetary)) { - // a space separates currency symbol from a negative value. - neg_format.field[1] = (char) money_base::space; - neg_format.field[2] = (char) money_base::symbol; - neg_format.field[3] = (char) money_base::sign; - } else { - // a space not separates currency symbol from a negative value. - neg_format.field[1] = (char) money_base::symbol; - neg_format.field[2] = (char) money_base::sign; - neg_format.field[3] = (char) money_base::none; - } - } - break; - default: // Default C++ Standard format - neg_format.field[0] = (char) money_base::symbol; - neg_format.field[1] = (char) money_base::sign; - neg_format.field[2] = (char) money_base::none; - neg_format.field[3] = (char) money_base::value; - break; - } -} - -// international variant of monetary - -/* - * int_curr_symbol - * - * The international currency symbol. The operand is a four-character - * string, with the first three characters containing the alphabetic - * international currency symbol in accordance with those specified - * in the ISO 4217 specification. The fourth character is the character used - * to separate the international currency symbol from the monetary quantity. - * - * (http://www.opengroup.org/onlinepubs/7990989775/xbd/locale.html) - */ - -/* - * Standards are unclear in the usage of international currency - * and monetary formats. - * But I am expect that international currency symbol should be the first - * (not depends upon where currency symbol situated in the national - * format). - * - * If this isn't so, let's see: - * 1 234.56 RUR - * GBP 1,234.56 - * USD 1,234.56 - * The situation really is worse than you see above: - * RUR typed wrong here---it prints '1 234.56 RUR ' (see space after RUR). - * This is due to intl_fmp.curr_symbol() == "RUR ". (see reference in comments - * above). - * - */ - -static void _Init_monetary_formats_int(money_base::pattern& pos_format, - money_base::pattern& neg_format, - _Locale_monetary * monetary) -{ - - switch (_Locale_p_sign_posn(monetary)) { - case 0: // Parentheses surround the quantity and currency symbol - case 1: // The sign string precedes the quantity and currency symbol - pos_format.field[0] = (char) money_base::symbol; - pos_format.field[1] = (char) money_base::sign; - pos_format.field[2] = (char) money_base::value; - pos_format.field[3] = (char) money_base::none; - break; - case 2: // The sign string succeeds the quantity and currency symbol. - pos_format.field[0] = (char) money_base::symbol; - pos_format.field[1] = (char) money_base::value; - pos_format.field[2] = (char) money_base::sign; - pos_format.field[3] = (char) money_base::none; - break; - case 3: // The sign string immediately precedes the currency symbol. - case 4: // The sign string immediately succeeds the currency symbol. - pos_format.field[0] = (char) money_base::symbol; - if (_Locale_p_cs_precedes(monetary)) { - // 1 if currency symbol precedes a positive value - pos_format.field[1] = (char) money_base::sign; - pos_format.field[2] = (char) money_base::value; - } else { - // 0 if currency symbol succeeds a positive value - pos_format.field[1] = (char) money_base::value; - pos_format.field[2] = (char) money_base::sign; - } - pos_format.field[3] = (char) money_base::none; - break; - default: // Default C++ Standard format - pos_format.field[0] = (char) money_base::symbol; - pos_format.field[1] = (char) money_base::sign; - pos_format.field[2] = (char) money_base::none; - pos_format.field[3] = (char) money_base::value; - break; - } - - - switch (_Locale_n_sign_posn(monetary)) { - case 0: // Parentheses surround the quantity and currency symbol - case 1: // The sign string precedes the quantity and currency symbol - neg_format.field[0] = (char) money_base::symbol; - neg_format.field[1] = (char) money_base::sign; - neg_format.field[2] = (char) money_base::value; - neg_format.field[3] = (char) money_base::none; - break; - case 2: // The sign string succeeds the quantity and currency symbol. - neg_format.field[0] = (char) money_base::symbol; - neg_format.field[1] = (char) money_base::value; - neg_format.field[2] = (char) money_base::sign; - neg_format.field[3] = (char) money_base::none; - break; - case 3: // The sign string immediately precedes the currency symbol. - case 4: // The sign string immediately succeeds the currency symbol. - neg_format.field[0] = (char) money_base::symbol; - if (_Locale_n_cs_precedes(monetary)) { - // 1 if currency symbol precedes a negative value - neg_format.field[1] = (char) money_base::sign; - neg_format.field[2] = (char) money_base::value; - } else { - // 0 if currency symbol succeeds a negative value - neg_format.field[1] = (char) money_base::value; - neg_format.field[2] = (char) money_base::sign; - } - neg_format.field[3] = (char) money_base::none; - break; - default: // Default C++ Standard format - neg_format.field[0] = (char) money_base::symbol; - neg_format.field[1] = (char) money_base::sign; - neg_format.field[2] = (char) money_base::none; - neg_format.field[3] = (char) money_base::value; - break; - } -} - -_STLP_MOVE_TO_STD_NAMESPACE - -// -// moneypunct_byname<> -// -moneypunct_byname::moneypunct_byname(const char * name, - size_t refs) - : moneypunct(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_monetary = _STLP_PRIV __acquire_monetary(name, buf, 0, &__err_code); - if (!_M_monetary) - locale::_M_throw_on_creation_failure(__err_code, name, "moneypunct"); - - _STLP_PRIV _Init_monetary_formats_int(_M_pos_format, _M_neg_format, _M_monetary); -} - -moneypunct_byname::moneypunct_byname(_Locale_monetary *__mon) - : _M_monetary(__mon) { - _STLP_PRIV _Init_monetary_formats_int(_M_pos_format, _M_neg_format, _M_monetary); -} - -moneypunct_byname::~moneypunct_byname() -{ _STLP_PRIV __release_monetary(_M_monetary); } - -char moneypunct_byname::do_decimal_point() const -{ return _Locale_mon_decimal_point(_M_monetary); } - -char moneypunct_byname::do_thousands_sep() const -{ return _Locale_mon_thousands_sep(_M_monetary); } - -string moneypunct_byname::do_grouping() const -{ return _Locale_mon_grouping(_M_monetary); } - -string moneypunct_byname::do_curr_symbol() const -{ return _Locale_int_curr_symbol(_M_monetary); } - -string moneypunct_byname::do_positive_sign() const -{ return _Locale_positive_sign(_M_monetary); } - -string moneypunct_byname::do_negative_sign() const -{ return _Locale_negative_sign(_M_monetary); } - -int moneypunct_byname::do_frac_digits() const -{ return _Locale_int_frac_digits(_M_monetary); } - -moneypunct_byname::moneypunct_byname(const char * name, - size_t refs) - : moneypunct(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_monetary = _STLP_PRIV __acquire_monetary(name, buf, 0, &__err_code); - if (!_M_monetary) - locale::_M_throw_on_creation_failure(__err_code, name, "moneypunct"); - - _STLP_PRIV _Init_monetary_formats(_M_pos_format, _M_neg_format, _M_monetary); -} - -moneypunct_byname::moneypunct_byname(_Locale_monetary *__mon) - : _M_monetary(__mon) { - _STLP_PRIV _Init_monetary_formats(_M_pos_format, _M_neg_format, _M_monetary); -} - -moneypunct_byname::~moneypunct_byname() -{ _STLP_PRIV __release_monetary(_M_monetary); } - -char moneypunct_byname::do_decimal_point() const -{ return _Locale_mon_decimal_point(_M_monetary); } - -char moneypunct_byname::do_thousands_sep() const -{ return _Locale_mon_thousands_sep(_M_monetary); } - -string moneypunct_byname::do_grouping() const -{ return _Locale_mon_grouping(_M_monetary); } - -string moneypunct_byname::do_curr_symbol() const -{ return _Locale_currency_symbol(_M_monetary); } - -string moneypunct_byname::do_positive_sign() const -{ return _Locale_positive_sign(_M_monetary); } - -string moneypunct_byname::do_negative_sign() const -{ return _Locale_negative_sign(_M_monetary); } - -int moneypunct_byname::do_frac_digits() const -{ return _Locale_frac_digits(_M_monetary); } - -// -// moneypunct_byname -// -#if !defined (_STLP_NO_WCHAR_T) - -moneypunct_byname::moneypunct_byname(const char * name, - size_t refs) - : moneypunct(refs) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_monetary = _STLP_PRIV __acquire_monetary(name, buf, 0, &__err_code); - if (!_M_monetary) - locale::_M_throw_on_creation_failure(__err_code, name, "moneypunct"); - - _STLP_PRIV _Init_monetary_formats_int(_M_pos_format, _M_neg_format, _M_monetary); -} - -moneypunct_byname::moneypunct_byname(_Locale_monetary *__mon) - : _M_monetary(__mon) { - _STLP_PRIV _Init_monetary_formats_int(_M_pos_format, _M_neg_format, _M_monetary); -} - -moneypunct_byname::~moneypunct_byname() -{ _STLP_PRIV __release_monetary(_M_monetary); } - -wchar_t moneypunct_byname::do_decimal_point() const -{ return _Locale_mon_decimal_point(_M_monetary); } - -wchar_t moneypunct_byname::do_thousands_sep() const -{ return _Locale_mon_thousands_sep(_M_monetary); } - -string moneypunct_byname::do_grouping() const -{ return _Locale_mon_grouping(_M_monetary); } - -inline wstring __do_widen (string const& str) { -#if defined (_STLP_NO_MEMBER_TEMPLATES) || defined (_STLP_MSVC) - wstring::_Reserve_t __Reserve; - size_t __size = str.size(); - wstring result(__Reserve, __size); - copy(str.begin(), str.end(), result.begin()); -#else - wstring result(str.begin(), str.end()); -#endif - return result; -} - -wstring moneypunct_byname::do_curr_symbol() const -{ wchar_t buf[16]; return _WLocale_int_curr_symbol(_M_monetary, _STLP_ARRAY_AND_SIZE(buf)); } - -wstring moneypunct_byname::do_positive_sign() const -{ wchar_t buf[16]; return _WLocale_positive_sign(_M_monetary, _STLP_ARRAY_AND_SIZE(buf)); } - -wstring moneypunct_byname::do_negative_sign() const -{ wchar_t buf[16]; return _WLocale_negative_sign(_M_monetary, _STLP_ARRAY_AND_SIZE(buf)); } - -int moneypunct_byname::do_frac_digits() const -{ return _Locale_int_frac_digits(_M_monetary); } - -moneypunct_byname::moneypunct_byname(const char * name, - size_t refs) - : moneypunct(refs) { - if (!name) - locale::_M_throw_on_null_name() ; - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_monetary = _STLP_PRIV __acquire_monetary(name, buf, 0, &__err_code); - if (!_M_monetary) - locale::_M_throw_on_creation_failure(__err_code, name, "moneypunct"); - - _STLP_PRIV _Init_monetary_formats(_M_pos_format, _M_neg_format, _M_monetary); -} - -moneypunct_byname::moneypunct_byname(_Locale_monetary *__mon) - : _M_monetary(__mon) { - _STLP_PRIV _Init_monetary_formats(_M_pos_format, _M_neg_format, _M_monetary); -} - -moneypunct_byname::~moneypunct_byname() -{ _STLP_PRIV __release_monetary(_M_monetary); } - -wchar_t moneypunct_byname::do_decimal_point() const -{ return _Locale_mon_decimal_point(_M_monetary); } - -wchar_t moneypunct_byname::do_thousands_sep() const -{ return _Locale_mon_thousands_sep(_M_monetary); } - -string moneypunct_byname::do_grouping() const -{ return _Locale_mon_grouping(_M_monetary); } - -wstring moneypunct_byname::do_curr_symbol() const -{ wchar_t buf[16]; return _WLocale_currency_symbol(_M_monetary, _STLP_ARRAY_AND_SIZE(buf)); } - -wstring moneypunct_byname::do_positive_sign() const -{ wchar_t buf[16]; return _WLocale_positive_sign(_M_monetary, _STLP_ARRAY_AND_SIZE(buf)); } - -wstring moneypunct_byname::do_negative_sign() const -{ wchar_t buf[16]; return _WLocale_negative_sign(_M_monetary, _STLP_ARRAY_AND_SIZE(buf)); } - -int moneypunct_byname::do_frac_digits() const -{ return _Locale_frac_digits(_M_monetary); } - -#endif - -_STLP_END_NAMESPACE - diff --git a/build/stlport/src/fstream.cpp b/build/stlport/src/fstream.cpp deleted file mode 100644 index 81543bb82875..000000000000 --- a/build/stlport/src/fstream.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#ifdef _STLP_USE_UNIX_IO -# include "details/fstream_unistd.cpp" -#elif defined(_STLP_USE_STDIO_IO) -# include "details/fstream_stdio.cpp" -#elif defined(_STLP_USE_WIN32_IO) -# include "details/fstream_win32io.cpp" -#else -# error "Can't recognize IO scheme to use" -#endif - -_STLP_BEGIN_NAMESPACE - -// fbp : let us map 1 MB maximum, just be sure not to trash VM -#define MMAP_CHUNK 0x100000L - -_Underflow< char, char_traits >::int_type _STLP_CALL -_Underflow< char, char_traits >::_M_doit(basic_filebuf >* __this) -{ - typedef char_traits traits_type; - typedef traits_type::int_type int_type; - - if (!__this->_M_in_input_mode) { - if (!__this->_M_switch_to_input_mode()) - return traits_type::eof(); - } - else if (__this->_M_in_putback_mode) { - __this->_M_exit_putback_mode(); - if (__this->gptr() != __this->egptr()) { - int_type __c = traits_type::to_int_type(*__this->gptr()); - return __c; - } - } - - // If it's a disk file, and if the internal and external character - // sequences are guaranteed to be identical, then try to use memory - // mapped I/O. Otherwise, revert to ordinary read. - if (__this->_M_base.__regular_file() - && __this->_M_always_noconv - && __this->_M_base._M_in_binary_mode()) { - // If we've mmapped part of the file already, then unmap it. - if (__this->_M_mmap_base) - __this->_M_base._M_unmap(__this->_M_mmap_base, __this->_M_mmap_len); - - // Determine the position where we start mapping. It has to be - // a multiple of the page size. - streamoff __cur = __this->_M_base._M_seek(0, ios_base::cur); - streamoff __size = __this->_M_base._M_file_size(); - if (__size > 0 && __cur >= 0 && __cur < __size) { - streamoff __offset = (__cur / __this->_M_base.__page_size()) * __this->_M_base.__page_size(); - streamoff __remainder = __cur - __offset; - - __this->_M_mmap_len = __size - __offset; - - if (__this->_M_mmap_len > MMAP_CHUNK) - __this->_M_mmap_len = MMAP_CHUNK; - - if ((__this->_M_mmap_base = __this->_M_base._M_mmap(__offset, __this->_M_mmap_len)) != 0) { - __this->setg(__STATIC_CAST(char*, __this->_M_mmap_base), - __STATIC_CAST(char*, __this->_M_mmap_base) + __STATIC_CAST(ptrdiff_t, __remainder), - __STATIC_CAST(char*, __this->_M_mmap_base) + __STATIC_CAST(ptrdiff_t, __this->_M_mmap_len)); - return traits_type::to_int_type(*__this->gptr()); - } - else - __this->_M_mmap_len = 0; - } - else { - __this->_M_mmap_base = 0; - __this->_M_mmap_len = 0; - } - } - - return __this->_M_underflow_aux(); -} - -//---------------------------------------------------------------------- -// Force instantiation of filebuf and fstream classes. -#if !defined(_STLP_NO_FORCE_INSTANTIATE) - -template class basic_filebuf >; -template class basic_ifstream >; -template class basic_ofstream >; -template class basic_fstream >; - -# if !defined (_STLP_NO_WCHAR_T) -template class _Underflow >; -template class basic_filebuf >; -template class basic_ifstream >; -template class basic_ofstream >; -template class basic_fstream >; -# endif /* _STLP_NO_WCHAR_T */ - -#endif - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/ios.cpp b/build/stlport/src/ios.cpp deleted file mode 100644 index 7bbfecdf6dcf..000000000000 --- a/build/stlport/src/ios.cpp +++ /dev/null @@ -1,320 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include -#include -#include // for __get_ostreambuf definition - -#include "aligned_buffer.h" - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// ios_base members - -#ifdef _STLP_USE_EXCEPTIONS -// class ios_base::failure, a subclass of exception. It's used solely -// for reporting errors. - -ios_base::failure::failure(const string& s) - : __Named_exception(s) -{} - -ios_base::failure::~failure() _STLP_NOTHROW_INHERENTLY {} -#endif - -#if !defined (_STLP_STATIC_CONST_INIT_BUG) && !defined (_STLP_NO_STATIC_CONST_DEFINITION) -// Definitions of ios_base's formatting flags. -const ios_base::fmtflags ios_base::left; -const ios_base::fmtflags ios_base::right; -const ios_base::fmtflags ios_base::internal; -const ios_base::fmtflags ios_base::dec; -const ios_base::fmtflags ios_base::hex; -const ios_base::fmtflags ios_base::oct; -const ios_base::fmtflags ios_base::fixed; -const ios_base::fmtflags ios_base::scientific; -const ios_base::fmtflags ios_base::boolalpha; -const ios_base::fmtflags ios_base::showbase; -const ios_base::fmtflags ios_base::showpoint; -const ios_base::fmtflags ios_base::showpos; -const ios_base::fmtflags ios_base::skipws; -const ios_base::fmtflags ios_base::unitbuf; -const ios_base::fmtflags ios_base::uppercase; -const ios_base::fmtflags ios_base::adjustfield; -const ios_base::fmtflags ios_base::basefield; -const ios_base::fmtflags ios_base::floatfield; - -// Definitions of ios_base's state flags. -const ios_base::iostate ios_base::goodbit; -const ios_base::iostate ios_base::badbit; -const ios_base::iostate ios_base::eofbit; -const ios_base::iostate ios_base::failbit; - -// Definitions of ios_base's openmode flags. -const ios_base::openmode ios_base::app; -const ios_base::openmode ios_base::ate; -const ios_base::openmode ios_base::binary; -const ios_base::openmode ios_base::in; -const ios_base::openmode ios_base::out; -const ios_base::openmode ios_base::trunc; - -// Definitions of ios_base's seekdir flags. -const ios_base::seekdir ios_base::beg; -const ios_base::seekdir ios_base::cur; -const ios_base::seekdir ios_base::end; - -#endif - -// Internal functions used for managing exponentially-growing arrays of -// POD types. - -// array is a pointer to N elements of type PODType. Expands the array, -// if necessary, so that array[index] is meaningful. All new elements are -// initialized to zero. Returns a pointer to the new array, and the new -// size. - -template -static pair -_Stl_expand_array(PODType* __array, size_t N, int index) { - if ((int)N < index + 1) { - size_t new_N = (max)(2 * N, size_t(index + 1)); - PODType* new_array - = __STATIC_CAST(PODType*,realloc(__array, new_N * sizeof(PODType))); - if (new_array) { - fill(new_array + N, new_array + new_N, PODType()); - return pair(new_array, new_N); - } - else - return pair(__STATIC_CAST(PODType*,0), 0); - } - else - return pair(__array, N); -} - -// array is a pointer to N elements of type PODType. Allocate a new -// array of N elements, copying the values from the old array to the new. -// Return a pointer to the new array. It is assumed that array is non-null -// and N is nonzero. -template -static PODType* _Stl_copy_array(const PODType* __array, size_t N) { - PODType* result = __STATIC_CAST(PODType*,malloc(N * sizeof(PODType))); - if (result) - copy(__array, __array + N, result); - return result; -} - -locale ios_base::imbue(const locale& loc) { - if (loc != _M_locale) { - locale previous = _M_locale; - _M_locale = loc; - _M_invoke_callbacks(imbue_event); - return previous; - } - else { - _M_invoke_callbacks(imbue_event); - return _M_locale; - } -} - -int _STLP_CALL ios_base::xalloc() { -#if defined (_STLP_THREADS) && \ - defined (_STLP_WIN32THREADS) && defined (_STLP_NEW_PLATFORM_SDK) - static volatile __stl_atomic_t _S_index = 0; - return _STLP_ATOMIC_INCREMENT(&_S_index); -#else - static int _S_index = 0; - static _STLP_STATIC_MUTEX __lock _STLP_MUTEX_INITIALIZER; - _STLP_auto_lock sentry(__lock); - return _S_index++; -#endif -} - -long& ios_base::iword(int index) { - static long dummy = 0; - - pair tmp = _Stl_expand_array(_M_iwords, _M_num_iwords, index); - if (tmp.first) { // The allocation, if any, succeeded. - _M_iwords = tmp.first; - _M_num_iwords = tmp.second; - return _M_iwords[index]; - } - else { - _M_setstate_nothrow(badbit); - _M_check_exception_mask(); - return dummy; - } -} - - -void*& ios_base::pword(int index) { - static void* dummy = 0; - - pair tmp = _Stl_expand_array(_M_pwords, _M_num_pwords, index); - if (tmp.first) { // The allocation, if any, succeeded. - _M_pwords = tmp.first; - _M_num_pwords = tmp.second; - return _M_pwords[index]; - } - else { - _M_setstate_nothrow(badbit); - _M_check_exception_mask(); - return dummy; - } -} - -void ios_base::register_callback(event_callback __fn, int index) { - pair*, size_t> tmp - = _Stl_expand_array(_M_callbacks, _M_num_callbacks, (int)_M_callback_index /* fbp: index ??? */ ); - if (tmp.first) { - _M_callbacks = tmp.first; - _M_num_callbacks = tmp.second; - _M_callbacks[_M_callback_index++] = make_pair(__fn, index); - } - else { - _M_setstate_nothrow(badbit); - _M_check_exception_mask(); - } -} - -// Invokes all currently registered callbacks for a particular event. -// Behaves correctly even if one of the callbacks adds a new callback. -void ios_base::_M_invoke_callbacks(event E) { - for (size_t i = _M_callback_index; i > 0; --i) { - event_callback f = _M_callbacks[i-1].first; - int n = _M_callbacks[i-1].second; - f(E, *this, n); - } -} - -// This function is called if the state, rdstate(), has a bit set -// that is also set in the exception mask exceptions(). -void ios_base::_M_throw_failure() { - const char* arg ; -# if 0 - char buffer[256]; - char* ptr; - strcpy(buffer, "ios failure: rdstate = 0x"); - ptr = __write_integer(buffer+strlen(buffer), ios_base::hex, __STATIC_CAST(unsigned long,_M_iostate)); - strcpy(ptr, " mask = 0x"); - ptr = __write_integer(buffer+strlen(buffer), ios_base::hex, __STATIC_CAST(unsigned long,_M_exception_mask)); - *ptr = 0; - arg = buffer; -# else - arg = "ios failure"; -# endif - -# ifndef _STLP_USE_EXCEPTIONS - fputs(arg, stderr); -# else - throw failure(arg); -# endif -} - -// Copy x's state to *this. This member function is used in the -// implementation of basic_ios::copyfmt. Does not copy _M_exception_mask -// or _M_iostate. -void ios_base::_M_copy_state(const ios_base& x) { - _M_fmtflags = x._M_fmtflags; // Copy the flags, except for _M_iostate - _M_openmode = x._M_openmode; // and _M_exception_mask. - _M_seekdir = x._M_seekdir; - _M_precision = x._M_precision; - _M_width = x._M_width; - _M_locale = x._M_locale; - - if (x._M_callbacks) { - pair* tmp = _Stl_copy_array(x._M_callbacks, x._M_callback_index); - if (tmp) { - free(_M_callbacks); - _M_callbacks = tmp; - _M_num_callbacks = _M_callback_index = x._M_callback_index; - } - else { - _M_setstate_nothrow(badbit); - _M_check_exception_mask(); - } - } - - if (x._M_iwords) { - long* tmp = _Stl_copy_array(x._M_iwords, x._M_num_iwords); - if (tmp) { - free(_M_iwords); - _M_iwords = tmp; - _M_num_iwords = x._M_num_iwords; - } - else { - _M_setstate_nothrow(badbit); - _M_check_exception_mask(); - } - } - - if (x._M_pwords) { - void** tmp = _Stl_copy_array(x._M_pwords, x._M_num_pwords); - if (tmp) { - free(_M_pwords); - _M_pwords = tmp; - _M_num_pwords = x._M_num_pwords; - } - else { - _M_setstate_nothrow(badbit); - _M_check_exception_mask(); - } - } -} - -// ios's (protected) default constructor. The standard says that all -// fields have indeterminate values; we initialize them to zero for -// simplicity. The only thing that really matters is that the arrays -// are all initially null pointers, and the array element counts are all -// initially zero. -ios_base::ios_base() - : _M_fmtflags(0), _M_iostate(0), _M_openmode(0), _M_seekdir(0), - _M_exception_mask(0), - _M_precision(0), _M_width(0), - _M_locale(), - _M_callbacks(0), _M_num_callbacks(0), _M_callback_index(0), - _M_iwords(0), _M_num_iwords(0), - _M_pwords(0), - _M_num_pwords(0) -{} - -// ios's destructor. -ios_base::~ios_base() { - _M_invoke_callbacks(erase_event); - free(_M_callbacks); - free(_M_iwords); - free(_M_pwords); -} - -//---------------------------------------------------------------------- -// Force instantiation of basic_ios -// For DLL exports, they are already instantiated. -#if !defined(_STLP_NO_FORCE_INSTANTIATE) -template class _STLP_CLASS_DECLSPEC basic_ios >; -# if !defined (_STLP_NO_WCHAR_T) -template class _STLP_CLASS_DECLSPEC basic_ios >; -# endif /* _STLP_NO_WCHAR_T */ -#endif - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/iostream.cpp b/build/stlport/src/iostream.cpp deleted file mode 100644 index 0d3329b53e31..000000000000 --- a/build/stlport/src/iostream.cpp +++ /dev/null @@ -1,354 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include -#include -#include -#if defined (_STLP_MSVC) || defined (__MWERKS__) || defined (__ICL) || defined (__ISCPP__) -# define _STLP_USE_NOT_INIT_SEGMENT -# include -#endif - -#include "stdio_streambuf.h" -#include "aligned_buffer.h" -#include "_stdio_file.h" -#include "c_locale.h" - -// boris : note this is repeated in -#ifndef _STLP_USE_NAMESPACES -// in case of SGI iostreams, we have to rename our streams not to clash with those -// provided in native lib -# define cin _STLP_cin -# define cout _STLP_cout -# define cerr _STLP_cerr -# define clog _STLP_clog -#endif - -_STLP_BEGIN_NAMESPACE - -// This file handles iostream initialization. It is inherently -// nonportable, since the C++ language definition provides no mechanism -// for controlling order of initialization of nonlocal objects. -// Initialization has three parts, which must be performed in the following -// order: -// (1) Initialize the locale system -// (2) Call the constructors for the eight global stream objects. -// (3) Create streambufs for the global stream objects, and initialize -// the stream objects by calling the init() member function. - - -#if defined (_STLP_USE_NOT_INIT_SEGMENT) - -// Definitions of the eight global I/O objects that are declared in -// . For some compilers we use pragmas to put the global I/O -// objects into an initialization segment that will not -// be executed. We then explicitly invoke the constructors -// with placement new in ios_base::_S_initialize() - -# if defined (__MWERKS__) -# pragma suppress_init_code on -# else -# pragma init_seg("STLPORT_NO_INIT") -# endif - -_STLP_DECLSPEC istream cin(0); -_STLP_DECLSPEC ostream cout(0); -_STLP_DECLSPEC ostream cerr(0); -_STLP_DECLSPEC ostream clog(0); - -# ifndef _STLP_NO_WCHAR_T -_STLP_DECLSPEC wistream wcin(0); -_STLP_DECLSPEC wostream wcout(0); -_STLP_DECLSPEC wostream wcerr(0); -_STLP_DECLSPEC wostream wclog(0); -# endif - -# if defined (__MWERKS__) -# pragma suppress_init_code off -# endif - -#else - -// Definitions of the eight global I/O objects that are declared in -// . Disgusting hack: we deliberately define them with the -// wrong types so that the constructors don't get run automatically. -// We need special tricks to make sure that these objects are struct- -// aligned rather than byte-aligned. - -// This is not portable. Declaring a variable with different types in -// two translations units is "undefined", according to the C++ standard. -// Most compilers, however, silently accept this instead of diagnosing -// it as an error. - -# ifndef __DMC__ -_STLP_DECLSPEC _Stl_aligned_buffer cin; -_STLP_DECLSPEC _Stl_aligned_buffer cout; -_STLP_DECLSPEC _Stl_aligned_buffer cerr; -_STLP_DECLSPEC _Stl_aligned_buffer clog; -# else -_Stl_aligned_buffer cin; -_Stl_aligned_buffer cout; -_Stl_aligned_buffer cerr; -_Stl_aligned_buffer clog; - -# pragma alias("?cin@std@@3V?$basic_istream@std@DV?$char_traits@std@D@1@@1@A", "?cin@std@@3T?$_Stl_aligned_buffer@std@V?$basic_istream@std@DV?$char_traits@std@D@1@@1@@1@A") -# pragma alias("?cout@std@@3V?$basic_ostream@std@DV?$char_traits@std@D@1@@1@A", "?cout@std@@3T?$_Stl_aligned_buffer@std@V?$basic_ostream@std@DV?$char_traits@std@D@1@@1@@1@A") -# pragma alias("?cerr@std@@3V?$basic_ostream@std@DV?$char_traits@std@D@1@@1@A", "?cerr@std@@3T?$_Stl_aligned_buffer@std@V?$basic_ostream@std@DV?$char_traits@std@D@1@@1@@1@A") -# pragma alias("?clog@std@@3V?$basic_ostream@std@DV?$char_traits@std@D@1@@1@A", "?clog@std@@3T?$_Stl_aligned_buffer@std@V?$basic_ostream@std@DV?$char_traits@std@D@1@@1@@1@A") -# endif - -# ifndef _STLP_NO_WCHAR_T - -# ifndef __DMC__ -_STLP_DECLSPEC _Stl_aligned_buffer wcin; -_STLP_DECLSPEC _Stl_aligned_buffer wcout; -_STLP_DECLSPEC _Stl_aligned_buffer wcerr; -_STLP_DECLSPEC _Stl_aligned_buffer wclog; -# else -_Stl_aligned_buffer wcin; -_Stl_aligned_buffer wcout; -_Stl_aligned_buffer wcerr; -_Stl_aligned_buffer wclog; - -# pragma alias("?wcin@std@@3V?$basic_istream@std@_YV?$char_traits@std@_Y@1@@1@A", "?wcin@std@@3T?$_Stl_aligned_buffer@std@V?$basic_istream@std@_YV?$char_traits@std@_Y@1@@1@@1@A") -# pragma alias("?wcout@std@@3V?$basic_ostream@std@_YV?$char_traits@std@_Y@1@@1@A", "?wcout@std@@3T?$_Stl_aligned_buffer@std@V?$basic_ostream@std@_YV?$char_traits@std@_Y@1@@1@@1@A") -# pragma alias("?wcerr@std@@3V?$basic_ostream@std@_YV?$char_traits@std@_Y@1@@1@A", "?wcerr@std@@3T?$_Stl_aligned_buffer@std@V?$basic_ostream@std@_YV?$char_traits@std@_Y@1@@1@@1@A") -# pragma alias("?wclog@std@@3V?$basic_ostream@std@_YV?$char_traits@std@_Y@1@@1@A", "?wclog@std@@3T?$_Stl_aligned_buffer@std@V?$basic_ostream@std@_YV?$char_traits@std@_Y@1@@1@@1@A") -# endif -# endif -#endif /* STL_MSVC || __MWERKS__ */ - -// Member functions from class ios_base and ios_base::Init - -long ios_base::Init::_S_count = 0; -// by default, those are synced -bool ios_base::_S_is_synced = true; - -ios_base::Init::Init() { - if (_S_count++ == 0) { - _Locale_init(); - ios_base::_S_initialize(); - _Filebuf_base::_S_initialize(); - } -} - -ios_base::Init::~Init() { - if (--_S_count == 0) { - ios_base::_S_uninitialize(); - _Locale_final(); - } -} - -static int _Stl_extract_open_param(FILE* f) -{ return _FILE_fd(f); } - -#ifdef _STLP_REDIRECT_STDSTREAMS -static const char* _Stl_extract_open_param(const char* name) -{ return name; } -#endif - -template -static filebuf* -_Stl_create_filebuf(_Tp x, ios_base::openmode mode ) { - auto_ptr result(new basic_filebuf >()); - result->open(_Stl_extract_open_param(x), mode); - - if (result->is_open()) - return result.release(); - - return 0; -} - -#if !defined (_STLP_NO_WCHAR_T) -static wfilebuf* -_Stl_create_wfilebuf(FILE* f, ios_base::openmode mode) { - auto_ptr result(new basic_filebuf >()); - result->_M_open(_FILE_fd(f), mode); - - if (result->is_open()) - return result.release(); - - return 0; -} -#endif - -void _STLP_CALL ios_base::_S_initialize() { -#if !defined (_STLP_HAS_NO_NAMESPACES) && !defined (_STLP_DONT_USE_PRIV_NAMESPACE) - using _STLP_PRIV stdio_istreambuf; - using _STLP_PRIV stdio_ostreambuf; -#endif - - auto_ptr cin_buf; - auto_ptr cout_buf; - auto_ptr cerr_buf; - auto_ptr clog_buf; - - if (_S_is_synced) - cin_buf.reset(new stdio_istreambuf(stdin)); - else - cin_buf.reset(_Stl_create_filebuf(stdin, ios_base::in)); - - if (_S_is_synced) { -#ifdef _STLP_REDIRECT_STDSTREAMS - cout_buf.reset(_Stl_create_filebuf("/stdout.txt", ios::out)); - cerr_buf.reset(_Stl_create_filebuf("/stderr.txt", ios::out)); - clog_buf.reset(_Stl_create_filebuf("/stdlog.txt", ios::out)); -#else - cout_buf.reset(new stdio_ostreambuf(stdout)); - cerr_buf.reset(new stdio_ostreambuf(stderr)); - clog_buf.reset(new stdio_ostreambuf(stderr)); -#endif - } - else { - cout_buf.reset(_Stl_create_filebuf(stdout, ios_base::out)); - cerr_buf.reset(_Stl_create_filebuf(stderr, ios_base::out)); - clog_buf.reset(_Stl_create_filebuf(stderr, ios_base::out)); - } - - istream* ptr_cin = new(&cin) istream(cin_buf.get()); cin_buf.release(); - ostream* ptr_cout = new(&cout) ostream(cout_buf.get()); cout_buf.release(); - ostream* ptr_cerr = new(&cerr) ostream(cerr_buf.get()); cerr_buf.release(); - /*ostream* ptr_clog = */ new(&clog) ostream(clog_buf.get()); clog_buf.release(); - ptr_cin->tie(ptr_cout); - ptr_cerr->setf(ios_base::unitbuf); - -#ifndef _STLP_NO_WCHAR_T - auto_ptr win(_Stl_create_wfilebuf(stdin, ios_base::in)); - auto_ptr wout(_Stl_create_wfilebuf(stdout, ios_base::out)); - auto_ptr werr(_Stl_create_wfilebuf(stderr, ios_base::out)); - auto_ptr wlog(_Stl_create_wfilebuf(stderr, ios_base::out)); - - // Run constructors for the four wide stream objects. - wistream* ptr_wcin = new(&wcin) wistream(win.get()); win.release(); - wostream* ptr_wcout = new(&wcout) wostream(wout.get()); wout.release(); - wostream* ptr_wcerr = new(&wcerr) wostream(werr.get()); werr.release(); - /*wostream* ptr_wclog = */ new(&wclog) wostream(wlog.get()); wlog.release(); - - ptr_wcin->tie(ptr_wcout); - ptr_wcerr->setf(ios_base::unitbuf); -#endif -} - -void _STLP_CALL ios_base::_S_uninitialize() { - // Note that destroying output streambufs flushes the buffers. - istream* ptr_cin = &cin; - ostream* ptr_cout = &cout; - ostream* ptr_cerr = &cerr; - ostream* ptr_clog = &clog; - - // We don't want any exceptions being thrown here - ptr_cin->exceptions(0); - ptr_cout->exceptions(0); - ptr_cerr->exceptions(0); - ptr_clog->exceptions(0); - - delete ptr_cin->rdbuf(0); - delete ptr_cout->rdbuf(0); - delete ptr_cerr->rdbuf(0); - delete ptr_clog->rdbuf(0); - - _Destroy(ptr_cin); - _Destroy(ptr_cout); - _Destroy(ptr_cerr); - _Destroy(ptr_clog); - -#ifndef _STLP_NO_WCHAR_T - wistream* ptr_wcin = &wcin; - wostream* ptr_wcout = &wcout; - wostream* ptr_wcerr = &wcerr; - wostream* ptr_wclog = &wclog; - - // We don't want any exceptions being thrown here - ptr_wcin->exceptions(0); - ptr_wcout->exceptions(0); - ptr_wcerr->exceptions(0); - ptr_wclog->exceptions(0); - - delete ptr_wcin->rdbuf(0); - delete ptr_wcout->rdbuf(0); - delete ptr_wcerr->rdbuf(0); - delete ptr_wclog->rdbuf(0); - - _Destroy(ptr_wcin); - _Destroy(ptr_wcout); - _Destroy(ptr_wcerr); - _Destroy(ptr_wclog); -#endif -} - - -bool _STLP_CALL ios_base::sync_with_stdio(bool sync) { -# if !defined (_STLP_HAS_NO_NAMESPACES) && !defined (_STLP_DONT_USE_PRIV_NAMESPACE) - using _STLP_PRIV stdio_istreambuf; - using _STLP_PRIV stdio_ostreambuf; -# endif - - if (sync == _S_is_synced) return sync; - - // if by any chance we got there before std streams initialization, - // just set the sync flag and exit - if (Init::_S_count == 0) { - _S_is_synced = sync; - return sync; - } - - auto_ptr cin_buf; - auto_ptr cout_buf; - auto_ptr cerr_buf; - auto_ptr clog_buf; - - if (sync) - cin_buf.reset(new stdio_istreambuf(stdin)); - else - cin_buf.reset(_Stl_create_filebuf(stdin, ios_base::in)); - - if (sync) { -#ifdef _STLP_REDIRECT_STDSTREAMS - cout_buf.reset(_Stl_create_filebuf("/stdout.txt", ios::out)); - cerr_buf.reset(_Stl_create_filebuf("/stderr.txt", ios::out)); - clog_buf.reset(_Stl_create_filebuf("/stdlog.txt", ios::out)); -#else - cout_buf.reset(new stdio_ostreambuf(stdout)); - cerr_buf.reset(new stdio_ostreambuf(stderr)); - clog_buf.reset(new stdio_ostreambuf(stderr)); -#endif - } - else { - cout_buf.reset(_Stl_create_filebuf(stdout, ios_base::out)); - cerr_buf.reset(_Stl_create_filebuf(stderr, ios_base::out)); - clog_buf.reset(_Stl_create_filebuf(stderr, ios_base::out)); - } - - if (cin_buf.get() != 0 && cout_buf.get() != 0 && cerr_buf.get() != 0 && clog_buf.get() != 0) { - // When streambuf passed to rdbuf is not null, rdbuf is exception safe: - delete (&cin)->rdbuf(cin_buf.release()); - delete (&cout)->rdbuf(cout_buf.release()); - delete (&cerr)->rdbuf(cerr_buf.release()); - delete (&clog)->rdbuf(clog_buf.release()); - _S_is_synced = sync; - } - - return _S_is_synced; -} - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/istream.cpp b/build/stlport/src/istream.cpp deleted file mode 100644 index 715364cd6c99..000000000000 --- a/build/stlport/src/istream.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -# include "stlport_prefix.h" - -#include - -_STLP_BEGIN_NAMESPACE - -#if !defined(_STLP_NO_FORCE_INSTANTIATE) - -// instantiations -# if defined (_STLP_USE_TEMPLATE_EXPORT) -template class _STLP_CLASS_DECLSPEC _Isentry >; -# endif - -template class _STLP_CLASS_DECLSPEC basic_iostream >; -template class _STLP_CLASS_DECLSPEC basic_istream >; - -# if !defined (_STLP_NO_WCHAR_T) -# if defined (_STLP_USE_TEMPLATE_EXPORT) -template class _STLP_CLASS_DECLSPEC _Isentry >; -# endif -template class _STLP_CLASS_DECLSPEC basic_istream >; -template class _STLP_CLASS_DECLSPEC basic_iostream >; -# endif /* !_STLP_NO_WCHAR_T */ - -#endif /* _STLP_NO_FORCE_INSTANTIATE */ - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/locale.cpp b/build/stlport/src/locale.cpp deleted file mode 100644 index 5564a6ef7318..000000000000 --- a/build/stlport/src/locale.cpp +++ /dev/null @@ -1,446 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include - -#include "c_locale.h" -#include "locale_impl.h" - -_STLP_BEGIN_NAMESPACE - -#define _NAMELESS "*" -static const char _Nameless[] = _NAMELESS; - -static inline bool is_C_locale_name (const char* name) -{ return ((name[0] == 'C') && (name[1] == 0)); } - -locale* _Stl_get_classic_locale(); -locale* _Stl_get_global_locale(); - -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) || \ - defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) || defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) -# define locale _STLP_NO_MEM_T_NAME(loc) -#endif - -locale::facet::~facet() {} - -#if !defined (_STLP_MEMBER_TEMPLATES) || defined (_STLP_INLINE_MEMBER_TEMPLATES) -// members that fail to be templates -bool locale::operator()(const string& __x, - const string& __y) const -{ return __locale_do_operator_call(*this, __x, __y); } - -# if !defined (_STLP_NO_WCHAR_T) -bool locale::operator()(const wstring& __x, - const wstring& __y) const -{ return __locale_do_operator_call(*this, __x, __y); } -# endif -#endif - -void _STLP_CALL locale::_M_throw_on_null_name() -{ _STLP_THROW(runtime_error("Invalid null locale name")); } - -void _STLP_CALL locale::_M_throw_on_combine_error(const string& name) { - string what = "Unable to find facet"; - what += " in "; - what += name.empty() ? "system" : name.c_str(); - what += " locale"; - _STLP_THROW(runtime_error(what.c_str())); -} - -void _STLP_CALL locale::_M_throw_on_creation_failure(int __err_code, - const char* name, const char* facet) { - string what; - switch (__err_code) { - case _STLP_LOC_UNSUPPORTED_FACET_CATEGORY: - what = "No platform localization support for "; - what += facet; - what += " facet category, unable to create facet for "; - what += name[0] == 0 ? "system" : name; - what += " locale"; - break; - case _STLP_LOC_NO_PLATFORM_SUPPORT: - what = "No platform localization support, unable to create "; - what += name[0] == 0 ? "system" : name; - what += " locale"; - break; - default: - case _STLP_LOC_UNKNOWN_NAME: - what = "Unable to create facet "; - what += facet; - what += " from name '"; - what += name; - what += "'"; - break; - case _STLP_LOC_NO_MEMORY: - _STLP_THROW_BAD_ALLOC; - break; - } - - _STLP_THROW(runtime_error(what.c_str())); -} - -// Takes a reference to a locale::id, assign a numeric index if not already -// affected and returns it. The returned index is always positive. -static const locale::id& _Stl_loc_get_index(locale::id& id) { - if (id._M_index == 0) { -#if defined (_STLP_ATOMIC_INCREMENT) && !defined (_STLP_WIN95_LIKE) - static _STLP_VOLATILE __stl_atomic_t _S_index = __STATIC_CAST(__stl_atomic_t, locale::id::_S_max); - id._M_index = _STLP_ATOMIC_INCREMENT(&_S_index); -#else - static _STLP_STATIC_MUTEX _Index_lock _STLP_MUTEX_INITIALIZER; - _STLP_auto_lock sentry(_Index_lock); - size_t new_index = locale::id::_S_max++; - id._M_index = new_index; -#endif - } - return id; -} - -// Default constructor: create a copy of the global locale. -locale::locale() _STLP_NOTHROW - : _M_impl(_get_Locale_impl(_Stl_get_global_locale()->_M_impl)) -{} - -// Copy constructor -locale::locale(const locale& L) _STLP_NOTHROW - : _M_impl( _get_Locale_impl( L._M_impl ) ) -{} - -void locale::_M_insert(facet* f, locale::id& n) { - if (f) - _M_impl->insert(f, _Stl_loc_get_index(n)); -} - -locale::locale( _Locale_impl* impl ) : - _M_impl( _get_Locale_impl( impl ) ) -{} - -// Create a locale from a name. -locale::locale(const char* name) - : _M_impl(0) { - if (!name) - _M_throw_on_null_name(); - - if (is_C_locale_name(name)) { - _M_impl = _get_Locale_impl( locale::classic()._M_impl ); - return; - } - - _Locale_impl* impl = 0; - _STLP_TRY { - impl = new _Locale_impl(locale::id::_S_max, name); - - // Insert categories one at a time. - _Locale_name_hint *hint = 0; - const char* ctype_name = name; - char ctype_buf[_Locale_MAX_SIMPLE_NAME]; - const char* numeric_name = name; - char numeric_buf[_Locale_MAX_SIMPLE_NAME]; - const char* time_name = name; - char time_buf[_Locale_MAX_SIMPLE_NAME]; - const char* collate_name = name; - char collate_buf[_Locale_MAX_SIMPLE_NAME]; - const char* monetary_name = name; - char monetary_buf[_Locale_MAX_SIMPLE_NAME]; - const char* messages_name = name; - char messages_buf[_Locale_MAX_SIMPLE_NAME]; - hint = impl->insert_ctype_facets(ctype_name, ctype_buf, hint); - hint = impl->insert_numeric_facets(numeric_name, numeric_buf, hint); - hint = impl->insert_time_facets(time_name, time_buf, hint); - hint = impl->insert_collate_facets(collate_name, collate_buf, hint); - hint = impl->insert_monetary_facets(monetary_name, monetary_buf, hint); - impl->insert_messages_facets(messages_name, messages_buf, hint); - - // Try to use a normalize locale name in order to have the == operator - // to behave correctly: - if (strcmp(ctype_name, numeric_name) == 0 && - strcmp(ctype_name, time_name) == 0 && - strcmp(ctype_name, collate_name) == 0 && - strcmp(ctype_name, monetary_name) == 0 && - strcmp(ctype_name, messages_name) == 0) { - impl->name = ctype_name; - } - // else we keep current name. - - // reassign impl - _M_impl = _get_Locale_impl( impl ); - } - _STLP_UNWIND(delete impl); -} - -static void _Stl_loc_combine_names_aux(_Locale_impl* L, - const char* name, - const char* ctype_name, const char* time_name, const char* numeric_name, - const char* collate_name, const char* monetary_name, const char* messages_name, - locale::category c) { - // This function is only called when names has been validated so using _Locale_extract_*_name - // can't fail. - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - L->name = string("LC_CTYPE=") + _Locale_extract_ctype_name((c & locale::ctype) ? ctype_name : name, buf, 0, &__err_code) + ";"; - L->name += string("LC_TIME=") + _Locale_extract_time_name((c & locale::time) ? time_name : name, buf, 0, &__err_code) + ";"; - L->name += string("LC_NUMERIC=") + _Locale_extract_numeric_name((c & locale::numeric) ? numeric_name : name, buf, 0, &__err_code) + ";"; - L->name += string("LC_COLLATE=") + _Locale_extract_collate_name((c & locale::collate) ? collate_name : name, buf, 0, &__err_code) + ";"; - L->name += string("LC_MONETARY=") + _Locale_extract_monetary_name((c & locale::monetary) ? monetary_name : name, buf, 0, &__err_code) + ";"; - L->name += string("LC_MESSAGES=") + _Locale_extract_messages_name((c & locale::messages) ? messages_name : name, buf, 0, &__err_code); -} - -// Give L a name where all facets except those in category c -// are taken from name1, and those in category c are taken from name2. -static void _Stl_loc_combine_names(_Locale_impl* L, - const char* name1, const char* name2, - locale::category c) { - if ((c & locale::all) == 0 || strcmp(name1, name1) == 0) - L->name = name1; - else if ((c & locale::all) == locale::all) - L->name = name2; - else { - _Stl_loc_combine_names_aux(L, name1, name2, name2, name2, name2, name2, name2, c); - } -} - -static void _Stl_loc_combine_names(_Locale_impl* L, - const char* name, - const char* ctype_name, const char* time_name, const char* numeric_name, - const char* collate_name, const char* monetary_name, const char* messages_name, - locale::category c) { - if ((c & locale::all) == 0 || (strcmp(name, ctype_name) == 0 && - strcmp(name, time_name) == 0 && - strcmp(name, numeric_name) == 0 && - strcmp(name, collate_name) == 0 && - strcmp(name, monetary_name) == 0 && - strcmp(name, messages_name) == 0)) - L->name = name; - else if ((c & locale::all) == locale::all && strcmp(ctype_name, time_name) == 0 && - strcmp(ctype_name, numeric_name) == 0 && - strcmp(ctype_name, collate_name) == 0 && - strcmp(ctype_name, monetary_name) == 0 && - strcmp(ctype_name, messages_name) == 0) - L->name = ctype_name; - else { - _Stl_loc_combine_names_aux(L, name, ctype_name, time_name, numeric_name, collate_name, monetary_name, messages_name, c); - } -} - - -// Create a locale that's a copy of L, except that all of the facets -// in category c are instead constructed by name. -locale::locale(const locale& L, const char* name, locale::category c) - : _M_impl(0) { - if (!name) - _M_throw_on_null_name(); - - if (!::strcmp(_Nameless, name)) - _STLP_THROW(runtime_error("Invalid locale name '" _NAMELESS "'")); - - _Locale_impl* impl = 0; - - _STLP_TRY { - impl = new _Locale_impl(*L._M_impl); - - _Locale_name_hint *hint = 0; - const char* ctype_name = name; - char ctype_buf[_Locale_MAX_SIMPLE_NAME]; - const char* numeric_name = name; - char numeric_buf[_Locale_MAX_SIMPLE_NAME]; - const char* time_name = name; - char time_buf[_Locale_MAX_SIMPLE_NAME]; - const char* collate_name = name; - char collate_buf[_Locale_MAX_SIMPLE_NAME]; - const char* monetary_name = name; - char monetary_buf[_Locale_MAX_SIMPLE_NAME]; - const char* messages_name = name; - char messages_buf[_Locale_MAX_SIMPLE_NAME]; - if (c & locale::ctype) - hint = impl->insert_ctype_facets(ctype_name, ctype_buf, hint); - if (c & locale::numeric) - hint = impl->insert_numeric_facets(numeric_name, numeric_buf, hint); - if (c & locale::time) - hint = impl->insert_time_facets(time_name, time_buf, hint); - if (c & locale::collate) - hint = impl->insert_collate_facets(collate_name, collate_buf, hint); - if (c & locale::monetary) - hint = impl->insert_monetary_facets(monetary_name, monetary_buf,hint); - if (c & locale::messages) - impl->insert_messages_facets(messages_name, messages_buf, hint); - - _Stl_loc_combine_names(impl, L._M_impl->name.c_str(), - ctype_name, time_name, numeric_name, - collate_name, monetary_name, messages_name, c); - _M_impl = _get_Locale_impl( impl ); - } - _STLP_UNWIND(delete impl) -} - -// Contruct a new locale where all facets that aren't in category c -// come from L1, and all those that are in category c come from L2. -locale::locale(const locale& L1, const locale& L2, category c) - : _M_impl(0) { - _Locale_impl* impl = new _Locale_impl(*L1._M_impl); - - _Locale_impl* i2 = L2._M_impl; - - if (L1.name() != _Nameless && L2.name() != _Nameless) - _Stl_loc_combine_names(impl, L1._M_impl->name.c_str(), L2._M_impl->name.c_str(), c); - else { - impl->name = _Nameless; - } - - if (c & collate) { - impl->insert( i2, _STLP_STD::collate::id); -# ifndef _STLP_NO_WCHAR_T - impl->insert( i2, _STLP_STD::collate::id); -# endif - } - if (c & ctype) { - impl->insert( i2, _STLP_STD::ctype::id); - impl->insert( i2, _STLP_STD::codecvt::id); -# ifndef _STLP_NO_WCHAR_T - impl->insert( i2, _STLP_STD::ctype::id); - impl->insert( i2, _STLP_STD::codecvt::id); -# endif - } - if (c & monetary) { - impl->insert( i2, _STLP_STD::moneypunct::id); - impl->insert( i2, _STLP_STD::moneypunct::id); - impl->insert( i2, _STLP_STD::money_get > >::id); - impl->insert( i2, _STLP_STD::money_put > >::id); -# ifndef _STLP_NO_WCHAR_T - impl->insert( i2, _STLP_STD::moneypunct::id); - impl->insert( i2, _STLP_STD::moneypunct::id); - impl->insert( i2, _STLP_STD::money_get > >::id); - impl->insert( i2, _STLP_STD::money_put > >::id); -# endif - } - if (c & numeric) { - impl->insert( i2, _STLP_STD::numpunct::id); - impl->insert( i2, _STLP_STD::num_get > >::id); - impl->insert( i2, _STLP_STD::num_put > >::id); -# ifndef _STLP_NO_WCHAR_T - impl->insert( i2, _STLP_STD::numpunct::id); - impl->insert( i2, _STLP_STD::num_get > >::id); - impl->insert( i2, _STLP_STD::num_put > >::id); -# endif - } - if (c & time) { - impl->insert( i2, _STLP_STD::time_get > >::id); - impl->insert( i2, _STLP_STD::time_put > >::id); -# ifndef _STLP_NO_WCHAR_T - impl->insert( i2, _STLP_STD::time_get > >::id); - impl->insert( i2, _STLP_STD::time_put > >::id); -# endif - } - if (c & messages) { - impl->insert( i2, _STLP_STD::messages::id); -# ifndef _STLP_NO_WCHAR_T - impl->insert( i2, _STLP_STD::messages::id); -# endif - } - _M_impl = _get_Locale_impl( impl ); -} - -// Destructor. -locale::~locale() _STLP_NOTHROW { - if (_M_impl) - _release_Locale_impl(_M_impl); -} - -// Assignment operator. Much like the copy constructor: just a bit of -// pointer twiddling. -const locale& locale::operator=(const locale& L) _STLP_NOTHROW { - if (this->_M_impl != L._M_impl) { - if (this->_M_impl) - _release_Locale_impl(this->_M_impl); - this->_M_impl = _get_Locale_impl(L._M_impl); - } - return *this; -} - -locale::facet* locale::_M_get_facet(const locale::id& n) const { - return n._M_index < _M_impl->size() ? _M_impl->facets_vec[n._M_index] : 0; -} - -locale::facet* locale::_M_use_facet(const locale::id& n) const { - locale::facet* f = (n._M_index < _M_impl->size() ? _M_impl->facets_vec[n._M_index] : 0); - if (!f) - _M_impl->_M_throw_bad_cast(); - return f; -} - -string locale::name() const { - return _M_impl->name; -} - -// Compare two locales for equality. -bool locale::operator==(const locale& L) const { - return this->_M_impl == L._M_impl || - (this->name() == L.name() && this->name() != _Nameless); -} - -bool locale::operator!=(const locale& L) const { - return !(*this == L); -} - -// static data members. - -const locale& _STLP_CALL locale::classic() { - return *_Stl_get_classic_locale(); -} - -#if !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -locale _STLP_CALL locale::global(const locale& L) { -#else -_Locale_impl* _STLP_CALL locale::global(const locale& L) { -#endif - locale old(_Stl_get_global_locale()->_M_impl); - if (_Stl_get_global_locale()->_M_impl != L._M_impl) { - _release_Locale_impl(_Stl_get_global_locale()->_M_impl); - // this assign should be atomic, should be fixed here: - _Stl_get_global_locale()->_M_impl = _get_Locale_impl(L._M_impl); - - // Set the global C locale, if appropriate. -#if !defined(_STLP_NO_LOCALE_SUPPORT) - if (L.name() != _Nameless) - setlocale(LC_ALL, L.name().c_str()); -#endif - } - -#if !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - return old; -#else - return old._M_impl; -#endif -} - -#if !defined (_STLP_STATIC_CONST_INIT_BUG) && !defined (_STLP_NO_STATIC_CONST_DEFINITION) -const locale::category locale::none; -const locale::category locale::collate; -const locale::category locale::ctype; -const locale::category locale::monetary; -const locale::category locale::numeric; -const locale::category locale::time; -const locale::category locale::messages; -const locale::category locale::all; -#endif - -_STLP_END_NAMESPACE - diff --git a/build/stlport/src/locale_catalog.cpp b/build/stlport/src/locale_catalog.cpp deleted file mode 100644 index 31e672e8386d..000000000000 --- a/build/stlport/src/locale_catalog.cpp +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include -#include - -#include -#include - -#include "c_locale.h" -#include "locale_impl.h" -#include "acquire_release.h" - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Those wrappers are needed to use locale functions in __acquire_category, -// all functions have to present the same prototype. - -static void* _Loc_ctype_create(const char * s, _Locale_name_hint* hint, int *__err_code) -{ return _Locale_ctype_create(s, hint, __err_code); } -static void* _Loc_codecvt_create(const char * s, _Locale_name_hint* hint, int *__err_code) -{ return _Locale_codecvt_create(s, hint, __err_code); } -static void* _Loc_numeric_create(const char * s, _Locale_name_hint* hint, int *__err_code) -{ return _Locale_numeric_create(s, hint, __err_code); } -static void* _Loc_time_create(const char * s, _Locale_name_hint* hint, int *__err_code) -{ return _Locale_time_create(s, hint, __err_code); } -static void* _Loc_collate_create(const char * s, _Locale_name_hint* hint, int *__err_code) -{ return _Locale_collate_create(s, hint, __err_code); } -static void* _Loc_monetary_create(const char * s, _Locale_name_hint* hint, int *__err_code) -{ return _Locale_monetary_create(s, hint, __err_code); } -static void* _Loc_messages_create(const char * s, _Locale_name_hint* hint, int *__err_code) -{ return _Locale_messages_create(s, hint, __err_code); } - -static char const* _Loc_ctype_name(void* l, char* s) -{ return _Locale_ctype_name((_Locale_ctype*)l, s); } -static char const* _Loc_codecvt_name(void* l, char* s) -{ return _Locale_codecvt_name((_Locale_codecvt*)l, s); } -static char const* _Loc_numeric_name(void* l, char* s) -{ return _Locale_numeric_name((_Locale_numeric*)l, s); } -static char const* _Loc_time_name(void* l, char* s) -{ return _Locale_time_name((_Locale_time*)l, s); } -static char const* _Loc_collate_name(void* l, char* s) -{ return _Locale_collate_name((_Locale_collate*)l, s); } -static char const* _Loc_monetary_name(void* l, char* s) -{ return _Locale_monetary_name((_Locale_monetary*)l, s); } -static char const* _Loc_messages_name(void* l, char* s) -{ return _Locale_messages_name((_Locale_messages*)l, s); } - -static const char* _Loc_ctype_default(char* p) -{ return _Locale_ctype_default(p); } -static const char* _Loc_numeric_default(char * p) -{ return _Locale_numeric_default(p); } -static const char* _Loc_time_default(char* p) -{ return _Locale_time_default(p); } -static const char* _Loc_collate_default(char* p) -{ return _Locale_collate_default(p); } -static const char* _Loc_monetary_default(char* p) -{ return _Locale_monetary_default(p); } -static const char* _Loc_messages_default(char* p) -{ return _Locale_messages_default(p); } - -static void _Loc_ctype_destroy(void* p) {_Locale_ctype_destroy((_Locale_ctype*)p); } -static void _Loc_codecvt_destroy(void* p) {_Locale_codecvt_destroy((_Locale_codecvt*)p); } -static void _Loc_numeric_destroy(void* p) {_Locale_numeric_destroy((_Locale_numeric*)p); } -static void _Loc_time_destroy(void* p) {_Locale_time_destroy((_Locale_time*)p);} -static void _Loc_collate_destroy(void* p) {_Locale_collate_destroy((_Locale_collate*)p);} -static void _Loc_monetary_destroy(void* p) {_Locale_monetary_destroy((_Locale_monetary*)p);} -static void _Loc_messages_destroy(void* p) {_Locale_messages_destroy((_Locale_messages*)p);} - -typedef void* (*loc_create_func_t)(const char *, _Locale_name_hint*, int *__err_code); -typedef char const* (*loc_name_func_t)(void* l, char* s); -typedef void (*loc_destroy_func_t)(void* l); -typedef const char* (*loc_default_name_func_t)(char* s); -typedef char const* (*loc_extract_name_func_t)(const char*, char*, _Locale_name_hint*, int *__err_code); - -//---------------------------------------------------------------------- -// Acquire and release low-level category objects. The whole point of -// this is so that we don't allocate (say) four different _Locale_ctype -// objects for a single locale. - -// Global hash tables for category objects. -typedef hash_map, hash, equal_to > Category_Map; - -// Look up a category by name -static Category_Map** ctype_hash() { - static Category_Map *_S_ctype_hash = 0; - return &_S_ctype_hash; -} -static Category_Map** codecvt_hash() { - static Category_Map *_S_codecvt_hash = 0; - return &_S_codecvt_hash; -} -static Category_Map** numeric_hash() { - static Category_Map *_S_numeric_hash = 0; - return &_S_numeric_hash; -} -static Category_Map** time_hash() { - static Category_Map *_S_time_hash = 0; - return &_S_time_hash; -} -static Category_Map** collate_hash() { - static Category_Map *_S_collate_hash = 0; - return &_S_collate_hash; -} -static Category_Map** monetary_hash() { - static Category_Map *_S_monetary_hash = 0; - return &_S_monetary_hash; -} -static Category_Map** messages_hash() { - static Category_Map *_S_messages_hash; - return &_S_messages_hash; -} - -// We have a single lock for all of the hash tables. We may wish to -// replace it with six different locks. -/* REFERENCED */ -static _STLP_STATIC_MUTEX& category_hash_mutex() { - static _STLP_STATIC_MUTEX lock _STLP_MUTEX_INITIALIZER; - return lock; -} - -static void* -__acquire_category(const char* &name, char *buf, _Locale_name_hint* hint, - loc_extract_name_func_t extract_name, - loc_create_func_t create_obj, loc_default_name_func_t default_name, - Category_Map ** M, int *__err_code) { -#if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x564) - typedef Category_Map::iterator Category_iterator; - pair result; -#else -# if !defined(_STLP_DEBUG) - pair<_Ht_iterator<_Slist_iterator >,_Nonconst_traits > > >,_NonLocalHashMapTraitsT > > >, bool> result; -# else - pair<_DBG_iter<_NonDbg_hashtable >,string,hash,_HashMapTraitsT > >,_Select1st > >,_DbgEqual >,allocator > > >,_DbgTraits<_NonLocalHashMapTraitsT > > > >, bool> result; -# endif -#endif - - *__err_code = _STLP_LOC_UNDEFINED; - - // Find what name to look for. Be careful if user requests the default. - if (name[0] == 0) { - name = default_name(buf); - if (name == 0 || name[0] == 0) - name = "C"; - } - else { - const char* cname = extract_name(name, buf, hint, __err_code); - if (cname == 0) { - return 0; - } - name = cname; - } - - Category_Map::value_type __e(name, pair((void*)0,size_t(0))); - - _STLP_auto_lock sentry(category_hash_mutex()); - - if (!*M) - *M = new Category_Map(); - - // Look for an existing entry with that name. - result = (*M)->insert_noresize(__e); - - if (result.second) { - // There was no entry in the map already. Create the category. - (*result.first).second.first = create_obj(name, hint, __err_code); - if (!(*result.first).second.first) { - (*M)->erase(result.first); -#if defined (_STLP_LEAKS_PEDANTIC) - if ((*M)->empty()) { - delete *M; - *M = 0; - } -#endif - return 0; - } - } - - // Increment the reference count. - ++((*result.first).second.second); - - return (*result.first).second.first; -} - -static void -__release_category(void* cat, - loc_destroy_func_t destroy_fun, - loc_name_func_t get_name, - Category_Map** M) { - Category_Map *pM = *M; - - if (cat && pM) { - // Find the name of the category object. - char buf[_Locale_MAX_SIMPLE_NAME + 1]; - char const* name = get_name(cat, buf); - - if (name != 0) { - _STLP_auto_lock sentry(category_hash_mutex()); - Category_Map::iterator it = pM->find(name); - if (it != pM->end()) { - // Decrement the ref count. If it goes to zero, delete this category - // from the map. - if (--((*it).second.second) == 0) { - void* cat1 = (*it).second.first; - destroy_fun(cat1); - pM->erase(it); -#if defined (_STLP_LEAKS_PEDANTIC) - if (pM->empty()) { - delete pM; - *M = 0; - } -#endif - } - } - } - } -} - -_Locale_ctype* _STLP_CALL __acquire_ctype(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code) { - return __REINTERPRET_CAST(_Locale_ctype*, __acquire_category(name, buf, hint, - _Locale_extract_ctype_name, _Loc_ctype_create, _Loc_ctype_default, - ctype_hash(), __err_code)); -} -_Locale_codecvt* _STLP_CALL __acquire_codecvt(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code) { - return __REINTERPRET_CAST(_Locale_codecvt*, __acquire_category(name, buf, hint, - _Locale_extract_ctype_name, _Loc_codecvt_create, _Loc_ctype_default, - codecvt_hash(), __err_code)); -} -_Locale_numeric* _STLP_CALL __acquire_numeric(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code) { - return __REINTERPRET_CAST(_Locale_numeric*, __acquire_category(name, buf, hint, - _Locale_extract_numeric_name, _Loc_numeric_create, _Loc_numeric_default, - numeric_hash(), __err_code)); -} -_Locale_time* _STLP_CALL __acquire_time(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code) { - return __REINTERPRET_CAST(_Locale_time*, __acquire_category(name, buf, hint, - _Locale_extract_time_name, _Loc_time_create, _Loc_time_default, - time_hash(), __err_code)); -} -_Locale_collate* _STLP_CALL __acquire_collate(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code) { - return __REINTERPRET_CAST(_Locale_collate*, __acquire_category(name, buf, hint, - _Locale_extract_collate_name, _Loc_collate_create, _Loc_collate_default, - collate_hash(), __err_code)); -} -_Locale_monetary* _STLP_CALL __acquire_monetary(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code) { - return __REINTERPRET_CAST(_Locale_monetary*, __acquire_category(name, buf, hint, - _Locale_extract_monetary_name, _Loc_monetary_create, _Loc_monetary_default, - monetary_hash(), __err_code)); -} -_Locale_messages* _STLP_CALL __acquire_messages(const char* &name, char *buf, _Locale_name_hint* hint, int *__err_code) { - return __REINTERPRET_CAST(_Locale_messages*, __acquire_category(name, buf, hint, - _Locale_extract_messages_name, _Loc_messages_create, _Loc_messages_default, - messages_hash(), __err_code)); -} - -void _STLP_CALL __release_ctype(_Locale_ctype* cat) -{ __release_category(cat, _Loc_ctype_destroy, _Loc_ctype_name, ctype_hash()); } -void _STLP_CALL __release_codecvt(_Locale_codecvt* cat) -{ __release_category(cat, _Loc_codecvt_destroy, _Loc_codecvt_name, codecvt_hash()); } -void _STLP_CALL __release_numeric(_Locale_numeric* cat) -{ __release_category(cat, _Loc_numeric_destroy, _Loc_numeric_name, numeric_hash()); } -void _STLP_CALL __release_time(_Locale_time* cat) -{ __release_category(cat, _Loc_time_destroy, _Loc_time_name, time_hash()); } -void _STLP_CALL __release_collate(_Locale_collate* cat) -{ __release_category(cat, _Loc_collate_destroy, _Loc_collate_name, collate_hash()); } -void _STLP_CALL __release_monetary(_Locale_monetary* cat) -{ __release_category(cat, _Loc_monetary_destroy, _Loc_monetary_name, monetary_hash()); } -void _STLP_CALL __release_messages(_Locale_messages* cat) -{ __release_category(cat, _Loc_messages_destroy, _Loc_messages_name, messages_hash()); } - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE diff --git a/build/stlport/src/locale_impl.cpp b/build/stlport/src/locale_impl.cpp deleted file mode 100644 index 71e08646a903..000000000000 --- a/build/stlport/src/locale_impl.cpp +++ /dev/null @@ -1,765 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include -#include -#include - -#include "c_locale.h" -#include "aligned_buffer.h" -#include "acquire_release.h" -#include "locale_impl.h" - -_STLP_BEGIN_NAMESPACE - -static const char _Nameless[] = "*"; - -static inline bool is_C_locale_name (const char* name) -{ return ((name[0] == 'C') && (name[1] == 0)); } - -locale::facet * _STLP_CALL _get_facet(locale::facet *f) -{ - if (f != 0) - f->_M_incr(); - return f; -} - -void _STLP_CALL _release_facet(locale::facet *&f) -{ - if ((f != 0) && (f->_M_decr() == 0)) { - delete f; - f = 0; - } -} - -size_t locale::id::_S_max = 27; - -static void _Stl_loc_assign_ids(); - -static _Stl_aligned_buffer<_Locale_impl::Init> __Loc_init_buf; - -_Locale_impl::Init::Init() { - if (_M_count()._M_incr() == 1) { - _Locale_impl::_S_initialize(); - } -} - -_Locale_impl::Init::~Init() { - if (_M_count()._M_decr() == 0) { - _Locale_impl::_S_uninitialize(); - } -} - -_Refcount_Base& _Locale_impl::Init::_M_count() const { - static _Refcount_Base _S_count(0); - return _S_count; -} - -_Locale_impl::_Locale_impl(const char* s) - : _Refcount_Base(0), name(s), facets_vec() { - facets_vec.reserve( locale::id::_S_max ); - new (&__Loc_init_buf) Init(); -} - -_Locale_impl::_Locale_impl( _Locale_impl const& locimpl ) - : _Refcount_Base(0), name(locimpl.name), facets_vec() { - for_each( locimpl.facets_vec.begin(), locimpl.facets_vec.end(), _get_facet); - facets_vec = locimpl.facets_vec; - new (&__Loc_init_buf) Init(); -} - -_Locale_impl::_Locale_impl( size_t n, const char* s) - : _Refcount_Base(0), name(s), facets_vec(n, 0) { - new (&__Loc_init_buf) Init(); -} - -_Locale_impl::~_Locale_impl() { - (&__Loc_init_buf)->~Init(); - for_each( facets_vec.begin(), facets_vec.end(), _release_facet); -} - -// Initialization of the locale system. This must be called before -// any locales are constructed. (Meaning that it must be called when -// the I/O library itself is initialized.) -void _STLP_CALL _Locale_impl::_S_initialize() { - _Stl_loc_assign_ids(); - make_classic_locale(); -} - -// Release of the classic locale ressources. Has to be called after the last -// locale destruction and not only after the classic locale destruction as -// the facets can be shared between different facets. -void _STLP_CALL _Locale_impl::_S_uninitialize() { - //Not necessary anymore as classic facets are now 'normal' dynamically allocated - //facets with a reference counter telling to _release_facet when the facet can be - //deleted. - //free_classic_locale(); -} - -// _Locale_impl non-inline member functions. -void _STLP_CALL _Locale_impl::_M_throw_bad_cast() { - _STLP_THROW(bad_cast()); -} - -void _Locale_impl::insert(_Locale_impl *from, const locale::id& n) { - if (n._M_index > 0 && n._M_index < from->size()) { - this->insert(from->facets_vec[n._M_index], n); - } -} - -locale::facet* _Locale_impl::insert(locale::facet *f, const locale::id& n) { - if (f == 0 || n._M_index == 0) - return 0; - - if (n._M_index >= facets_vec.size()) { - facets_vec.resize(n._M_index + 1); - } - - if (f != facets_vec[n._M_index]) - { - _release_facet(facets_vec[n._M_index]); - facets_vec[n._M_index] = _get_facet(f); - } - - return f; -} - -// -// content which is dependent on the name -// - -/* Six functions, one for each category. Each of them takes a - * a name, constructs that appropriate category facets by name, - * and inserts them into the locale. */ -_Locale_name_hint* _Locale_impl::insert_ctype_facets(const char* &name, char *buf, _Locale_name_hint* hint) { - if (name[0] == 0) - name = _Locale_ctype_default(buf); - - if (name == 0 || name[0] == 0 || is_C_locale_name(name)) { - _Locale_impl* i2 = locale::classic()._M_impl; - this->insert(i2, ctype::id); - this->insert(i2, codecvt::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(i2, ctype::id); - this->insert(i2, codecvt::id); -#endif - } else { - locale::facet* ct = 0; - locale::facet* cvt = 0; -#ifndef _STLP_NO_WCHAR_T - locale::facet* wct = 0; - locale::facet* wcvt = 0; -#endif - int __err_code; - _Locale_ctype *__lct = _STLP_PRIV __acquire_ctype(name, buf, hint, &__err_code); - if (!__lct) { - locale::_M_throw_on_creation_failure(__err_code, name, "ctype"); - return hint; - } - - if (hint == 0) hint = _Locale_get_ctype_hint(__lct); - - _STLP_TRY { - ct = new ctype_byname(__lct); - } - _STLP_UNWIND(_STLP_PRIV __release_ctype(__lct)); - - _STLP_TRY { - cvt = new codecvt_byname(name); - } - _STLP_UNWIND(delete ct); - -#ifndef _STLP_NO_WCHAR_T - _STLP_TRY { - _Locale_ctype *__lwct = _STLP_PRIV __acquire_ctype(name, buf, hint, &__err_code); - if (!__lwct) { - locale::_M_throw_on_creation_failure(__err_code, name, "ctype"); - return hint; - } - - _STLP_TRY { - wct = new ctype_byname(__lwct); - } - _STLP_UNWIND(_STLP_PRIV __release_ctype(__lwct)); - - _Locale_codecvt *__lwcvt = _STLP_PRIV __acquire_codecvt(name, buf, hint, &__err_code); - if (__lwcvt) { - _STLP_TRY { - wcvt = new codecvt_byname(__lwcvt); - } - _STLP_UNWIND(_STLP_PRIV __release_codecvt(__lwcvt); delete wct); - } - } - _STLP_UNWIND(delete cvt; delete ct); -#endif - - this->insert(ct, ctype::id); - this->insert(cvt, codecvt::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(wct, ctype::id); - if (wcvt) this->insert(wcvt, codecvt::id); -#endif - } - return hint; -} - -_Locale_name_hint* _Locale_impl::insert_numeric_facets(const char* &name, char *buf, _Locale_name_hint* hint) { - if (name[0] == 0) - name = _Locale_numeric_default(buf); - - _Locale_impl* i2 = locale::classic()._M_impl; - - // We first insert name independant facets taken from the classic locale instance: - this->insert(i2, - num_put > >::id); - this->insert(i2, - num_get > >::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(i2, - num_get > >::id); - this->insert(i2, - num_put > >::id); -#endif - - if (name == 0 || name[0] == 0 || is_C_locale_name(name)) { - this->insert(i2, numpunct::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(i2, numpunct::id); -#endif - } - else { - locale::facet* punct = 0; -#ifndef _STLP_NO_WCHAR_T - locale::facet* wpunct = 0; -#endif - - int __err_code; - _Locale_numeric *__lpunct = _STLP_PRIV __acquire_numeric(name, buf, hint, &__err_code); - if (!__lpunct) { - locale::_M_throw_on_creation_failure(__err_code, name, "numpunct"); - return hint; - } - - if (hint == 0) hint = _Locale_get_numeric_hint(__lpunct); - _STLP_TRY { - punct = new numpunct_byname(__lpunct); - } - _STLP_UNWIND(_STLP_PRIV __release_numeric(__lpunct)); - -#ifndef _STLP_NO_WCHAR_T - _Locale_numeric *__lwpunct = _STLP_PRIV __acquire_numeric(name, buf, hint, &__err_code); - if (!__lwpunct) { - delete punct; - locale::_M_throw_on_creation_failure(__err_code, name, "numpunct"); - return hint; - } - if (__lwpunct) { - _STLP_TRY { - wpunct = new numpunct_byname(__lwpunct); - } - _STLP_UNWIND(_STLP_PRIV __release_numeric(__lwpunct); delete punct); - } -#endif - - this->insert(punct, numpunct::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(wpunct, numpunct::id); -#endif - } - return hint; -} - -_Locale_name_hint* _Locale_impl::insert_time_facets(const char* &name, char *buf, _Locale_name_hint* hint) { - if (name[0] == 0) - name = _Locale_time_default(buf); - - if (name == 0 || name[0] == 0 || is_C_locale_name(name)) { - _Locale_impl* i2 = locale::classic()._M_impl; - this->insert(i2, - time_get > >::id); - this->insert(i2, - time_put > >::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(i2, - time_get > >::id); - this->insert(i2, - time_put > >::id); -#endif - } else { - locale::facet *get = 0; - locale::facet *put = 0; -#ifndef _STLP_NO_WCHAR_T - locale::facet *wget = 0; - locale::facet *wput = 0; -#endif - - int __err_code; - _Locale_time *__time = _STLP_PRIV __acquire_time(name, buf, hint, &__err_code); - if (!__time) { - // time facets category is not mandatory for correct stream behavior so if platform - // do not support it we do not generate a runtime_error exception. - if (__err_code == _STLP_LOC_NO_MEMORY) { - _STLP_THROW_BAD_ALLOC; - } - return hint; - } - - if (!hint) hint = _Locale_get_time_hint(__time); - _STLP_TRY { - get = new time_get_byname > >(__time); - put = new time_put_byname > >(__time); -#ifndef _STLP_NO_WCHAR_T - wget = new time_get_byname > >(__time); - wput = new time_put_byname > >(__time); -#endif - } -#ifndef _STLP_NO_WCHAR_T - _STLP_UNWIND(delete wget; delete put; delete get; _STLP_PRIV __release_time(__time)); -#else - _STLP_UNWIND(delete get; _STLP_PRIV __release_time(__time)); -#endif - - _STLP_PRIV __release_time(__time); - - this->insert(get, time_get > >::id); - this->insert(put, time_put > >::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(wget, time_get > >::id); - this->insert(wput, time_put > >::id); -#endif - } - return hint; -} - -_Locale_name_hint* _Locale_impl::insert_collate_facets(const char* &name, char *buf, _Locale_name_hint* hint) { - if (name[0] == 0) - name = _Locale_collate_default(buf); - - if (name == 0 || name[0] == 0 || is_C_locale_name(name)) { - _Locale_impl* i2 = locale::classic()._M_impl; - this->insert(i2, collate::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(i2, collate::id); -#endif - } - else { - locale::facet *col = 0; -#ifndef _STLP_NO_WCHAR_T - locale::facet *wcol = 0; -#endif - - int __err_code; - _Locale_collate *__coll = _STLP_PRIV __acquire_collate(name, buf, hint, &__err_code); - if (!__coll) { - if (__err_code == _STLP_LOC_NO_MEMORY) { - _STLP_THROW_BAD_ALLOC; - } - return hint; - } - - if (hint == 0) hint = _Locale_get_collate_hint(__coll); - _STLP_TRY { - col = new collate_byname(__coll); - } - _STLP_UNWIND(_STLP_PRIV __release_collate(__coll)); - -#ifndef _STLP_NO_WCHAR_T - _Locale_collate *__wcoll = _STLP_PRIV __acquire_collate(name, buf, hint, &__err_code); - if (!__wcoll) { - if (__err_code == _STLP_LOC_NO_MEMORY) { - delete col; - _STLP_THROW_BAD_ALLOC; - } - } - if (__wcoll) { - _STLP_TRY { - wcol = new collate_byname(__wcoll); - } - _STLP_UNWIND(_STLP_PRIV __release_collate(__wcoll); delete col); - } -#endif - - this->insert(col, collate::id); -#ifndef _STLP_NO_WCHAR_T - if (wcol) this->insert(wcol, collate::id); -#endif - } - return hint; -} - -_Locale_name_hint* _Locale_impl::insert_monetary_facets(const char* &name, char *buf, _Locale_name_hint* hint) { - if (name[0] == 0) - name = _Locale_monetary_default(buf); - - _Locale_impl* i2 = locale::classic()._M_impl; - - // We first insert name independant facets taken from the classic locale instance: - this->insert(i2, money_get > >::id); - this->insert(i2, money_put > >::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(i2, money_get > >::id); - this->insert(i2, money_put > >::id); -#endif - - if (name == 0 || name[0] == 0 || is_C_locale_name(name)) { - this->insert(i2, moneypunct::id); - this->insert(i2, moneypunct::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(i2, moneypunct::id); - this->insert(i2, moneypunct::id); -#endif - } - else { - locale::facet *punct = 0; - locale::facet *ipunct = 0; - -#ifndef _STLP_NO_WCHAR_T - locale::facet* wpunct = 0; - locale::facet* wipunct = 0; -#endif - - int __err_code; - _Locale_monetary *__mon = _STLP_PRIV __acquire_monetary(name, buf, hint, &__err_code); - if (!__mon) { - if (__err_code == _STLP_LOC_NO_MEMORY) { - _STLP_THROW_BAD_ALLOC; - } - return hint; - } - - if (hint == 0) hint = _Locale_get_monetary_hint(__mon); - - _STLP_TRY { - punct = new moneypunct_byname(__mon); - } - _STLP_UNWIND(_STLP_PRIV __release_monetary(__mon)); - - _Locale_monetary *__imon = _STLP_PRIV __acquire_monetary(name, buf, hint, &__err_code); - if (!__imon) { - delete punct; - if (__err_code == _STLP_LOC_NO_MEMORY) { - _STLP_THROW_BAD_ALLOC; - } - return hint; - } - - _STLP_TRY { - ipunct = new moneypunct_byname(__imon); - } - _STLP_UNWIND(_STLP_PRIV __release_monetary(__imon); delete punct); - -#ifndef _STLP_NO_WCHAR_T - _STLP_TRY { - _Locale_monetary *__wmon = _STLP_PRIV __acquire_monetary(name, buf, hint, &__err_code); - if (!__wmon) { - if (__err_code == _STLP_LOC_NO_MEMORY) { - _STLP_THROW_BAD_ALLOC; - } - } - - if (__wmon) { - _STLP_TRY { - wpunct = new moneypunct_byname(__wmon); - } - _STLP_UNWIND(_STLP_PRIV __release_monetary(__wmon)); - - _Locale_monetary *__wimon = _STLP_PRIV __acquire_monetary(name, buf, hint, &__err_code); - if (!__wimon) { - delete wpunct; - if (__err_code == _STLP_LOC_NO_MEMORY) { - _STLP_THROW_BAD_ALLOC; - } - wpunct = 0; - } - else { - _STLP_TRY { - wipunct = new moneypunct_byname(__wimon); - } - _STLP_UNWIND(_STLP_PRIV __release_monetary(__wimon); delete wpunct); - } - } - } - _STLP_UNWIND(delete ipunct; delete punct); -#endif - - this->insert(punct, moneypunct::id); - this->insert(ipunct, moneypunct::id); -#ifndef _STLP_NO_WCHAR_T - if (wpunct) this->insert(wpunct, moneypunct::id); - if (wipunct) this->insert(wipunct, moneypunct::id); -#endif - } - return hint; -} - -_Locale_name_hint* _Locale_impl::insert_messages_facets(const char* &name, char *buf, _Locale_name_hint* hint) { - if (name[0] == 0) - name = _Locale_messages_default(buf); - - if (name == 0 || name[0] == 0 || is_C_locale_name(name)) { - _Locale_impl* i2 = locale::classic()._M_impl; - this->insert(i2, messages::id); -#ifndef _STLP_NO_WCHAR_T - this->insert(i2, messages::id); -#endif - } - else { - locale::facet *msg = 0; -#ifndef _STLP_NO_WCHAR_T - locale::facet *wmsg = 0; -#endif - - int __err_code; - _Locale_messages *__msg = _STLP_PRIV __acquire_messages(name, buf, hint, &__err_code); - if (!__msg) { - if (__err_code == _STLP_LOC_NO_MEMORY) { - _STLP_THROW_BAD_ALLOC; - } - return hint; - } - - _STLP_TRY { - msg = new messages_byname(__msg); - } - _STLP_UNWIND(_STLP_PRIV __release_messages(__msg)); - -#ifndef _STLP_NO_WCHAR_T - _STLP_TRY { - _Locale_messages *__wmsg = _STLP_PRIV __acquire_messages(name, buf, hint, &__err_code); - if (!__wmsg) { - if (__err_code == _STLP_LOC_NO_MEMORY) { - _STLP_THROW_BAD_ALLOC; - } - } - - if (__wmsg) { - _STLP_TRY { - wmsg = new messages_byname(__wmsg); - } - _STLP_UNWIND(_STLP_PRIV __release_messages(__wmsg)); - } - } - _STLP_UNWIND(delete msg); -#endif - - this->insert(msg, messages::id); -#ifndef _STLP_NO_WCHAR_T - if (wmsg) this->insert(wmsg, messages::id); -#endif - } - return hint; -} - -static void _Stl_loc_assign_ids() { - // This assigns ids to every facet that is a member of a category, - // and also to money_get/put, num_get/put, and time_get/put - // instantiated using ordinary pointers as the input/output - // iterators. (The default is [io]streambuf_iterator.) - - money_get > >::id._M_index = 8; - money_put > >::id._M_index = 9; - num_get > >::id._M_index = 10; - num_put > >::id._M_index = 11; - time_get > >::id._M_index = 12; - time_put > >::id._M_index = 13; - -#ifndef _STLP_NO_WCHAR_T - money_get > >::id._M_index = 21; - money_put > >::id._M_index = 22; - num_get > >::id._M_index = 23; - num_put > > ::id._M_index = 24; - time_get > >::id._M_index = 25; - time_put > >::id._M_index = 26; -#endif - // locale::id::_S_max = 27; -} - -// To access those static instance use the getter below, they guaranty -// a correct initialization. -static locale *_Stl_classic_locale = 0; -static locale *_Stl_global_locale = 0; - -locale* _Stl_get_classic_locale() { - static _Locale_impl::Init init; - return _Stl_classic_locale; -} - -locale* _Stl_get_global_locale() { - static _Locale_impl::Init init; - return _Stl_global_locale; -} - -#if defined (_STLP_MSVC) || defined (__ICL) || defined (__ISCPP__) || defined (__DMC__) -/* - * The following static variable needs to be initialized before STLport - * users static variable in order for him to be able to use Standard - * streams in its variable initialization. - * This variable is here because MSVC do not allow to change the initialization - * segment in a given translation unit, iostream.cpp already contains an - * initialization segment specification. - */ -# pragma warning (disable : 4073) -# pragma init_seg(lib) -#endif - -static ios_base::Init _IosInit; - -void _Locale_impl::make_classic_locale() { - // This funcion will be called once: during build classic _Locale_impl - - // The classic locale contains every facet that belongs to a category. - static _Stl_aligned_buffer<_Locale_impl> _Locale_classic_impl_buf; - _Locale_impl *classic = new(&_Locale_classic_impl_buf) _Locale_impl("C"); - - locale::facet* classic_facets[] = { - 0, - new collate(1), - new ctype(0, false, 1), - new codecvt(1), - new moneypunct(1), - new moneypunct(1), - new numpunct(1), - new messages(1), - new money_get > >(1), - new money_put > >(1), - new num_get > >(1), - new num_put > >(1), - new time_get > >(1), - new time_put > >(1), -#ifndef _STLP_NO_WCHAR_T - new collate(1), - new ctype(1), - new codecvt(1), - new moneypunct(1), - new moneypunct(1), - new numpunct(1), - new messages(1), - new money_get > >(1), - new money_put > >(1), - new num_get > >(1), - new num_put > >(1), - new time_get > >(1), - new time_put > >(1), -#endif - 0 - }; - - const size_t nb_classic_facets = sizeof(classic_facets) / sizeof(locale::facet *); - classic->facets_vec.reserve(nb_classic_facets); - classic->facets_vec.assign(&classic_facets[0], &classic_facets[0] + nb_classic_facets); - - static locale _Locale_classic(classic); - _Stl_classic_locale = &_Locale_classic; - - static locale _Locale_global(classic); - _Stl_global_locale = &_Locale_global; -} - -// Declarations of (non-template) facets' static data members -// size_t locale::id::_S_max = 27; // made before - -locale::id collate::id = { 1 }; -locale::id ctype::id = { 2 }; -locale::id codecvt::id = { 3 }; -locale::id moneypunct::id = { 4 }; -locale::id moneypunct::id = { 5 }; -locale::id numpunct::id = { 6 } ; -locale::id messages::id = { 7 }; - -#ifndef _STLP_NO_WCHAR_T -locale::id collate::id = { 14 }; -locale::id ctype::id = { 15 }; -locale::id codecvt::id = { 16 }; -locale::id moneypunct::id = { 17 } ; -locale::id moneypunct::id = { 18 } ; -locale::id numpunct::id = { 19 }; -locale::id messages::id = { 20 }; -#endif - -_STLP_DECLSPEC _Locale_impl* _STLP_CALL _get_Locale_impl(_Locale_impl *loc) -{ - _STLP_ASSERT( loc != 0 ); - loc->_M_incr(); - return loc; -} - -void _STLP_CALL _release_Locale_impl(_Locale_impl *& loc) -{ - _STLP_ASSERT( loc != 0 ); - if (loc->_M_decr() == 0) { - if (*loc != *_Stl_classic_locale) - delete loc; - else - loc->~_Locale_impl(); - loc = 0; - } -} - -_STLP_DECLSPEC _Locale_impl* _STLP_CALL _copy_Nameless_Locale_impl(_Locale_impl *loc) -{ - _STLP_ASSERT( loc != 0 ); - _Locale_impl *loc_new = new _Locale_impl(*loc); - loc_new->name = _Nameless; - return loc_new; -} - -/* _GetFacetId implementation have to be here in order to be in the same translation unit - * as where id are initialize (in _Stl_loc_assign_ids) */ -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const money_get > >*) -{ return money_get > >::id; } -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const money_put > >*) -{ return money_put > >::id; } -#ifndef _STLP_NO_WCHAR_T -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const money_get > >*) -{ return money_get > >::id; } -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const money_put > >*) -{ return money_put > >::id; } -#endif - -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const num_get > >*) -{ return num_get > >::id; } -#ifndef _STLP_NO_WCHAR_T -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const num_get > >*) -{ return num_get > >::id; } -#endif - -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const num_put > >*) -{ return num_put > >::id; } -#ifndef _STLP_NO_WCHAR_T -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const num_put > >*) -{ return num_put > >::id; } -#endif - -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const time_get > >*) -{ return time_get > >::id; } -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const time_put > >*) -{ return time_put > >::id; } -#ifndef _STLP_NO_WCHAR_T -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const time_get > >*) -{ return time_get > >::id; } -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const time_put > >*) -{ return time_put > >::id; } -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - diff --git a/build/stlport/src/locale_impl.h b/build/stlport/src/locale_impl.h deleted file mode 100644 index 2aa694c99b58..000000000000 --- a/build/stlport/src/locale_impl.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef LOCALE_IMPL_H -#define LOCALE_IMPL_H - -#include // C locale header file. -#include -#include -#include -#include "c_locale.h" - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -//Export of _Locale_impl facets container: -# if !defined (_STLP_USE_PTR_SPECIALIZATIONS) -//If we are using pointer specialization, vector will use -//the already exported vector implementation. -_STLP_EXPORT_TEMPLATE_CLASS allocator; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy >; -_STLP_EXPORT_TEMPLATE_CLASS _Vector_base >; - -_STLP_MOVE_TO_STD_NAMESPACE -# endif -# if defined (_STLP_DEBUG) -_STLP_MOVE_TO_PRIV_NAMESPACE -# define _STLP_NON_DBG_VECTOR _STLP_NON_DBG_NAME(vector) -_STLP_EXPORT_TEMPLATE_CLASS __construct_checker<_STLP_NON_DBG_VECTOR > >; -_STLP_EXPORT_TEMPLATE_CLASS _STLP_NON_DBG_VECTOR >; -# undef _STLP_NON_DBG_VECTOR -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -_STLP_EXPORT_TEMPLATE_CLASS vector >; -#endif - -//---------------------------------------------------------------------- -// Class _Locale_impl -// This is the base class which implements access only and is supposed to -// be used for classic locale only -class _STLP_CLASS_DECLSPEC _Locale_impl : public _Refcount_Base { - public: - _Locale_impl(const char* s); - _Locale_impl(const _Locale_impl&); - _Locale_impl(size_t n, const char* s); - - private: - ~_Locale_impl(); - - public: - size_t size() const { return facets_vec.size(); } - - basic_string, allocator > name; - - static void _STLP_FUNCTION_THROWS _STLP_CALL _M_throw_bad_cast(); - - private: - void operator=(const _Locale_impl&); - - public: - class _STLP_CLASS_DECLSPEC Init { - public: - Init(); - ~Init(); - private: - _Refcount_Base& _M_count() const; - }; - - static void _STLP_CALL _S_initialize(); - static void _STLP_CALL _S_uninitialize(); - - static void make_classic_locale(); - static void free_classic_locale(); - - friend class Init; - - public: - // void remove(size_t index); - locale::facet* insert(locale::facet*, const locale::id& n); - void insert(_Locale_impl* from, const locale::id& n); - - // Helper functions for byname construction of locales. - _Locale_name_hint* insert_ctype_facets(const char* &name, char *buf, _Locale_name_hint* hint); - _Locale_name_hint* insert_numeric_facets(const char* &name, char *buf, _Locale_name_hint* hint); - _Locale_name_hint* insert_time_facets(const char* &name, char *buf, _Locale_name_hint* hint); - _Locale_name_hint* insert_collate_facets(const char* &name, char *buf, _Locale_name_hint* hint); - _Locale_name_hint* insert_monetary_facets(const char* &name, char *buf, _Locale_name_hint* hint); - _Locale_name_hint* insert_messages_facets(const char* &name, char *buf, _Locale_name_hint* hint); - - bool operator != (const locale& __loc) const { return __loc._M_impl != this; } - - private: - vector facets_vec; - - private: - friend _Locale_impl * _STLP_CALL _copy_Nameless_Locale_impl( _Locale_impl * ); - friend void _STLP_CALL _release_Locale_impl( _Locale_impl *& loc ); -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) || \ - defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) || defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) - friend class _STLP_NO_MEM_T_NAME(loc); -#else - friend class locale; -#endif -}; - -void _STLP_CALL _release_Locale_impl( _Locale_impl *& loc ); - -_STLP_END_NAMESPACE - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/lock_free_slist.h b/build/stlport/src/lock_free_slist.h deleted file mode 100644 index 7c753d17c5c5..000000000000 --- a/build/stlport/src/lock_free_slist.h +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_LOCK_FREE_SLIST_H -#define _STLP_LOCK_FREE_SLIST_H - -#if defined(_STLP_PTHREADS) -# include - -# if defined (__GNUC__) && defined (__i386__) - -# define _STLP_HAS_ATOMIC_FREELIST -/** - * Class that implements a non-blocking and thread-safe freelist. - * It is used for the lock-free node allocation engine. - * - * @author felixw@inin.com - */ -class _STLP_atomic_freelist { -public: - /** - * Type representing items of the freelist - */ - struct item { - item* _M_next; - }; - - _STLP_atomic_freelist() { - // Statically assert layout of member is as expected by assembly code - _STLP_STATIC_ASSERT(sizeof(_M) == 8) - _M._M_data._M_top = 0; - _M._M_data._M_sequence = 0; - } - - /** - * Atomically pushes the specified item onto the freelist. - * - * @param __item [in] Item to add to the front of the list - */ - void push(item* __item) { - // NOTE: GCC uses ebx as the PIC register for globals in shared libraries. - // The GCC version I'm using (3.4.1) won't temporarily spill it if it's - // used as input, output, or clobber. Instead, it complains with a - // "can't find a register in class `BREG' while reloading `asm'" error. - // This is probably a compiler bug, but as the cmpxchg8b instruction - // requires ebx, I work around this here by using ecx for the '__item' - // input and spilling ebx into edi. This also precludes us from using - // a "m" operand for the cmpxchg8b argument (GCC might think it can make - // it relative to ebx). Instead, we're using esi for the address of _M_data. - // - int __tmp1; // These dummy variables are used to tell GCC that the eax, ecx, - int __tmp2; // and edx registers will not have the same value as their input. - int __tmp3; // The optimizer will remove them as their values are not used. - __asm__ __volatile__ - (" movl %%ebx, %%edi\n\t" - " movl %%ecx, %%ebx\n\t" - "L1_%=: movl %%eax, (%%ebx)\n\t" // __item._M_next = _M._M_data._M_top - " leal 1(%%edx),%%ecx\n\t" // new sequence = _M._M_data._M_sequence + 1 - "lock; cmpxchg8b (%%esi)\n\t" - " jne L1_%=\n\t" // Failed, retry! (edx:eax now contain most recent _M_sequence:_M_top) - " movl %%edi, %%ebx" - :"=a" (__tmp1), "=d" (__tmp2), "=c" (__tmp3) - :"a" (_M._M_data._M_top), "d" (_M._M_data._M_sequence), "c" (__item), "S" (&_M._M_data) - :"edi", "memory", "cc"); - } - - /** - * Atomically removes the topmost item from the freelist and returns a - * pointer to it. Returns NULL if the list is empty. - * - * @return Item that was removed from front of list; NULL if list empty - */ - item* pop() { - item* __result; - int __tmp; - __asm__ __volatile__ - (" movl %%ebx, %%edi\n\t" - "L1_%=: testl %%eax, %%eax\n\t" // _M_top == NULL? - " je L2_%=\n\t" // If yes, we're done - " movl (%%eax), %%ebx\n\t" // new top = _M._M_data._M_top->_M_next - " leal 1(%%edx),%%ecx\n\t" // new sequence = _M._M_data._M_sequence + 1 - "lock; cmpxchg8b (%%esi)\n\t" - " jne L1_%=\n\t" // We failed, retry! (edx:eax now contain most recent _M_sequence:_M_top) - "L2_%=: movl %%edi, %%ebx" - :"=a" (__result), "=d" (__tmp) - :"a" (_M._M_data._M_top), "d" (_M._M_data._M_sequence), "S" (&_M._M_data) - :"edi", "ecx", "memory", "cc"); - return __result; - } - - /** - * Atomically detaches all items from the list and returns a pointer to the - * topmost item. The items are still chained and may be traversed safely as - * they're now "owned" by the calling thread. - * - * @return Pointer to topmost item in the list; NULL if list empty - */ - item* clear() { - item* __result; - int __tmp; - __asm__ __volatile__ - (" movl %%ebx, %%edi\n\t" - "L1_%=: testl %%eax, %%eax\n\t" // _M_top == NULL? - " je L2_%=\n\t" // If yes, we're done - " xorl %%ebx, %%ebx\n\t" // We're attempting to set _M_top to NULL - " leal 1(%%edx),%%ecx\n\t" // new sequence = _M._M_data._M_sequence + 1 - "lock; cmpxchg8b (%%esi)\n\t" - " jne L1_%=\n\t" // Failed, retry! (edx:eax now contain most recent _M_sequence:_M_top) - "L2_%=: movl %%edi, %%ebx" - :"=a" (__result), "=d" (__tmp) - :"a" (_M._M_data._M_top), "d" (_M._M_data._M_sequence), "S" (&_M._M_data) - :"edi", "ecx", "memory", "cc"); - return __result; - } - -private: - union { - long long _M_align; - struct { - item* _M_top; // Topmost element in the freelist - unsigned int _M_sequence; // Sequence counter to prevent "ABA problem" - } _M_data; - } _M; - - _STLP_atomic_freelist(const _STLP_atomic_freelist&); - _STLP_atomic_freelist& operator=(const _STLP_atomic_freelist&); -}; - -# endif /* if defined(__GNUC__) && defined(__i386__) */ - -#elif defined (_STLP_WIN32THREADS) - -# if !defined (_WIN64) -# define _STLP_USE_ASM_IMPLEMENTATION -# endif - -// Here are the compiler/platform requirements for the thread safe and -// lock free singly linked list implementation: -# if defined (_STLP_USE_ASM_IMPLEMENTATION) -// For the asm version: -# if defined (_STLP_MSVC) && defined (_M_IX86) && (_M_IX86 >= 500) -# define _STLP_HAS_ATOMIC_FREELIST -# endif -# else -// For the API based version: -# if defined (_STLP_NEW_PLATFORM_SDK) && (!defined (WINVER) || (WINVER >= 0x0501)) && \ - (!defined (_WIN32_WINNT) || (_WIN32_WINNT >= 0x0501)) -# define _STLP_HAS_ATOMIC_FREELIST -# endif -# endif - -# if defined (_STLP_HAS_ATOMIC_FREELIST) -# if defined (_STLP_USE_ASM_IMPLEMENTATION) -# if defined (_STLP_MSVC) && (_STLP_MSVC < 1300) || defined (__ICL) -# pragma warning (push) -# pragma warning (disable : 4035) //function has no return value -# endif -# endif -/** - * Class that implements a non-blocking and thread-safe freelist. - * It is used for the lock-free node allocation engine. - * - * @author felixw@inin.com - */ -class _STLP_atomic_freelist { -public: - /** - * Type representing items of the freelist - */ -# if defined (_STLP_USE_ASM_IMPLEMENTATION) - struct item { - item* _M_next; - }; -# else - typedef SLIST_ENTRY item; -# endif - - _STLP_atomic_freelist() { - // Statically assert layout of member is as expected by assembly code -# if defined (_STLP_USE_ASM_IMPLEMENTATION) - _STLP_STATIC_ASSERT((sizeof(item) == sizeof(item*)) && (sizeof(_M) == 8)) - _M._M_data._M_top = 0; - _M._M_data._M_sequence = 0; -# else - InitializeSListHead(&_M_head); -# endif - } - - /** - * Atomically pushes the specified item onto the freelist. - * - * @param __item [in] Item to add to the front of the list - */ - void push(item* __item) { -# if defined (_STLP_USE_ASM_IMPLEMENTATION) - __asm - { - mov esi, this - mov ebx, __item - mov eax, [esi] // _M._M_data._M_top - mov edx, [esi+4] // _M._M_data._M_sequence - L1: mov [ebx], eax // __item._M_next = _M._M_data._M_top - lea ecx, [edx+1] // new sequence = _M._M_data._M_sequence + 1 - lock cmpxchg8b qword ptr [esi] - jne L1 // Failed, retry! (edx:eax now contain most recent _M_sequence:_M_top) - } -# else - InterlockedPushEntrySList(&_M_head, __item); -# endif - } - - /** - * Atomically removes the topmost item from the freelist and returns a - * pointer to it. Returns NULL if the list is empty. - * - * @return Item that was removed from front of list; NULL if list empty - */ - item* pop() { -# if defined (_STLP_USE_ASM_IMPLEMENTATION) - __asm - { - mov esi, this - mov eax, [esi] // _M._M_data._M_top - mov edx, [esi+4] // _M._M_data._M_sequence - L1: test eax, eax // _M_top == NULL? - je L2 // Yes, we're done - mov ebx, [eax] // new top = _M._M_data._M_top->_M_next - lea ecx, [edx+1] // new sequence = _M._M_data._M_sequence + 1 - lock cmpxchg8b qword ptr [esi] - jne L1 // Failed, retry! (edx:eax now contain most recent _M_sequence:_M_top) - L2: - } -# else - return InterlockedPopEntrySList(&_M_head); -# endif - } - - /** - * Atomically detaches all items from the list and returns pointer to the - * topmost. The items are still chained and may be traversed safely as - * they're now "owned" by the calling thread. - * - * @return Pointer to topmost item in the list; NULL if list empty - */ - item* clear() { -# if defined (_STLP_USE_ASM_IMPLEMENTATION) - __asm - { - mov esi, this - mov eax, [esi] // _M._M_data._M_top - mov edx, [esi+4] // _M._M_data._M_sequence - L1: test eax, eax // _M_top == NULL? - je L2 // Yes, we're done - xor ebx,ebx // We're attempting to set _M._M_data._M_top to NULL - lea ecx, [edx+1] // new sequence = _M._M_data._M_sequence + 1 - lock cmpxchg8b qword ptr [esi] - jne L1 // Failed, retry! (edx:eax now contain most recent _M_sequence:_M_top) - L2: - } -# else - return InterlockedFlushSList(&_M_head); -# endif - } - -private: -# if defined (_STLP_USE_ASM_IMPLEMENTATION) - union { - __int64 _M_align; - struct { - item* _M_top; // Topmost element in the freelist - unsigned int _M_sequence; // Sequence counter to prevent "ABA problem" - } _M_data; - } _M; -# else - SLIST_HEADER _M_head; -# endif - - _STLP_atomic_freelist(const _STLP_atomic_freelist&); - _STLP_atomic_freelist& operator = (const _STLP_atomic_freelist&); -}; - -# if defined (_STLP_USE_ASM_IMPLEMENTATION) -# if defined (_STLP_MSVC) && (_STLP_MSVC < 1300) || defined (__ICL) -# pragma warning (pop) -# endif -# endif - -# endif /* _STLP_HAS_ATOMIC_FREELIST */ - -#endif - -#endif /* _STLP_LOCK_FREE_SLIST_H */ diff --git a/build/stlport/src/message_facets.h b/build/stlport/src/message_facets.h deleted file mode 100644 index 946b5291b063..000000000000 --- a/build/stlport/src/message_facets.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef MESSAGE_FACETS_H -#define MESSAGE_FACETS_H - -#include -#include -#include - -#include "c_locale.h" - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Class _Catalog_locale_map. The reason for this is that, internally, -// a message string is always a char*. We need a ctype facet to convert -// a string to and from wchar_t, and the user is permitted to provide such -// a facet when calling open(). - -struct _Catalog_locale_map { - _Catalog_locale_map() : M(0) {} - ~_Catalog_locale_map() { if (M) delete M; } - - void insert(nl_catd_type key, const locale& L); - locale lookup(nl_catd_type key) const; - void erase(nl_catd_type key); - - typedef hash_map, equal_to, - allocator > > map_type; - map_type *M; - -private: // Invalidate copy constructor and assignment - _Catalog_locale_map(const _Catalog_locale_map&); - void operator=(const _Catalog_locale_map&); -}; - -/* - * In glibc nl_catd type is void *, but messages_base::catalog is defined as int - * by ISO/IEC 14882; The int may be too short to store pointer on 64-bit platforms; - * Another problem, is that do_open() may return negative value to indicate that no - * catalog open---this case can't be represented with pointers. - * The class _Catalog_nl_catd_map intended to make relation between - * messages_base::catalog and nl_catd handler. - * - */ - -#if defined (_STLP_USE_GLIBC2_LOCALIZATION) -# define _STLP_USE_NL_CATD_MAPPING -#else -/* If no mapping a message_base::catalog entry, int typedef according C++ Standard 22.2.7.1, - * has to be large enough to contain a nl_catd_type value. - */ -_STLP_STATIC_ASSERT(sizeof(nl_catd_type) <= sizeof(int)) -#endif - -class _STLP_CLASS_DECLSPEC _Catalog_nl_catd_map { -public: - _Catalog_nl_catd_map() - {} - ~_Catalog_nl_catd_map() - {} - - typedef hash_map, equal_to, - allocator > > map_type; - typedef hash_map, equal_to, - allocator > > rmap_type; - // typedef map map_type; - // typedef map rmap_type; - - messages_base::catalog insert(nl_catd_type cat) -#if !defined (_STLP_USE_NL_CATD_MAPPING) - { return (messages_base::catalog)cat; } -#else - ; -#endif - - void erase(messages_base::catalog) -#if !defined (_STLP_USE_NL_CATD_MAPPING) - {} -#else - ; -#endif - - nl_catd_type operator [] ( messages_base::catalog cat ) -#if !defined (_STLP_USE_NL_CATD_MAPPING) - { return cat; } -#else - { return cat < 0 ? 0 : M[cat]; } -#endif - -private: - _Catalog_nl_catd_map(const _Catalog_nl_catd_map&); - _Catalog_nl_catd_map& operator =(const _Catalog_nl_catd_map&); - -#if defined (_STLP_USE_NL_CATD_MAPPING) - map_type M; - rmap_type Mr; - static _STLP_VOLATILE __stl_atomic_t _count; -#endif -}; - -class _Messages { -public: - typedef messages_base::catalog catalog; - - _Messages(bool, const char *name); - _Messages(bool, _Locale_messages*); - - catalog do_open(const string& __fn, const locale& __loc) const; - string do_get(catalog __c, int __set, int __msgid, - const string& __dfault) const; -#if !defined (_STLP_NO_WCHAR_T) - wstring do_get(catalog __c, int __set, int __msgid, - const wstring& __dfault) const; -#endif - void do_close(catalog __c) const; - ~_Messages(); - -private: - _Locale_messages* _M_message_obj; - _Catalog_locale_map* _M_map; - mutable _Catalog_nl_catd_map _M_cat; - - //private definition to avoid warning (with ICL) - _Messages(const _Messages&); - _Messages& operator=(const _Messages&); -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/messages.cpp b/build/stlport/src/messages.cpp deleted file mode 100644 index ae4669e5c80d..000000000000 --- a/build/stlport/src/messages.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include - -#include "message_facets.h" -#include "acquire_release.h" - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -void _Catalog_locale_map::insert(nl_catd_type key, const locale& L) { - _STLP_TRY { -#if !defined (_STLP_NO_TYPEINFO) && !defined (_STLP_NO_RTTI) - // Don't bother to do anything unless we're using a non-default ctype facet -# ifdef _STLP_NO_WCHAR_T - typedef char _Char; -# else - typedef wchar_t _Char; -# endif - - typedef ctype<_Char> wctype; - wctype const& wct = use_facet(L); - if (typeid(wct) != typeid(wctype)) { -#endif - if (!M) - M = new map_type; - - M->insert(map_type::value_type(key, L)); -#if !defined (_STLP_NO_TYPEINFO) && !defined (_STLP_NO_RTTI) - } -#endif - } - _STLP_CATCH_ALL {} -} - -void _Catalog_locale_map::erase(nl_catd_type key) { - if (M) - M->erase(key); -} - -locale _Catalog_locale_map::lookup(nl_catd_type key) const { - if (M) { - map_type::const_iterator i = M->find(key); - return i != M->end() ? (*i).second : locale::classic(); - } - else - return locale::classic(); -} - - -#if defined (_STLP_USE_NL_CATD_MAPPING) -_STLP_VOLATILE __stl_atomic_t _Catalog_nl_catd_map::_count = 0; - -messages_base::catalog _Catalog_nl_catd_map::insert(nl_catd_type cat) { - messages_base::catalog &res = Mr[cat]; - if ( res == 0 ) { -#if defined (_STLP_ATOMIC_INCREMENT) - res = __STATIC_CAST(int, _STLP_ATOMIC_INCREMENT(&_count)); -#else - static _STLP_STATIC_MUTEX _Count_lock _STLP_MUTEX_INITIALIZER; - { - _STLP_auto_lock sentry(_Count_lock); - res = __STATIC_CAST(int, ++_count); - } -#endif - M[res] = cat; - } - return res; -} - -void _Catalog_nl_catd_map::erase(messages_base::catalog cat) { - map_type::iterator mit(M.find(cat)); - if (mit != M.end()) { - Mr.erase((*mit).second); - M.erase(mit); - } -} -#endif - -//---------------------------------------------------------------------- -// -_Messages::_Messages(bool is_wide, const char *name) : - _M_message_obj(0), _M_map(0) { - if (!name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _M_message_obj = _STLP_PRIV __acquire_messages(name, buf, 0, &__err_code); - if (!_M_message_obj) - locale::_M_throw_on_creation_failure(__err_code, name, "messages"); - - if (is_wide) - _M_map = new _Catalog_locale_map; -} - -_Messages::_Messages(bool is_wide, _Locale_messages* msg) : - _M_message_obj(msg), _M_map(is_wide ? new _Catalog_locale_map() : 0) -{} - -_Messages::~_Messages() { - __release_messages(_M_message_obj); - delete _M_map; -} - -_Messages::catalog _Messages::do_open(const string& filename, const locale& L) const { - nl_catd_type result = _M_message_obj ? _Locale_catopen(_M_message_obj, filename.c_str()) - : (nl_catd_type)(-1); - - if ( result != (nl_catd_type)(-1) ) { - if ( _M_map != 0 ) { - _M_map->insert(result, L); - } - return _STLP_MUTABLE(_Messages_impl, _M_cat).insert( result ); - } - - return -1; -} - -string _Messages::do_get(catalog cat, - int set, int p_id, const string& dfault) const { - return _M_message_obj != 0 && cat >= 0 - ? string(_Locale_catgets(_M_message_obj, _STLP_MUTABLE(_Messages_impl, _M_cat)[cat], - set, p_id, dfault.c_str())) - : dfault; -} - -#if !defined (_STLP_NO_WCHAR_T) - -wstring -_Messages::do_get(catalog thecat, - int set, int p_id, const wstring& dfault) const { - typedef ctype wctype; - const wctype& ct = use_facet(_M_map->lookup(_STLP_MUTABLE(_Messages_impl, _M_cat)[thecat])); - - const char* str = _Locale_catgets(_M_message_obj, _STLP_MUTABLE(_Messages_impl, _M_cat)[thecat], set, p_id, ""); - - // Verify that the lookup failed; an empty string might represent success. - if (!str) - return dfault; - else if (str[0] == '\0') { - const char* str2 = _Locale_catgets(_M_message_obj, _STLP_MUTABLE(_Messages_impl, _M_cat)[thecat], set, p_id, "*"); - if (!str2 || ((str2[0] == '*') && (str2[1] == '\0'))) - return dfault; - } - - // str is correct. Now we must widen it to get a wstring. - size_t n = strlen(str); - - // NOT PORTABLE. What we're doing relies on internal details of the - // string implementation. (Contiguity of string elements.) - wstring result(n, wchar_t(0)); - ct.widen(str, str + n, &*result.begin()); - return result; -} - -#endif - -void _Messages::do_close(catalog thecat) const { - if (_M_message_obj) - _Locale_catclose(_M_message_obj, _STLP_MUTABLE(_Messages_impl, _M_cat)[thecat]); - if (_M_map) _M_map->erase(_STLP_MUTABLE(_Messages_impl, _M_cat)[thecat]); - _STLP_MUTABLE(_Messages_impl, _M_cat).erase( thecat ); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -//---------------------------------------------------------------------- -// messages -messages::messages(size_t refs) - : locale::facet(refs) {} - -messages_byname::messages_byname(const char *name, size_t refs) - : messages(refs), _M_impl(new _STLP_PRIV _Messages(false, name)) {} - -messages_byname::messages_byname(_Locale_messages* msg) - : messages(0), _M_impl(new _STLP_PRIV _Messages(false, msg)) {} - -messages_byname::~messages_byname() -{ delete _M_impl; } - -messages_byname::catalog -messages_byname::do_open(const string& filename, const locale& l) const -{ return _M_impl->do_open(filename, l); } - -string -messages_byname::do_get(catalog cat, int set, int p_id, - const string& dfault) const -{ return _M_impl->do_get(cat, set, p_id, dfault); } - -void messages_byname::do_close(catalog cat) const -{ _M_impl->do_close(cat); } - -#if !defined (_STLP_NO_WCHAR_T) - -//---------------------------------------------------------------------- -// messages - -messages::messages(size_t refs) - : locale::facet(refs) {} - -messages_byname::messages_byname(const char *name, size_t refs) - : messages(refs), _M_impl(new _STLP_PRIV _Messages(true, name)) {} - -messages_byname::messages_byname(_Locale_messages* msg) - : messages(0), _M_impl(new _STLP_PRIV _Messages(true, msg)) {} - -messages_byname::~messages_byname() -{ delete _M_impl; } - -messages_byname::catalog -messages_byname::do_open(const string& filename, const locale& L) const -{ return _M_impl->do_open(filename, L); } - -wstring -messages_byname::do_get(catalog thecat, - int set, int p_id, const wstring& dfault) const -{ return _M_impl->do_get(thecat, set, p_id, dfault); } - -void messages_byname::do_close(catalog cat) const -{ _M_impl->do_close(cat); } - -#endif - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/monetary.cpp b/build/stlport/src/monetary.cpp deleted file mode 100644 index d4a67673719a..000000000000 --- a/build/stlport/src/monetary.cpp +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include -#include - -_STLP_BEGIN_NAMESPACE - -static void _Init_monetary_formats(money_base::pattern& pos_format, - money_base::pattern& neg_format) { - pos_format.field[0] = (char) money_base::symbol; - pos_format.field[1] = (char) money_base::sign; - pos_format.field[2] = (char) money_base::none; - pos_format.field[3] = (char) money_base::value; - - neg_format.field[0] = (char) money_base::symbol; - neg_format.field[1] = (char) money_base::sign; - neg_format.field[2] = (char) money_base::none; - neg_format.field[3] = (char) money_base::value; -} - -// This is being used throughout the library -static const char _S_empty_string[] = ""; -#ifndef _STLP_NO_WCHAR_T -static const wchar_t _S_empty_wstring[] = L""; -#endif - -// -// moneypunct<> -// - -moneypunct::moneypunct(size_t __refs) : locale::facet(__refs) -{ _Init_monetary_formats(_M_pos_format, _M_neg_format); } -moneypunct::~moneypunct() {} - -char moneypunct::do_decimal_point() const {return ' ';} -char moneypunct::do_thousands_sep() const {return ' ';} -string moneypunct::do_grouping() const { return _S_empty_string; } -string moneypunct::do_curr_symbol() const { return _S_empty_string; } -string moneypunct::do_positive_sign() const { return _S_empty_string; } -string moneypunct::do_negative_sign() const { return _S_empty_string; } -money_base::pattern moneypunct::do_pos_format() const {return _M_pos_format;} -money_base::pattern moneypunct::do_neg_format() const {return _M_neg_format;} -int moneypunct::do_frac_digits() const {return 0;} - -moneypunct::moneypunct(size_t __refs) : locale::facet(__refs) -{ _Init_monetary_formats(_M_pos_format, _M_neg_format); } -moneypunct::~moneypunct() {} - -char moneypunct::do_decimal_point() const {return ' ';} -char moneypunct::do_thousands_sep() const {return ' ';} - -string moneypunct::do_grouping() const { return _S_empty_string; } -string moneypunct::do_curr_symbol() const { return _S_empty_string; } -string moneypunct::do_positive_sign() const { return _S_empty_string; } -string moneypunct::do_negative_sign() const { return _S_empty_string; } -money_base::pattern moneypunct::do_pos_format() const {return _M_pos_format;} -money_base::pattern moneypunct::do_neg_format() const {return _M_neg_format;} -int moneypunct::do_frac_digits() const {return 0;} - -#ifndef _STLP_NO_WCHAR_T -moneypunct::moneypunct(size_t __refs) : locale::facet(__refs) -{ _Init_monetary_formats(_M_pos_format, _M_neg_format); } -moneypunct::~moneypunct() {} - -wchar_t moneypunct::do_decimal_point() const {return L' ';} -wchar_t moneypunct::do_thousands_sep() const {return L' ';} -string moneypunct::do_grouping() const {return _S_empty_string;} - -wstring moneypunct::do_curr_symbol() const -{return _S_empty_wstring;} -wstring moneypunct::do_positive_sign() const -{return _S_empty_wstring;} -wstring moneypunct::do_negative_sign() const -{return _S_empty_wstring;} -int moneypunct::do_frac_digits() const {return 0;} -money_base::pattern moneypunct::do_pos_format() const -{return _M_pos_format;} -money_base::pattern moneypunct::do_neg_format() const -{return _M_neg_format;} - -moneypunct::moneypunct(size_t __refs) : locale::facet(__refs) -{ _Init_monetary_formats(_M_pos_format, _M_neg_format); } -moneypunct::~moneypunct() {} - -wchar_t moneypunct::do_decimal_point() const {return L' ';} -wchar_t moneypunct::do_thousands_sep() const {return L' ';} -string moneypunct::do_grouping() const { return _S_empty_string;} -wstring moneypunct::do_curr_symbol() const -{return _S_empty_wstring;} -wstring moneypunct::do_positive_sign() const -{return _S_empty_wstring;} -wstring moneypunct::do_negative_sign() const -{return _S_empty_wstring;} -int moneypunct::do_frac_digits() const {return 0;} - -money_base::pattern moneypunct::do_pos_format() const -{return _M_pos_format;} -money_base::pattern moneypunct::do_neg_format() const -{return _M_neg_format;} - -#endif /* WCHAR_T */ - -// -// Instantiations -// - -#if !defined (_STLP_NO_FORCE_INSTANTIATE) - -template class _STLP_CLASS_DECLSPEC money_get > >; -template class _STLP_CLASS_DECLSPEC money_put > >; -// template class money_put; - -# ifndef _STLP_NO_WCHAR_T -template class _STLP_CLASS_DECLSPEC money_get > >; -template class _STLP_CLASS_DECLSPEC money_put > >; -// template class money_put; -// template class money_get; -# endif - -#endif - -#if !defined (_STLP_STATIC_CONST_INIT_BUG) && !defined (_STLP_NO_STATIC_CONST_DEFINITION) -const bool moneypunct::intl; -const bool moneypunct::intl; -# ifndef _STLP_NO_WCHAR_T -const bool moneypunct::intl; -const bool moneypunct::intl; -# endif -#endif - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/num_get.cpp b/build/stlport/src/num_get.cpp deleted file mode 100644 index 45901acff035..000000000000 --- a/build/stlport/src/num_get.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include -#include -#include - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -// __valid_grouping compares two strings, one representing the -// group sizes encountered when reading an integer, and the other -// representing the valid group sizes as returned by the numpunct -// grouping() member function. Both are interpreted right-to-left. -// The grouping string is treated as if it were extended indefinitely -// with its last value. For a grouping to be valid, each term in -// the first string must be equal to the corresponding term in the -// second, except for the last, which must be less than or equal. - -// boris : this takes reversed first string ! -bool _STLP_CALL -__valid_grouping(const char * first1, const char * last1, - const char * first2, const char * last2) { - if (first1 == last1 || first2 == last2) return true; - - --last1; --last2; - - while (first1 != last1) { - if (*last1 != *first2) - return false; - --last1; - if (first2 != last2) ++first2; - } - - return *last1 <= *first2; -} - -_STLP_DECLSPEC unsigned char _STLP_CALL __digit_val_table(unsigned __index) { - static const unsigned char __val_table[128] = { - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,10,11,12,13,14,15,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,10,11,12,13,14,15,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, - 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF - }; - - return __val_table[__index]; -} - -_STLP_DECLSPEC const char* _STLP_CALL __narrow_atoms() -{ return "+-0xX"; } - -// index is actually a char - -#if !defined (_STLP_NO_WCHAR_T) - -// Similar, except return the character itself instead of the numeric -// value. Used for floating-point input. -bool _STLP_CALL __get_fdigit(wchar_t& c, const wchar_t* digits) { - const wchar_t* p = find(digits, digits + 10, c); - if (p != digits + 10) { - c = (char)('0' + (p - digits)); - return true; - } - else - return false; -} - -bool _STLP_CALL __get_fdigit_or_sep(wchar_t& c, wchar_t sep, - const wchar_t * digits) { - if (c == sep) { - c = (char)','; - return true; - } - else - return __get_fdigit(c, digits); -} - -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -#if !defined(_STLP_NO_FORCE_INSTANTIATE) -//---------------------------------------------------------------------- -// Force instantiation of num_get<> -template class _STLP_CLASS_DECLSPEC istreambuf_iterator >; -// template class num_get; -template class num_get > >; - -# if !defined (_STLP_NO_WCHAR_T) -template class _STLP_CLASS_DECLSPEC istreambuf_iterator >; -template class num_get > >; -// template class num_get; -# endif -#endif - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/num_get_float.cpp b/build/stlport/src/num_get_float.cpp deleted file mode 100644 index 040760404a48..000000000000 --- a/build/stlport/src/num_get_float.cpp +++ /dev/null @@ -1,884 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include -#include - -#if (defined (__GNUC__) && !defined (__sun) && !defined (__hpux)) || \ - defined (__DMC__) -# include -#endif - -#if defined (__linux__) || defined (__MINGW32__) || defined (__CYGWIN__) || \ - defined (__BORLANDC__) || defined (__DMC__) || defined (__HP_aCC) - -# if defined (__BORLANDC__) -typedef unsigned int uint32_t; -typedef unsigned __int64 uint64_t; -# endif - -union _ll { - uint64_t i64; - struct { -# if defined (_STLP_BIG_ENDIAN) - uint32_t hi; - uint32_t lo; -# elif defined (_STLP_LITTLE_ENDIAN) - uint32_t lo; - uint32_t hi; -# else -# error Unknown endianess -# endif - } i32; -}; - -# if defined (__linux__) && !defined (__ANDROID__) -# include -# else -union ieee854_long_double { - long double d; - - /* This is the IEEE 854 double-extended-precision format. */ - struct { - unsigned int mantissa1:32; - unsigned int mantissa0:32; - unsigned int exponent:15; - unsigned int negative:1; - unsigned int empty:16; - } ieee; -}; - -# define IEEE854_LONG_DOUBLE_BIAS 0x3fff -# endif -#endif - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -//---------------------------------------------------------------------- -// num_get - -// Helper functions for _M_do_get_float. - -#if !defined (_STLP_NO_WCHAR_T) -void _STLP_CALL -_Initialize_get_float( const ctype& ct, - wchar_t& Plus, wchar_t& Minus, - wchar_t& pow_e, wchar_t& pow_E, - wchar_t* digits) { - char ndigits[11] = "0123456789"; - Plus = ct.widen('+'); - Minus = ct.widen('-'); - pow_e = ct.widen('e'); - pow_E = ct.widen('E'); - ct.widen(ndigits + 0, ndigits + 10, digits); -} -#endif /* WCHAR_T */ - -/* - * __string_to_double is just lifted from atof, the difference being - * that we just use '.' for the decimal point, rather than let it - * be taken from the current C locale, which of course is not accessible - * to us. - */ -#if defined (_STLP_MSVC) || defined (__BORLANDC__) || defined (__ICL) -typedef unsigned long uint32; -typedef unsigned __int64 uint64; -# define ULL(x) x##Ui64 -#elif defined (__unix) || defined (__MINGW32__) || \ - (defined (__DMC__) && (__LONGLONG)) || defined (__WATCOMC__) || \ - defined (__ANDROID__) -typedef uint32_t uint32; -typedef uint64_t uint64; -# define ULL(x) x##ULL -#else -# error There should be some unsigned 64-bit integer on the system! -#endif - -// Multiplication of two 64-bit integers, giving a 128-bit result. -// Taken from Algorithm M in Knuth section 4.3.1, with the loop -// hand-unrolled. -static void _Stl_mult64(const uint64 u, const uint64 v, - uint64& high, uint64& low) { - const uint64 low_mask = ULL(0xffffffff); - const uint64 u0 = u & low_mask; - const uint64 u1 = u >> 32; - const uint64 v0 = v & low_mask; - const uint64 v1 = v >> 32; - - uint64 t = u0 * v0; - low = t & low_mask; - - t = u1 * v0 + (t >> 32); - uint64 w1 = t & low_mask; - uint64 w2 = t >> 32; - - uint64 x = u0 * v1 + w1; - low += (x & low_mask) << 32; - high = u1 * v1 + w2 + (x >> 32); -} - -#if !defined (__linux__) || defined (__ANDROID__) - -# define bit11 ULL(0x7ff) -# define exponent_mask (bit11 << 52) - -# if !defined (__GNUC__) || (__GNUC__ != 3) || (__GNUC_MINOR__ != 4) || \ - (!defined (__CYGWIN__) && !defined (__MINGW32__)) -//Generate bad code when compiled with -O2 option. -inline -# endif -void _Stl_set_exponent(uint64 &val, uint64 exp) -{ val = (val & ~exponent_mask) | ((exp & bit11) << 52); } - -#endif // __linux__ - -/* Power of ten fractions for tenscale*/ -/* The constants are factored so that at most two constants - * and two multiplies are needed. Furthermore, one of the constants - * is represented exactly - 10**n where 1<= n <= 27. - */ - -static const uint64 _Stl_tenpow[80] = { -ULL(0xa000000000000000), /* _Stl_tenpow[0]=(10**1)/(2**4) */ -ULL(0xc800000000000000), /* _Stl_tenpow[1]=(10**2)/(2**7) */ -ULL(0xfa00000000000000), /* _Stl_tenpow[2]=(10**3)/(2**10) */ -ULL(0x9c40000000000000), /* _Stl_tenpow[3]=(10**4)/(2**14) */ -ULL(0xc350000000000000), /* _Stl_tenpow[4]=(10**5)/(2**17) */ -ULL(0xf424000000000000), /* _Stl_tenpow[5]=(10**6)/(2**20) */ -ULL(0x9896800000000000), /* _Stl_tenpow[6]=(10**7)/(2**24) */ -ULL(0xbebc200000000000), /* _Stl_tenpow[7]=(10**8)/(2**27) */ -ULL(0xee6b280000000000), /* _Stl_tenpow[8]=(10**9)/(2**30) */ -ULL(0x9502f90000000000), /* _Stl_tenpow[9]=(10**10)/(2**34) */ -ULL(0xba43b74000000000), /* _Stl_tenpow[10]=(10**11)/(2**37) */ -ULL(0xe8d4a51000000000), /* _Stl_tenpow[11]=(10**12)/(2**40) */ -ULL(0x9184e72a00000000), /* _Stl_tenpow[12]=(10**13)/(2**44) */ -ULL(0xb5e620f480000000), /* _Stl_tenpow[13]=(10**14)/(2**47) */ -ULL(0xe35fa931a0000000), /* _Stl_tenpow[14]=(10**15)/(2**50) */ -ULL(0x8e1bc9bf04000000), /* _Stl_tenpow[15]=(10**16)/(2**54) */ -ULL(0xb1a2bc2ec5000000), /* _Stl_tenpow[16]=(10**17)/(2**57) */ -ULL(0xde0b6b3a76400000), /* _Stl_tenpow[17]=(10**18)/(2**60) */ -ULL(0x8ac7230489e80000), /* _Stl_tenpow[18]=(10**19)/(2**64) */ -ULL(0xad78ebc5ac620000), /* _Stl_tenpow[19]=(10**20)/(2**67) */ -ULL(0xd8d726b7177a8000), /* _Stl_tenpow[20]=(10**21)/(2**70) */ -ULL(0x878678326eac9000), /* _Stl_tenpow[21]=(10**22)/(2**74) */ -ULL(0xa968163f0a57b400), /* _Stl_tenpow[22]=(10**23)/(2**77) */ -ULL(0xd3c21bcecceda100), /* _Stl_tenpow[23]=(10**24)/(2**80) */ -ULL(0x84595161401484a0), /* _Stl_tenpow[24]=(10**25)/(2**84) */ -ULL(0xa56fa5b99019a5c8), /* _Stl_tenpow[25]=(10**26)/(2**87) */ -ULL(0xcecb8f27f4200f3a), /* _Stl_tenpow[26]=(10**27)/(2**90) */ - -ULL(0xd0cf4b50cfe20766), /* _Stl_tenpow[27]=(10**55)/(2**183) */ -ULL(0xd2d80db02aabd62c), /* _Stl_tenpow[28]=(10**83)/(2**276) */ -ULL(0xd4e5e2cdc1d1ea96), /* _Stl_tenpow[29]=(10**111)/(2**369) */ -ULL(0xd6f8d7509292d603), /* _Stl_tenpow[30]=(10**139)/(2**462) */ -ULL(0xd910f7ff28069da4), /* _Stl_tenpow[31]=(10**167)/(2**555) */ -ULL(0xdb2e51bfe9d0696a), /* _Stl_tenpow[32]=(10**195)/(2**648) */ -ULL(0xdd50f1996b947519), /* _Stl_tenpow[33]=(10**223)/(2**741) */ -ULL(0xdf78e4b2bd342cf7), /* _Stl_tenpow[34]=(10**251)/(2**834) */ -ULL(0xe1a63853bbd26451), /* _Stl_tenpow[35]=(10**279)/(2**927) */ -ULL(0xe3d8f9e563a198e5), /* _Stl_tenpow[36]=(10**307)/(2**1020) */ - -// /* _Stl_tenpow[36]=(10**335)/(2**) */ -// /* _Stl_tenpow[36]=(10**335)/(2**) */ - -ULL(0xfd87b5f28300ca0e), /* _Stl_tenpow[37]=(10**-28)/(2**-93) */ -ULL(0xfb158592be068d2f), /* _Stl_tenpow[38]=(10**-56)/(2**-186) */ -ULL(0xf8a95fcf88747d94), /* _Stl_tenpow[39]=(10**-84)/(2**-279) */ -ULL(0xf64335bcf065d37d), /* _Stl_tenpow[40]=(10**-112)/(2**-372) */ -ULL(0xf3e2f893dec3f126), /* _Stl_tenpow[41]=(10**-140)/(2**-465) */ -ULL(0xf18899b1bc3f8ca2), /* _Stl_tenpow[42]=(10**-168)/(2**-558) */ -ULL(0xef340a98172aace5), /* _Stl_tenpow[43]=(10**-196)/(2**-651) */ -ULL(0xece53cec4a314ebe), /* _Stl_tenpow[44]=(10**-224)/(2**-744) */ -ULL(0xea9c227723ee8bcb), /* _Stl_tenpow[45]=(10**-252)/(2**-837) */ -ULL(0xe858ad248f5c22ca), /* _Stl_tenpow[46]=(10**-280)/(2**-930) */ -ULL(0xe61acf033d1a45df), /* _Stl_tenpow[47]=(10**-308)/(2**-1023) */ -ULL(0xe3e27a444d8d98b8), /* _Stl_tenpow[48]=(10**-336)/(2**-1116) */ -ULL(0xe1afa13afbd14d6e) /* _Stl_tenpow[49]=(10**-364)/(2**-1209) */ -}; - -static const short _Stl_twoexp[80] = { -4,7,10,14,17,20,24,27,30,34,37,40,44,47,50,54,57,60,64,67,70,74,77,80,84,87,90, -183,276,369,462,555,648,741,834,927,1020, --93,-186,-279,-372,-465,-558,-651,-744,-837,-930,-1023,-1116,-1209 -}; - -#define TEN_1 0 /* offset to 10 ** 1 */ -#define TEN_27 26 /* offset to 10 ** 27 */ -#define TEN_M28 37 /* offset to 10 ** -28 */ -#define NUM_HI_P 11 -#define NUM_HI_N 13 - -#define _Stl_HIBITULL (ULL(1) << 63) - -static void _Stl_norm_and_round(uint64& p, int& norm, uint64 prodhi, uint64 prodlo) { - norm = 0; - if ((prodhi & _Stl_HIBITULL) == 0) { - /* leading bit is a zero - * may have to normalize - */ - if ((prodhi == ~_Stl_HIBITULL) && - ((prodlo >> 62) == 0x3)) { /* normalization followed by round - * would cause carry to create - * extra bit, so don't normalize - */ - p = _Stl_HIBITULL; - return; - } - p = (prodhi << 1) | (prodlo >> 63); /* normalize */ - norm = 1; - prodlo <<= 1; - } - else { - p = prodhi; - } - - if ((prodlo & _Stl_HIBITULL) != 0) { /* first guard bit a one */ - if (((p & 0x1) != 0) || - prodlo != _Stl_HIBITULL ) { /* not borderline for round to even */ - /* round */ - ++p; - if (p == 0) - ++p; - } - } -} - -// Convert a 64-bitb fraction * 10^exp to a 64-bit fraction * 2^bexp. -// p: 64-bit fraction -// exp: base-10 exponent -// bexp: base-2 exponent (output parameter) -static void _Stl_tenscale(uint64& p, int exp, int& bexp) { - bexp = 0; - - if ( exp == 0 ) { /* no scaling needed */ - return; - } - - int exp_hi = 0, exp_lo = exp; /* exp = exp_hi*32 + exp_lo */ - int tlo = TEN_1, thi; /* offsets in power of ten table */ - int num_hi; /* number of high exponent powers */ - - if (exp > 0) { /* split exponent */ - if (exp_lo > 27) { - exp_lo++; - while (exp_lo > 27) { - exp_hi++; - exp_lo -= 28; - } - } - thi = TEN_27; - num_hi = NUM_HI_P; - } else { // exp < 0 - while (exp_lo < 0) { - exp_hi++; - exp_lo += 28; - } - thi = TEN_M28; - num_hi = NUM_HI_N; - } - - uint64 prodhi, prodlo; /* 128b product */ - int norm; /* number of bits of normalization */ - - int hi, lo; /* offsets in power of ten table */ - while (exp_hi) { /* scale */ - hi = (min) (exp_hi, num_hi); /* only a few large powers of 10 */ - exp_hi -= hi; /* could iterate in extreme case */ - hi += thi-1; - _Stl_mult64(p, _Stl_tenpow[hi], prodhi, prodlo); - _Stl_norm_and_round(p, norm, prodhi, prodlo); - bexp += _Stl_twoexp[hi] - norm; - } - - if (exp_lo) { - lo = tlo + exp_lo -1; - _Stl_mult64(p, _Stl_tenpow[lo], prodhi, prodlo); - _Stl_norm_and_round(p, norm, prodhi, prodlo); - bexp += _Stl_twoexp[lo] - norm; - } - - return; -} - -// First argument is a buffer of values from 0 to 9, NOT ascii. -// Second argument is number of digits in buffer, 1 <= digits <= 17. -// Third argument is base-10 exponent. - -/* IEEE representation */ -#if !defined (__linux__) || defined (__ANDROID__) - -union _Double_rep { - uint64 ival; - double val; -}; - -static double _Stl_atod(char *buffer, ptrdiff_t ndigit, int dexp) { - typedef numeric_limits limits; - _Double_rep drep; - uint64 &value = drep.ival; /* Value develops as follows: - * 1) decimal digits as an integer - * 2) left adjusted fraction - * 3) right adjusted fraction - * 4) exponent and fraction - */ - - uint32 guard; /* First guard bit */ - uint64 rest; /* Remaining guard bits */ - - int bexp; /* binary exponent */ - int nzero; /* number of non-zero bits */ - int sexp; /* scaling exponent */ - - char *bufferend; /* pointer to char after last digit */ - - /* Convert the decimal digits to a binary integer. */ - bufferend = buffer + ndigit; - value = 0; - - while (buffer < bufferend) { - value *= 10; - value += *buffer++; - } - - /* Check for zero and treat it as a special case */ - if (value == 0) { - return 0.0; - } - - /* Normalize value */ - bexp = 64; /* convert from 64b int to fraction */ - - /* Count number of non-zeroes in value */ - nzero = 0; - if ((value >> 32) != 0) { nzero = 32; } //*TY 03/25/2000 - added explicit comparison to zero to avoid uint64 to bool conversion operator - if ((value >> (16 + nzero)) != 0) { nzero += 16; } - if ((value >> ( 8 + nzero)) != 0) { nzero += 8; } - if ((value >> ( 4 + nzero)) != 0) { nzero += 4; } - if ((value >> ( 2 + nzero)) != 0) { nzero += 2; } - if ((value >> ( 1 + nzero)) != 0) { nzero += 1; } - if ((value >> ( nzero)) != 0) { nzero += 1; } - - /* Normalize */ - value <<= /*(uint64)*/ (64 - nzero); //*TY 03/25/2000 - removed extraneous cast to uint64 - bexp -= 64 - nzero; - - /* At this point we have a 64b fraction and a binary exponent - * but have yet to incorporate the decimal exponent. - */ - - /* multiply by 10^dexp */ - _Stl_tenscale(value, dexp, sexp); - bexp += sexp; - - if (bexp <= -1022) { /* HI denorm or underflow */ - bexp += 1022; - if (bexp < -53) { /* guaranteed underflow */ - value = 0; - } - else { /* denorm or possible underflow */ - int lead0 = 12 - bexp; /* 12 sign and exponent bits */ - - /* we must special case right shifts of more than 63 */ - if (lead0 > 64) { - rest = value; - guard = 0; - value = 0; - } - else if (lead0 == 64) { - rest = value & ((ULL(1)<< 63)-1); - guard = (uint32) ((value>> 63) & 1 ); - value = 0; - } - else { - rest = value & (((ULL(1) << lead0)-1)-1); - guard = (uint32) (((value>> lead0)-1) & 1); - value >>= /*(uint64)*/ lead0; /* exponent is zero */ - } - - /* Round */ - if (guard && ((value & 1) || rest) ) { - ++value; - if (value == (ULL(1) << (limits::digits - 1))) { /* carry created normal number */ - value = 0; - _Stl_set_exponent(value, 1); - } - } - } - } - else { /* not zero or denorm */ - /* Round to 53 bits */ - rest = value & ((1 << 10) - 1); - value >>= 10; - guard = (uint32) value & 1; - value >>= 1; - - /* value&1 guard rest Action - * - * dc 0 dc none - * 1 1 dc round - * 0 1 0 none - * 0 1 !=0 round - */ - if (guard) { - if (((value&1)!=0) || (rest!=0)) { - ++value; /* round */ - if ((value >> 53) != 0) { /* carry all the way across */ - value >>= 1; /* renormalize */ - ++bexp; - } - } - } - /* - * Check for overflow - * IEEE Double Precision Format - * (From Table 7-8 of Kane and Heinrich) - * - * Fraction bits 52 - * Emax +1023 - * Emin -1022 - * Exponent bias +1023 - * Exponent bits 11 - * Integer bit hidden - * Total width in bits 64 - */ - - if (bexp > limits::max_exponent) { /* overflow */ - return limits::infinity(); - } - else { /* value is normal */ - value &= ~(ULL(1) << (limits::digits - 1)); /* hide hidden bit */ - _Stl_set_exponent(value, bexp + 1022); /* add bias */ - } - } - - _STLP_STATIC_ASSERT(sizeof(uint64) >= sizeof(double)) - return drep.val; -} - -#endif - -#if defined (__linux__) || defined (__MINGW32__) || defined (__CYGWIN__) || \ - defined (__BORLANDC__) || defined (__DMC__) || defined (__HP_aCC) - -template -D _Stl_atodT(char *buffer, ptrdiff_t ndigit, int dexp) -{ - typedef numeric_limits limits; - - /* Convert the decimal digits to a binary integer. */ - char *bufferend = buffer + ndigit; /* pointer to char after last digit */ - _ll vv; - vv.i64 = 0L; - - while ( buffer < bufferend ) { - vv.i64 *= 10; - vv.i64 += *buffer++; - } - - if ( vv.i64 == ULL(0) ) { /* Check for zero and treat it as a special case */ - return D(0.0); - } - - /* Normalize value */ - - int bexp = 64; /* convert from 64b int to fraction */ - - /* Count number of non-zeroes in value */ - int nzero = 0; - if ((vv.i64 >> 32) != 0) { nzero = 32; } - if ((vv.i64 >> (16 + nzero)) != 0) { nzero += 16; } - if ((vv.i64 >> ( 8 + nzero)) != 0) { nzero += 8; } - if ((vv.i64 >> ( 4 + nzero)) != 0) { nzero += 4; } - if ((vv.i64 >> ( 2 + nzero)) != 0) { nzero += 2; } - if ((vv.i64 >> ( 1 + nzero)) != 0) { nzero += 1; } - if ((vv.i64 >> ( nzero)) != 0) { nzero += 1; } - - /* Normalize */ - nzero = 64 - nzero; - vv.i64 <<= nzero; // * TY 03/25/2000 - removed extraneous cast to uint64 - bexp -= nzero; - - /* At this point we have a 64b fraction and a binary exponent - * but have yet to incorporate the decimal exponent. - */ - - /* multiply by 10^dexp */ - int sexp; - _Stl_tenscale(vv.i64, dexp, sexp); - bexp += sexp; - - if ( bexp >= limits::min_exponent ) { /* not zero or denorm */ - if ( limits::digits < 64 ) { - /* Round to (64 - M + 1) bits */ - uint64_t rest = vv.i64 & ((~ULL(0) / ULL(2)) >> (limits::digits - 1)); - vv.i64 >>= M - 2; - uint32_t guard = (uint32) vv.i64 & 1; - vv.i64 >>= 1; - - /* value&1 guard rest Action - * - * dc 0 dc none - * 1 1 dc round - * 0 1 0 none - * 0 1 !=0 round - */ - - if (guard) { - if ( ((vv.i64 & 1) != 0) || (rest != 0) ) { - vv.i64++; /* round */ - if ( (vv.i64 >> (limits::digits < 64 ? limits::digits : 0)) != 0 ) { /* carry all the way across */ - vv.i64 >>= 1; /* renormalize */ - ++bexp; - } - } - } - - vv.i64 &= ~(ULL(1) << (limits::digits - 1)); /* hide hidden bit */ - } - /* - * Check for overflow - * IEEE Double Precision Format - * (From Table 7-8 of Kane and Heinrich) - * - * Fraction bits 52 - * Emax +1023 - * Emin -1022 - * Exponent bias +1023 - * Exponent bits 11 - * Integer bit hidden - * Total width in bits 64 - */ - - if (bexp > limits::max_exponent) { /* overflow */ - return limits::infinity(); - } - - /* value is normal */ - - IEEE v; - - v.ieee.mantissa0 = vv.i32.hi; - v.ieee.mantissa1 = vv.i32.lo; - v.ieee.negative = 0; - v.ieee.exponent = bexp + BIAS - 1; - - return v.d; - } - - /* HI denorm or underflow */ - bexp += BIAS - 1; - if (bexp < -limits::digits) { /* guaranteed underflow */ - vv.i64 = 0; - } else { /* denorm or possible underflow */ - - /* - * Problem point for long double: looks like this code reflect shareing of mantissa - * and exponent in 64b int; not so for long double - */ - - int lead0 = M - bexp; /* M = 12 sign and exponent bits */ - uint64_t rest; - uint32_t guard; - - /* we must special case right shifts of more than 63 */ - - if (lead0 > 64) { - rest = vv.i64; - guard = 0; - vv.i64 = 0; - } else if (lead0 == 64) { - rest = vv.i64 & ((ULL(1) << 63)-1); - guard = (uint32) ((vv.i64 >> 63) & 1 ); - vv.i64 = 0; - } else { - rest = vv.i64 & (((ULL(1) << lead0)-1)-1); - guard = (uint32) (((vv.i64 >> lead0)-1) & 1); - vv.i64 >>= /*(uint64)*/ lead0; /* exponent is zero */ - } - - /* Round */ - if (guard && ( (vv.i64 & 1) || rest)) { - vv.i64++; - if (vv.i64 == (ULL(1) << (limits::digits - 1))) { /* carry created normal number */ - IEEE v; - - v.ieee.mantissa0 = 0; - v.ieee.mantissa1 = 0; - v.ieee.negative = 0; - v.ieee.exponent = 1; - return v.d; - } - } - } - - IEEE v; - - v.ieee.mantissa0 = vv.i32.hi; - v.ieee.mantissa1 = vv.i32.lo; - v.ieee.negative = 0; - v.ieee.exponent = 0; - - return v.d; -} -#endif // __linux__ - -#if !defined (__linux__) || defined (__ANDROID__) -static double _Stl_string_to_double(const char *s) { - typedef numeric_limits limits; - const int max_digits = limits::digits10 + 2; - unsigned c; - unsigned Negate, decimal_point; - char *d; - int exp; - int dpchar; - char digits[max_digits]; - - c = *s++; - - /* process sign */ - Negate = 0; - if (c == '+') { - c = *s++; - } else if (c == '-') { - Negate = 1; - c = *s++; - } - - d = digits; - dpchar = '.' - '0'; - decimal_point = 0; - exp = 0; - - for (;;) { - c -= '0'; - if (c < 10) { - if (d == digits + max_digits) { - /* ignore more than max_digits digits, but adjust exponent */ - exp += (decimal_point ^ 1); - } else { - if (c == 0 && d == digits) { - /* ignore leading zeros */ - } else { - *d++ = (char) c; - } - exp -= decimal_point; - } - } else if (c == (unsigned int) dpchar && !decimal_point) { /* INTERNATIONAL */ - decimal_point = 1; - } else { - break; - } - c = *s++; - } - - /* strtod cant return until it finds the end of the exponent */ - if (d == digits) { - return 0.0; - } - - if (c == 'e' - '0' || c == 'E' - '0') { - register unsigned negate_exp = 0; - register int e = 0; - c = *s++; - if (c == '+' || c == ' ') { - c = *s++; - } else if (c == '-') { - negate_exp = 1; - c = *s++; - } - if (c -= '0', c < 10) { - do { - e = e * 10 + (int)c; - c = *s++; - } while (c -= '0', c < 10); - - if (negate_exp) { - e = -e; - } - exp += e; - } - } - - double x; - ptrdiff_t n = d - digits; - if ((exp + n - 1) < limits::min_exponent10) { - x = 0; - } - else if ((exp + n - 1) > limits::max_exponent10) { - x = limits::infinity(); - } - else { - /* Let _Stl_atod diagnose under- and over-flows. - * If the input was == 0.0, we have already returned, - * so retval of +-Inf signals OVERFLOW, 0.0 UNDERFLOW */ - x = _Stl_atod(digits, n, exp); - } - - if (Negate) { - x = -x; - } - - return x; -} - -#endif - -#if defined (__linux__) || defined (__MINGW32__) || defined (__CYGWIN__) || \ - defined (__BORLANDC__) || defined (__DMC__) || defined (__HP_aCC) - -template -D _Stl_string_to_doubleT(const char *s) -{ - typedef numeric_limits limits; - const int max_digits = limits::digits10; /* + 2 17 */; - unsigned c; - unsigned decimal_point; - char *d; - int exp; - D x; - int dpchar; - char digits[max_digits]; - - c = *s++; - - /* process sign */ - bool Negate = false; - if (c == '+') { - c = *s++; - } else if (c == '-') { - Negate = true; - c = *s++; - } - - d = digits; - dpchar = '.' - '0'; - decimal_point = 0; - exp = 0; - - for (;;) { - c -= '0'; - if (c < 10) { - if (d == digits + max_digits) { - /* ignore more than max_digits digits, but adjust exponent */ - exp += (decimal_point ^ 1); - } else { - if (c == 0 && d == digits) { - /* ignore leading zeros */ - } else { - *d++ = (char) c; - } - exp -= decimal_point; - } - } else if (c == (unsigned int) dpchar && !decimal_point) { /* INTERNATIONAL */ - decimal_point = 1; - } else { - break; - } - c = *s++; - } - /* strtod cant return until it finds the end of the exponent */ - if (d == digits) { - return D(0.0); - } - - if (c == 'e'-'0' || c == 'E'-'0') { - bool negate_exp = false; - register int e = 0; - c = *s++; - if (c == '+' || c == ' ') { - c = *s++; - } else if (c == '-') { - negate_exp = true; - c = *s++; - } - if (c -= '0', c < 10) { - do { - e = e * 10 + (int)c; - c = *s++; - } while (c -= '0', c < 10); - - if (negate_exp) { - e = -e; - } - exp += e; - } - } - - ptrdiff_t n = d - digits; - if ((exp + n - 1) < limits::min_exponent10) { - return D(0.0); // +0.0 is the same as -0.0 - } else if ((exp + n - 1) > limits::max_exponent10 ) { - // not good, because of x = -x below; this may lead to portability problems - x = limits::infinity(); - } else { - /* let _Stl_atod diagnose under- and over-flows */ - /* if the input was == 0.0, we have already returned, - so retval of +-Inf signals OVERFLOW, 0.0 UNDERFLOW - */ - x = _Stl_atodT(digits, n, exp); - } - - return Negate ? -x : x; -} - -#endif // __linux__ - -void _STLP_CALL -__string_to_float(const __iostring& v, float& val) -{ -#if !defined (__linux__) || defined (__ANDROID__) - val = (float)_Stl_string_to_double(v.c_str()); -#else - val = (float)_Stl_string_to_doubleT(v.c_str()); -#endif -} - -void _STLP_CALL -__string_to_float(const __iostring& v, double& val) -{ -#if !defined (__linux__) || defined (__ANDROID__) - val = _Stl_string_to_double(v.c_str()); -#else - val = _Stl_string_to_doubleT(v.c_str()); -#endif -} - -#if !defined (_STLP_NO_LONG_DOUBLE) -void _STLP_CALL -__string_to_float(const __iostring& v, long double& val) { -#if !defined (__linux__) && !defined (__MINGW32__) && !defined (__CYGWIN__) && \ - !defined (__BORLANDC__) && !defined (__DMC__) && !defined (__HP_aCC) - //The following function is valid only if long double is an alias for double. - _STLP_STATIC_ASSERT( sizeof(long double) <= sizeof(double) ) - val = _Stl_string_to_double(v.c_str()); -#else - val = _Stl_string_to_doubleT(v.c_str()); -#endif -} -#endif - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/num_put.cpp b/build/stlport/src/num_put.cpp deleted file mode 100644 index e1235617db04..000000000000 --- a/build/stlport/src/num_put.cpp +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include - -_STLP_BEGIN_NAMESPACE - -// Note that grouping[0] is the number of digits in the *rightmost* group. -// We assume, without checking, that *last is null and that there is enough -// space in the buffer to extend the number past [first, last). -template -static ptrdiff_t -__insert_grouping_aux(Char* first, Char* last, const string& grouping, - Char separator, Char Plus, Char Minus, - int basechars) { - typedef string::size_type str_size; - - if (first == last) - return 0; - - int sign = 0; - - if (*first == Plus || *first == Minus) { - sign = 1; - ++first; - } - - first += basechars; - Char* cur_group = last; // Points immediately beyond the rightmost - // digit of the current group. - int groupsize = 0; // Size of the current group (if grouping.size() == 0, size - // of group unlimited: we force condition (groupsize <= 0)) - - for ( str_size n = 0; ; ) { // Index of the current group - if ( n < grouping.size() ) { - groupsize = __STATIC_CAST(int, grouping[n++] ); - } - - if ((groupsize <= 0) || (groupsize >= cur_group - first) || (groupsize == CHAR_MAX)) { - break; - } - - // Insert a separator character just before position cur_group - groupsize - cur_group -= groupsize; - ++last; - copy_backward(cur_group, last, last + 1); - *cur_group = separator; - } - - return (last - first) + sign + basechars; -} - -//Dynamic output buffer version. -template -static void -__insert_grouping_aux( /* __basic_iostring */ Str& iostr, size_t __group_pos, - const string& grouping, - Char separator, Char Plus, Char Minus, - int basechars) { - typedef string::size_type str_size; - - if (iostr.size() < __group_pos) - return; - - int __first_pos = 0; - Char __first = *iostr.begin(); - - if (__first == Plus || __first == Minus) { - ++__first_pos; - } - - __first_pos += basechars; - - typename Str::iterator cur_group(iostr.begin() + __group_pos); // Points immediately beyond the rightmost - // digit of the current group. - int groupsize = 0; // Size of the current group (if grouping.size() == 0, size - // of group unlimited: we force condition (groupsize <= 0)) - - for ( str_size n = 0; ; ) { // Index of the current group - if ( n < grouping.size() ) { - groupsize = __STATIC_CAST( int, grouping[n++] ); - } - - if ( (groupsize <= 0) || (groupsize >= ((cur_group - iostr.begin()) - __first_pos)) || - (groupsize == CHAR_MAX)) { - break; - } - - // Insert a separator character just before position cur_group - groupsize - cur_group -= groupsize; - cur_group = iostr.insert(cur_group, separator); - } -} - -//---------------------------------------------------------------------- -// num_put - -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_DECLSPEC const char* _STLP_CALL __hex_char_table_lo() -{ return "0123456789abcdefx"; } - -_STLP_DECLSPEC const char* _STLP_CALL __hex_char_table_hi() -{ return "0123456789ABCDEFX"; } - -char* _STLP_CALL -__write_integer(char* buf, ios_base::fmtflags flags, long x) { - char tmp[64]; - char* bufend = tmp+64; - char* beg = __write_integer_backward(bufend, flags, x); - return copy(beg, bufend, buf); -} - -///------------------------------------- - -ptrdiff_t _STLP_CALL -__insert_grouping(char * first, char * last, const string& grouping, - char separator, char Plus, char Minus, int basechars) { - return __insert_grouping_aux(first, last, grouping, - separator, Plus, Minus, basechars); -} - -void _STLP_CALL -__insert_grouping(__iostring &str, size_t group_pos, const string& grouping, - char separator, char Plus, char Minus, int basechars) { - __insert_grouping_aux(str, group_pos, grouping, separator, Plus, Minus, basechars); -} - -#if !defined (_STLP_NO_WCHAR_T) -ptrdiff_t _STLP_CALL -__insert_grouping(wchar_t* first, wchar_t* last, const string& grouping, - wchar_t separator, wchar_t Plus, wchar_t Minus, - int basechars) { - return __insert_grouping_aux(first, last, grouping, separator, - Plus, Minus, basechars); -} - -void _STLP_CALL -__insert_grouping(__iowstring &str, size_t group_pos, const string& grouping, - wchar_t separator, wchar_t Plus, wchar_t Minus, - int basechars) { - __insert_grouping_aux(str, group_pos, grouping, separator, Plus, Minus, basechars); -} -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -//---------------------------------------------------------------------- -// Force instantiation of num_put<> -#if !defined(_STLP_NO_FORCE_INSTANTIATE) -template class _STLP_CLASS_DECLSPEC ostreambuf_iterator >; -// template class num_put; -template class num_put > >; -# ifndef _STLP_NO_WCHAR_T -template class ostreambuf_iterator >; -template class num_put > >; -// template class num_put; -# endif /* INSTANTIATE_WIDE_STREAMS */ -#endif - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/num_put_float.cpp b/build/stlport/src/num_put_float.cpp deleted file mode 100644 index e66ae93c0694..000000000000 --- a/build/stlport/src/num_put_float.cpp +++ /dev/null @@ -1,919 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include -#include - -#if defined (__DECCXX) -# define NDIG 400 -#else -# define NDIG 82 -#endif - -#define todigit(x) ((x)+'0') - -#if defined (_STLP_UNIX) - -# if defined (__sun) -# include -# endif - -# if defined (__sun) || defined (__digital__) || defined (__sgi) || defined (_STLP_SCO_OPENSERVER) || defined (__NCR_SVR) -// DEC, SGI & Solaris need this -# include -# include -# endif - -# if defined (__QNXNTO__) || ( defined(__GNUC__) && defined(__APPLE__) ) || defined(_STLP_USE_UCLIBC) /* 0.9.26 */ || \ - defined(__FreeBSD__) -# define USE_SPRINTF_INSTEAD -# endif - -# if defined (_AIX) // JFA 3-Aug-2000 -# include -# include -# endif - -# include -#endif - -#include -#include - -#if defined (_STLP_MSVC_LIB) || defined (__MINGW32__) || defined (__BORLANDC__) || defined (__DJGPP) || \ - defined (_STLP_SCO_OPENSERVER) || defined (__NCR_SVR) -# include -#endif - -#if defined (__MRC__) || defined (__SC__) || defined (_CRAY) //*TY 02/24/2000 - added support for MPW -# include -#endif - -#if defined (__CYGWIN__) -# include -#endif - -#if defined (__MSL__) -# include // for atoi -# include // for snprintf -# include -# include -#endif - -#if defined (__ISCPP__) -# include -#endif - -#include - -#if defined (__DMC__) -# define snprintf _snprintf -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -#if defined (__MWERKS__) || defined(__BEOS__) -# define USE_SPRINTF_INSTEAD -#endif - -template -struct _Dig -{ - enum { dig = _Dig::dig + 1 }; -}; - -_STLP_TEMPLATE_NULL -struct _Dig<0> -{ - enum { dig = 0 }; -}; - -#ifdef _STLP_NO_LONG_DOUBLE -# define MAXEDIGITS int(_Dig::dig) -# define MAXFSIG DBL_DIG -# define MAXFCVT (DBL_DIG + 1) -#else -# define MAXEDIGITS int(_Dig::dig) -# define MAXFSIG LDBL_DIG -# define MAXFCVT (LDBL_DIG + 1) -#endif - -// Tests for infinity and NaN differ on different OSs. We encapsulate -// these differences here. -#if !defined (USE_SPRINTF_INSTEAD) -# if defined (__hpux) && defined (__GNUC__) -# define _STLP_USE_SIGN_HELPER -# elif defined (__DJGPP) || (defined (_STLP_USE_GLIBC) && ! defined (__MSL__)) || \ - defined (__CYGWIN__) || \ - defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || \ - defined (__HP_aCC) -static inline bool _Stl_is_nan_or_inf(double x) -# if defined (isfinite) -{ return !isfinite(x); } -# else -{ return !finite(x); } -# endif -static inline bool _Stl_is_neg_nan(double x) { return isnan(x) && ( copysign(1., x) < 0 ); } -static inline bool _Stl_is_inf(double x) { return isinf(x); } -// inline bool _Stl_is_neg_inf(double x) { return isinf(x) < 0; } -static inline bool _Stl_is_neg_inf(double x) { return isinf(x) && x < 0; } -# elif (defined (__unix) || defined (__unix__)) && \ - !defined (__APPLE__) && !defined (__DJGPP) && !defined(__osf__) && \ - !defined (_CRAY) && !defined (__ANDROID__) -static inline bool _Stl_is_nan_or_inf(double x) { return IsNANorINF(x); } -static inline bool _Stl_is_inf(double x) { return IsNANorINF(x) && IsINF(x); } -static inline bool _Stl_is_neg_inf(double x) { return (IsINF(x)) && (x < 0.0); } -static inline bool _Stl_is_neg_nan(double x) { return IsNegNAN(x); } -# elif defined (_STLP_MSVC_LIB) || defined (__MINGW32__) || defined (__BORLANDC__) -static inline bool _Stl_is_nan_or_inf(double x) { return !_finite(x); } -# if !defined (__BORLANDC__) -static inline bool _Stl_is_inf(double x) { - int fclass = _fpclass(x); - return fclass == _FPCLASS_NINF || fclass == _FPCLASS_PINF; -} -static inline bool _Stl_is_neg_inf(double x) { return _fpclass(x) == _FPCLASS_NINF; } -# else -static inline bool _Stl_is_inf(double x) { return _Stl_is_nan_or_inf(x) && !_isnan(x);} -static inline bool _Stl_is_neg_inf(double x) { return _Stl_is_inf(x) && x < 0 ; } -# endif -static inline bool _Stl_is_neg_nan(double x) { return _isnan(x) && _copysign(1., x) < 0 ; } -# if defined (__BORLANDC__) -static inline bool _Stl_is_nan_or_inf(long double x) { return !_finitel(x); } -static inline bool _Stl_is_inf(long double x) { return _Stl_is_nan_or_inf(x) && !_isnanl(x);} -static inline bool _Stl_is_neg_inf(long double x) { return _Stl_is_inf(x) && x < 0 ; } -static inline bool _Stl_is_neg_nan(long double x) { return _isnanl(x) && _copysignl(1.l, x) < 0 ; } -# elif !defined (_STLP_NO_LONG_DOUBLE) -// Simply there to avoid warning long double -> double implicit conversion: -static inline bool _Stl_is_nan_or_inf(long double x) { return _Stl_is_nan_or_inf(__STATIC_CAST(double, x)); } -static inline bool _Stl_is_inf(long double x) { return _Stl_is_inf(__STATIC_CAST(double, x));} -static inline bool _Stl_is_neg_inf(long double x) { return _Stl_is_neg_inf(__STATIC_CAST(double, x)); } -static inline bool _Stl_is_neg_nan(long double x) { return _Stl_is_neg_nan(__STATIC_CAST(double, x)); } -# endif -# elif defined (__MRC__) || defined (__SC__) || defined (__DMC__) -static bool _Stl_is_nan_or_inf(double x) { return isnan(x) || !isfinite(x); } -static bool _Stl_is_inf(double x) { return !isfinite(x); } -static bool _Stl_is_neg_inf(double x) { return !isfinite(x) && signbit(x); } -static bool _Stl_is_neg_nan(double x) { return isnan(x) && signbit(x); } -# elif /* defined(__FreeBSD__) || defined(__OpenBSD__) || */ (defined(__GNUC__) && defined(__APPLE__)) -static inline bool _Stl_is_nan_or_inf(double x) { return !finite(x); } -static inline bool _Stl_is_inf(double x) { return _Stl_is_nan_or_inf(x) && ! isnan(x); } -static inline bool _Stl_is_neg_inf(double x) { return _Stl_is_inf(x) && x < 0 ; } -static inline bool _Stl_is_neg_nan(double x) { return isnan(x) && copysign(1., x) < 0 ; } -# elif defined( _AIX ) // JFA 11-Aug-2000 -static bool _Stl_is_nan_or_inf(double x) { return isnan(x) || !finite(x); } -static bool _Stl_is_inf(double x) { return !finite(x); } -// bool _Stl_is_neg_inf(double x) { return _class(x) == FP_MINUS_INF; } -static bool _Stl_is_neg_inf(double x) { return _Stl_is_inf(x) && ( copysign(1., x) < 0 ); } -static bool _Stl_is_neg_nan(double x) { return isnan(x) && ( copysign(1., x) < 0 ); } -# elif defined (__ISCPP__) -static inline bool _Stl_is_nan_or_inf (double x) { return _fp_isINF(x) || _fp_isNAN(x); } -static inline bool _Stl_is_inf (double x) { return _fp_isINF(x); } -static inline bool _Stl_is_neg_inf (double x) { return _fp_isINF(x) && x < 0; } -static inline bool _Stl_is_neg_nan (double x) { return _fp_isNAN(x) && x < 0; } -# elif defined (_CRAY) -# if defined (_CRAYIEEE) -static inline bool _Stl_is_nan_or_inf(double x) { return isnan(x) || isinf(x); } -static inline bool _Stl_is_inf(double x) { return isinf(x); } -static inline bool _Stl_is_neg_inf(double x) { return isinf(x) && signbit(x); } -static inline bool _Stl_is_neg_nan(double x) { return isnan(x) && signbit(x); } -# else -static inline bool _Stl_is_nan_or_inf(double x) { return false; } -static inline bool _Stl_is_inf(double x) { return false; } -static inline bool _Stl_is_neg_inf(double x) { return false; } -static inline bool _Stl_is_neg_nan(double x) { return false; } -# endif -# else // nothing from above -# define USE_SPRINTF_INSTEAD -# endif -#endif // !USE_SPRINTF_INSTEAD - -#if !defined (USE_SPRINTF_INSTEAD) -// Reentrant versions of floating-point conversion functions. The argument -// lists look slightly different on different operating systems, so we're -// encapsulating the differences here. - -# if defined (__CYGWIN__) || defined(__DJGPP) -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf) -{ return ecvtbuf(x, n, pt, sign, buf); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf) -{ return fcvtbuf(x, n, pt, sign, buf); } -# if !defined (_STLP_NO_LONG_DOUBLE) -# if defined (__CYGWIN__) -# define _STLP_EMULATE_LONG_DOUBLE_CVT -# else -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char* buf) -{ return ecvtbuf(x, n, pt, sign, buf); } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char* buf) -{ return fcvtbuf(x, n, pt, sign, buf); } -# endif -# endif -# elif defined (_STLP_USE_GLIBC) -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf, size_t bsize) -{ return ecvt_r(x, n, pt, sign, buf, bsize) == 0 ? buf : 0; } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf, size_t bsize) -{ return fcvt_r(x, n, pt, sign, buf, bsize) == 0 ? buf : 0; } -# ifndef _STLP_NO_LONG_DOUBLE -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char* buf, size_t bsize) -{ return qecvt_r(x, n, pt, sign, buf, bsize) == 0 ? buf : 0; } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char* buf, size_t bsize) -{ return qfcvt_r(x, n, pt, sign, buf, bsize) == 0 ? buf : 0; } -# endif -# define _STLP_NEED_CVT_BUFFER_SIZE -# elif defined (__sun) -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf) -{ return econvert(x, n, pt, sign, buf); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf) -{ return fconvert(x, n, pt, sign, buf); } -# ifndef _STLP_NO_LONG_DOUBLE -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char* buf) -{ return qeconvert(&x, n, pt, sign, buf); } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char* buf) -{ return qfconvert(&x, n, pt, sign, buf); } -# endif -# elif defined (__DECCXX) -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf, size_t bsize) -{ return (ecvt_r(x, n, pt, sign, buf, bsize) == 0 ? buf : 0); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf, size_t bsize) -{ return (fcvt_r(x, n, pt, sign, buf, bsize) == 0 ? buf : 0); } -# ifndef _STLP_NO_LONG_DOUBLE -// fbp : no "long double" conversions ! -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char* buf, size_t bsize) -{ return (ecvt_r((double)x, n, pt, sign, buf, bsize) == 0 ? buf : 0) ; } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char* buf, size_t bsize) -{ return (fcvt_r((double)x, n, pt, sign, buf, bsize) == 0 ? buf : 0); } -# endif -# define _STLP_NEED_CVT_BUFFER_SIZE -# elif defined (__hpux) -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign) -{ return ecvt(x, n, pt, sign); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign) -{ return fcvt(x, n, pt, sign); } -# if !defined (_STLP_NO_LONG_DOUBLE) -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign) -{ return _ldecvt(*(long_double*)&x, n, pt, sign); } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign) -{ return _ldfcvt(*(long_double*)&x, n, pt, sign); } -# endif -# define _STLP_CVT_NEED_SYNCHRONIZATION -# elif defined (__unix) && !defined (__APPLE__) && !defined (_CRAY) && \ - !defined (__ANDROID__) -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf) -{ return ecvt_r(x, n, pt, sign, buf); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf) -{ return fcvt_r(x, n, pt, sign, buf); } -# if !defined (_STLP_NO_LONG_DOUBLE) -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char* buf) -{ return qecvt_r(x, n, pt, sign, buf); } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char* buf) -{ return qfcvt_r(x, n, pt, sign, buf); } -# endif -# elif defined (_STLP_MSVC_LIB) || defined (__MINGW32__) || defined (__BORLANDC__) -# if defined (_STLP_USE_SAFE_STRING_FUNCTIONS) -# define _STLP_APPEND(a, b) a##b -# define _STLP_BUF_PARAMS , char* buf, size_t bsize -# define _STLP_SECURE_FUN(F, X, N, PT, SIGN) _STLP_APPEND(F, _s)(buf, bsize, X, N, PT, SIGN); return buf -# else -# define _STLP_BUF_PARAMS -# define _STLP_SECURE_FUN(F, X, N, PT, SIGN) return F(X, N, PT, SIGN) -# define _STLP_CVT_NEED_SYNCHRONIZATION -# endif -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign _STLP_BUF_PARAMS) -{ _STLP_SECURE_FUN(_ecvt, x, n, pt, sign); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign _STLP_BUF_PARAMS) -{ _STLP_SECURE_FUN(_fcvt, x, n, pt, sign); } -# if !defined (_STLP_NO_LONG_DOUBLE) -# if defined (_STLP_USE_SAFE_STRING_FUNCTIONS) -# define _STLP_PARAMS , buf, bsize -# else -# define _STLP_PARAMS -# endif -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign _STLP_BUF_PARAMS) -{ return _Stl_ecvtR(__STATIC_CAST(double, x), n, pt, sign _STLP_PARAMS); } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign _STLP_BUF_PARAMS) -{ return _Stl_fcvtR(__STATIC_CAST(double, x), n, pt, sign _STLP_PARAMS); } -# undef _STLP_PARAMS -# endif -# undef _STLP_SECURE_FUN -# undef _STLP_BUF_PARAMS -# undef _STLP_APPEND -# if defined (__BORLANDC__) /* || defined (__GNUC__) MinGW do not support 'L' modifier so emulation do not work */ -# define _STLP_EMULATE_LONG_DOUBLE_CVT -# endif -# elif defined (__ISCPP__) -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf) -{ return _fp_ecvt( x, n, pt, sign, buf); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf) -{ return _fp_fcvt(x, n, pt, sign, buf); } -# if !defined (_STLP_NO_LONG_DOUBLE) -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char* buf) -{ return _fp_ecvt( x, n, pt, sign, buf); } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char* buf) -{ return _fp_fcvt(x, n, pt, sign, buf); } -# endif -# elif defined (_AIX) || defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || \ - defined (__MRC__) || defined (__SC__) || defined (_CRAY) || \ - defined (_STLP_SCO_OPENSERVER) || defined (__NCR_SVR) || \ - defined (__DMC__) -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign) -{ return ecvt(x, n, pt, sign ); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign) -{ return fcvt(x, n, pt, sign); } -# if !defined (_STLP_NO_LONG_DOUBLE) -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign) -{ return ecvt(x, n, pt, sign ); } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign) -{ return fcvt(x, n, pt, sign); } -# endif -# define _STLP_CVT_NEED_SYNCHRONIZATION -# else -# error Missing _Stl_ecvtR and _Stl_fcvtR implementations. -# endif - -#if defined (_STLP_CVT_NEED_SYNCHRONIZATION) -/* STLport synchronize access to *cvt functions but those methods might - * be called from outside, in this case we will still have a race condition. */ -# if defined (_STLP_THREADS) -static _STLP_STATIC_MUTEX& put_float_mutex() { - static _STLP_STATIC_MUTEX __put_float_mutex _STLP_MUTEX_INITIALIZER; - return __put_float_mutex; -} -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf) { - _STLP_auto_lock lock(put_float_mutex()); - strcpy(buf, _Stl_ecvtR(x, n, pt, sign)); return buf; -} -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf) { - _STLP_auto_lock lock(put_float_mutex()); - strcpy(buf, _Stl_fcvtR(x, n, pt, sign)); return buf; -} -# if !defined (_STLP_NO_LONG_DOUBLE) && !defined (_STLP_EMULATE_LONG_DOUBLE_CVT) -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char* buf) { - _STLP_auto_lock lock(put_float_mutex()); - strcpy(buf, _Stl_ecvtR(x, n, pt, sign)); return buf; -} -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char* buf) { - _STLP_auto_lock lock(put_float_mutex()); - strcpy(buf, _Stl_fcvtR(x, n, pt, sign)); return buf; -} -# endif -# else -static inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char*) -{ return _Stl_ecvtR(x, n, pt, sign); } -static inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char*) -{ return _Stl_fcvtR(x, n, pt, sign); } -# if !defined (_STLP_NO_LONG_DOUBLE) && !defined (_STLP_EMULATE_LONG_DOUBLE_CVT) -static inline char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char*) -{ return _Stl_ecvtR(x, n, pt, sign); } -static inline char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char*) -{ return _Stl_fcvtR(x, n, pt, sign); } -# endif -# endif -#endif - -# if !defined (_STLP_USE_SAFE_STRING_FUNCTIONS) && !defined (_STLP_NEED_CVT_BUFFER_SIZE) -# define _STLP_CVT_BUFFER(B) B -# else -# define _STLP_CVT_BUFFER(B) _STLP_ARRAY_AND_SIZE(B) -# endif - -# if defined (_STLP_EMULATE_LONG_DOUBLE_CVT) -static void __fill_fmtbuf(char* fmtbuf, ios_base::fmtflags flags, char long_modifier); - -// Emulation of ecvt/fcvt functions using sprintf: -static char* _Stl_ecvtR(long double x, int n, int* pt, int* sign, char* buf) { - // If long double value can be safely converted to double without losing precision - // we use the ecvt function for double: - double y = __STATIC_CAST(double, x); - if (x == y) - return _Stl_ecvtR(y, n, pt, sign, buf); - - char fmtbuf[32]; - __fill_fmtbuf(fmtbuf, 0, 'L'); - sprintf(buf, fmtbuf, n, x < 0.0l ? -x : x); - /* We are waiting for something having the form x.xxxe+yyyy */ - *pt = 0; - *sign = 0; - int i = -1; - int offset = 0; - while (buf[++i] != 0 && n != 0) { - if (buf[i] >= '0' && buf[i] <= '9') { - --n; - if (offset != 0) - buf[i - offset] = buf[i]; - } - else { - if (offset != 0) break; - ++offset; - *pt = i; - } - } - if (offset != 0) - buf[i - offset] = 0; - // Extract exponent part in point position: - int e = 0; - while (buf[++i] != 0) { - if (buf[i] >= '0' && buf[i] <= '9') { - e = e * 10 + (buf[i] - '0'); - } - } - *pt += e; - return buf; -} - -static char* _Stl_fcvtR(long double x, int n, int* pt, int* sign, char* buf) { - // If long double value can be safely converted to double without losing precision - // we use the fcvt function for double: - double y = __STATIC_CAST(double, x); - if (x == y) - return _Stl_fcvtR(y, n, pt, sign, buf); - - char fmtbuf[32]; - __fill_fmtbuf(fmtbuf, ios_base::fixed, 'L'); - sprintf(buf, fmtbuf, n, x < 0.0l ? -x : x); - *pt = 0; - *sign = 0; - int i = -1; - int offset = 0; - while (buf[++i] != 0 && (offset == 0 || n != 0)) { - if (buf[i] >= '0' && buf[i] <= '9') { - if (offset != 0) { - --n; - buf[i - offset] = buf[i]; - } - } - else { - ++offset; - *pt = i; - } - } - if (offset != 0) - buf[i - offset] = 0; - else - *pt = i; - return buf; -} -#endif - -//---------------------------------------------------------------------- -// num_put - -// __format_float formats a mantissa and exponent as returned by -// one of the conversion functions (ecvt_r, fcvt_r, qecvt_r, qfcvt_r) -// according to the specified precision and format flags. This is -// based on doprnt but is much simpler since it is concerned only -// with floating point input and does not consider all formats. It -// also does not deal with blank padding, which is handled by -// __copy_float_and_fill. - -static size_t __format_float_scientific( __iostring& buf, const char *bp, - int decpt, int sign, bool is_zero, - ios_base::fmtflags flags, - int precision) { - // sign if required - if (sign) - buf += '-'; - else if (flags & ios_base::showpos) - buf += '+'; - - // first digit of mantissa - buf += *bp++; - - // start of grouping position, grouping won't occur in scientific notation - // as it is impossible to have something like 1234.0e04 but we return a correct - // group position for coherency with __format_float_fixed. - size_t __group_pos = buf.size(); - - // decimal point if required - if (precision != 0 || flags & ios_base::showpoint) { - buf += '.'; - } - - // rest of mantissa - while (*bp != 0 && precision--) - buf += *bp++; - - // trailing 0 if needed - if (precision > 0) - buf.append(precision, '0'); - - // exponent size = number of digits + exponent sign + exponent symbol + trailing zero - char expbuf[MAXEDIGITS + 3]; - //We start filling at the buffer end - char *suffix = expbuf + MAXEDIGITS + 2; - *suffix = 0; - if (!is_zero) { - int nn = decpt - 1; - if (nn < 0) - nn = -nn; - for (; nn > 9; nn /= 10) - *--suffix = (char) todigit(nn % 10); - *--suffix = (char) todigit(nn); - } - - // prepend leading zeros to exponent - // C89 Standard says that it should be at least 2 digits, C99 Standard says that - // we stop prepend zeros if more than 3 digits. To repect both STLport prepend zeros - // until it is 2 digits. - while (suffix > &expbuf[MAXEDIGITS]) - *--suffix = '0'; - - // put in the exponent sign - *--suffix = (char) ((decpt > 0 || is_zero ) ? '+' : '-'); - - // put in the e - *--suffix = flags & ios_base::uppercase ? 'E' : 'e'; - - // copy the suffix - buf += suffix; - return __group_pos; -} - -static size_t __format_float_fixed( __iostring &buf, const char *bp, - int decpt, int sign, - ios_base::fmtflags flags, - int precision) { - if ( sign && (decpt > -precision) && (*bp != 0) ) - buf += '-'; - else if ( flags & ios_base::showpos ) - buf += '+'; - - // digits before decimal point - int nnn = decpt; - do { - buf += (nnn <= 0 || *bp == 0) ? '0' : *bp++; - } while ( --nnn > 0 ); - - // start of grouping position - size_t __group_pos = buf.size(); - - // decimal point if needed - if ( flags & ios_base::showpoint || precision > 0 ) { - buf += '.'; - } - - // digits after decimal point if any - while ( *bp != 0 && --precision >= 0 ) { - buf += (++decpt <= 0) ? '0' : *bp++; - } - - // trailing zeros if needed - if (precision > 0) - buf.append(precision, '0'); - - return __group_pos; -} - -#if defined (_STLP_USE_SIGN_HELPER) -template -struct float_sign_helper { - float_sign_helper(_FloatT __x) - { _M_number._num = __x; } - - bool is_negative() const { - const unsigned short sign_mask(1 << (sizeof(unsigned short) * CHAR_BIT - 1)); - return (get_sign_word() & sign_mask) != 0; - } -private: - union { - unsigned short _Words[8]; - _FloatT _num; - } _M_number; - - unsigned short get_word_higher() const _STLP_NOTHROW - { return _M_number._Words[0]; } - unsigned short get_word_lower() const _STLP_NOTHROW - { return _M_number._Words[(sizeof(_FloatT) >= 12 ? 10 : sizeof(_FloatT)) / sizeof(unsigned short) - 1]; } - unsigned short get_sign_word() const _STLP_NOTHROW -# if defined (_STLP_BIG_ENDIAN) - { return get_word_higher(); } -# else /* _STLP_LITTLE_ENDIAN */ - { return get_word_lower(); } -# endif -}; -#endif - -template -static size_t __format_nan_or_inf(__iostring& buf, _FloatT x, ios_base::fmtflags flags) { - static const char* inf[2] = { "inf", "Inf" }; - static const char* nan[2] = { "nan", "NaN" }; - const char** inf_or_nan; -#if !defined (_STLP_USE_SIGN_HELPER) - if (_Stl_is_inf(x)) { // Infinity - inf_or_nan = inf; - if (_Stl_is_neg_inf(x)) - buf += '-'; - else if (flags & ios_base::showpos) - buf += '+'; - } else { // NaN - inf_or_nan = nan; - if (_Stl_is_neg_nan(x)) - buf += '-'; - else if (flags & ios_base::showpos) - buf += '+'; - } -#else - typedef numeric_limits<_FloatT> limits; - if (x == limits::infinity() || x == -limits::infinity()) { - inf_or_nan = inf; - } else { // NaN - inf_or_nan = nan; - } - float_sign_helper<_FloatT> helper(x); - if (helper.is_negative()) - buf += '-'; - else if (flags & ios_base::showpos) - buf += '+'; -#endif - size_t ret = buf.size(); - buf += inf_or_nan[flags & ios_base::uppercase ? 1 : 0]; - return ret; -} - -static inline size_t __format_float(__iostring &buf, const char * bp, - int decpt, int sign, bool is_zero, - ios_base::fmtflags flags, - int precision) { - size_t __group_pos = 0; - switch (flags & ios_base::floatfield) { - case ios_base::scientific: - __group_pos = __format_float_scientific( buf, bp, decpt, sign, is_zero, - flags, precision); - break; - case ios_base::fixed: - __group_pos = __format_float_fixed( buf, bp, decpt, sign, - flags, precision); - break; - default: // g format - // establish default precision - if (flags & ios_base::showpoint || precision > 0) { - if (precision == 0) precision = 1; - } else - precision = 6; - - // reset exponent if value is zero - if (is_zero) - decpt = 1; - - int kk = precision; - if (!(flags & ios_base::showpoint)) { - size_t n = strlen(bp); - if (n < (size_t)kk) - kk = (int)n; - while (kk >= 1 && bp[kk-1] == '0') - --kk; - } - - if (decpt < -3 || decpt > precision) { - precision = kk - 1; - __group_pos = __format_float_scientific( buf, bp, decpt, sign, is_zero, - flags, precision); - } else { - precision = kk - decpt; - __group_pos = __format_float_fixed( buf, bp, decpt, sign, - flags, precision); - } - break; - } /* switch */ - return __group_pos; -} - -#endif - -#if defined (USE_SPRINTF_INSTEAD) || defined (_STLP_EMULATE_LONG_DOUBLE_CVT) -struct GroupPos { - bool operator () (char __c) const { - return __c == '.' || - __c == 'e' || __c == 'E'; - } -}; - -// Creates a format string for sprintf() -static void __fill_fmtbuf(char* fmtbuf, ios_base::fmtflags flags, char long_modifier) { - fmtbuf[0] = '%'; - int i = 1; - - if (flags & ios_base::showpos) - fmtbuf[i++] = '+'; - - if (flags & ios_base::showpoint) - fmtbuf[i++] = '#'; - - fmtbuf[i++] = '.'; - fmtbuf[i++] = '*'; - - if (long_modifier) - fmtbuf[i++] = long_modifier; - - switch (flags & ios_base::floatfield) - { - case ios_base::scientific: - fmtbuf[i++] = (flags & ios_base::uppercase) ? 'E' : 'e'; - break; - case ios_base::fixed: -# if defined (__FreeBSD__) - fmtbuf[i++] = 'f'; -# else - fmtbuf[i++] = (flags & ios_base::uppercase) ? 'F' : 'f'; -# endif - break; - default: - fmtbuf[i++] = (flags & ios_base::uppercase) ? 'G' : 'g'; - break; - } - - fmtbuf[i] = 0; -} - -#endif /* USE_SPRINTF_INSTEAD */ - -template -static size_t __write_floatT(__iostring &buf, ios_base::fmtflags flags, int precision, - _FloatT x -#if defined (USE_SPRINTF_INSTEAD) - , char modifier) { - /* In theory, if we want 'arbitrary' precision, we should use 'arbitrary' - * buffer size below, but really we limited by exponent part in double. - * - ptr - */ - typedef numeric_limits<_FloatT> limits; - char static_buf[limits::max_exponent10 + 6]; // 6: -xxx.yyyE-zzz (sign, dot, E, exp sign, \0) - char fmtbuf[32]; - __fill_fmtbuf(fmtbuf, flags, modifier); - snprintf(_STLP_ARRAY_AND_SIZE(static_buf), fmtbuf, precision, x); - buf = static_buf; - return find_if(buf.begin(), buf.end(), GroupPos()) - buf.begin(); -#else - ) { - typedef numeric_limits<_FloatT> limits; - //If numeric_limits support is correct we use the exposed values to detect NaN and infinity: - if (limits::has_infinity && limits::has_quiet_NaN) { - if (!(x == x) || // NaN check - (x == limits::infinity() || x == -limits::infinity())) { - return __format_nan_or_inf(buf, x, flags); - } - } - // numeric_limits support is not good enough, we rely on platform dependent function - // _Stl_is_nan_or_inf that do not support long double. - else if (_Stl_is_nan_or_inf(x)) { - return __format_nan_or_inf(buf, x, flags); - } -# if defined (__MINGW32__) - //For the moment MinGW is limited to display at most numeric_limits::max() - if (x > numeric_limits::max() || - x < -numeric_limits::max()) { - return __format_nan_or_inf(buf, x, flags); - } -# endif - - /* Buffer size is max number of digits which is the addition of: - * - max_exponent10: max number of digits in fixed mode - * - digits10 + 2: max number of significant digits - * - trailing '\0' - */ - char cvtbuf[limits::max_exponent10 + limits::digits10 + 2 + 1]; - char *bp; - int decpt, sign; - - switch (flags & ios_base::floatfield) { - case ios_base::fixed: - { - /* Here, number of digits represents digits _after_ decimal point. - * In order to limit static buffer size we have to give 2 different values depending on x value. - * For small values (abs(x) < 1) we need as many digits as requested by precision limited by the maximum number of digits - * which is min_exponent10 + digits10 + 2 - * For bigger values we won't have more than limits::digits10 + 2 digits after decimal point. */ - int digits10 = (x > -1.0 && x < 1.0 ? -limits::min_exponent10 + limits::digits10 + 2 - : limits::digits10 + 2); - bp = _Stl_fcvtR(x, (min) (precision, digits10), &decpt, &sign, _STLP_CVT_BUFFER(cvtbuf) ); - } - break; - case ios_base::scientific: - default: - /* Here, number of digits is total number of digits which is limited to digits10 + 2. */ - { - int digits10 = limits::digits10 + 2; - bp = _Stl_ecvtR(x, (min) (precision, digits10), &decpt, &sign, _STLP_CVT_BUFFER(cvtbuf) ); - } - break; - } - return __format_float(buf, bp, decpt, sign, x == 0.0, flags, precision); -#endif -} - -size_t _STLP_CALL -__write_float(__iostring &buf, ios_base::fmtflags flags, int precision, - double x) { - return __write_floatT(buf, flags, precision, x -#if defined (USE_SPRINTF_INSTEAD) - , 0 -#endif - ); -} - -#if !defined (_STLP_NO_LONG_DOUBLE) -size_t _STLP_CALL -__write_float(__iostring &buf, ios_base::fmtflags flags, int precision, - long double x) { - return __write_floatT(buf, flags, precision, x -#if defined (USE_SPRINTF_INSTEAD) - , 'L' -#endif - ); -} -#endif - -void _STLP_CALL __get_floor_digits(__iostring &out, _STLP_LONGEST_FLOAT_TYPE __x) { - typedef numeric_limits<_STLP_LONGEST_FLOAT_TYPE> limits; -#if defined (USE_SPRINTF_INSTEAD) - char cvtbuf[limits::max_exponent10 + 6]; -# if !defined (_STLP_NO_LONG_DOUBLE) - snprintf(_STLP_ARRAY_AND_SIZE(cvtbuf), "%Lf", __x); // check for 1234.56! -# else - snprintf(_STLP_ARRAY_AND_SIZE(cvtbuf), "%f", __x); // check for 1234.56! -# endif - char *p = strchr( cvtbuf, '.' ); - if ( p == 0 ) { - out.append( cvtbuf ); - } else { - out.append( cvtbuf, p ); - } -#else - char cvtbuf[limits::max_exponent10 + 1]; - char * bp; - int decpt, sign; - bp = _Stl_fcvtR(__x, 0, &decpt, &sign, _STLP_CVT_BUFFER(cvtbuf)); - - if (sign) { - out += '-'; - } - out.append(bp, bp + decpt); -#endif -} - - -#if !defined (_STLP_NO_WCHAR_T) -void _STLP_CALL __convert_float_buffer( __iostring const& str, __iowstring &out, - const ctype& ct, wchar_t dot, bool __check_dot) { - string::const_iterator str_ite(str.begin()), str_end(str.end()); - - //First loop, check the dot char - if (__check_dot) { - while (str_ite != str_end) { - if (*str_ite != '.') { - out += ct.widen(*str_ite++); - } else { - out += dot; - break; - } - } - } else { - if (str_ite != str_end) { - out += ct.widen(*str_ite); - } - } - - if (str_ite != str_end) { - //Second loop, dot has been found, no check anymore - while (++str_ite != str_end) { - out += ct.widen(*str_ite); - } - } -} - -#endif - -void _STLP_CALL -__adjust_float_buffer(__iostring &str, char dot) { - if ('.' != dot) { - size_t __dot_pos = str.find('.'); - if (__dot_pos != string::npos) { - str[__dot_pos] = dot; - } - } -} - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/numpunct.cpp b/build/stlport/src/numpunct.cpp deleted file mode 100644 index cbadc7ab08ba..000000000000 --- a/build/stlport/src/numpunct.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// numpunct -char numpunct::do_decimal_point() const {return '.';} -char numpunct::do_thousands_sep() const { return ','; } -string numpunct::do_grouping() const { return string();} -string numpunct::do_truename() const { return "true";} -string numpunct::do_falsename() const { return "false"; } -numpunct::~numpunct() {} - -#if !defined (_STLP_NO_WCHAR_T) -wchar_t numpunct::do_decimal_point() const { return L'.'; } -wchar_t numpunct::do_thousands_sep() const { return L','; } -string numpunct::do_grouping() const { return string(); } -wstring numpunct::do_truename() const { return L"true"; } -wstring numpunct::do_falsename() const { return L"false"; } -numpunct::~numpunct() {} -#endif - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/ostream.cpp b/build/stlport/src/ostream.cpp deleted file mode 100644 index 96d473740969..000000000000 --- a/build/stlport/src/ostream.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include - -_STLP_BEGIN_NAMESPACE - -#if !defined(_STLP_NO_FORCE_INSTANTIATE) - -// instantiations -template class _STLP_CLASS_DECLSPEC basic_ostream >; - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -template class _STLP_CLASS_DECLSPEC _Osentry >; -# endif - -#ifndef _STLP_NO_WCHAR_T - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -template class _STLP_CLASS_DECLSPEC _Osentry >; -# endif -template class _STLP_CLASS_DECLSPEC basic_ostream >; -#endif - -#endif - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/sparc_atomic.s b/build/stlport/src/sparc_atomic.s deleted file mode 100644 index 67e41d6283ac..000000000000 --- a/build/stlport/src/sparc_atomic.s +++ /dev/null @@ -1,68 +0,0 @@ - .section ".text",#alloc,#execinstr - .align 8 - .skip 16 - - - /* - ** int _STLP_atomic_exchange (void *pvalue, int value) - */ - - .type _STLP_atomic_exchange,#function - .global _STLP_atomic_exchange - .align 8 - -_STLP_atomic_exchange: -0: - ld [%o0], %o2 ! Set the current value - mov %o1, %o3 ! Set the new value -! swap [%o0], %o3 ! Do the compare and swap - cas [%o0], %o2, %o3 - cmp %o2, %o3 ! Check whether successful - bne 0b ! Retry upon failure - stbar - mov %o2, %o0 ! Set the new value - retl ! return - nop - .size _STLP_atomic_exchange,(.-_STLP_atomic_exchange) - - /* int _STLP_atomic_increment (void *pvalue) */ - - .type _STLP_atomic_increment,#function - .global _STLP_atomic_increment - .align 8 -_STLP_atomic_increment: -1: - ld [%o0], %o2 ! set the current - add %o2, 0x1, %o3 ! Increment and store current -! swap [%o0], %o3 ! Do the compare and swap - cas [%o0], %o2, %o3 - cmp %o3, %o2 ! Check whether successful - bne 1b ! Retry if we failed. - membar #LoadLoad | #LoadStore ! Ensure the cas finishes before - ! returning - nop - retl ! return - nop - - .size _STLP_atomic_increment,(.-_STLP_atomic_increment) - - - /* int _STLP_atomic_decrement (void *pvalue) */ - .type _STLP_atomic_decrement,#function - .global _STLP_atomic_decrement - .align 8 - -_STLP_atomic_decrement: -2: - ld [%o0], %o2 ! set the current - sub %o2, 0x1, %o3 ! decrement and store current -! swap [%o0], %o3 ! Do the compare and swap - cas [%o0], %o2, %o3 - cmp %o3, %o2 ! Check whether successful - bne 2b ! Retry if we failed. - membar #LoadLoad | #LoadStore ! Ensure the cas finishes before - nop - ! returning - retl ! return - nop - .size _STLP_atomic_decrement,(.-_STLP_atomic_decrement) diff --git a/build/stlport/src/sparc_atomic64.s b/build/stlport/src/sparc_atomic64.s deleted file mode 100644 index ff2c42a82cb6..000000000000 --- a/build/stlport/src/sparc_atomic64.s +++ /dev/null @@ -1,65 +0,0 @@ - .section ".text",#alloc,#execinstr - .align 8 - .skip 16 - -! int _STLP_atomic_exchange (void *pvalue, int value) -! - - .type _STLP_atomic_exchange,#function - .global _STLP_atomic_exchange - .align 8 - -_STLP_atomic_exchange: -1: - ldx [%o0], %o2 ! Set the current value - mov %o1, %o3 ! Set the new value - casx [%o0], %o2, %o3 ! Do the compare and swap - cmp %o2, %o3 ! Check whether successful - bne 1b ! Retry upon failure - membar #LoadLoad | #LoadStore ! Ensure the cas finishes before - ! returning - retl ! return - mov %o2, %o0 ! Set the new value - .size _STLP_atomic_exchange,(.-_STLP_atomic_exchange) - - -! int _STLP_atomic_increment (void *pvalue) - - .type _STLP_atomic_increment,#function - .global _STLP_atomic_increment - .align 8 -_STLP_atomic_increment: -0: - ldx [%o0], %o2 ! set the current - addx %o2, 0x1, %o3 ! Increment and store current - casx [%o0], %o2, %o3 ! Do the compare and swap - cmp %o3, %o2 ! Check whether successful - bne 0b - membar #LoadLoad | #LoadStore ! Ensure the cas finishes before - ! returning - retl ! return - mov %o1, %o0 ! Set the return value - - .size _STLP_atomic_increment,(.-_STLP_atomic_increment) - - -! /* int _STLP_atomic_decrement (void *pvalue) */ - .type _STLP_atomic_decrement,#function - .global _STLP_atomic_decrement - .align 8 - -_STLP_atomic_decrement: -0: - ldx [%o0], %o2 ! set the current - subx %o2, 0x1, %o3 ! decrement and store current - casx [%o0], %o2, %o3 ! Do the compare and swap - cmp %o3, %o2 ! Check whether successful - bne 0b - membar #LoadLoad | #LoadStore ! Ensure the cas finishes before - ! returning - retl ! return - nop - .size _STLP_atomic_decrement,(.-_STLP_atomic_decrement) - - - diff --git a/build/stlport/src/sstream.cpp b/build/stlport/src/sstream.cpp deleted file mode 100644 index 2d1d652754de..000000000000 --- a/build/stlport/src/sstream.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#include "stlport_prefix.h" - -#include - -_STLP_BEGIN_NAMESPACE - -#if !defined (_STLP_NO_FORCE_INSTANTIATE) - -// Force instantiation of stringstream classes. -template class _STLP_CLASS_DECLSPEC basic_stringbuf, allocator >; -template class _STLP_CLASS_DECLSPEC basic_ostringstream, allocator >; -template class _STLP_CLASS_DECLSPEC basic_istringstream, allocator >; -template class _STLP_CLASS_DECLSPEC basic_stringstream, allocator >; - -# if !defined (_STLP_NO_WCHAR_T) -template class _STLP_CLASS_DECLSPEC basic_stringbuf, allocator >; -template class _STLP_CLASS_DECLSPEC basic_ostringstream, allocator >; -template class _STLP_CLASS_DECLSPEC basic_istringstream, allocator >; -template class _STLP_CLASS_DECLSPEC basic_stringstream, allocator >; -# endif - -#endif - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/stdio_streambuf.cpp b/build/stlport/src/stdio_streambuf.cpp deleted file mode 100644 index 45aad790a6c5..000000000000 --- a/build/stlport/src/stdio_streambuf.cpp +++ /dev/null @@ -1,239 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" -#include "stdio_streambuf.h" - -#ifdef _STLP_UNIX -# include -# include -#endif - -#include -#include - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Compare with streamoff definition in stl/char_traits.h! - -#if defined (_STLP_USE_DEFAULT_FILE_OFFSET) || \ - (!defined(_LARGEFILE_SOURCE) && !defined(_LARGEFILE64_SOURCE)) -# if !defined (_STLP_MSVC) || (_STLP_MSVC < 1400) || defined(_STLP_WCE) -# define FSEEK fseek -# else -# define FSEEK _fseeki64 -# endif -# define FSETPOS fsetpos -# define FGETPOS fgetpos -# define FPOS_T fpos_t -#else -# define FSEEK fseeko64 -# define FSETPOS fsetpos64 -# define FGETPOS fgetpos64 -# define FPOS_T fpos64_t -#endif - -//---------------------------------------------------------------------- -// Class stdio_streambuf_base - -stdio_streambuf_base::stdio_streambuf_base(FILE* file) - : /* _STLP_STD::FILE_basic_streambuf(file, 0), */ - _M_file(file) -{} - -stdio_streambuf_base::~stdio_streambuf_base() { - _STLP_VENDOR_CSTD::fflush(_M_file); -} - -_STLP_STD::streambuf* stdio_streambuf_base::setbuf(char* s, streamsize n) { -#ifdef _STLP_WCE - // no buffering in windows ce .NET -#else - size_t __n_size_t = (sizeof(streamsize) > sizeof(size_t)) ? __STATIC_CAST(size_t, (min)(__STATIC_CAST(streamsize, (numeric_limits::max)()), n)) - : __STATIC_CAST(size_t, n); - _STLP_VENDOR_CSTD::setvbuf(_M_file, s, (s == 0 && n == 0) ? _IONBF : _IOFBF, __n_size_t); -#endif - return this; -} - -stdio_streambuf_base::pos_type -stdio_streambuf_base::seekoff(off_type off, ios_base::seekdir dir, - ios_base::openmode /* mode */) { - int whence; - switch (dir) { - case ios_base::beg: - whence = SEEK_SET; - break; - case ios_base::cur: - whence = SEEK_CUR; - break; - case ios_base::end: - whence = SEEK_END; - break; - default: - return pos_type(-1); - } - - if (off <= numeric_limits::max() && FSEEK(_M_file, off, whence) == 0) { - FPOS_T pos; - FGETPOS(_M_file, &pos); - // added 21 june 00 mdb,rjf,wjs: glibc 2.2 changed fpos_t to be a struct instead - // of a primitive type -#if (defined (__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2)))) - return pos_type((streamoff)pos.__pos); -#elif defined (__ISCPP__) || defined (__MVS__) || defined (__OS400__) - return pos_type(pos.__fpos_elem[ 0 ]); -#elif defined (__EMX__) - return pos_type((streamoff)pos._pos); -#else - return pos_type(pos); -#endif - } - else - return pos_type(-1); -} - - -stdio_streambuf_base::pos_type -stdio_streambuf_base::seekpos(pos_type pos, ios_base::openmode /* mode */) { - // added 21 june 00 mdb,rjf,wjs: glibc 2.2 changed fpos_t to be a struct instead - // of a primitive type -#if (defined(__GLIBC__) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) ) - FPOS_T p; - p.__pos = pos; -# ifdef _STLP_USE_UCLIBC -# ifdef __STDIO_MBSTATE - memset( &(p.__mbstate), 0, sizeof(p.__mbstate) ); -# endif -# ifdef __STDIO_WIDE - p.mblen_pending = 0; -# endif -# else - memset( &(p.__state), 0, sizeof(p.__state) ); -# endif -#elif defined (__MVS__) || defined (__OS400__) - FPOS_T p; - p.__fpos_elem[0] = pos; -#elif defined (__EMX__) - FPOS_T p; - p._pos = pos; - memset( &(p._mbstate), 0, sizeof(p._mbstate) ); -#else - FPOS_T p(pos); -#endif - - return FSETPOS(_M_file, &p) == 0 ? pos : pos_type(-1); -} - -int stdio_streambuf_base::sync() { - return _STLP_VENDOR_CSTD::fflush(_M_file) == 0 ? 0 : -1; -} - -//---------------------------------------------------------------------- -// Class stdio_istreambuf - -stdio_istreambuf::~stdio_istreambuf() {} - -streamsize stdio_istreambuf::showmanyc() -{ return 0; } - -stdio_istreambuf::int_type stdio_istreambuf::underflow() -{ -#ifdef _STLP_WCE - int c = fgetc(_M_file); -#else - int c = getc(_M_file); -#endif - if (c != EOF) { - _STLP_VENDOR_CSTD::ungetc(c, _M_file); - return c; - } - else - return traits_type::eof(); -} - -stdio_istreambuf::int_type stdio_istreambuf::uflow() { -#ifdef _STLP_WCE - int c = fgetc(_M_file); -#else - int c = getc(_M_file); -#endif - return c != EOF ? c : traits_type::eof(); -} - -stdio_istreambuf::int_type stdio_istreambuf::pbackfail(int_type c) { - if (c != traits_type::eof()) { - int result = _STLP_VENDOR_CSTD::ungetc(c, _M_file); - return result != EOF ? result : traits_type::eof(); - } - else{ - if (this->eback() < this->gptr()) { - this->gbump(-1); - return traits_type::not_eof(c); - } - else - return traits_type::eof(); - } -} - -//---------------------------------------------------------------------- -// Class stdio_ostreambuf - -stdio_ostreambuf::~stdio_ostreambuf() {} - -streamsize stdio_ostreambuf::showmanyc() -{ return -1; } - -stdio_ostreambuf::int_type stdio_ostreambuf::overflow(int_type c) { - // Write the existing buffer, without writing any additional character. - if (c == traits_type::eof()) { - // Do we have a buffer to write? - ptrdiff_t unwritten = this->pptr() - this->pbase(); - if (unwritten != 0) { - _STLP_VENDOR_CSTD::fflush(_M_file); - // Test if the write succeeded. - if (this->pptr() - this->pbase() < unwritten) - return traits_type::not_eof(c); - else - return traits_type::eof(); - } - - // We always succeed if we don't have to do anything. - else - return traits_type::not_eof(c); - } - - // Write the character c, and whatever else might be in the buffer. - else { -#ifdef _STLP_WCE - int result = fputc(c, _M_file); -#else - int result = putc(c, _M_file); -#endif - return result != EOF ? result : traits_type::eof(); - } -} - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/src/stdio_streambuf.h b/build/stlport/src/stdio_streambuf.h deleted file mode 100644 index 33747b5136c1..000000000000 --- a/build/stlport/src/stdio_streambuf.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -// This header defines two streambufs: -// stdio_istreambuf, a read-only streambuf synchronized with a C stdio -// FILE object -// stdio_ostreambuf, a write-only streambuf synchronized with a C stdio -// FILE object. -// Note that neither stdio_istreambuf nor stdio_ostreambuf is a template; -// both classes are derived from basic_streambuf >. - -// Note: the imbue() member function is a no-op. In particular, these -// classes assume that codecvt is always an identity -// transformation. This is true of the default locale, and of all locales -// defined for the C I/O library. If you need to use a locale where -// the codecvt facet performs a nontrivial -// conversion, then you should use basic_filebuf<> instead of stdio_istreambuf -// or stdio_ostreambuf. (If you don't understand what any of this means, -// then it's not a feature you need to worry about. Locales where -// codecvt does something nontrivial are a rare -// corner case.) - - -#ifndef _STLP_STDIO_STREAMBUF -#define _STLP_STDIO_STREAMBUF - -#include -#include // For FILE. - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Base class for features common to stdio_istreambuf and stdio_ostreambuf -class stdio_streambuf_base : - public basic_streambuf > /* FILE_basic_streambuf */ { -public: // Constructor, destructor. - // The argument may not be null. It must be an open file pointer. - stdio_streambuf_base(FILE*); - - // The destructor flushes the stream, but does not close it. - ~stdio_streambuf_base(); - -protected: // Virtual functions from basic_streambuf. - streambuf* setbuf(char*, streamsize); - - pos_type seekoff(off_type, ios_base::seekdir, - ios_base::openmode - = ios_base::in | ios_base::out); - pos_type seekpos(pos_type, - ios_base::openmode - = ios_base::in | ios_base::out); - int sync(); - -protected: - FILE* _M_file; -}; - -class stdio_istreambuf : public stdio_streambuf_base { -public: // Constructor, destructor. - stdio_istreambuf(FILE* __f) : stdio_streambuf_base(__f) {} - ~stdio_istreambuf(); - -protected: // Virtual functions from basic_streambuf. - streamsize showmanyc(); - int_type underflow(); - int_type uflow(); - virtual int_type pbackfail(int_type c = traits_type::eof()); -}; - -class stdio_ostreambuf : public stdio_streambuf_base { -public: // Constructor, destructor. - stdio_ostreambuf(FILE* __f) : stdio_streambuf_base(__f) {} - ~stdio_ostreambuf(); - -protected: // Virtual functions from basic_streambuf. - streamsize showmanyc(); - int_type overflow(int_type c = traits_type::eof()); -}; - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -#endif /* _STLP_STDIO_STREAMBUF */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/stlport.rc b/build/stlport/src/stlport.rc deleted file mode 100644 index 3fdb4a79750e..000000000000 --- a/build/stlport/src/stlport.rc +++ /dev/null @@ -1,96 +0,0 @@ -/////////////////////////// -// -// Version -// -#include - -#include - -/* On some evc3/evc4 targets the windows.h doesn't include winver.h or doesn't - * define needed file version flags, so we redefine them here. - */ -#ifndef VS_FF_DEBUG -# define VS_FF_DEBUG 0x00000001L -#endif - -#ifndef VOS__WINDOWS32 -# define VOS__WINDOWS32 0x00000004L -#endif - -#ifndef VFT_DLL -# define VFT_DLL 0x00000002L -#endif - -#ifndef VFT2_UNKNOWN -# define VFT2_UNKNOWN 0x00000000L -#endif - -#define STRINGIZE(X) STRINGIZE_AUX(X) -#define STRINGIZE_AUX(X) #X - -#define VERSION_ID _STLPORT_MAJOR, _STLPORT_MINOR, _STLPORT_PATCHLEVEL, 0 -#if !defined (__BORLANDC__) -# define VERSION_STR STRINGIZE(_STLPORT_MAJOR._STLPORT_MINOR._STLPORT_PATCHLEVEL) -#else -/* Borland precompiler happen weird character when trying to transform a - * macro containing 0 in a character string so we use a workaround for this - * value. We do not check the major version that will never be 0 again. - */ -# if (_STLPORT_MINOR == 0) -# define _STLP_MINOR "0" -# else -# define _STLP_MINOR STRINGIZE(_STLPORT_MINOR) -# endif -# if (_STLPORT_PATCHLEVEL == 0) -# define _STLP_PATCH "0" -# else -# define _STLP_PATCH STRINGIZE(_STLPORT_PATCHLEVEL) -# endif -# define VERSION_STR STRINGIZE(_STLPORT_MAJOR) "." _STLP_MINOR "." _STLP_PATCH "\0" -#endif - -#if defined (__GNUC__) -# define LIB_MOTIF "libstlport" -#else -# define LIB_MOTIF "stlport" -#endif -#define DLLNAME LIB_MOTIF "." STRINGIZE(_STLPORT_MAJOR) "." STRINGIZE(_STLPORT_MINOR) ".dll\0" -#define DLLNAME2(buildstr) LIB_MOTIF "" STRINGIZE(buildstr) "." STRINGIZE(_STLPORT_MAJOR) "." STRINGIZE(_STLPORT_MINOR) ".dll\0" - -VS_VERSION_INFO VERSIONINFO -FILEVERSION VERSION_ID -PRODUCTVERSION VERSION_ID -FILEFLAGSMASK 0x3fL - -FILEFLAGS VS_FF_DEBUG - -FILEOS VOS__WINDOWS32 -FILETYPE VFT_DLL -FILESUBTYPE VFT2_UNKNOWN -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904B0" - BEGIN - VALUE "CompanyName", "STLport Consulting, Inc.\0" - VALUE "FileDescription", "STLport\0" - VALUE "FileVersion", VERSION_STR - VALUE "InternalName", "STLPORT.DLL\0" - VALUE "LegalCopyright", "Copyright (C) Boris Fomitchev\0" -#if !defined (BUILD) - VALUE "OriginalFilename", DLLNAME -#else - VALUE "OriginalFilename", DLLNAME2(BUILD) -#endif - VALUE "ProductName", "STLport Standard ANSI C++ Library\0" - VALUE "ProductVersion", VERSION_STR -#if defined (BUILD_INFOS) - VALUE "SpecialBuild", STRINGIZE(COMP) " " STRINGIZE(BUILD_INFOS) "\0" -#endif - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/build/stlport/src/stlport_prefix.h b/build/stlport/src/stlport_prefix.h deleted file mode 100644 index 4e06b76860e5..000000000000 --- a/build/stlport/src/stlport_prefix.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef STLPORT_PREFIX_H -#define STLPORT_PREFIX_H - -#define __BUILDING_STLPORT 1 - -#if defined (_WIN32) || defined (WIN32) -# ifdef __cplusplus -# define WIN32_LEAN_AND_MEAN -# define NOSERVICE -# endif -#endif - -#undef _STLP_NO_FORCE_INSTANTIATE - -/* Please add extra compilation switches for particular compilers here */ - -#if defined (_MSC_VER) && !defined (__COMO__) && !defined (__MWERKS__) -# include "warning_disable.h" -#endif - -#include - -#if defined (_STLP_USE_TEMPLATE_EXPORT) && defined (_STLP_USE_DECLSPEC) && !defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) -# define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION -#endif - -#ifdef __cplusplus - -# include -# if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_VENDOR_GLOBAL_CSTD) -using _STLP_VENDOR_CSTD::time_t; -# endif - -# if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -# define _STLP_OPERATOR_SPEC _STLP_DECLSPEC -# else -# define _STLP_OPERATOR_SPEC _STLP_TEMPLATE_NULL _STLP_DECLSPEC -# endif - -#endif /* __cplusplus */ - -#endif /* PREFIX */ - diff --git a/build/stlport/src/string.cpp b/build/stlport/src/string.cpp deleted file mode 100644 index 77e218730d7f..000000000000 --- a/build/stlport/src/string.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include "stlport_prefix.h" - -#include - -_STLP_BEGIN_NAMESPACE - -#if defined(_STLP_USE_WIDE_INTERFACE) -_STLP_MOVE_TO_PRIV_NAMESPACE - -wstring __ASCIIToWide(const char *ascii) { - size_t size = strlen(ascii); - wchar_t* buff = new wchar_t[size+1]; - mbstowcs(buff, ascii, size); - buff[size] = 0x00; - wstring ret(buff); - delete[] buff; - return ret; -} -string __WideToASCII(const wchar_t *wide) { - size_t size = wcslen(wide); - char* buff = new char[size+1]; - wcstombs(buff, wide, size); - buff[size] = 0; - string ret(buff); - delete[] buff; - return ret; -} -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#if !defined (_STLP_NO_FORCE_INSTANTIATE) - -template class _STLP_CLASS_DECLSPEC allocator; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy >; -template class _STLP_CLASS_DECLSPEC _String_base >; - -# if defined (_STLP_DEBUG) && !defined (__SUNPRO_CC) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# define basic_string _STLP_NON_DBG_NAME(str) - -template class _STLP_CLASS_DECLSPEC basic_string, allocator >; -template class _STLP_CLASS_DECLSPEC __construct_checker, allocator > >; - -# undef basic_string -# endif - -# if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# define basic_string _STLP_NO_MEM_T_NAME(str) -# else -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -template class _STLP_CLASS_DECLSPEC basic_string, allocator >; - -# if defined (basic_string) -_STLP_MOVE_TO_STD_NAMESPACE -# undef basic_string -# endif - -# if !defined (_STLP_NO_WCHAR_T) -template class _STLP_CLASS_DECLSPEC allocator; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template class _STLP_CLASS_DECLSPEC _String_base >; - -# if defined (_STLP_DEBUG) && !defined (__SUNPRO_CC) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# define basic_string _STLP_NON_DBG_NAME(str) - -template class _STLP_CLASS_DECLSPEC basic_string, allocator >; -template class _STLP_CLASS_DECLSPEC __construct_checker, allocator > >; - -# undef basic_string -# endif - -# if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# define basic_string _STLP_NO_MEM_T_NAME(str) -# else -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -template class _STLP_CLASS_DECLSPEC basic_string, allocator >; - -# if defined (basic_string) -_STLP_MOVE_TO_STD_NAMESPACE -# undef basic_string -# endif -# endif -#endif - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/strstream.cpp b/build/stlport/src/strstream.cpp deleted file mode 100644 index 740e01ea7b78..000000000000 --- a/build/stlport/src/strstream.cpp +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -// Implementation of the classes in header . -// WARNING: The classes defined in are DEPRECATED. This -// header is defined in section D.7.1 of the C++ standard, and it -// MAY BE REMOVED in a future standard revision. You should use the -// header instead. - -#include "stlport_prefix.h" - -#include -#include -#include - -_STLP_BEGIN_NAMESPACE - -// strstreambuf constructor, destructor. -strstreambuf::strstreambuf(streamsize initial_capacity) - : _M_alloc_fun(0), _M_free_fun(0), - _M_dynamic(true), _M_frozen(false), _M_constant(false) { - size_t n = (sizeof(streamsize) > sizeof(size_t)) ? __STATIC_CAST(size_t, (min)(__STATIC_CAST(streamsize, (numeric_limits::max)()), - (max)(initial_capacity, streamsize(16)))) - : __STATIC_CAST(size_t, (max)(initial_capacity, streamsize(16))); - - char* buf = _M_alloc(n); - if (buf) { - setp(buf, buf + n); - setg(buf, buf, buf); - } -} - -strstreambuf::strstreambuf(__alloc_fn alloc_f, __free_fn free_f) - : _M_alloc_fun(alloc_f), _M_free_fun(free_f), - _M_dynamic(true), _M_frozen(false), _M_constant(false) { - size_t n = 16; - - char* buf = _M_alloc(n); - if (buf) { - setp(buf, buf + n); - setg(buf, buf, buf); - } -} - -strstreambuf::strstreambuf(char* get, streamsize n, char* put) - : _M_alloc_fun(0), _M_free_fun(0), - _M_dynamic(false), _M_frozen(false), _M_constant(false) { - _M_setup(get, put, n); -} - -strstreambuf::strstreambuf(signed char* get, streamsize n, signed char* put) - : _M_alloc_fun(0), _M_free_fun(0), - _M_dynamic(false), _M_frozen(false), _M_constant(false) { - _M_setup(__REINTERPRET_CAST(char*,get), __REINTERPRET_CAST(char*,put), n); -} - -strstreambuf::strstreambuf(unsigned char* get, streamsize n, - unsigned char* put) - : _M_alloc_fun(0), _M_free_fun(0), - _M_dynamic(false), _M_frozen(false), _M_constant(false) { - _M_setup(__REINTERPRET_CAST(char*,get), __REINTERPRET_CAST(char*,put), n); -} - -strstreambuf::strstreambuf(const char* get, streamsize n) - : _M_alloc_fun(0), _M_free_fun(0), - _M_dynamic(false), _M_frozen(false), _M_constant(true) { - _M_setup(__CONST_CAST(char*,get), 0, n); -} - -strstreambuf::strstreambuf(const signed char* get, streamsize n) - : _M_alloc_fun(0), _M_free_fun(0), - _M_dynamic(false), _M_frozen(false), _M_constant(true) { - _M_setup(__REINTERPRET_CAST(char*, __CONST_CAST(signed char*,get)), 0, n); -} - -strstreambuf::strstreambuf(const unsigned char* get, streamsize n) - : _M_alloc_fun(0), _M_free_fun(0), - _M_dynamic(false), _M_frozen(false), _M_constant(true) { - _M_setup(__REINTERPRET_CAST(char*, __CONST_CAST(unsigned char*,get)), 0, n); -} - -strstreambuf::~strstreambuf() { - if (_M_dynamic && !_M_frozen) - _M_free(eback()); -} - -void strstreambuf::freeze(bool frozenflag) { - if (_M_dynamic) - _M_frozen = frozenflag; -} - -char* strstreambuf::str() { - freeze(true); - return eback(); -} - -int strstreambuf::pcount() const { - return int(pptr() ? pptr() - pbase() : 0); -} - -strstreambuf::int_type strstreambuf::overflow(int_type c) { - if (c == traits_type::eof()) - return traits_type::not_eof(c); - - // Try to expand the buffer. - if (pptr() == epptr() && _M_dynamic && !_M_frozen && !_M_constant) { - ptrdiff_t old_size = epptr() - pbase(); - ptrdiff_t new_size = (max)(2 * old_size, ptrdiff_t(1)); - - char* buf = _M_alloc(new_size); - if (buf) { - memcpy(buf, pbase(), old_size); - - char* old_buffer = pbase(); - bool reposition_get = false; - ptrdiff_t old_get_offset; - if (gptr() != 0) { - reposition_get = true; - old_get_offset = gptr() - eback(); - } - - setp(buf, buf + new_size); - pbump((int)old_size); - - if (reposition_get) - setg(buf, buf + old_get_offset, buf + (max)(old_get_offset, old_size)); - - _M_free(old_buffer); - } - } - - if (pptr() != epptr()) { - *pptr() = traits_type::to_char_type(c); - pbump(1); - return c; - } - else - return traits_type::eof(); -} - -strstreambuf::int_type strstreambuf::pbackfail(int_type c) { - if (gptr() != eback()) { - if (c == traits_type::eof()) { - gbump(-1); - return traits_type::not_eof(c); - } - else if (c == gptr()[-1]) { - gbump(-1); - return c; - } - else if (!_M_constant) { - gbump(-1); - *gptr() = traits_type::to_char_type(c); - return c; - } - } - - return traits_type::eof(); -} - -strstreambuf::int_type strstreambuf::underflow() { - if (gptr() == egptr() && pptr() && pptr() > egptr()) - setg(eback(), gptr(), pptr()); - - if (gptr() != egptr()) - return (unsigned char) *gptr(); - else - return _Traits::eof(); -} - -basic_streambuf >* -strstreambuf::setbuf(char*, streamsize) { - return this; -} - -strstreambuf::pos_type -strstreambuf::seekoff(off_type off, - ios_base::seekdir dir, ios_base::openmode mode) { - bool do_get = false; - bool do_put = false; - - if ((mode & (ios_base::in | ios_base::out)) == - (ios_base::in | ios_base::out) && - (dir == ios_base::beg || dir == ios_base::end)) - do_get = do_put = true; - else if (mode & ios_base::in) - do_get = true; - else if (mode & ios_base::out) - do_put = true; - - // !gptr() is here because, according to D.7.1 paragraph 4, the seekable - // area is undefined if there is no get area. - if ((!do_get && !do_put) || (do_put && !pptr()) || !gptr()) - return pos_type(off_type(-1)); - - char* seeklow = eback(); - char* seekhigh = epptr() ? epptr() : egptr(); - - off_type newoff; - switch(dir) { - case ios_base::beg: - newoff = 0; - break; - case ios_base::end: - newoff = seekhigh - seeklow; - break; - case ios_base::cur: - newoff = do_put ? pptr() - seeklow : gptr() - seeklow; - break; - default: - return pos_type(off_type(-1)); - } - - off += newoff; - if (off < 0 || off > seekhigh - seeklow) - return pos_type(off_type(-1)); - - if (do_put) { - if (seeklow + __STATIC_CAST(ptrdiff_t, off) < pbase()) { - setp(seeklow, epptr()); - pbump((int)off); - } - else { - setp(pbase(), epptr()); - pbump((int)(off - (pbase() - seeklow))); - } - } - if (do_get) { - if (off <= egptr() - seeklow) - setg(seeklow, seeklow + __STATIC_CAST(ptrdiff_t, off), egptr()); - else if (off <= pptr() - seeklow) - setg(seeklow, seeklow + __STATIC_CAST(ptrdiff_t, off), pptr()); - else - setg(seeklow, seeklow + __STATIC_CAST(ptrdiff_t, off), epptr()); - } - - return pos_type(newoff); -} - -strstreambuf::pos_type -strstreambuf::seekpos(pos_type pos, ios_base::openmode mode) { - return seekoff(pos - pos_type(off_type(0)), ios_base::beg, mode); -} - - -char* strstreambuf::_M_alloc(size_t n) { - if (_M_alloc_fun) - return __STATIC_CAST(char*,_M_alloc_fun(n)); - else - return new char[n]; -} - -void strstreambuf::_M_free(char* p) { - if (p) { - if (_M_free_fun) - _M_free_fun(p); - else - delete[] p; - } -} - -void strstreambuf::_M_setup(char* get, char* put, streamsize n) { - if (get) { - size_t N = n > 0 ? size_t(n) : n == 0 ? strlen(get) : size_t(INT_MAX); - - if (put) { - setg(get, get, get + N); - setp(put, put + N); - } - else { - setg(get, get, get + N); - } - } -} - -//---------------------------------------------------------------------- -// Class istrstream - -istrstream::istrstream(char* s) - : basic_istream >(0), _M_buf(s, 0) { - this->init(&_M_buf); -} - -istrstream::istrstream(const char* s) - : basic_istream >(0), _M_buf(s, 0) { - this->init(&_M_buf); -} - -istrstream::istrstream(char* s, streamsize n) - : basic_istream >(0), _M_buf(s, n) { - this->init(&_M_buf); -} - -istrstream::istrstream(const char* s, streamsize n) - : basic_istream >(0), _M_buf(s, n) { - this->init(&_M_buf); -} - -istrstream::~istrstream() {} - -strstreambuf* istrstream::rdbuf() const { - return __CONST_CAST(strstreambuf*,&_M_buf); -} - -char* istrstream::str() { return _M_buf.str(); } - -//---------------------------------------------------------------------- -// Class ostrstream - -ostrstream::ostrstream() - : basic_ostream >(0), _M_buf() { - basic_ios >::init(&_M_buf); -} - -ostrstream::ostrstream(char* s, int n, ios_base::openmode mode) - : basic_ostream >(0), - _M_buf(s, n, mode & ios_base::app ? s + strlen(s) : s) { - basic_ios >::init(&_M_buf); -} - -ostrstream::~ostrstream() {} - -strstreambuf* ostrstream::rdbuf() const { - return __CONST_CAST(strstreambuf*,&_M_buf); -} - -void ostrstream::freeze(bool freezeflag) { - _M_buf.freeze(freezeflag); -} - -char* ostrstream::str() { - return _M_buf.str(); -} - -int ostrstream::pcount() const { - return _M_buf.pcount(); -} - - -//---------------------------------------------------------------------- -// Class strstream - -strstream::strstream() - : basic_iostream >(0), _M_buf() { - basic_ios >::init(&_M_buf); -} - -strstream::strstream(char* s, int n, ios_base::openmode mode) - : basic_iostream >(0), - _M_buf(s, n, mode & ios_base::app ? s + strlen(s) : s) { - basic_ios >::init(&_M_buf); -} - -strstream::~strstream() {} - -strstreambuf* strstream::rdbuf() const { - return __CONST_CAST(strstreambuf*,&_M_buf); -} - -void strstream::freeze(bool freezeflag) { - _M_buf.freeze(freezeflag); -} - -int strstream::pcount() const { - return _M_buf.pcount(); -} - -char* strstream::str() { - return _M_buf.str(); -} - -_STLP_END_NAMESPACE - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/src/time_facets.cpp b/build/stlport/src/time_facets.cpp deleted file mode 100644 index 3e98c70d1f52..000000000000 --- a/build/stlport/src/time_facets.cpp +++ /dev/null @@ -1,565 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#include "stlport_prefix.h" - -#include -#include -#include - -#include "c_locale.h" -#include "acquire_release.h" - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// default "C" values for month and day names - -const char default_dayname[][14] = { - "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", - "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", - "Friday", "Saturday"}; - -const char default_monthname[][24] = { - "Jan", "Feb", "Mar", "Apr", "May", "Jun", - "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", - "January", "February", "March", "April", "May", "June", - "July", "August", "September", "October", "November", "December"}; - -#ifndef _STLP_NO_WCHAR_T -const wchar_t default_wdayname[][14] = { - L"Sun", L"Mon", L"Tue", L"Wed", L"Thu", L"Fri", L"Sat", - L"Sunday", L"Monday", L"Tuesday", L"Wednesday", L"Thursday", - L"Friday", L"Saturday"}; - -const wchar_t default_wmonthname[][24] = { - L"Jan", L"Feb", L"Mar", L"Apr", L"May", L"Jun", - L"Jul", L"Aug", L"Sep", L"Oct", L"Nov", L"Dec", - L"January", L"February", L"March", L"April", L"May", L"June", - L"July", L"August", L"September", L"October", L"November", L"December"}; -#endif - -#if defined (__BORLANDC__) -_Time_Info time_init::_M_timeinfo; -# ifndef _STLP_NO_WCHAR_T -_WTime_Info time_init::_M_timeinfo; -# endif -#endif - -// _Init_time_info: initialize table with -// "C" values (note these are not defined in the C standard, so this -// is somewhat arbitrary). - -static void _Init_timeinfo_base(_Time_Info_Base& table) { - table._M_time_format = "%H:%M:%S"; - table._M_date_format = "%m/%d/%y"; - table._M_date_time_format = "%m/%d/%y"; -} - -static void _Init_timeinfo(_Time_Info& table) { - int i; - for (i = 0; i < 14; ++i) - table._M_dayname[i] = default_dayname[i]; - for (i = 0; i < 24; ++i) - table._M_monthname[i] = default_monthname[i]; - table._M_am_pm[0] = "AM"; - table._M_am_pm[1] = "PM"; - _Init_timeinfo_base(table); -} - -#ifndef _STLP_NO_WCHAR_T -static void _Init_timeinfo(_WTime_Info& table) { - int i; - for (i = 0; i < 14; ++i) - table._M_dayname[i] = default_wdayname[i]; - for (i = 0; i < 24; ++i) - table._M_monthname[i] = default_wmonthname[i]; - table._M_am_pm[0] = L"AM"; - table._M_am_pm[1] = L"PM"; - _Init_timeinfo_base(table); -} -#endif - -static void _Init_timeinfo_base(_Time_Info_Base& table, _Locale_time * time) { - table._M_time_format = _Locale_t_fmt(time); - if ( table._M_time_format == "%T" ) { - table._M_time_format = "%H:%M:%S"; - } else if ( table._M_time_format == "%r" ) { - table._M_time_format = "%I:%M:%S %p"; - } else if ( table._M_time_format == "%R" ) { - table._M_time_format = "%H:%M"; - } - table._M_date_format = _Locale_d_fmt(time); - table._M_date_time_format = _Locale_d_t_fmt(time); - table._M_long_date_format = _Locale_long_d_fmt(time); - table._M_long_date_time_format = _Locale_long_d_t_fmt(time); -} - -static void _Init_timeinfo(_Time_Info& table, _Locale_time * time) { - int i; - for (i = 0; i < 7; ++i) - table._M_dayname[i] = _Locale_abbrev_dayofweek(time, i); - for (i = 0; i < 7; ++i) - table._M_dayname[i+7] = _Locale_full_dayofweek(time, i); - for (i = 0; i < 12; ++i) - table._M_monthname[i] = _Locale_abbrev_monthname(time, i); - for (i = 0; i < 12; ++i) - table._M_monthname[i+12] = _Locale_full_monthname(time, i); - table._M_am_pm[0] = _Locale_am_str(time); - table._M_am_pm[1] = _Locale_pm_str(time); - _Init_timeinfo_base(table, time); -} - -#ifndef _STLP_NO_WCHAR_T -static void _Init_timeinfo(_WTime_Info& table, _Locale_time * time) { - wchar_t buf[128]; - int i; - for (i = 0; i < 7; ++i) - table._M_dayname[i] = _WLocale_abbrev_dayofweek(time, i, _STLP_ARRAY_AND_SIZE(buf)); - for (i = 0; i < 7; ++i) - table._M_dayname[i+7] = _WLocale_full_dayofweek(time, i, _STLP_ARRAY_AND_SIZE(buf)); - for (i = 0; i < 12; ++i) - table._M_monthname[i] = _WLocale_abbrev_monthname(time, i, _STLP_ARRAY_AND_SIZE(buf)); - for (i = 0; i < 12; ++i) - table._M_monthname[i+12] = _WLocale_full_monthname(time, i, _STLP_ARRAY_AND_SIZE(buf)); - table._M_am_pm[0] = _WLocale_am_str(time, _STLP_ARRAY_AND_SIZE(buf)); - table._M_am_pm[1] = _WLocale_pm_str(time, _STLP_ARRAY_AND_SIZE(buf)); - _Init_timeinfo_base(table, time); -} -#endif - -template -void __subformat(_STLP_BASIC_IOSTRING(_Ch) &buf, const ctype<_Ch>& ct, - const string& format, const _TimeInfo& table, const tm* t) { - const char * cp = format.data(); - const char * cp_end = cp + format.size(); - while (cp != cp_end) { - if (*cp == '%') { - char mod = 0; - ++cp; - if (*cp == '#') { - mod = *cp; ++cp; - } - __write_formatted_timeT(buf, ct, *cp++, mod, table, t); - } else - buf.append(1, *cp++); - } -} - -static void __append(__iostring &buf, const string& name) -{ buf.append(name.data(), name.data() + name.size()); } - -static void __append(__iowstring &buf, const wstring& name) -{ buf.append(name.data(), name.data() + name.size()); } - -static void __append(__iostring &buf, char *first, char *last, const ctype& /* ct */) -{ buf.append(first, last); } - -static void __append(__iowstring &buf, char *first, char *last, const ctype& ct) { - wchar_t _wbuf[64]; - ct.widen(first, last, _wbuf); - buf.append(_wbuf, _wbuf + (last - first)); -} - -#if defined (__GNUC__) -/* The number of days from the first day of the first ISO week of this - year to the year day YDAY with week day WDAY. ISO weeks start on - Monday; the first ISO week has the year's first Thursday. YDAY may - be as small as YDAY_MINIMUM. */ -# define __ISO_WEEK_START_WDAY 1 /* Monday */ -# define __ISO_WEEK1_WDAY 4 /* Thursday */ -# define __YDAY_MINIMUM (-366) -# define __TM_YEAR_BASE 1900 -static int -__iso_week_days(int yday, int wday) { - /* Add enough to the first operand of % to make it nonnegative. */ - int big_enough_multiple_of_7 = (-__YDAY_MINIMUM / 7 + 2) * 7; - return (yday - - (yday - wday + __ISO_WEEK1_WDAY + big_enough_multiple_of_7) % 7 - + __ISO_WEEK1_WDAY - __ISO_WEEK_START_WDAY); -} - -# define __is_leap(year)\ - ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) - -#endif - -#define __hour12(hour) \ - (((hour) % 12 == 0) ? (12) : (hour) % 12) - -#if !defined (_STLP_USE_SAFE_STRING_FUNCTIONS) -# define _STLP_SPRINTF sprintf -#else -# define _STLP_SPRINTF sprintf_s -#endif - -template -void _STLP_CALL __write_formatted_timeT(_STLP_BASIC_IOSTRING(_Ch) &buf, - const ctype<_Ch>& ct, - char format, char modifier, - const _TimeInfo& table, const tm* t) { - char _buf[64]; - char *_bend; - - switch (format) { - case 'a': - __append(buf, table._M_dayname[t->tm_wday]); - break; - - case 'A': - __append(buf, table._M_dayname[t->tm_wday + 7]); - break; - - case 'b': - __append(buf, table._M_monthname[t->tm_mon]); - break; - - case 'B': - __append(buf, table._M_monthname[t->tm_mon + 12]); - break; - - case 'c': - __subformat(buf, ct, (modifier != '#') ? table._M_date_time_format - : table._M_long_date_time_format, table, t); - break; - - case 'd': - _STLP_SPRINTF(_buf, (modifier != '#') ? "%.2ld" : "%ld", (long)t->tm_mday); - __append(buf, _buf, ((long)t->tm_mday < 10L && modifier == '#') ? _buf + 1 : _buf + 2, ct); - break; - - case 'e': - _STLP_SPRINTF(_buf, "%2ld", (long)t->tm_mday); - __append(buf, _buf, _buf + 2, ct); - break; - - case 'H': - _STLP_SPRINTF(_buf, (modifier != '#') ? "%.2ld" : "%ld", (long)t->tm_hour); - __append(buf, _buf, ((long)t->tm_hour < 10L && modifier == '#') ? _buf + 1 : _buf + 2, ct); - break; - - case 'I': - _STLP_SPRINTF(_buf, (modifier != '#') ? "%.2ld" : "%ld", (long)__hour12(t->tm_hour)); - __append(buf, _buf, ((long)__hour12(t->tm_hour) < 10L && modifier == '#') ? _buf + 1 : _buf + 2, ct); - break; - - case 'j': - _bend = __write_integer(_buf, 0, (long)((long)t->tm_yday + 1)); - __append(buf, _buf, _bend, ct); - break; - - case 'm': - _STLP_SPRINTF(_buf, (modifier != '#') ? "%.2ld" : "%ld", (long)t->tm_mon + 1); - __append(buf, _buf, ((long)(t->tm_mon + 1) < 10L && modifier == '#') ? _buf + 1 : _buf + 2, ct); - break; - - case 'M': - _STLP_SPRINTF(_buf, (modifier != '#') ? "%.2ld" : "%ld", (long)t->tm_min); - __append(buf, _buf, ((long)t->tm_min < 10L && modifier == '#') ? _buf + 1 : _buf + 2, ct); - break; - - case 'p': - __append(buf, table._M_am_pm[t->tm_hour / 12]); - break; - - case 'S': // pad with zeros - _STLP_SPRINTF(_buf, (modifier != '#') ? "%.2ld" : "%ld", (long)t->tm_sec); - __append(buf, _buf, ((long)t->tm_sec < 10L && modifier == '#') ? _buf + 1 : _buf + 2, ct); - break; - - case 'U': - _bend = __write_integer(_buf, 0, long((t->tm_yday - t->tm_wday + 7) / 7)); - __append(buf, _buf, _bend, ct); - break; - - case 'w': - _bend = __write_integer(_buf, 0, (long)t->tm_wday); - __append(buf, _buf, _bend, ct); - break; - - case 'W': - _bend = __write_integer(_buf, 0, - (long)(t->tm_wday == 0 ? (t->tm_yday + 1) / 7 : - (t->tm_yday + 8 - t->tm_wday) / 7)); - __append(buf, _buf, _bend, ct); - break; - - case'x': - __subformat(buf, ct, (modifier != '#') ? table._M_date_format - : table._M_long_date_format, table, t); - break; - - case 'X': - __subformat(buf, ct, table._M_time_format, table, t); - break; - - case 'y': - _bend = __write_integer(_buf, 0, (long)((long)(t->tm_year + 1900) % 100)); - __append(buf, _buf, _bend, ct); - break; - - case 'Y': - _bend = __write_integer(_buf, 0, (long)((long)t->tm_year + 1900)); - __append(buf, _buf, _bend, ct); - break; - - case '%': - buf.append(1, ct.widen('%')); - break; - -#if defined (__GNUC__) - // fbp : at least on SUN -# if defined (_STLP_UNIX) && !defined (__linux__) -# define __USE_BSD 1 -# endif - - /********************************************* - * JGS, handle various extensions * - *********************************************/ - - case 'h': /* POSIX.2 extension */ - // same as 'b', abbrev month name - __append(buf, table._M_monthname[t->tm_mon]); - break; - case 'C': /* POSIX.2 extension */ - // same as 'd', the day - _STLP_SPRINTF(_buf, "%2ld", (long)t->tm_mday); - __append(buf, _buf, _buf + 2, ct); - break; - - case 'D': /* POSIX.2 extension */ - // same as 'x' - __subformat(buf, ct, table._M_date_format, table, t); - break; - - case 'k': /* GNU extension */ - _STLP_SPRINTF(_buf, "%2ld", (long)t->tm_hour); - __append(buf, _buf, _buf + 2, ct); - break; - - case 'l': /* GNU extension */ - _STLP_SPRINTF(_buf, "%2ld", (long)t->tm_hour % 12); - __append(buf, _buf, _buf + 2, ct); - break; - - case 'n': /* POSIX.2 extension */ - buf.append(1, ct.widen('\n')); - break; - - case 'R': /* GNU extension */ - __subformat(buf, ct, "%H:%M", table, t); - break; - - case 'r': /* POSIX.2 extension */ - __subformat(buf, ct, "%I:%M:%S %p", table, t); - break; - - case 'T': /* POSIX.2 extension. */ - __subformat(buf, ct, "%H:%M:%S", table, t); - break; - - case 't': /* POSIX.2 extension. */ - buf.append(1, ct.widen('\t')); - - case 'u': /* POSIX.2 extension. */ - _bend = __write_integer(_buf, 0, long((t->tm_wday - 1 + 7)) % 7 + 1); - __append(buf, _buf, _bend, ct); - break; - - case 's': { - time_t __t = mktime(__CONST_CAST(tm*, t)); - _bend = __write_integer(_buf, 0, (long)__t ); - __append(buf, _buf, _bend, ct); - break; - } - case 'g': /* GNU extension */ - case 'G': { - int year = t->tm_year + __TM_YEAR_BASE; - int days = __iso_week_days (t->tm_yday, t->tm_wday); - if (days < 0) { - /* This ISO week belongs to the previous year. */ - year--; - days = __iso_week_days (t->tm_yday + (365 + __is_leap (year)), t->tm_wday); - } - else { - int d = __iso_week_days (t->tm_yday - (365 + __is_leap (year)), t->tm_wday); - if (0 <= d) { - /* This ISO week belongs to the next year. */ - ++year; - days = d; - } - } - long val; - switch (format) { - case 'g': - val = (long)(year % 100 + 100) % 100; - break; - case 'G': - val = (long)year; - break; - default: - val = (long)days / 7 + 1; - break; - } - _bend = __write_integer(_buf, 0, val); - __append(buf, _buf, _bend, ct); - break; - } - -# if defined (_STLP_USE_GLIBC) - case 'z': /* GNU extension. */ - if (t->tm_isdst < 0) - break; - { - int diff; -# if defined (__USE_BSD) || defined (__BEOS__) - diff = t->tm_gmtoff; -# else - diff = t->__tm_gmtoff; -# endif - if (diff < 0) { - buf.append(1, ct.widen('-')); - diff = -diff; - } else - buf.append(1, ct.widen('+')); - diff /= 60; - _STLP_SPRINTF(_buf, "%.4d", (diff / 60) * 100 + diff % 60); - __append(buf, _buf, _buf + 4, ct); - break; - } -# endif /* __GLIBC__ */ -#endif /* __GNUC__ */ - - default: - break; - } -} - -void _STLP_CALL __write_formatted_time(__iostring &buf, const ctype& ct, - char format, char modifier, - const _Time_Info& table, const tm* t) -{ __write_formatted_timeT(buf, ct, format, modifier, table, t); } - -void _STLP_CALL __write_formatted_time(__iowstring &buf, const ctype& ct, - char format, char modifier, - const _WTime_Info& table, const tm* t) -{ __write_formatted_timeT(buf, ct, format, modifier, table, t); } - -static time_base::dateorder __get_date_order(_Locale_time* time) { - const char * fmt = _Locale_d_fmt(time); - char first, second, third; - - while (*fmt != 0 && *fmt != '%') ++fmt; - if (*fmt == 0) - return time_base::no_order; - first = *++fmt; - while (*fmt != 0 && *fmt != '%') ++fmt; - if (*fmt == 0) - return time_base::no_order; - second = *++fmt; - while (*fmt != 0 && *fmt != '%') ++fmt; - if (*fmt == 0) - return time_base::no_order; - third = *++fmt; - - switch (first) { - case 'd': - return (second == 'm' && third == 'y') ? time_base::dmy - : time_base::no_order; - case 'm': - return (second == 'd' && third == 'y') ? time_base::mdy - : time_base::no_order; - case 'y': - switch (second) { - case 'd': - return third == 'm' ? time_base::ydm : time_base::no_order; - case 'm': - return third == 'd' ? time_base::ymd : time_base::no_order; - default: - return time_base::no_order; - } - default: - return time_base::no_order; - } -} - -time_init::time_init() - : _M_dateorder(time_base::no_order) -{ _Init_timeinfo(_M_timeinfo); } - -time_init::time_init(const char* __name) { - if (!__name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _Locale_time *__time = __acquire_time(__name, buf, 0, &__err_code); - if (!__time) - locale::_M_throw_on_creation_failure(__err_code, __name, "time"); - - _Init_timeinfo(this->_M_timeinfo, __time); - _M_dateorder = __get_date_order(__time); - __release_time(__time); -} - -time_init::time_init(_Locale_time *__time) { - _Init_timeinfo(this->_M_timeinfo, __time); - _M_dateorder = __get_date_order(__time); -} - -#ifndef _STLP_NO_WCHAR_T -time_init::time_init() - : _M_dateorder(time_base::no_order) -{ _Init_timeinfo(_M_timeinfo); } - -time_init::time_init(const char* __name) { - if (!__name) - locale::_M_throw_on_null_name(); - - int __err_code; - char buf[_Locale_MAX_SIMPLE_NAME]; - _Locale_time *__time = __acquire_time(__name, buf, 0, &__err_code); - if (!__time) - locale::_M_throw_on_creation_failure(__err_code, __name, "time"); - - _Init_timeinfo(this->_M_timeinfo, __time); - _M_dateorder = __get_date_order(__time); - __release_time(__time); -} - -time_init::time_init(_Locale_time *__time) { - _Init_timeinfo(this->_M_timeinfo, __time); - _M_dateorder = __get_date_order(__time); -} -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -#if !defined (_STLP_NO_FORCE_INSTANTIATE) -template class time_get > >; -template class time_put > >; - -# ifndef _STLP_NO_WCHAR_T -template class time_get > >; -template class time_put > >; -# endif - -#endif - -_STLP_END_NAMESPACE diff --git a/build/stlport/src/warning_disable.h b/build/stlport/src/warning_disable.h deleted file mode 100644 index 7f0c1c84703c..000000000000 --- a/build/stlport/src/warning_disable.h +++ /dev/null @@ -1,61 +0,0 @@ -#if !defined (__ICL) -/* This header is used to turn off warnings of Microsoft compilers generated. - * while building STLport. - * For compiling user code, see stlport/config/_msvc_warnings_off.h. - */ - -# if (_MSC_VER < 1300) /* VC6/eVC4 */ -# pragma warning( disable : 4097 ) /* typedef-name used as based class of (...) */ -# pragma warning( disable : 4251 ) /* DLL interface needed */ -# pragma warning( disable : 4284 ) /* for -> operator */ -# pragma warning( disable : 4503 ) /* decorated name length exceeded, name was truncated */ -# pragma warning( disable : 4514 ) /* unreferenced inline function has been removed */ -# pragma warning( disable : 4660 ) /* template-class specialization '...' is already instantiated */ -# pragma warning( disable : 4701 ) /* local variable 'base' may be used without having been initialized */ -# pragma warning( disable : 4710 ) /* function (...) not inlined */ -# pragma warning( disable : 4786 ) /* identifier truncated to 255 characters */ -# endif - -# if (_MSC_VER <= 1310) -# pragma warning( disable : 4511 ) /* copy constructor cannot be generated */ -# endif - -# if (_MSC_VER < 1300) && defined (UNDER_CE) -# pragma warning( disable : 4201 ) /* nonstandard extension used : nameless struct/union */ -# pragma warning( disable : 4214 ) /* nonstandard extension used : bit field types other than int */ -# endif - -/* Suppress warnings emitted from Windows CE SDK headers. */ -# if (_MSC_VER >= 1400) && defined (UNDER_CE) -# pragma warning( disable : 4115 ) /* Named type definition in parentheses. */ -# pragma warning( disable : 4201 ) /* Nameless struct/union. */ -# pragma warning( disable : 4214 ) /* Bit field types other than int. */ -# pragma warning( disable : 4290 ) /* C++ exception specification ignored. */ -# pragma warning( disable : 4430 ) /* Missing type specifier, int assumed. */ -# pragma warning( disable : 4431 ) /* Missing type specifier, int assumed. */ -# endif - -# pragma warning( disable : 4075 ) /* initializers put in unrecognized initialization area */ -/* This warning is disable only for the c_locale_win32.c file compilation: */ -# pragma warning( disable : 4100 ) /* unreferenced formal parameter */ -# pragma warning( disable : 4127 ) /* conditional expression is constant */ -# pragma warning( disable : 4146 ) /* unary minus applied to unsigned type */ -# pragma warning( disable : 4245 ) /* conversion from 'enum ' to 'unsigned int', signed/unsigned mismatch */ -# pragma warning( disable : 4244 ) /* implicit conversion: possible loss of data */ -# pragma warning( disable : 4512 ) /* assignment operator could not be generated */ -# pragma warning( disable : 4571 ) /* catch(...) blocks compiled with /EHs do not catch or re-throw Structured Exceptions */ -# pragma warning( disable : 4702 ) /* unreachable code (appears in release with warning level4) */ -#else -# pragma warning( disable : 69 ) /* integer conversion resulted in truncation */ -# pragma warning( disable : 174 ) /* expression has no effect */ -# pragma warning( disable : 279 ) /* controling expression is constant */ -# pragma warning( disable : 383 ) /* reference to temporary used */ -# pragma warning( disable : 444 ) /* destructor for base class "..." is not virtual*/ -# pragma warning( disable : 810 ) /* conversion from "int" to "char" may lose significant bits */ -# pragma warning( disable : 981 ) /* operands are evaluated in unspecified order */ -# pragma warning( disable : 1418 ) /* external definition with no prior declaration */ -# pragma warning( disable : 1419 ) /* external declaration in primary source file */ -# pragma warning( disable : 1572 ) /* floating-point equality and inequality comparisons are unreliable */ -# pragma warning( disable : 1682 ) /* implicit conversion of a 64-bit integral type to a smaller integral type */ -# pragma warning( disable : 1683 ) /* explicit conversion of a 64-bit integral type to a smaller integral type */ -#endif diff --git a/build/stlport/stlport/algorithm b/build/stlport/stlport/algorithm deleted file mode 100644 index c653d8c77327..000000000000 --- a/build/stlport/stlport/algorithm +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_ALGORITHM - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1 -# include -# define _STLP_ALGORITHM -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1) -# ifndef _STLP_INTERNAL_CSTDIO -// remove() conflicts, should always go first -# include -# endif - -# ifndef _STLP_INTERNAL_ALGO_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(algorithm) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_ALGORITHM */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/assert.h b/build/stlport/stlport/assert.h deleted file mode 100644 index 112dd265be8b..000000000000 --- a/build/stlport/stlport/assert.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x202 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x202) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -/* evc3 doesn't have assert.h; macro assert() is defined in stl_evc.h */ -#ifndef _STLP_WCE_EVC3 -# if !defined (assert) -# define _STLP_NATIVE_ASSERT_H_INCLUDED -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(assert.h) -# endif -# endif -# if !defined (_STLP_NATIVE_ASSERT_H_INCLUDED) -/* See errno.h for additional information about this #error */ -# error assert has been defined before inclusion of assert.h header. -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x202) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif -# undef _STLP_DONT_POP_HEADER_ID -#endif - -/* Local Variables: - * mode:C++ - * End: - */ diff --git a/build/stlport/stlport/bitset b/build/stlport/stlport/bitset deleted file mode 100644 index 1d7fcf3ebbea..000000000000 --- a/build/stlport/stlport/bitset +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_BITSET - -// This implementation of bitset<> has a second template parameter, -// _WordT, which defaults to unsigned long. *YOU SHOULD NOT USE -// THIS FEATURE*. It is experimental, and it may be removed in -// future releases. - -// A bitset of size N, using words of type _WordT, will have -// N % (sizeof(_WordT) * CHAR_BIT) unused bits. (They are the high- -// order bits in the highest word.) It is a class invariant -// of class bitset<> that those unused bits are always zero. - -// Most of the actual code isn't contained in bitset<> itself, but in the -// base class _Base_bitset. The base class works with whole words, not with -// individual bits. This allows us to specialize _Base_bitset for the -// important special case where the bitset is only a single word. - -// The C++ standard does not define the precise semantics of operator[]. -// In this implementation the const version of operator[] is equivalent -// to test(), except that it does no range checking. The non-const version -// returns a reference to a bit, again without doing any range checking. - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x2 -# include -# define _STLP_BITSET -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2) -# ifndef _STLP_INTERNAL_BITSET -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x2) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(bitset) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_BITSET */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cassert b/build/stlport/stlport/cassert deleted file mode 100644 index aabd0b4ee50e..000000000000 --- a/build/stlport/stlport/cassert +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x103 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x103) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#if !defined (_STLP_WCE_EVC3) -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cassert) -# endif -# else -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x103 ) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cctype b/build/stlport/stlport/cctype deleted file mode 100644 index 513512e928ac..000000000000 --- a/build/stlport/stlport/cctype +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CCTYPE - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x104 -# define _STLP_CCTYPE -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x104 ) -# ifndef _STLP_INTERNAL_CCTYPE -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x104) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cctype) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x104 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CCTYPE */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cerrno b/build/stlport/stlport/cerrno deleted file mode 100644 index 0d17faf5e15b..000000000000 --- a/build/stlport/stlport/cerrno +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CERRNO -#define _STLP_CERRNO - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x105 -# include -#endif - -#ifndef _STLP_WCE -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cerrno) -# endif -# else -# include -# endif -#endif - -#ifndef errno /* errno is not a macro */ -# if defined (_STLP_IMPORT_VENDOR_CSTD) -# if !defined (__IBMCPP__) && !defined (__hpux) && !defined (__MWERKS__) && !defined (_STLP_WCE) -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::errno; -_STLP_END_NAMESPACE -# endif -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x105 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CERRNO */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cfloat b/build/stlport/stlport/cfloat deleted file mode 100644 index cb2e0cd00258..000000000000 --- a/build/stlport/stlport/cfloat +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CFLOAT -#define _STLP_CFLOAT - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x106 -# include -#endif - -// Borland defines some implementation constants in std:: namespace, -// we do not want to import them. -#if defined (_STLP_USE_NEW_C_HEADERS) && !defined (__BORLANDC__) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cfloat) -# endif -#else -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x106 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CFLOAT */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/ciso646 b/build/stlport/stlport/ciso646 deleted file mode 100644 index 443449d6f5d7..000000000000 --- a/build/stlport/stlport/ciso646 +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CISO646 -#define _STLP_CISO646 - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x107 -# include -#endif - -#if !defined(_STLP_WCE_EVC3) && !defined (__BORLANDC__) -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(ciso646) -# endif -# else -# include -# endif /* _STLP_USE_NEW_C_HEADERS */ -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x107 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CISO646 */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/climits b/build/stlport/stlport/climits deleted file mode 100644 index 86bc413c8766..000000000000 --- a/build/stlport/stlport/climits +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CLIMITS -# define _STLP_CLIMITS - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x108 -# include -#endif - -#if defined (__SUNPRO_CC) && ((__SUNPRO_CC == 0x500) && (__SUNPRO_CC_COMPAT > 4)) -# include -#elif defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(climits) -# endif -#else -# if defined (__BORLANDC__) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(limits.h) -# endif -# else -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x108 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CLIMITS */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/clocale b/build/stlport/stlport/clocale deleted file mode 100644 index 28996ced4eb1..000000000000 --- a/build/stlport/stlport/clocale +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CLOCALE - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x109 -# define _STLP_CLOCALE -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x109) -# ifndef _STLP_INTERNAL_CLOCALE -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x109) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(clocale) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x109) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CLOCALE */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cmath b/build/stlport/stlport/cmath deleted file mode 100644 index 46a8f52ec78a..000000000000 --- a/build/stlport/stlport/cmath +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CMATH - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x110 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x110) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_CMATH -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x110) && !defined (_STLP_DONT_POP_HEADER_ID) -# ifndef _STLP_INTERNAL_CMATH -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x110) || defined (_STLP_DONT_POP_HEADER_ID) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cmath) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x110) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -#endif /* _STLP_CMATH */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/complex b/build/stlport/stlport/complex deleted file mode 100644 index 6cfe6052f938..000000000000 --- a/build/stlport/stlport/complex +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_COMPLEX - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x10 -# define _STLP_COMPLEX -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x10) -// This header declares the template class complex, as described in -// in the C++ Standard. Single-precision complex numbers -// are complex, double-precision are complex, and -// quad precision are complex. - -// Note that the template class complex is declared within namespace -// std, as called for by the draft C++ standard -# ifndef _STLP_INTERNAL_COMPLEX -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x10) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(complex) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x10 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_COMPLEX */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/csetjmp b/build/stlport/stlport/csetjmp deleted file mode 100644 index eef2bd861ed1..000000000000 --- a/build/stlport/stlport/csetjmp +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CSETJMP - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x111 -# define _STLP_CSETJMP -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x111) -# ifndef _STLP_INTERNAL_CSETJMP -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x111) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(csetjmp) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x111 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CSETJMP */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/csignal b/build/stlport/stlport/csignal deleted file mode 100644 index 7b1a30d50827..000000000000 --- a/build/stlport/stlport/csignal +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CSIGNAL - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x112 -# define _STLP_CSIGNAL -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x112) -# ifndef _STLP_INTERNAL_CSIGNAL -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x112) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(csignal) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x112 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CSIGNAL */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cstdarg b/build/stlport/stlport/cstdarg deleted file mode 100644 index 6882bbdc0778..000000000000 --- a/build/stlport/stlport/cstdarg +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CSTDARG - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x113 -# define _STLP_CSTDARG -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x113) -# ifndef _STLP_INTERNAL_CSTDARG -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x113) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstdarg) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x113 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CSTDARG */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cstddef b/build/stlport/stlport/cstddef deleted file mode 100644 index 0a66f0e4d5bf..000000000000 --- a/build/stlport/stlport/cstddef +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CSTDDEF - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x114 -# define _STLP_CSTDDEF -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x114) -# ifndef _STLP_INTERNAL_CSTDDEF -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x114) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstddef) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x114 ) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CSTDDEF */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cstdio b/build/stlport/stlport/cstdio deleted file mode 100644 index e20c8fff79d3..000000000000 --- a/build/stlport/stlport/cstdio +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CSTDIO - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x15 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x15) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_CSTDIO -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x15) && !defined (_STLP_DONT_POP_HEADER_ID) -# ifndef _STLP_INTERNAL_CSTDIO -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x15) || defined (_STLP_DONT_POP_HEADER_ID) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstdio) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x15) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cstdlib b/build/stlport/stlport/cstdlib deleted file mode 100644 index 20afa3563a91..000000000000 --- a/build/stlport/stlport/cstdlib +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CSTDLIB - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x116 -# define _STLP_CSTDLIB -# include -#endif - -# if defined (__GNUC__) && defined (__MINGW32__) -/* Native cstdlib includes stdlib.h using an include_next so STLport stdlib.h - * is not used and the workaround in this file must be duplicated here - * (see stdlib.h). */ -# include "errno.h" -# endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x116) -# ifndef _STLP_INTERNAL_CSTDLIB -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x116) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstdlib) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x116) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CSTDLIB */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cstring b/build/stlport/stlport/cstring deleted file mode 100644 index d5cf58d01752..000000000000 --- a/build/stlport/stlport/cstring +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CSTRING - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x117 -# define _STLP_CSTRING -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x117) -# ifndef _STLP_INTERNAL_CSTRING -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x117) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstring) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x117) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CSTRING */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/ctime b/build/stlport/stlport/ctime deleted file mode 100644 index bafb7dd2e320..000000000000 --- a/build/stlport/stlport/ctime +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CTIME - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x118 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x118) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_CTIME -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x118) && !defined (_STLP_DONT_POP_HEADER_ID) -# ifndef _STLP_INTERNAL_CTIME -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x118) || defined (_STLP_DONT_POP_HEADER_ID) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(ctime) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x118) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -#endif /* _STLP_CTIME */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/ctype.h b/build/stlport/stlport/ctype.h deleted file mode 100644 index f9d10003e117..000000000000 --- a/build/stlport/stlport/ctype.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CTYPE_H - -/* Workaround for a "misbehaviour" when compiling resource scripts using - * eMbedded Visual C++. The standard .rc file includes windows header files, - * which in turn include ctype.h, which results in warnings and errors - */ -#if !defined(RC_INVOKED) - -# if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x219 -# include -# elif (_STLP_OUTERMOST_HEADER_ID == 0x219) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_CTYPE_H -# endif - -# if defined(_STLP_WCE_EVC3) -struct _exception; -# endif - -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(ctype.h) -# endif - -/* on evc4 including ctype.h also defines setjmp macro */ -# if defined (_STLP_WCE) -# define _STLP_NATIVE_SETJMP_H_INCLUDED -# endif - -# ifndef _STLP_CTYPE_H_SEEN -# define _STLP_CTYPE_H_SEEN - -/* Undef convenience interfaces */ -# undef isspace -# undef isprint -# undef iscntrl -# undef isupper -# undef islower -# undef isalpha -# undef isdigit -# undef ispunct -# undef isxdigit -# undef isalnum -# undef isgraph -# undef toupper -# undef tolower - -# if defined (UNDER_CE) - -# if (_WIN32_WCE < 300) /* Only wide chars for older versions */ -# define _isctype iswctype -# endif - -__inline int (isalpha)(int c) { return _isctype(c, _ALPHA); } -__inline int (isupper)(int c) { return _isctype(c, _UPPER); } -__inline int (islower)(int c) { return _isctype(c, _LOWER); } -__inline int (isdigit)(int c) { return _isctype(c, _DIGIT); } -__inline int (isxdigit)(int c) { return _isctype(c, _HEX); } -__inline int (isspace)(int c) { return _isctype(c, _SPACE); } -__inline int (ispunct)(int c) { return _isctype(c, _PUNCT); } -__inline int (isalnum)(int c) { return _isctype(c, _ALPHA|_DIGIT); } -__inline int (isprint)(int c) { return _isctype(c, _BLANK|_PUNCT|_ALPHA|_DIGIT); } -__inline int (isgraph)(int c) { return _isctype(c, _PUNCT|_ALPHA|_DIGIT); } -__inline int (iscntrl)(int c) { return _isctype(c, _CONTROL); } -__inline int (isascii)(int c) { return ((unsigned)(c) < 0x80); } - -# undef _isctype - -__inline int (iswalpha)(int c) { return iswctype((unsigned short)(c), _ALPHA); } -__inline int (iswupper)(int c) { return iswctype((unsigned short)(c), _UPPER); } -__inline int (iswlower)(int c) { return iswctype((unsigned short)(c), _LOWER); } -__inline int (iswdigit)(int c) { return iswctype((unsigned short)(c), _DIGIT); } -__inline int (iswxdigit)(int c) { return iswctype((unsigned short)(c), _HEX); } -__inline int (iswspace)(int c) { return iswctype((unsigned short)(c), _SPACE); } -__inline int (iswpunct)(int c) { return iswctype((unsigned short)(c), _PUNCT); } -__inline int (iswalnum)(int c) { return iswctype((unsigned short)(c), _ALPHA|_DIGIT); } -__inline int (iswprint)(int c) { return iswctype((unsigned short)(c), _BLANK|_PUNCT|_ALPHA|_DIGIT); } -__inline int (iswgraph)(int c) { return iswctype((unsigned short)(c), _PUNCT|_ALPHA|_DIGIT); } -__inline int (iswcntrl)(int c) { return iswctype((unsigned short)(c), _CONTROL); } -__inline int (iswascii)(int c) { return ((unsigned)(c) < 0x80); } - -# endif /* UNDER_CE */ - -# endif /* _STLP_CTYPE_H_SEEN */ - -# if (_STLP_OUTERMOST_HEADER_ID == 0x219) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -# endif - -#endif /* RC_INVOKED */ - -#endif /* _STLP_CTYPE_H */ diff --git a/build/stlport/stlport/cwchar b/build/stlport/stlport/cwchar deleted file mode 100644 index 0b3205474a4c..000000000000 --- a/build/stlport/stlport/cwchar +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CWCHAR - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x120 -# define _STLP_CWCHAR -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x120) -# ifndef _STLP_INTERNAL_CWCHAR -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x120) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cwchar) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x120) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CWCHAR */ - - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/cwctype b/build/stlport/stlport/cwctype deleted file mode 100644 index 0e86218e0138..000000000000 --- a/build/stlport/stlport/cwctype +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CWCTYPE - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x121 -# define _STLP_CWCTYPE -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x121) -# ifndef _STLP_INTERNAL_CWCTYPE -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x121) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cwctype) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x121) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_CWCTYPE */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/deque b/build/stlport/stlport/deque deleted file mode 100644 index 448f159b7fa0..000000000000 --- a/build/stlport/stlport/deque +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_DEQUE - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x22 -# include -# define _STLP_DEQUE -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x22) -# ifndef _STLP_INTERNAL_DEQUE_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x22) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(deque) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x22) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_DEQUE */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/errno.h b/build/stlport/stlport/errno.h deleted file mode 100644 index bb7999b9d078..000000000000 --- a/build/stlport/stlport/errno.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x205 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x205) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#ifdef _STLP_WCE -/* only show message when directly including this file in a non-library build */ -# if !defined(__BUILDING_STLPORT) && (_STLP_OUTERMOST_HEADER_ID == 0x205) -# pragma message("eMbedded Visual C++ 3 and .NET don't have a errno.h header; STLport won't include native errno.h here") -# endif -#else -# ifndef errno -/* We define the following macro first to guaranty the header reentrancy: */ -# define _STLP_NATIVE_ERRNO_H_INCLUDED -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(errno.h) -# endif -# if defined (__BORLANDC__) && (__BORLANDC__ >= 0x590) && defined (__cplusplus) -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::__errno; -_STLP_END_NAMESPACE -# endif -# endif /* errno */ - -# if !defined (_STLP_NATIVE_ERRNO_H_INCLUDED) -/* If errno has been defined before inclusion of native errno.h including it from STLport errno.h - * becomes impossible because if: - * #define errno foo - * then - * #include _STLP_NATIVE_C_HEADER(errno.h) - * becomes: - * #include _STLP_NATIVE_C_HEADER(foo.h) - * - * To fix this problem you have to find where this definition comes from and include errno.h before it. - */ -# error errno has been defined before inclusion of errno.h header. -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x205) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif -# undef _STLP_DONT_POP_HEADER_ID -#endif - -/* Local Variables: - * mode: C - * End: - */ diff --git a/build/stlport/stlport/exception b/build/stlport/stlport/exception deleted file mode 100644 index 47822e915475..000000000000 --- a/build/stlport/stlport/exception +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - */ - -// This header exists solely for portability. Normally it just includes -// the native header . - -#ifndef _STLP_EXCEPTION - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x423 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x423) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_EXCEPTION -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x423) && !defined (_STLP_DONT_POP_HEADER_ID) -# ifndef _STLP_INTERNAL_EXCEPTION -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x423) || defined (_STLP_DONT_POP_HEADER_ID) || defined (_STLP_IMPORT_VENDOR_STD) -/* If we are here it means that we are in an include called - * from the native lib which means that we can simply forward this - * call to the native exception header: - */ -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# if defined (__DMC__) && (_STLP_OUTERMOST_HEADER_ID == 0x874) -// Workaround to DMC harcoded typeinfo.h inclusion. -# include <../include/exception> -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception) -# endif -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x423) -# if !defined(_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -#endif /* _STLP_EXCEPTION */ - - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/exception.h b/build/stlport/stlport/exception.h deleted file mode 100644 index f4be9af3dcd3..000000000000 --- a/build/stlport/stlport/exception.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_OLDSTD_exception -#define _STLP_OLDSTD_exception - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x824 -# include -#endif - -#if defined (__BORLANDC__) || defined (_MSC_VER) -# include -#else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception.h) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x824) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_OLDSTD_exception */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/float.h b/build/stlport/stlport/float.h deleted file mode 100644 index 70fe3ade9dc6..000000000000 --- a/build/stlport/stlport/float.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x203 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x203) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#elif (_STLP_OUTERMOST_HEADER_ID == 0x203) -# error This header is only reentrant once, it should be modified if it has to be included more. -#endif - -#if defined (_STLP_WCE_EVC3) -struct _exception; -#endif - -#if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -#else -# include _STLP_NATIVE_C_HEADER(float.h) -#endif - -#if !defined (__linux__) -# if defined(__BORLANDC__) && defined (__cplusplus) && (__BORLANDC__ >= 0x560) -_STLP_BEGIN_NAMESPACE -using ::_max_dble; -using ::_max_flt; -using ::_max_ldble; -using ::_tiny_ldble; -_STLP_END_NAMESPACE -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x203) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif -# undef _STLP_DONT_POP_HEADER_ID -#endif diff --git a/build/stlport/stlport/fstream b/build/stlport/stlport/fstream deleted file mode 100644 index fc4cd1eaddda..000000000000 --- a/build/stlport/stlport/fstream +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - - -// This header defines classes basic_filebuf, basic_ifstream, -// basic_ofstream, and basic_fstream. These classes represent -// streambufs and streams whose sources or destinations are files. - -#ifndef _STLP_FSTREAM - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1025 -# include -# define _STLP_FSTREAM -# if defined (__DMC__) && defined (_DLL) -# define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1025) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_FSTREAM_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1025) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(fstream) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1025) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# if defined (__DMC__) && defined (_DLL) -# undef _STLP_CLASS_IMPORT_DECLSPEC -# define _STLP_CLASS_IMPORT_DECLSPEC -# endif -#endif - -#endif /* _STLP_FSTREAM */ - - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/fstream.h b/build/stlport/stlport/fstream.h deleted file mode 100644 index 46400334e05e..000000000000 --- a/build/stlport/stlport/fstream.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_FSTREAM_H -#define _STLP_FSTREAM_H - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x2026 -# include -#endif - -#include - -// get desired pollution -#include - -#ifndef _STLP_HAS_NO_NAMESPACES -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2026) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_FSTREAM_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/functional b/build/stlport/stlport/functional deleted file mode 100644 index 27e37ab9832b..000000000000 --- a/build/stlport/stlport/functional +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_FUNCTIONAL - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x27 -# include -# define _STLP_FUNCTIONAL -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x27) -# ifndef _STLP_INTERNAL_FUNCTION_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x27) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(functional) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x27) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#if !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT) - -#include -#include -#include -#include -#include - -namespace boost { - -template class reference_wrapper; -template reference_wrapper const ref(T &); -template inline reference_wrapper const cref(T const &); - -template struct result_of; - -namespace _mfi { -template class dm; -} - -template _mfi::dm mem_fn(R T::*f); - -} // namespace boost - -_STLP_BEGIN_NAMESPACE - -namespace tr1 { - -using ::boost::reference_wrapper; -using ::boost::ref; -using ::boost::cref; - -using ::boost::result_of; - -using ::boost::mem_fn; - -using ::boost::bind; - -namespace placeholders { - using ::_1; - using ::_2; - using ::_3; - using ::_4; - using ::_5; - using ::_6; - using ::_7; - using ::_8; - using ::_9; -} // placeholders - -} // namespace tr1 - -_STLP_END_NAMESPACE - -#endif // !_STLP_NO_EXTENSIONS && _STLP_USE_BOOST_SUPPORT - -#endif /* _STLP_FUNCTIONAL */ - -#if !defined(_STLP_FUNCTIONAL_FUN) && !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT) - -#ifndef BOOST_FUNCTION_NUM_ARGS // avoid recursive includes - -// #ifdef BOOST_FUNCTION_BASE_HEADER -// #undef BOOST_FUNCTION_BASE_HEADER -// #endif - -// #ifdef BOOST_FUNCTION_PROLOGUE_HPP -// #undef BOOST_FUNCTION_PROLOGUE_HPP -// #endif - -#define _STLP_FUNCTIONAL_FUN - -#ifndef BOOST_FUNCTION_BASE_HEADER // avoid recursive includes -# include -#else -namespace boost { -class bad_function_call; -template -class function; -template -void swap(function& f1, function& f2); -} -#endif - -_STLP_BEGIN_NAMESPACE - -namespace tr1 { - -using ::boost::bad_function_call; -using ::boost::function; -using ::boost::swap; - -} // namespace tr1 - -_STLP_END_NAMESPACE - -#endif // !BOOST_FUNCTION_NUM_ARGS - -#endif // !_STLP_FUNCTIONAL_REF && !_STLP_NO_EXTENSIONS && _STLP_USE_BOOST_SUPPORT - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/hash_map b/build/stlport/stlport/hash_map deleted file mode 100644 index 0e2422d88fe6..000000000000 --- a/build/stlport/stlport/hash_map +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_HASH_MAP -#define _STLP_HASH_MAP - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x4028 -# include -#endif - -#ifdef _STLP_PRAGMA_ONCE -# pragma once -#endif - -#if defined (_STLP_NO_EXTENSIONS) -/* Comment following if you want to use hash constainers even if you ask for - * no extension. - */ -# error The hash_map and hash_multimap class are STLport extensions. -#endif - -#include - -#if (_STLP_OUTERMOST_HEADER_ID == 0x4028) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_HASH_MAP */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/hash_set b/build/stlport/stlport/hash_set deleted file mode 100644 index 0fc89ec5684e..000000000000 --- a/build/stlport/stlport/hash_set +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_HASH_SET -#define _STLP_HASH_SET - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x4029 -# include -#endif - -#ifdef _STLP_PRAGMA_ONCE -# pragma once -#endif - -#if defined (_STLP_NO_EXTENSIONS) -/* Comment following if you want to use hash constainers even if you ask for - * no extension. - */ -# error The hash_set and hash_multiset class are STLport extensions. -#endif - -#include - -#if (_STLP_OUTERMOST_HEADER_ID == 0x4029) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_HASH_SET */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/iomanip b/build/stlport/stlport/iomanip deleted file mode 100644 index 085564f9e123..000000000000 --- a/build/stlport/stlport/iomanip +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_IOMANIP - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1030 -# include -# define _STLP_IOMANIP -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1030) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_IOMANIP -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1030) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(iomanip) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1030) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_IOMANIP */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/iomanip.h b/build/stlport/stlport/iomanip.h deleted file mode 100644 index 1bfb0d24a05c..000000000000 --- a/build/stlport/stlport/iomanip.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_IOMANIP_H -#define _STLP_IOMANIP_H - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x2031 -# include -#endif - -#include - -#include - -#ifndef _STLP_HAS_NO_NAMESPACES -# ifdef _STLP_BROKEN_USING_DIRECTIVE -_STLP_USING_NAMESPACE(stlport) -# else -using _STLP_STD::setiosflags; -using _STLP_STD::resetiosflags; -using _STLP_STD::setbase; -using _STLP_STD::setfill; -using _STLP_STD::setprecision; -using _STLP_STD::setw; -# endif -#endif /* _STLP_HAS_NO_NAMESPACES */ - -// get all the pollution we want -#include - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2031) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_IOMANIP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/ios b/build/stlport/stlport/ios deleted file mode 100644 index 12492bb728c5..000000000000 --- a/build/stlport/stlport/ios +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_IOS - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1032 -# include -# define _STLP_IOS -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1032) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_IOS_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1032) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(ios) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1032) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_IOS */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/ios.h b/build/stlport/stlport/ios.h deleted file mode 100644 index 90ccfbbd6434..000000000000 --- a/build/stlport/stlport/ios.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_IOS_H -#define _STLP_IOS_H - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1033 -# include -#endif - -#include - -#if defined (_STLP_USE_NAMESPACES) -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1033) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_IOS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/iosfwd b/build/stlport/stlport/iosfwd deleted file mode 100644 index 14010465b45c..000000000000 --- a/build/stlport/stlport/iosfwd +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_IOSFWD - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1034 -# include -# define _STLP_IOSFWD -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1034) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_IOSFWD -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1034) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(iosfwd) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1034) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_IOSFWD */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/iostream b/build/stlport/stlport/iostream deleted file mode 100644 index 1241f10c58a8..000000000000 --- a/build/stlport/stlport/iostream +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_IOSTREAM - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1037 -# include -# define _STLP_IOSTREAM -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1037) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifdef _STLP_REDIRECT_STDSTREAMS -// for ofstream redirection -# ifndef _STLP_INTERNAL_FSTREAM_H -# include -# endif -# endif - -# ifndef _STLP_INTERNAL_IOSFWD -# include -# endif - -# ifndef _STLP_INTERNAL_ISTREAM -# include -# endif - -_STLP_BEGIN_NAMESPACE - -# ifndef _STLP_USE_NAMESPACES -// in case of SGI iostreams, we have to rename our streams not to clash with those -// provided in native lib -# define cin _STLP_cin -# define cout _STLP_cout -# define cerr _STLP_cerr -# define clog _STLP_clog -# endif - -// Note: cin and wcin are both associated with stdio. The C standard -// (Amendment 1, section 4.6.2.1) says that it is an error to mix -// wide- and narrow-oriented I/O on the same stream. This implies -// that it is an error to use both cin and wcin in the same C++ -// program; the same applies to cout and wcout, and cerr/clog and -// wcerr/wclog. - -extern _STLP_DECLSPEC istream cin; - -# ifdef _STLP_REDIRECT_STDSTREAMS -extern _STLP_DECLSPEC ofstream cout; -extern _STLP_DECLSPEC ofstream cerr; -extern _STLP_DECLSPEC ofstream clog; -# else -extern _STLP_DECLSPEC ostream cout; -extern _STLP_DECLSPEC ostream cerr; -extern _STLP_DECLSPEC ostream clog; -# endif - -# ifndef _STLP_NO_WCHAR_T -extern _STLP_DECLSPEC wistream wcin; -extern _STLP_DECLSPEC wostream wcout; -extern _STLP_DECLSPEC wostream wcerr; -extern _STLP_DECLSPEC wostream wclog; -# endif - -_STLP_END_NAMESPACE - -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1037) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(iostream) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1037) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_IOSTREAM */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/iostream.h b/build/stlport/stlport/iostream.h deleted file mode 100644 index 2e7a7a9fe45c..000000000000 --- a/build/stlport/stlport/iostream.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_IOSTREAM_H -#define _STLP_IOSTREAM_H - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x2035 -# include -#endif - -#include - -// Those should be included all separately, as they do contain using declarations -#include -#include -#include - -#ifndef _STLP_HAS_NO_NAMESPACES - -# ifdef _STLP_BROKEN_USING_DIRECTIVE -_STLP_USING_NAMESPACE(stlport) -# else -using _STLP_STD::cin; -using _STLP_STD::cout; -using _STLP_STD::clog; -using _STLP_STD::cerr; -using _STLP_STD::iostream; -# ifndef _STLP_NO_WCHAR_T -using _STLP_STD::wcin; -using _STLP_STD::wcout; -using _STLP_STD::wclog; -using _STLP_STD::wcerr; -# endif -# endif -#endif /* _STLP_HAS_NO_NAMESPACES */ - -// Obsolete classes for old-style backwards compatibility - - -class istream_withassign : public istream { - public: - istream_withassign() : istream((streambuf*)0) {} - ~istream_withassign() {} - - istream_withassign& operator=(istream& __s) { - ios::init(__s.rdbuf()); - return *this; - } - istream_withassign& operator=(streambuf* __s) { - ios::init(__s); - return *this; - } -}; - -class ostream_withassign : public ostream { - public: - ostream_withassign() : ostream((streambuf*)0) {} - ~ostream_withassign() {} - - ostream_withassign& operator=(ostream& __s) { - ios::init(__s.rdbuf()); - return *this; - } - ostream_withassign& operator=(streambuf* __s) { - ios::init(__s); - return *this; - } -}; - -class iostream_withassign : public iostream { - public: - iostream_withassign() : iostream((streambuf*)0) {} - ~iostream_withassign() {} - iostream_withassign & operator=(ios& __i) { - ios::init(__i.rdbuf()); - return *this; - } - iostream_withassign & operator=(streambuf* __s) { - ios::init(__s); - return *this; - } -} ; - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2035) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_IOSTREAM_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/iso646.h b/build/stlport/stlport/iso646.h deleted file mode 100644 index 858863aef686..000000000000 --- a/build/stlport/stlport/iso646.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x204 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x204) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -/* evc3 doesn't have iso646.h */ -#if !defined (_STLP_WCE_EVC3) && !defined (__BORLANDC__) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(iso646.h) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x204) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif -# undef _STLP_DONT_POP_HEADER_ID -#endif - diff --git a/build/stlport/stlport/istream b/build/stlport/stlport/istream deleted file mode 100644 index d4ca903abf4f..000000000000 --- a/build/stlport/stlport/istream +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_ISTREAM - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1036 -# include -# define _STLP_ISTREAM -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1036) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_ISTREAM -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1036) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(istream) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1036) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_ISTREAM */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/istream.h b/build/stlport/stlport/istream.h deleted file mode 100644 index d382d96e3e58..000000000000 --- a/build/stlport/stlport/istream.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_ISTREAM_H -#define _STLP_ISTREAM_H - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x2037 -# include -#endif - -#include - -#include - -#ifndef _STLP_HAS_NO_NAMESPACES -# ifdef _STLP_BROKEN_USING_DIRECTIVE -_STLP_USING_NAMESPACE(stlport) -# else -using _STLP_STD::basic_istream; -using _STLP_STD::basic_iostream; -using _STLP_STD::istream; -using _STLP_STD::iostream; -using _STLP_STD::ios; -# ifndef _STLP_NO_WCHAR_T -using _STLP_STD::wistream; -using _STLP_STD::wiostream; -# endif -using _STLP_STD::ws; -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2037) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_ISTREAM_H */ diff --git a/build/stlport/stlport/iterator b/build/stlport/stlport/iterator deleted file mode 100644 index f8d3deee7c6f..000000000000 --- a/build/stlport/stlport/iterator +++ /dev/null @@ -1,61 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_ITERATOR - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x38 -# include -# define _STLP_ITERATOR -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x38) -# ifndef _STLP_INTERNAL_ITERATOR_H -# include -# endif - -# ifndef _STLP_INTERNAL_STREAM_ITERATOR_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x38) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(iterator) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x38) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_ITERATOR */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/limits b/build/stlport/stlport/limits deleted file mode 100644 index 5333b14fdd4c..000000000000 --- a/build/stlport/stlport/limits +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_LIMITS - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x39 -# include -# define _STLP_LIMITS -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x39) -# ifndef _STLP_INTERNAL_LIMITS -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x39) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(limits) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x39) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_LIMITS */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/limits.h b/build/stlport/stlport/limits.h deleted file mode 100644 index aab553b6547e..000000000000 --- a/build/stlport/stlport/limits.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x201 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x201) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#if defined(_STLP_WCE_EVC3) -struct _exception; -#endif - -#if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -#else -# include _STLP_NATIVE_C_HEADER(limits.h) -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x201) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif -# undef _STLP_DONT_POP_HEADER_ID -#endif diff --git a/build/stlport/stlport/list b/build/stlport/stlport/list deleted file mode 100644 index 647a8be5d0a1..000000000000 --- a/build/stlport/stlport/list +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_LIST - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x40 -# include -# define _STLP_LIST -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x40) -# ifndef _STLP_INTERNAL_LIST_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x40) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(list) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x40) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_LIST */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/locale b/build/stlport/stlport/locale deleted file mode 100644 index 22cd01fb0dc5..000000000000 --- a/build/stlport/stlport/locale +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_LOCALE - -// Basic framework: class locale and class locale::facet - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1041 -# include -# define _STLP_LOCALE -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1041) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -// Individual facets -# ifndef _STLP_INTERNAL_CTYPE_H -# include -# endif - -# ifndef _STLP_INTERNAL_CODECVT_H -# include -# endif - -# ifndef _STLP_INTERNAL_COLLATE_H -# include -# endif - -# ifndef _STLP_INTERNAL_NUM_PUT_H -# include -# endif - -# ifndef _STLP_INTERNAL_NUM_GET_H -# include -# endif - -// those never included separately anyway -# include -# include -# include - -// some stuff for streambuf iterators ended up defined there -// Strictly speaking, _istream.h portion is only required for , but it may break too many -// programs if we omit it -# ifndef _STLP_ISTREAM_H -# include -# endif - -// Convenience interfaces -#undef isspace -#undef isprint -#undef iscntrl -#undef isupper -#undef islower -#undef isalpha -#undef isdigit -#undef ispunct -#undef isxdigit -#undef isalnum -#undef isgraph -#undef toupper -#undef tolower - -_STLP_BEGIN_NAMESPACE - -template -inline bool isspace (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::space, c); } - -template -inline bool isprint (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::print, c); } - -template -inline bool iscntrl (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::cntrl, c); } - -template -inline bool isupper (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::upper, c); } - -template -inline bool islower (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::lower, c); } - -template -inline bool isalpha (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::alpha, c); } - -template -inline bool isdigit (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::digit, c); } - -template -inline bool ispunct (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::punct, c); } - -template -inline bool isxdigit (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::xdigit, c); } - -template -inline bool isalnum (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::alnum, c); } - -template -inline bool isgraph (_CharT c, const locale& loc) -{ return (use_facet >(loc)).is(ctype_base::graph, c); } - -template -inline _CharT toupper(_CharT c, const locale& loc) -{ return (use_facet >(loc)).toupper(c); } - -template -inline _CharT tolower(_CharT c, const locale& loc) -{ return (use_facet >(loc)).tolower(c); } - -_STLP_END_NAMESPACE - -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1041) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(locale) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1041) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_LOCALE */ - - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/locale.h b/build/stlport/stlport/locale.h deleted file mode 100644 index 81b56b47b358..000000000000 --- a/build/stlport/stlport/locale.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x242 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x242) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# else -# error STLport include schema violation -# endif -#endif - -/* evc3 doesn't have locale.h */ -#ifndef _STLP_WCE_EVC3 -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(locale.h) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x242) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif diff --git a/build/stlport/stlport/map b/build/stlport/stlport/map deleted file mode 100644 index f30c400c55c8..000000000000 --- a/build/stlport/stlport/map +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_MAP - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x43 -# include -# define _STLP_MAP -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x43) -# ifndef _STLP_INTERNAL_MAP_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x43) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(map) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x43) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_MAP */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/math.h b/build/stlport/stlport/math.h deleted file mode 100644 index 32b666f05d91..000000000000 --- a/build/stlport/stlport/math.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x244 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x244) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#if !defined (exception) && (!defined (__KCC) || (__KCC_VERSION < 4000)) && \ - !(defined(__IBMCPP__) && (500 <= __IBMCPP__)) && !defined(_STLP_WCE_EVC3) -# define _STLP_EXCEPTION_WAS_REDEFINED 1 -# define exception __math_exception -#endif - -#if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -#else -# include _STLP_NATIVE_C_HEADER(math.h) -#endif - -#if defined (_STLP_EXCEPTION_WAS_REDEFINED) -# undef exception -# undef _STLP_EXCEPTION_WAS_REDEFINED -#endif - -#ifdef _STLP_WCE_EVC3 -# undef _exception -# define _exception exception -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x244) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - diff --git a/build/stlport/stlport/mem.h b/build/stlport/stlport/mem.h deleted file mode 100644 index 2ebeceaaf8db..000000000000 --- a/build/stlport/stlport/mem.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_mem_h - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x245 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x245) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x245) || defined (_STLP_DONT_POP_HEADER_ID) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(mem.h) -# endif -#else -# if defined (__BORLANDC__) && defined (__USING_CNAME__) -# define _USING_CNAME_WAS_UNDEFINED -# undef __USING_CNAME__ -# endif - -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(mem.h) -# endif - -# if defined (__BORLANDC__) && defined (_USING_CNAME_WAS_UNDEFINED) -# define __USING_CNAME__ -# define _STLP_mem_h 1 -# undef _USING_CNAME_WAS_UNDEFINED -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x245) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif -# undef _STLP_DONT_POP_HEADER_ID -#endif - -#endif /* _STLP_mem_h */ diff --git a/build/stlport/stlport/memory b/build/stlport/stlport/memory deleted file mode 100644 index 3c0ceb38bc56..000000000000 --- a/build/stlport/stlport/memory +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_MEMORY - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x46 -# include -# define _STLP_MEMORY -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x46) -# ifndef _STLP_INTERNAL_ALLOC_H -# include -# endif - -# ifndef _STLP_INTERNAL_TEMPBUF_H -# include -# endif - -# ifndef _STLP_INTERNAL_RAW_STORAGE_ITER_H -# include -# endif - -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x46) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (__MSL__) -# include _STLP_NATIVE_HEADER(limits) -# endif - -# if !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT) -# define BOOST_TR1_MEMORY_INCLUDED -# define BOOST_TR1_FULL_MEMORY_INCLUDED -# endif - -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(memory) -# endif - -# if defined (__MSL__) && (__MSL__ >= 0x2405 && __MSL__ < 0x5201) -/* 980401 vss MSL 2.4 Pro 3 Release */ -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x46) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#if !defined(_STLP_NO_EXTENSIONS) && defined(_STLP_USE_BOOST_SUPPORT) - -namespace boost { - -class bad_weak_ptr; -template class shared_ptr; -template class weak_ptr; -template class enable_shared_from_this; -template D * get_deleter(shared_ptr const & p); -template shared_ptr static_pointer_cast(shared_ptr const & r); -template shared_ptr const_pointer_cast(shared_ptr const & r); -template shared_ptr dynamic_pointer_cast(shared_ptr const & r); -template void swap(weak_ptr & a, weak_ptr & b); -template void swap(shared_ptr & a, shared_ptr & b); - -namespace detail{ -class shared_count; -class weak_count; -} - -} // namespace boost - -# ifndef BOOST_SHARED_PTR_HPP_INCLUDED -# include -# endif -# ifndef BOOST_WEAK_PTR_HPP_INCLUDED -# include -# endif -# ifndef BOOST_ENABLE_SHARED_FROM_THIS_HPP_INCLUDED -# include -# endif - -_STLP_BEGIN_NAMESPACE - -namespace tr1 { - -using ::boost::bad_weak_ptr; -using ::boost::shared_ptr; -using ::boost::swap; -using ::boost::static_pointer_cast; -using ::boost::dynamic_pointer_cast; -using ::boost::const_pointer_cast; -using ::boost::get_deleter; -using ::boost::weak_ptr; -using ::boost::enable_shared_from_this; - -// shared_ptr IO -// weak_ptr IO - -} // namespace tr1 - -_STLP_END_NAMESPACE - -#endif /* !_STLP_NO_EXTENSIONS && _STLP_USE_BOOST_SUPPORT */ - -#endif /* _STLP_MEMORY */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/new b/build/stlport/stlport/new deleted file mode 100644 index 974ca4480f5c..000000000000 --- a/build/stlport/stlport/new +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_NEW_HEADER - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x447 -# define _STLP_NEW_HEADER -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x447) -# ifndef _STLP_NEW_H_HEADER -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x447) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(new) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x447) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_NEW */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/new.h b/build/stlport/stlport/new.h deleted file mode 100644 index 0a9bf33e88b9..000000000000 --- a/build/stlport/stlport/new.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x848 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x848) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#if !defined(_STLP_NO_NEW_HEADER) -# if defined (__BORLANDC__) -# include -# elif defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800 && !defined(_MSC_VER)) -# include _STLP_NATIVE_OLD_STREAMS_HEADER(new.h) -# else -# if defined (__GNUC__) && (__GNUC__ >= 3) -# include _STLP_NATIVE_OLD_STREAMS_HEADER(new.h) -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(new.h) -# endif -# endif -#endif /* !defined(_STLP_NO_NEW_HEADER) */ - -#if (_STLP_OUTERMOST_HEADER_ID == 0x848) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/numeric b/build/stlport/stlport/numeric deleted file mode 100644 index 79e46471bdbc..000000000000 --- a/build/stlport/stlport/numeric +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_NUMERIC - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x49 -# include -# define _STLP_NUMERIC -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x49) -# ifndef _STLP_INTERNAL_NUMERIC_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x49) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(numeric) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x49) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_NUMERIC */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/ostream b/build/stlport/stlport/ostream deleted file mode 100644 index 5134d9c9e9a4..000000000000 --- a/build/stlport/stlport/ostream +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_OSTREAM - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1050 -# include -# define _STLP_OSTREAM -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1050) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_OSTREAM -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1050) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(ostream) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1050) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_OSTREAM */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/ostream.h b/build/stlport/stlport/ostream.h deleted file mode 100644 index b6a76649e8e3..000000000000 --- a/build/stlport/stlport/ostream.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_OSTREAM_H -#define _STLP_OSTREAM_H - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x2051 -# include -#endif - -#include - -#include - -#ifdef _STLP_USE_NAMESPACES -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2051) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_OSTREAM_H */ diff --git a/build/stlport/stlport/pthread.h b/build/stlport/stlport/pthread.h deleted file mode 100644 index 4f0d90c83301..000000000000 --- a/build/stlport/stlport/pthread.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x280 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x280) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#if defined (__SUNPRO_CC) || defined (__HP_aCC) -# include "/usr/include/pthread.h" -#else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(pthread.h) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x280) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -/* - Local Variables: - mode:C++ - End: -*/ diff --git a/build/stlport/stlport/pthread_alloc b/build/stlport/stlport/pthread_alloc deleted file mode 100644 index c5ccbcb9a318..000000000000 --- a/build/stlport/stlport/pthread_alloc +++ /dev/null @@ -1,49 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_PTHREAD_ALLOC -#define _STLP_PTHREAD_ALLOC - -# ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x52 -# include -# endif - -# ifdef _STLP_PRAGMA_ONCE -# pragma once -# endif - -# include - -# if (_STLP_OUTERMOST_HEADER_ID == 0x52) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif - -#endif /* _STLP_PTHREAD_ALLOC */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/queue b/build/stlport/stlport/queue deleted file mode 100644 index 6acd63fdd044..000000000000 --- a/build/stlport/stlport/queue +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_QUEUE - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x53 -# include -# define _STLP_QUEUE -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x53) -# ifndef _STLP_INTERNAL_QUEUE_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x53) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(queue) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x53) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_QUEUE */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/rlocks.h b/build/stlport/stlport/rlocks.h deleted file mode 100644 index 84db1f40462f..000000000000 --- a/build/stlport/stlport/rlocks.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef _STLP_misc_rlocks_h -# define _STLP_misc_rlocks_h -# if (__SUNPRO_CC >= 0x500 ) -# include <../CCios/rlocks.h> -# elif defined (__SUNPRO_CC) -# include <../CC/rlocks.h> -# else -# error "This file is for SUN CC only. Please remove it if it causes any harm for other compilers." -# endif -#endif - diff --git a/build/stlport/stlport/rope b/build/stlport/stlport/rope deleted file mode 100644 index 4faa36b654e3..000000000000 --- a/build/stlport/stlport/rope +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#ifndef _STLP_ROPE -#define _STLP_ROPE - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x54 -# include -#endif - -#ifdef _STLP_PRAGMA_ONCE -# pragma once -#endif - -#if defined (_STLP_NO_EXTENSIONS) -/* Comment following if you want to use rope class even if you ask for - * no extension. - */ -# error The rope class is a STLport extension. -#endif - -#include - -#if (_STLP_OUTERMOST_HEADER_ID == 0x54) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_ROPE */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/set b/build/stlport/stlport/set deleted file mode 100644 index ed79d89fb1e7..000000000000 --- a/build/stlport/stlport/set +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_SET - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x55 -# include -# define _STLP_SET -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x55) -# ifndef _STLP_INTERNAL_SET_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x55) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(set) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x55) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_SET */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/setjmp.h b/build/stlport/stlport/setjmp.h deleted file mode 100644 index 3d3f5ef92208..000000000000 --- a/build/stlport/stlport/setjmp.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_SETJMP_H - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x256 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x256) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_SETJMP_H -#endif - -#if defined(_STLP_WCE_EVC3) -struct _exception; -#endif - -#if !defined (setjmp) -# define _STLP_NATIVE_SETJMP_H_INCLUDED -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(setjmp.h) -# endif -#endif - -#if !defined (_STLP_NATIVE_SETJMP_H_INCLUDED) -/* See errno.h file for a description of this problem. */ -# error setjmp has been defined before inclusion of setjmp.h header. -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x256) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif -#endif /* _STLP_SETJMP_H */ diff --git a/build/stlport/stlport/signal.h b/build/stlport/stlport/signal.h deleted file mode 100644 index 27f91be32511..000000000000 --- a/build/stlport/stlport/signal.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x257 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x257) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -/* evc3 and evc4 don't have signal.h */ -#ifndef _STLP_WCE -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(signal.h) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x257) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif -# undef _STLP_DONT_POP_HEADER_ID -#endif - diff --git a/build/stlport/stlport/slist b/build/stlport/stlport/slist deleted file mode 100644 index c1930e4f7133..000000000000 --- a/build/stlport/stlport/slist +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#ifndef _STLP_SLIST -#define _STLP_SLIST - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x58 -# include -#endif - -#ifdef _STLP_PRAGMA_ONCE -# pragma once -#endif - -#if defined (_STLP_NO_EXTENSIONS) -/* Comment following if you want to use the slist constainer even if you ask for - * no extension. - */ -# error The slist class is an STLport extension. -#endif - -#ifndef _STLP_INTERNAL_SLIST_H -# include -#endif - -#if defined (_STLP_IMPORT_VENDOR_STD) -//This is not a Standard header, it might failed for most of -//the compilers so we comment it for the moment. Should be uncommented -//on a compiler basis. -//# include _STLP_NATIVE_HEADER(slist) -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x58) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_SLIST */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/sstream b/build/stlport/stlport/sstream deleted file mode 100644 index 336bdde195e6..000000000000 --- a/build/stlport/stlport/sstream +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// This header defines classes basic_stringbuf, basic_istringstream, -// basic_ostringstream, and basic_stringstream. These classes -// represent streamsbufs and streams whose sources or destinations are -// C++ strings. - -#ifndef _STLP_SSTREAM - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1059 -# include -# define _STLP_SSTREAM -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1059) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_SSTREAM -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1059) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(sstream) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1059) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_SSTREAM */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stack b/build/stlport/stlport/stack deleted file mode 100644 index 253b31d2f7d0..000000000000 --- a/build/stlport/stlport/stack +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STACK - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x60 -# include -# define _STLP_STACK -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x60) -# ifndef _STLP_INTERNAL_STACK_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x60) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(stack) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x60) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_STACK */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stdarg.h b/build/stlport/stlport/stdarg.h deleted file mode 100644 index 368e6724b35c..000000000000 --- a/build/stlport/stlport/stdarg.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* Workaround for a "misbehaviour" when compiling resource scripts using - * eMbedded Visual C++. The standard .rc file includes windows header files, - * which in turn include stdarg.h, which results in warnings and errors - */ -#if !defined (RC_INVOKED) - -# if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x261 -# include -# elif (_STLP_OUTERMOST_HEADER_ID == 0x261) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# endif - -# if defined(_STLP_WCE_EVC3) -struct _exception; -# endif - -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(stdarg.h) -# endif - -# if (_STLP_OUTERMOST_HEADER_ID == 0x261) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -# endif -#endif /* RC_INVOKED */ diff --git a/build/stlport/stlport/stddef.h b/build/stlport/stlport/stddef.h deleted file mode 100644 index f959c23af4d9..000000000000 --- a/build/stlport/stlport/stddef.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x262 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x262) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#if defined (_MSC_VER) || defined (__DMC__) -/* Native stddef.h contains errno macro definition making inclusion of native - * errno.h in STLport errno.h impossible. We are then forced to include errno.h - * first. - */ -# include "errno.h" -#endif - -#if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -#else -# include _STLP_NATIVE_C_HEADER(stddef.h) -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x262) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif diff --git a/build/stlport/stlport/stdexcept b/build/stlport/stlport/stdexcept deleted file mode 100644 index dbb96b9a917e..000000000000 --- a/build/stlport/stlport/stdexcept +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STDEXCEPT - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x63 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x63) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_STDEXCEPT -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x63) -# ifndef _STLP_INTERNAL_STDEXCEPT -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x63) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(stdexcept) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x63) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -#endif /* _STLP_STDEXCEPT */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stdio.h b/build/stlport/stlport/stdio.h deleted file mode 100644 index e2dbdeae3a3d..000000000000 --- a/build/stlport/stlport/stdio.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* Workaround for a "misbehaviour" when compiling resource scripts using - * eMbedded Visual C++. The standard .rc file includes windows header files, - * which in turn include stdarg.h, which results in warnings and errors - */ -#if !defined(RC_INVOKED) - -# ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x264 -# include -# elif (_STLP_OUTERMOST_HEADER_ID == 0x264) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# endif - -# if defined(_STLP_WCE_EVC3) -struct _exception; -# endif -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(stdio.h) -# endif - -# if defined (__SUNPRO_CC) && !defined (_STRUCT_FILE) -# define _STRUCT_FILE -# endif - -# if defined (__BORLANDC__) && defined (__cplusplus) && !defined (__linux__) -_STLP_BEGIN_NAMESPACE -using __std_alias::_streams; -_STLP_END_NAMESPACE -# endif - -# if (_STLP_OUTERMOST_HEADER_ID == 0x264) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -# endif - -#endif /* RC_INVOKED */ diff --git a/build/stlport/stlport/stdiostream.h b/build/stlport/stlport/stdiostream.h deleted file mode 100644 index 80a5c672f203..000000000000 --- a/build/stlport/stlport/stdiostream.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef _STLP_misc_stdiostream_h -# define _STLP_misc_stdiostream_h -# if (__SUNPRO_CC >= 0x500 ) -# include <../CCios/stdiostream.h> -# else if defined (__SUNPRO_CC) -# include <../CC/stdiostream.h> -# else -# error "This file is for SUN CC only. Please remove it if it causes any harm for other compilers." -# endif -#endif diff --git a/build/stlport/stlport/stdlib.h b/build/stlport/stlport/stdlib.h deleted file mode 100644 index fd55f8a8fb6d..000000000000 --- a/build/stlport/stlport/stdlib.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* Workaround for a "misbehaviour" when compiling resource scripts using - * eMbedded Visual C++. The standard .rc file includes windows header files, - * which in turn include stdlib.h, which results in warnings and errors - */ -#if !defined (RC_INVOKED) - -# if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x265 -# include -# elif (_STLP_OUTERMOST_HEADER_ID == 0x265) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# endif - -# if defined (_STLP_MSVC_LIB) || (defined (__GNUC__) && defined (__MINGW32__)) || \ - defined (__BORLANDC__) || defined (__DMC__) || \ - (defined (__HP_aCC) && defined (_REENTRANT)) -/* Native stdlib.h contains errno macro definition making inclusion of native - * errno.h in STLport errno.h impossible. We are then forced to include errno.h - * first. - */ -# include "errno.h" -# endif - -/* - forward-declaration for _exception struct; prevents warning message - ../include/stdlib.h(817) : warning C4115: '_exception' : named type definition in parentheses -*/ -# if defined(_STLP_WCE_EVC3) -struct _exception; -# endif - -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(stdlib.h) -# endif - -/* on evc3/evc4 including stdlib.h also defines setjmp macro */ -# if defined (_STLP_WCE) -# define _STLP_NATIVE_SETJMP_H_INCLUDED -# endif - -# if (_STLP_OUTERMOST_HEADER_ID == 0x265) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -# endif - -#endif /* RC_INVOKED */ diff --git a/build/stlport/stlport/stl/_abbrevs.h b/build/stlport/stlport/stl/_abbrevs.h deleted file mode 100644 index c4acac8b1fba..000000000000 --- a/build/stlport/stlport/stl/_abbrevs.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_ABBREVS_H -# define _STLP_INTERNAL_ABBREVS_H - -// ugliness is intentional - to reduce conflicts -# define input_iterator_tag _In__ItT -# define output_iterator_tag _Ou__ItT -# define bidirectional_iterator_tag _Bd__ItT -# define random_access_iterator_tag _Ra__ItT -# define input_iterator _In__It -# define output_iterator _Ou__It -# define bidirectional_iterator _Bd__It -# define random_access_iterator _Ra__It -# define reverse_bidirectional_iterator _rBd__It -# define reverse_iterator _r__It -# define back_insert_iterator _bI__It -# define front_insert_iterator _fI__It -# define raw_storage_iterator _rS__It -# define _Const_traits _C_Tr -# define _Const_Const_traits _CC_Tr -# define _Nonconst_traits _N_Tr -# define _Nonconst_Const_traits _NC_Tr - -// ugliness is intentional - to reduce conflicts probability -# define __malloc_alloc M__A -# define __node_alloc D__A -# define __new_alloc N__A -# define __debug_alloc G__A -# define _STLP_alloc_proxy P__A - -# define _Deque_iterator_base _Dq__ItB -# define _Deque_iterator _Dq__It - -# define _Select1st _S1st -# define _Select2nd _S2nd -# define __move_source __m_s -# define _Vector_nonconst_traits _V_nct - -# define _Ht_iterator _Ht_It - -# define _List_node_base _L__NB -# define _List_iterator_base _L__ItB -# define _List_iterator _L__It - -# define _Slist_iterator_base _SL__ItB -# define _Slist_iterator _SL__It - -# define _Rb_tree_node_base _rbT__NB -# define _Rb_tree_node _rbT__N -# define _Rb_tree_base_iterator _rbT__It -# define _Rb_tree_base _rbT__B - -# if defined (__DMC__) && defined (_STLP_DEBUG) -# define _NonDbg_hashtable _Nd_Ht -# define _DBG_iter _d__It -# endif -#endif - diff --git a/build/stlport/stlport/stl/_algo.c b/build/stlport/stlport/stl/_algo.c deleted file mode 100644 index b58b92dc82d1..000000000000 --- a/build/stlport/stlport/stl/_algo.c +++ /dev/null @@ -1,2028 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_ALGO_C -#define _STLP_ALGO_C - -#if !defined (_STLP_INTERNAL_ALGO_H) -# include -#endif - -#ifndef _STLP_INTERNAL_TEMPBUF_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void __merge_without_buffer(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last, - _Distance __len1, _Distance __len2, - _Compare __comp); - - -template -_BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1, - _BidirectionalIter1 __last1, - _BidirectionalIter2 __first2, - _BidirectionalIter2 __last2, - _BidirectionalIter3 __result, - _Compare __comp); - -template -#if !(defined (__SUNPRO_CC) && (__SUNPRO_CC < 0x420 )) -inline -#endif -const _Tp& __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) { - if (__a < __b) - if (__b < __c) - return __b; - else if (__a < __c) - return __c; - else - return __a; - else if (__a < __c) - return __a; - else if (__b < __c) - return __c; - else - return __b; -} - -template -#if !(defined (__SUNPRO_CC) && (__SUNPRO_CC < 0x420 )) -inline -#endif -const _Tp& -__median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) { - if (__comp(__a, __b)) { - _STLP_VERBOSE_ASSERT(!__comp(__b, __a), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - if (__comp(__b, __c)) { - _STLP_VERBOSE_ASSERT(!__comp(__c, __b), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return __b; - } - else if (__comp(__a, __c)) { - _STLP_VERBOSE_ASSERT(!__comp(__c, __a), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return __c; - } - else - return __a; - } - else if (__comp(__a, __c)) { - _STLP_VERBOSE_ASSERT(!__comp(__c, __a), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return __a; - } - else if (__comp(__b, __c)) { - _STLP_VERBOSE_ASSERT(!__comp(__c, __b), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return __c; - } - else - return __b; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - // Test for empty ranges - if (__first1 == __last1 || __first2 == __last2) - return __first1; - - // Test for a pattern of length 1. - _ForwardIter2 __p1(__first2); - - if ( ++__p1 == __last2 ) - return find(__first1, __last1, *__first2); - - // General case. - - for ( ; ; ) { // __first1 != __last1 will be checked in find below - __first1 = find(__first1, __last1, *__first2); - if (__first1 == __last1) - return __last1; - - _ForwardIter2 __p = __p1; - _ForwardIter1 __current = __first1; - if (++__current == __last1) - return __last1; - - while (*__current == *__p) { - if (++__p == __last2) - return __first1; - if (++__current == __last1) - return __last1; - } - - ++__first1; - } - return __first1; -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_RandomAccessIter __search_n(_RandomAccessIter __first, _RandomAccessIter __last, - _Integer __count, const _Tp& __val, _BinaryPred __pred, - _Distance*, const random_access_iterator_tag &) -{ - _Distance __tailSize = __last - __first; - const _Distance __pattSize = __count; - const _Distance __skipOffset = __pattSize - 1; - _RandomAccessIter __backTrack; - _Distance __remainder, __prevRemainder; - - for ( _RandomAccessIter __lookAhead = __first + __skipOffset; __tailSize >= __pattSize; __lookAhead += __pattSize ) { // the main loop... - //__lookAhead here is always pointing to the last element of next possible match. - __tailSize -= __pattSize; - - while ( !__pred(*__lookAhead, __val) ) { // the skip loop... - if (__tailSize < __pattSize) - return __last; - - __lookAhead += __pattSize; - __tailSize -= __pattSize; - } - - if ( __skipOffset == 0 ) { - return (__lookAhead - __skipOffset); //Success - } - - __remainder = __skipOffset; - - for (__backTrack = __lookAhead; __pred(*--__backTrack, __val); ) { - if (--__remainder == 0) - return (__lookAhead - __skipOffset); //Success - } - - if (__remainder > __tailSize) - return __last; //failure - - __lookAhead += __remainder; - __tailSize -= __remainder; - - while ( __pred(*__lookAhead, __val) ) { - __prevRemainder = __remainder; - __backTrack = __lookAhead; - - do { - if (--__remainder == 0) - return (__lookAhead - __skipOffset); //Success - } while (__pred(*--__backTrack, __val)); - - //adjust remainder for next comparison - __remainder += __pattSize - __prevRemainder; - - if (__remainder > __tailSize) - return __last; //failure - - __lookAhead += __remainder; - __tailSize -= __remainder; - } - - //__lookAhead here is always pointing to the element of the last mismatch. - } - - return __last; //failure -} - -template -_ForwardIter __search_n(_ForwardIter __first, _ForwardIter __last, - _Integer __count, const _Tp& __val, _BinaryPred __pred, - _Distance*, const forward_iterator_tag &) { - for (; (__first != __last) && !__pred(*__first, __val); ++__first) {} - while (__first != __last) { - _Integer __n = __count - 1; - _ForwardIter __i = __first; - ++__i; - while (__i != __last && __n != 0 && __pred(*__i, __val)) { - ++__i; - --__n; - } - if (__n == 0) - return __first; - else if (__i != __last) - for (__first = ++__i; (__first != __last) && !__pred(*__first, __val); ++__first) {} - else - break; - } - return __last; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -// search_n. Search for __count consecutive copies of __val. -template -_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, - _Integer __count, const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__count <= 0) - return __first; - if (__count == 1) - //We use find when __count == 1 to use potential find overload. - return find(__first, __last, __val); - return _STLP_PRIV __search_n(__first, __last, __count, __val, equal_to<_Tp>(), - _STLP_DISTANCE_TYPE(__first, _ForwardIter), - _STLP_ITERATOR_CATEGORY(__first, _ForwardIter)); -} - -template -_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, - _Integer __count, const _Tp& __val, - _BinaryPred __binary_pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__count <= 0) - return __first; - return _STLP_PRIV __search_n(__first, __last, __count, __val, __binary_pred, - _STLP_DISTANCE_TYPE(__first, _ForwardIter), - _STLP_ITERATOR_CATEGORY(__first, _ForwardIter)); -} - -template -_ForwardIter1 -find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - return _STLP_PRIV __find_end(__first1, __last1, __first2, __last2, -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) - _STLP_ITERATOR_CATEGORY(__first1, _ForwardIter1), - _STLP_ITERATOR_CATEGORY(__first2, _ForwardIter2), -#else - forward_iterator_tag(), - forward_iterator_tag(), -#endif - _STLP_PRIV __equal_to(_STLP_VALUE_TYPE(__first1, _ForwardIter1)) - ); -} - -// unique and unique_copy -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP _OutputIterator -__unique_copy(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, - _BinaryPredicate __binary_pred, _Tp*) { - _Tp __val = *__first; - *__result = __val; - while (++__first != __last) - if (!__binary_pred(__val, *__first)) { - __val = *__first; - *++__result = __val; - } - return ++__result; -} - -template -inline _OutputIter -__unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result, - _BinaryPredicate __binary_pred, const output_iterator_tag &) { - return _STLP_PRIV __unique_copy(__first, __last, __result, __binary_pred, - _STLP_VALUE_TYPE(__first, _InputIter)); -} - -template -_STLP_INLINE_LOOP _ForwardIter -__unique_copy(_InputIter __first, _InputIter __last, _ForwardIter __result, - _BinaryPredicate __binary_pred, const forward_iterator_tag &) { - *__result = *__first; - while (++__first != __last) - if (!__binary_pred(*__result, *__first)) *++__result = *__first; - return ++__result; -} - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline _BidirectionalIterator -__unique_copy(_InputIterator __first, _InputIterator __last, - _BidirectionalIterator __result, _BinaryPredicate __binary_pred, - const bidirectional_iterator_tag &) { - return _STLP_PRIV __unique_copy(__first, __last, __result, __binary_pred, forward_iterator_tag()); -} - -template -inline _RandomAccessIterator -__unique_copy(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __result, _BinaryPredicate __binary_pred, - const random_access_iterator_tag &) { - return _STLP_PRIV __unique_copy(__first, __last, __result, __binary_pred, forward_iterator_tag()); -} -#endif /* _STLP_NONTEMPL_BASE_MATCH_BUG */ - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_OutputIter -unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) return __result; - return _STLP_PRIV __unique_copy(__first, __last, __result, - _STLP_PRIV __equal_to(_STLP_VALUE_TYPE(__first, _InputIter)), - _STLP_ITERATOR_CATEGORY(__result, _OutputIter)); -} - -template -_OutputIter -unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result, - _BinaryPredicate __binary_pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) return __result; - return _STLP_PRIV __unique_copy(__first, __last, __result, __binary_pred, - _STLP_ITERATOR_CATEGORY(__result, _OutputIter)); -} - -// rotate and rotate_copy, and their auxiliary functions -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_ForwardIter __rotate_aux(_ForwardIter __first, - _ForwardIter __middle, - _ForwardIter __last, - _Distance*, - const forward_iterator_tag &) { - if (__first == __middle) - return __last; - if (__last == __middle) - return __first; - - _ForwardIter __first2 = __middle; - do { - _STLP_STD::swap(*__first++, *__first2++); - if (__first == __middle) - __middle = __first2; - } while (__first2 != __last); - - _ForwardIter __new_middle = __first; - - __first2 = __middle; - - while (__first2 != __last) { - _STLP_STD::swap (*__first++, *__first2++); - if (__first == __middle) - __middle = __first2; - else if (__first2 == __last) - __first2 = __middle; - } - - return __new_middle; -} - -template -_BidirectionalIter __rotate_aux(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last, - _Distance*, - const bidirectional_iterator_tag &) { - if (__first == __middle) - return __last; - if (__last == __middle) - return __first; - - _STLP_PRIV __reverse(__first, __middle, bidirectional_iterator_tag()); - _STLP_PRIV __reverse(__middle, __last, bidirectional_iterator_tag()); - - while (__first != __middle && __middle != __last) - _STLP_STD::swap(*__first++, *--__last); - - if (__first == __middle) { - _STLP_PRIV __reverse(__middle, __last, bidirectional_iterator_tag()); - return __last; - } - else { - _STLP_PRIV __reverse(__first, __middle, bidirectional_iterator_tag()); - return __first; - } -} - -// rotate and rotate_copy, and their auxiliary functions -template -_STLP_INLINE_LOOP -_EuclideanRingElement __gcd(_EuclideanRingElement __m, - _EuclideanRingElement __n) { - while (__n != 0) { - _EuclideanRingElement __t = __m % __n; - __m = __n; - __n = __t; - } - return __m; -} - -template -_RandomAccessIter __rotate_aux(_RandomAccessIter __first, - _RandomAccessIter __middle, - _RandomAccessIter __last, - _Distance *, _Tp *) { - - _Distance __n = __last - __first; - _Distance __k = __middle - __first; - _Distance __l = __n - __k; - _RandomAccessIter __result = __first + (__last - __middle); - - if (__k == 0) /* __first == middle */ - return __last; - - if (__k == __l) { - _STLP_STD::swap_ranges(__first, __middle, __middle); - return __result; - } - - _Distance __d = _STLP_PRIV __gcd(__n, __k); - - for (_Distance __i = 0; __i < __d; __i++) { - _Tp __tmp = *__first; - _RandomAccessIter __p = __first; - - if (__k < __l) { - for (_Distance __j = 0; __j < __l/__d; __j++) { - if (__p > __first + __l) { - *__p = *(__p - __l); - __p -= __l; - } - - *__p = *(__p + __k); - __p += __k; - } - } - - else { - for (_Distance __j = 0; __j < __k/__d - 1; __j ++) { - if (__p < __last - __k) { - *__p = *(__p + __k); - __p += __k; - } - - *__p = * (__p - __l); - __p -= __l; - } - } - - *__p = __tmp; - ++__first; - } - - return __result; -} - -template -inline _RandomAccessIter -__rotate_aux(_RandomAccessIter __first, _RandomAccessIter __middle, _RandomAccessIter __last, - _Distance * __dis, const random_access_iterator_tag &) { - return _STLP_PRIV __rotate_aux(__first, __middle, __last, - __dis, _STLP_VALUE_TYPE(__first, _RandomAccessIter)); -} - -template -_ForwardIter -__rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last) { - _STLP_DEBUG_CHECK(__check_range(__first, __middle)) - _STLP_DEBUG_CHECK(__check_range(__middle, __last)) - return __rotate_aux(__first, __middle, __last, - _STLP_DISTANCE_TYPE(__first, _ForwardIter), - _STLP_ITERATOR_CATEGORY(__first, _ForwardIter)); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -void rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last) { - _STLP_PRIV __rotate(__first, __middle, __last); -} - -// Return a random number in the range [0, __n). This function encapsulates -// whether we're using rand (part of the standard C library) or lrand48 -// (not standard, but a much better choice whenever it's available). -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline _Distance __random_number(_Distance __n) { -#ifdef _STLP_NO_DRAND48 - return rand() % __n; -#else - return lrand48() % __n; -#endif -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -void random_shuffle(_RandomAccessIter __first, - _RandomAccessIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) return; - for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i) - iter_swap(__i, __first + _STLP_PRIV __random_number((__i - __first) + 1)); -} - -template -void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last, - _RandomNumberGenerator &__rand) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) return; - for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i) - iter_swap(__i, __first + __rand((__i - __first) + 1)); -} - -#if !defined (_STLP_NO_EXTENSIONS) -// random_sample and random_sample_n (extensions, not part of the standard). -template -_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last, - _OutputIter __out_ite, const _Distance __n) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _Distance __remaining = _STLP_STD::distance(__first, __last); - _Distance __m = (min) (__n, __remaining); - - while (__m > 0) { - if (_STLP_PRIV __random_number(__remaining) < __m) { - *__out_ite = *__first; - ++__out_ite; - --__m; - } - - --__remaining; - ++__first; - } - return __out_ite; -} - - -template -_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last, - _OutputIter __out_ite, const _Distance __n, - _RandomNumberGenerator& __rand) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _Distance __remaining = _STLP_STD::distance(__first, __last); - _Distance __m = (min) (__n, __remaining); - - while (__m > 0) { - if (__rand(__remaining) < __m) { - *__out_ite = *__first; - ++__out_ite; - --__m; - } - - --__remaining; - ++__first; - } - return __out_ite; -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_RandomAccessIter __random_sample(_InputIter __first, _InputIter __last, - _RandomAccessIter __out_ite, - const _Distance __n) { - _Distance __m = 0; - _Distance __t = __n; - for ( ; __first != __last && __m < __n; ++__m, ++__first) - __out_ite[__m] = *__first; - - while (__first != __last) { - ++__t; - _Distance __M = __random_number(__t); - if (__M < __n) - __out_ite[__M] = *__first; - ++__first; - } - - return __out_ite + __m; -} - -template -_RandomAccessIter __random_sample(_InputIter __first, _InputIter __last, - _RandomAccessIter __out_ite, - _RandomNumberGenerator& __rand, - const _Distance __n) { - _Distance __m = 0; - _Distance __t = __n; - for ( ; __first != __last && __m < __n; ++__m, ++__first) - __out_ite[__m] = *__first; - - while (__first != __last) { - ++__t; - _Distance __M = __rand(__t); - if (__M < __n) - __out_ite[__M] = *__first; - ++__first; - } - - return __out_ite + __m; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_RandomAccessIter -random_sample(_InputIter __first, _InputIter __last, - _RandomAccessIter __out_first, _RandomAccessIter __out_last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__out_first, __out_last)) - return _STLP_PRIV __random_sample(__first, __last, - __out_first, __out_last - __out_first); -} - -template -_RandomAccessIter -random_sample(_InputIter __first, _InputIter __last, - _RandomAccessIter __out_first, _RandomAccessIter __out_last, - _RandomNumberGenerator& __rand) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__out_first, __out_last)) - return _STLP_PRIV __random_sample(__first, __last, - __out_first, __rand, - __out_last - __out_first); -} - -#endif /* _STLP_NO_EXTENSIONS */ - -// partition, stable_partition, and their auxiliary functions -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP _ForwardIter __partition(_ForwardIter __first, - _ForwardIter __last, - _Predicate __pred, - const forward_iterator_tag &) { - if (__first == __last) return __first; - - while (__pred(*__first)) - if (++__first == __last) return __first; - - _ForwardIter __next = __first; - - while (++__next != __last) { - if (__pred(*__next)) { - _STLP_STD::swap(*__first, *__next); - ++__first; - } - } - return __first; -} - -template -_STLP_INLINE_LOOP _BidirectionalIter __partition(_BidirectionalIter __first, - _BidirectionalIter __last, - _Predicate __pred, - const bidirectional_iterator_tag &) { - for (;;) { - for (;;) { - if (__first == __last) - return __first; - else if (__pred(*__first)) - ++__first; - else - break; - } - --__last; - for (;;) { - if (__first == __last) - return __first; - else if (!__pred(*__last)) - --__last; - else - break; - } - iter_swap(__first, __last); - ++__first; - } -} - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline -_BidirectionalIter __partition(_BidirectionalIter __first, - _BidirectionalIter __last, - _Predicate __pred, - const random_access_iterator_tag &) { - return __partition(__first, __last, __pred, bidirectional_iterator_tag()); -} -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __partition(__first, __last, __pred, _STLP_ITERATOR_CATEGORY(__first, _ForwardIter)); -} - - -/* __pred_of_first: false if we know that __pred(*__first) is false, - * true when we don't know the result of __pred(*__first). - * __not_pred_of_before_last: true if we know that __pred(*--__last) is true, - * false when we don't know the result of __pred(*--__last). - */ -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_ForwardIter __inplace_stable_partition(_ForwardIter __first, - _ForwardIter __last, - _Predicate __pred, _Distance __len, - bool __pred_of_first, bool __pred_of_before_last) { - if (__len == 1) - return (__pred_of_first && (__pred_of_before_last || __pred(*__first))) ? __last : __first; - _ForwardIter __middle = __first; - _Distance __half_len = __len / 2; - _STLP_STD::advance(__middle, __half_len); - return _STLP_PRIV __rotate(_STLP_PRIV __inplace_stable_partition(__first, __middle, __pred, __half_len, __pred_of_first, false), - __middle, - _STLP_PRIV __inplace_stable_partition(__middle, __last, __pred, __len - __half_len, true, __pred_of_before_last)); -} - -template -_ForwardIter __stable_partition_adaptive(_ForwardIter __first, - _ForwardIter __last, - _Predicate __pred, _Distance __len, - _Pointer __buffer, _Distance __buffer_size, - bool __pred_of_first, bool __pred_of_before_last) { - if (__len <= __buffer_size) { - _ForwardIter __result1 = __first; - _Pointer __result2 = __buffer; - if ((__first != __last) && (!__pred_of_first || __pred(*__first))) { - *__result2 = *__first; - ++__result2; ++__first; --__len; - } - for (; __first != __last ; ++__first, --__len) { - if (((__len == 1) && (__pred_of_before_last || __pred(*__first))) || - ((__len != 1) && __pred(*__first))){ - *__result1 = *__first; - ++__result1; - } - else { - *__result2 = *__first; - ++__result2; - } - } - _STLP_STD::copy(__buffer, __result2, __result1); - return __result1; - } - else { - _ForwardIter __middle = __first; - _Distance __half_len = __len / 2; - _STLP_STD::advance(__middle, __half_len); - return _STLP_PRIV __rotate(_STLP_PRIV __stable_partition_adaptive(__first, __middle, __pred, - __half_len, __buffer, __buffer_size, - __pred_of_first, false), - __middle, - _STLP_PRIV __stable_partition_adaptive(__middle, __last, __pred, - __len - __half_len, __buffer, __buffer_size, - true, __pred_of_before_last)); - } -} - -template -inline _ForwardIter -__stable_partition_aux_aux(_ForwardIter __first, _ForwardIter __last, - _Predicate __pred, _Tp*, _Distance*, bool __pred_of_before_last) { - _Temporary_buffer<_ForwardIter, _Tp> __buf(__first, __last); - _STLP_MPWFIX_TRY //*TY 06/01/2000 - they forget to call dtor for _Temporary_buffer if no try/catch block is present - return (__buf.size() > 0) ? - __stable_partition_adaptive(__first, __last, __pred, - _Distance(__buf.requested_size()), - __buf.begin(), __buf.size(), - false, __pred_of_before_last) : - __inplace_stable_partition(__first, __last, __pred, - _Distance(__buf.requested_size()), - false, __pred_of_before_last); - _STLP_MPWFIX_CATCH //*TY 06/01/2000 - they forget to call dtor for _Temporary_buffer if no try/catch block is present -} - -template -_ForwardIter -__stable_partition_aux(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, - const forward_iterator_tag &) { - return __stable_partition_aux_aux(__first, __last, __pred, - _STLP_VALUE_TYPE(__first, _ForwardIter), - _STLP_DISTANCE_TYPE(__first, _ForwardIter), false); -} - -template -_BidirectIter -__stable_partition_aux(_BidirectIter __first, _BidirectIter __last, _Predicate __pred, - const bidirectional_iterator_tag &) { - for (--__last;;) { - if (__first == __last) - return __first; - else if (!__pred(*__last)) - --__last; - else - break; - } - ++__last; - //Here we know that __pred(*--__last) is true - return __stable_partition_aux_aux(__first, __last, __pred, - _STLP_VALUE_TYPE(__first, _BidirectIter), - _STLP_DISTANCE_TYPE(__first, _BidirectIter), true); -} - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -_BidirectIter -__stable_partition_aux(_BidirectIter __first, _BidirectIter __last, _Predicate __pred, - const random_access_iterator_tag &) { - return __stable_partition_aux(__first, __last, __pred, bidirectional_iterator_tag()); -} -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_ForwardIter -stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for (;;) { - if (__first == __last) - return __first; - else if (__pred(*__first)) - ++__first; - else - break; - } - return _STLP_PRIV __stable_partition_aux(__first, __last, __pred, - _STLP_ITERATOR_CATEGORY(__first, _ForwardIter)); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_RandomAccessIter __unguarded_partition(_RandomAccessIter __first, - _RandomAccessIter __last, - _Tp __pivot, _Compare __comp) { - for (;;) { - while (__comp(*__first, __pivot)) { - _STLP_VERBOSE_ASSERT(!__comp(__pivot, *__first), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - ++__first; - } - --__last; - while (__comp(__pivot, *__last)) { - _STLP_VERBOSE_ASSERT(!__comp(*__last, __pivot), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - --__last; - } - if (!(__first < __last)) - return __first; - iter_swap(__first, __last); - ++__first; - } -} - -// sort() and its auxiliary functions. -#define __stl_threshold 16 - -template -void __unguarded_linear_insert(_RandomAccessIter __last, _Tp __val, - _Compare __comp) { - _RandomAccessIter __next = __last; - --__next; - while (__comp(__val, *__next)) { - _STLP_VERBOSE_ASSERT(!__comp(*__next, __val), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - *__last = *__next; - __last = __next; - --__next; - } - *__last = __val; -} - -template -inline void __linear_insert(_RandomAccessIter __first, - _RandomAccessIter __last, _Tp __val, _Compare __comp) { - //*TY 12/26/1998 - added __val as a paramter - // _Tp __val = *__last; //*TY 12/26/1998 - __val supplied by caller - if (__comp(__val, *__first)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first, __val), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - copy_backward(__first, __last, __last + 1); - *__first = __val; - } - else - __unguarded_linear_insert(__last, __val, __comp); -} - -template -void __insertion_sort(_RandomAccessIter __first, - _RandomAccessIter __last, - _Tp *, _Compare __comp) { - if (__first == __last) return; - for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i) - __linear_insert<_RandomAccessIter, _Tp, _Compare>(__first, __i, *__i, __comp); //*TY 12/26/1998 - supply *__i as __val -} - -template -void __unguarded_insertion_sort_aux(_RandomAccessIter __first, - _RandomAccessIter __last, - _Tp*, _Compare __comp) { - for (_RandomAccessIter __i = __first; __i != __last; ++__i) - __unguarded_linear_insert<_RandomAccessIter, _Tp, _Compare>(__i, *__i, __comp); -} - -template -inline void __unguarded_insertion_sort(_RandomAccessIter __first, - _RandomAccessIter __last, - _Compare __comp) { - __unguarded_insertion_sort_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp); -} - -template -void __final_insertion_sort(_RandomAccessIter __first, - _RandomAccessIter __last, _Compare __comp) { - if (__last - __first > __stl_threshold) { - __insertion_sort(__first, __first + __stl_threshold, _STLP_VALUE_TYPE(__first,_RandomAccessIter), __comp); - __unguarded_insertion_sort(__first + __stl_threshold, __last, __comp); - } - else - __insertion_sort(__first, __last, _STLP_VALUE_TYPE(__first,_RandomAccessIter), __comp); -} - -template -void __introsort_loop(_RandomAccessIter __first, - _RandomAccessIter __last, _Tp*, - _Size __depth_limit, _Compare __comp) { - while (__last - __first > __stl_threshold) { - if (__depth_limit == 0) { - partial_sort(__first, __last, __last, __comp); - return; - } - --__depth_limit; - _RandomAccessIter __cut = - __unguarded_partition(__first, __last, - _Tp(__median(*__first, - *(__first + (__last - __first)/2), - *(__last - 1), __comp)), - __comp); - __introsort_loop(__cut, __last, (_Tp*) 0, __depth_limit, __comp); - __last = __cut; - } -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -void sort(_RandomAccessIter __first, _RandomAccessIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first != __last) { - _STLP_PRIV __introsort_loop(__first, __last, - _STLP_VALUE_TYPE(__first, _RandomAccessIter), - _STLP_PRIV __lg(__last - __first) * 2, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter))); - _STLP_PRIV __final_insertion_sort(__first, __last, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter))); - } -} - -template -void sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first != __last) { - _STLP_PRIV __introsort_loop(__first, __last, - _STLP_VALUE_TYPE(__first, _RandomAccessIter), - _STLP_PRIV __lg(__last - __first) * 2, __comp); - _STLP_PRIV __final_insertion_sort(__first, __last, __comp); - } -} - -// stable_sort() and its auxiliary functions. -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void __inplace_stable_sort(_RandomAccessIter __first, - _RandomAccessIter __last, _Compare __comp) { - if (__last - __first < 15) { - __insertion_sort(__first, __last, _STLP_VALUE_TYPE(__first,_RandomAccessIter), __comp); - return; - } - _RandomAccessIter __middle = __first + (__last - __first) / 2; - __inplace_stable_sort(__first, __middle, __comp); - __inplace_stable_sort(__middle, __last, __comp); - __merge_without_buffer(__first, __middle, __last, - __middle - __first, - __last - __middle, - __comp); -} - -template -void __merge_sort_loop(_RandomAccessIter1 __first, - _RandomAccessIter1 __last, - _RandomAccessIter2 __result, _Distance __step_size, - _Compare __comp) { - _Distance __two_step = 2 * __step_size; - - while (__last - __first >= __two_step) { - __result = merge(__first, __first + __step_size, - __first + __step_size, __first + __two_step, - __result, - __comp); - __first += __two_step; - } - __step_size = (min) (_Distance(__last - __first), __step_size); - - merge(__first, __first + __step_size, - __first + __step_size, __last, - __result, - __comp); -} - -const int __stl_chunk_size = 7; - -template -void __chunk_insertion_sort(_RandomAccessIter __first, - _RandomAccessIter __last, - _Distance __chunk_size, _Compare __comp) { - while (__last - __first >= __chunk_size) { - __insertion_sort(__first, __first + __chunk_size, - _STLP_VALUE_TYPE(__first,_RandomAccessIter), __comp); - __first += __chunk_size; - } - __insertion_sort(__first, __last, _STLP_VALUE_TYPE(__first,_RandomAccessIter), __comp); -} - -template -void __merge_sort_with_buffer(_RandomAccessIter __first, - _RandomAccessIter __last, _Pointer __buffer, - _Distance*, _Compare __comp) { - _Distance __len = __last - __first; - _Pointer __buffer_last = __buffer + __len; - - _Distance __step_size = __stl_chunk_size; - __chunk_insertion_sort(__first, __last, __step_size, __comp); - - while (__step_size < __len) { - __merge_sort_loop(__first, __last, __buffer, __step_size, __comp); - __step_size *= 2; - __merge_sort_loop(__buffer, __buffer_last, __first, __step_size, __comp); - __step_size *= 2; - } -} - -template -_BidirectionalIter1 __rotate_adaptive(_BidirectionalIter1 __first, - _BidirectionalIter1 __middle, - _BidirectionalIter1 __last, - _Distance __len1, _Distance __len2, - _BidirectionalIter2 __buffer, - _Distance __buffer_size) { - if (__len1 > __len2 && __len2 <= __buffer_size) { - _BidirectionalIter2 __buffer_end = _STLP_STD::copy(__middle, __last, __buffer); - _STLP_STD::copy_backward(__first, __middle, __last); - return _STLP_STD::copy(__buffer, __buffer_end, __first); - } - else if (__len1 <= __buffer_size) { - _BidirectionalIter2 __buffer_end = _STLP_STD::copy(__first, __middle, __buffer); - _STLP_STD::copy(__middle, __last, __first); - return _STLP_STD::copy_backward(__buffer, __buffer_end, __last); - } - else - return _STLP_PRIV __rotate(__first, __middle, __last); -} - -template -void __merge_adaptive(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last, - _Distance __len1, _Distance __len2, - _Pointer __buffer, _Distance __buffer_size, - _Compare __comp) { - if (__len1 <= __len2 && __len1 <= __buffer_size) { - _Pointer __buffer_end = _STLP_STD::copy(__first, __middle, __buffer); - _STLP_STD::merge(__buffer, __buffer_end, __middle, __last, __first, __comp); - } - else if (__len2 <= __buffer_size) { - _Pointer __buffer_end = _STLP_STD::copy(__middle, __last, __buffer); - _STLP_PRIV __merge_backward(__first, __middle, __buffer, __buffer_end, __last, - __comp); - } - else { - _BidirectionalIter __first_cut = __first; - _BidirectionalIter __second_cut = __middle; - _Distance __len11 = 0; - _Distance __len22 = 0; - if (__len1 > __len2) { - __len11 = __len1 / 2; - _STLP_STD::advance(__first_cut, __len11); - __second_cut = _STLP_STD::lower_bound(__middle, __last, *__first_cut, __comp); - __len22 += _STLP_STD::distance(__middle, __second_cut); - } - else { - __len22 = __len2 / 2; - _STLP_STD::advance(__second_cut, __len22); - __first_cut = _STLP_STD::upper_bound(__first, __middle, *__second_cut, __comp); - __len11 += _STLP_STD::distance(__first, __first_cut); - } - _BidirectionalIter __new_middle = - __rotate_adaptive(__first_cut, __middle, __second_cut, __len1 - __len11, - __len22, __buffer, __buffer_size); - __merge_adaptive(__first, __first_cut, __new_middle, __len11, - __len22, __buffer, __buffer_size, __comp); - __merge_adaptive(__new_middle, __second_cut, __last, __len1 - __len11, - __len2 - __len22, __buffer, __buffer_size, __comp); - } -} - -template -void __stable_sort_adaptive(_RandomAccessIter __first, - _RandomAccessIter __last, _Pointer __buffer, - _Distance __buffer_size, _Compare __comp) { - _Distance __len = (__last - __first + 1) / 2; - _RandomAccessIter __middle = __first + __len; - if (__len > __buffer_size) { - __stable_sort_adaptive(__first, __middle, __buffer, __buffer_size, - __comp); - __stable_sort_adaptive(__middle, __last, __buffer, __buffer_size, - __comp); - } - else { - __merge_sort_with_buffer(__first, __middle, __buffer, (_Distance*)0, - __comp); - __merge_sort_with_buffer(__middle, __last, __buffer, (_Distance*)0, - __comp); - } - __merge_adaptive(__first, __middle, __last, _Distance(__middle - __first), - _Distance(__last - __middle), __buffer, __buffer_size, - __comp); -} - -template -void __stable_sort_aux(_RandomAccessIter __first, - _RandomAccessIter __last, _Tp*, _Distance*, - _Compare __comp) { - _Temporary_buffer<_RandomAccessIter, _Tp> buf(__first, __last); - if (buf.begin() == 0) - __inplace_stable_sort(__first, __last, __comp); - else - __stable_sort_adaptive(__first, __last, buf.begin(), - _Distance(buf.size()), - __comp); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -void stable_sort(_RandomAccessIter __first, - _RandomAccessIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_PRIV __stable_sort_aux(__first, __last, - _STLP_VALUE_TYPE(__first, _RandomAccessIter), - _STLP_DISTANCE_TYPE(__first, _RandomAccessIter), - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter))); -} - -template -void stable_sort(_RandomAccessIter __first, - _RandomAccessIter __last, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_PRIV __stable_sort_aux(__first, __last, - _STLP_VALUE_TYPE(__first, _RandomAccessIter), - _STLP_DISTANCE_TYPE(__first, _RandomAccessIter), - __comp); -} - -// partial_sort, partial_sort_copy, and auxiliary functions. -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void __partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle, - _RandomAccessIter __last, _Tp*, _Compare __comp) { - make_heap(__first, __middle, __comp); - for (_RandomAccessIter __i = __middle; __i < __last; ++__i) { - if (__comp(*__i, *__first)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first, *__i), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __pop_heap(__first, __middle, __i, _Tp(*__i), __comp, - _STLP_DISTANCE_TYPE(__first, _RandomAccessIter)); - } - } - sort_heap(__first, __middle, __comp); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -void partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, - _RandomAccessIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __middle)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__middle, __last)) - _STLP_PRIV __partial_sort(__first, __middle, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter))); -} - -template -void partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, - _RandomAccessIter __last, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __middle)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__middle, __last)) - _STLP_PRIV __partial_sort(__first, __middle, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_RandomAccessIter __partial_sort_copy(_InputIter __first, - _InputIter __last, - _RandomAccessIter __result_first, - _RandomAccessIter __result_last, - _Compare __comp, _Distance*, _Tp*) { - if (__result_first == __result_last) return __result_last; - _RandomAccessIter __result_real_last = __result_first; - while(__first != __last && __result_real_last != __result_last) { - *__result_real_last = *__first; - ++__result_real_last; - ++__first; - } - make_heap(__result_first, __result_real_last, __comp); - while (__first != __last) { - if (__comp(*__first, *__result_first)) { - _STLP_VERBOSE_ASSERT(!__comp(*__result_first, *__first), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __adjust_heap(__result_first, _Distance(0), - _Distance(__result_real_last - __result_first), - _Tp(*__first), - __comp); - } - ++__first; - } - sort_heap(__result_first, __result_real_last, __comp); - return __result_real_last; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_RandomAccessIter -partial_sort_copy(_InputIter __first, _InputIter __last, - _RandomAccessIter __result_first, _RandomAccessIter __result_last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__result_first, __result_last)) - return _STLP_PRIV __partial_sort_copy(__first, __last, __result_first, __result_last, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _InputIter)), - _STLP_DISTANCE_TYPE(__result_first, _RandomAccessIter), - _STLP_VALUE_TYPE(__first, _InputIter)); -} - -template -_RandomAccessIter -partial_sort_copy(_InputIter __first, _InputIter __last, - _RandomAccessIter __result_first, - _RandomAccessIter __result_last, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__result_first, __result_last)) - return _STLP_PRIV __partial_sort_copy(__first, __last, __result_first, __result_last, - __comp, - _STLP_DISTANCE_TYPE(__result_first, _RandomAccessIter), - _STLP_VALUE_TYPE(__first, _InputIter)); -} - -// nth_element() and its auxiliary functions. -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void __nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, - _RandomAccessIter __last, _Tp*, _Compare __comp) { - while (__last - __first > 3) { - _RandomAccessIter __cut = - __unguarded_partition(__first, __last, - _Tp(__median(*__first, - *(__first + (__last - __first)/2), - *(__last - 1), - __comp)), - __comp); - if (__cut <= __nth) - __first = __cut; - else - __last = __cut; - } - __insertion_sort(__first, __last, _STLP_VALUE_TYPE(__first,_RandomAccessIter), __comp); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, - _RandomAccessIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __nth)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__nth, __last)) - _STLP_PRIV __nth_element(__first, __nth, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter))); -} - -template -void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, - _RandomAccessIter __last, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __nth)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__nth, __last)) - _STLP_PRIV __nth_element(__first, __nth, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp); -} - -// Binary search (lower_bound, upper_bound, equal_range, binary_search). -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - _Compare1 __comp1, _Compare2 __comp2, _Distance*) { - _Distance __len = _STLP_STD::distance(__first, __last); - _Distance __half; - - while (__len > 0) { - __half = __len >> 1; - _ForwardIter __middle = __first; - _STLP_STD::advance(__middle, __half); - if (__comp2(__val, *__middle)) { - _STLP_VERBOSE_ASSERT(!__comp1(*__middle, __val), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __len = __half; - } - else { - __first = __middle; - ++__first; - __len = __len - __half - 1; - } - } - return __first; -} - -template -pair<_ForwardIter, _ForwardIter> -__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - _Compare1 __comp1, _Compare2 __comp2, _Distance* __dist) { - _Distance __len = _STLP_STD::distance(__first, __last); - _Distance __half; - - while (__len > 0) { - __half = __len >> 1; - _ForwardIter __middle = __first; - _STLP_STD::advance(__middle, __half); - if (__comp1(*__middle, __val)) { - _STLP_VERBOSE_ASSERT(!__comp2(__val, *__middle), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __first = __middle; - ++__first; - __len = __len - __half - 1; - } - else if (__comp2(__val, *__middle)) { - _STLP_VERBOSE_ASSERT(!__comp1(*__middle, __val), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __len = __half; - } - else { - _ForwardIter __left = _STLP_PRIV __lower_bound(__first, __middle, __val, __comp1, __comp2, __dist); - //Small optim: If lower_bound haven't found an equivalent value - //there is no need to call upper_bound. - if (__comp1(*__left, __val)) { - _STLP_VERBOSE_ASSERT(!__comp2(__val, *__left), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return pair<_ForwardIter, _ForwardIter>(__left, __left); - } - _STLP_STD::advance(__first, __len); - _ForwardIter __right = _STLP_PRIV __upper_bound(++__middle, __first, __val, __comp1, __comp2, __dist); - return pair<_ForwardIter, _ForwardIter>(__left, __right); - } - } - return pair<_ForwardIter, _ForwardIter>(__first, __first); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - while (__first1 != __last1 && __first2 != __last2) { - if (*__first2 < *__first1) { - *__result = *__first2; - ++__first2; - } - else { - *__result = *__first1; - ++__first1; - } - ++__result; - } - return _STLP_STD::copy(__first2, __last2, _STLP_STD::copy(__first1, __last1, __result)); -} - -template -_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - while (__first1 != __last1 && __first2 != __last2) { - if (__comp(*__first2, *__first1)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first1, *__first2), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - *__result = *__first2; - ++__first2; - } - else { - *__result = *__first1; - ++__first1; - } - ++__result; - } - return _STLP_STD::copy(__first2, __last2, _STLP_STD::copy(__first1, __last1, __result)); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void __merge_without_buffer(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last, - _Distance __len1, _Distance __len2, - _Compare __comp) { - if (__len1 == 0 || __len2 == 0) - return; - if (__len1 + __len2 == 2) { - if (__comp(*__middle, *__first)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first, *__middle), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - iter_swap(__first, __middle); - } - return; - } - _BidirectionalIter __first_cut = __first; - _BidirectionalIter __second_cut = __middle; - _Distance __len11 = 0; - _Distance __len22 = 0; - if (__len1 > __len2) { - __len11 = __len1 / 2; - _STLP_STD::advance(__first_cut, __len11); - __second_cut = _STLP_STD::lower_bound(__middle, __last, *__first_cut, __comp); - __len22 += _STLP_STD::distance(__middle, __second_cut); - } - else { - __len22 = __len2 / 2; - _STLP_STD::advance(__second_cut, __len22); - __first_cut = _STLP_STD::upper_bound(__first, __middle, *__second_cut, __comp); - __len11 += _STLP_STD::distance(__first, __first_cut); - } - _BidirectionalIter __new_middle - = _STLP_PRIV __rotate(__first_cut, __middle, __second_cut); - __merge_without_buffer(__first, __first_cut, __new_middle, __len11, __len22, - __comp); - __merge_without_buffer(__new_middle, __second_cut, __last, __len1 - __len11, - __len2 - __len22, __comp); -} - -template -_BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1, - _BidirectionalIter1 __last1, - _BidirectionalIter2 __first2, - _BidirectionalIter2 __last2, - _BidirectionalIter3 __result, - _Compare __comp) { - if (__first1 == __last1) - return copy_backward(__first2, __last2, __result); - if (__first2 == __last2) - return copy_backward(__first1, __last1, __result); - --__last1; - --__last2; - for (;;) { - if (__comp(*__last2, *__last1)) { - _STLP_VERBOSE_ASSERT(!__comp(*__last1, *__last2), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - *--__result = *__last1; - if (__first1 == __last1) - return copy_backward(__first2, ++__last2, __result); - --__last1; - } - else { - *--__result = *__last2; - if (__first2 == __last2) - return copy_backward(__first1, ++__last1, __result); - --__last2; - } - } -} - -template -inline void __inplace_merge_aux(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last, _Tp*, _Distance*, - _Compare __comp) { - _Distance __len1 = _STLP_STD::distance(__first, __middle); - _Distance __len2 = _STLP_STD::distance(__middle, __last); - - _Temporary_buffer<_BidirectionalIter, _Tp> __buf(__first, __last); - if (__buf.begin() == 0) - __merge_without_buffer(__first, __middle, __last, __len1, __len2, __comp); - else - __merge_adaptive(__first, __middle, __last, __len1, __len2, - __buf.begin(), _Distance(__buf.size()), - __comp); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -void inplace_merge(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __middle)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__middle, __last)) - if (__first == __middle || __middle == __last) - return; - _STLP_PRIV __inplace_merge_aux(__first, __middle, __last, - _STLP_VALUE_TYPE(__first, _BidirectionalIter), _STLP_DISTANCE_TYPE(__first, _BidirectionalIter), - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter))); -} - -template -void inplace_merge(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __middle)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__middle, __last)) - if (__first == __middle || __middle == __last) - return; - _STLP_PRIV __inplace_merge_aux(__first, __middle, __last, - _STLP_VALUE_TYPE(__first, _BidirectionalIter), _STLP_DISTANCE_TYPE(__first, _BidirectionalIter), - __comp); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -bool __includes(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - while (__first1 != __last1 && __first2 != __last2) - if (__comp(*__first2, *__first1)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first1, *__first2), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return false; - } - else if (__comp(*__first1, *__first2)) - ++__first1; - else - ++__first1, ++__first2; - - return __first2 == __last2; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -bool includes(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) { - return _STLP_PRIV __includes(__first1, __last1, __first2, __last2, __comp); -} - -template -bool includes(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2) { - return _STLP_PRIV __includes(__first1, __last1, __first2, __last2, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first1, _InputIter1))); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_OutputIter __set_union(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - while (__first1 != __last1 && __first2 != __last2) { - if (__comp(*__first1, *__first2)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first2, *__first1), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - *__result = *__first1; - ++__first1; - } - else if (__comp(*__first2, *__first1)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first1, *__first2), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - *__result = *__first2; - ++__first2; - } - else { - *__result = *__first1; - ++__first1; - ++__first2; - } - ++__result; - } - return _STLP_STD::copy(__first2, __last2, _STLP_STD::copy(__first1, __last1, __result)); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result) { - return _STLP_PRIV __set_union(__first1, __last1, __first2, __last2, __result, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first1, _InputIter1))); -} - -template -_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp) { - return _STLP_PRIV __set_union(__first1, __last1, __first2, __last2, __result, __comp); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_OutputIter __set_intersection(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - while (__first1 != __last1 && __first2 != __last2) - if (__comp(*__first1, *__first2)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first2, *__first1), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - ++__first1; - } - else if (__comp(*__first2, *__first1)) - ++__first2; - else { - *__result = *__first1; - ++__first1; - ++__first2; - ++__result; - } - return __result; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result) { - return _STLP_PRIV __set_intersection(__first1, __last1, __first2, __last2, __result, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first1, _InputIter1))); -} - -template -_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp) { - return _STLP_PRIV __set_intersection(__first1, __last1, __first2, __last2, __result, __comp); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_OutputIter __set_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - while (__first1 != __last1 && __first2 != __last2) - if (__comp(*__first1, *__first2)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first2, *__first1), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - *__result = *__first1; - ++__first1; - ++__result; - } - else if (__comp(*__first2, *__first1)) - ++__first2; - else { - ++__first1; - ++__first2; - } - return _STLP_STD::copy(__first1, __last1, __result); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result) { - return _STLP_PRIV __set_difference(__first1, __last1, __first2, __last2, __result, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first1, _InputIter1))); -} - -template -_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp) { - return _STLP_PRIV __set_difference(__first1, __last1, __first2, __last2, __result, __comp); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_OutputIter -__set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - while (__first1 != __last1 && __first2 != __last2) { - if (__comp(*__first1, *__first2)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first2, *__first1), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - *__result = *__first1; - ++__first1; - ++__result; - } - else if (__comp(*__first2, *__first1)) { - *__result = *__first2; - ++__first2; - ++__result; - } - else { - ++__first1; - ++__first2; - } - } - return _STLP_STD::copy(__first2, __last2, _STLP_STD::copy(__first1, __last1, __result)); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_OutputIter -set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result) { - return _STLP_PRIV __set_symmetric_difference(__first1, __last1, __first2, __last2, __result, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first1, _InputIter1))); -} - -template -_OutputIter -set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, - _Compare __comp) { - return _STLP_PRIV __set_symmetric_difference(__first1, __last1, __first2, __last2, __result, __comp); -} - -// min_element and max_element, with and without an explicitly supplied -// comparison function. - -template -_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) return __first; - _ForwardIter __result = __first; - while (++__first != __last) - if (*__result < *__first) { - _STLP_VERBOSE_ASSERT(!(*__first < *__result), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __result = __first; - } - return __result; -} - -template -_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last, - _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) return __first; - _ForwardIter __result = __first; - while (++__first != __last) { - if (__comp(*__result, *__first)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first, *__result), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __result = __first; - } - } - return __result; -} - -template -_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) return __first; - _ForwardIter __result = __first; - while (++__first != __last) - if (*__first < *__result) { - _STLP_VERBOSE_ASSERT(!(*__result < *__first), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __result = __first; - } - return __result; -} - -template -_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last, - _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) return __first; - _ForwardIter __result = __first; - while (++__first != __last) { - if (__comp(*__first, *__result)) { - _STLP_VERBOSE_ASSERT(!__comp(*__result, *__first), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __result = __first; - } - } - return __result; -} - -// next_permutation and prev_permutation, with and without an explicitly -// supplied comparison function. -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -bool __next_permutation(_BidirectionalIter __first, _BidirectionalIter __last, - _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) - return false; - _BidirectionalIter __i = __first; - ++__i; - if (__i == __last) - return false; - __i = __last; - --__i; - - for(;;) { - _BidirectionalIter __ii = __i; - --__i; - if (__comp(*__i, *__ii)) { - _STLP_VERBOSE_ASSERT(!__comp(*__ii, *__i), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - _BidirectionalIter __j = __last; - while (!__comp(*__i, *--__j)) {} - iter_swap(__i, __j); - reverse(__ii, __last); - return true; - } - if (__i == __first) { - reverse(__first, __last); - return false; - } - } -#if defined (_STLP_NEED_UNREACHABLE_RETURN) - return false; -#endif -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __next_permutation(__first, __last, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter))); -} - -template -bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last, - _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __next_permutation(__first, __last, __comp); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -bool __prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last, - _Compare __comp) { - if (__first == __last) - return false; - _BidirectionalIter __i = __first; - ++__i; - if (__i == __last) - return false; - __i = __last; - --__i; - - for(;;) { - _BidirectionalIter __ii = __i; - --__i; - if (__comp(*__ii, *__i)) { - _STLP_VERBOSE_ASSERT(!__comp(*__i, *__ii), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - _BidirectionalIter __j = __last; - while (!__comp(*--__j, *__i)) {} - iter_swap(__i, __j); - reverse(__ii, __last); - return true; - } - if (__i == __first) { - reverse(__first, __last); - return false; - } - } -#if defined (_STLP_NEED_UNREACHABLE_RETURN) - return false; -#endif -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __prev_permutation(__first, __last, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter))); -} - -template -bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last, - _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __prev_permutation(__first, __last, __comp); -} - -#if !defined (_STLP_NO_EXTENSIONS) - -// is_heap, a predicate testing whether or not a range is -// a heap. This function is an extension, not part of the C++ -// standard. -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -bool __is_heap(_RandomAccessIter __first, _StrictWeakOrdering __comp, - _Distance __n) { - _Distance __parent = 0; - for (_Distance __child = 1; __child < __n; ++__child) { - if (__comp(__first[__parent], __first[__child])) { - _STLP_VERBOSE_ASSERT(!__comp(__first[__child], __first[__parent]), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return false; - } - if ((__child & 1) == 0) - ++__parent; - } - return true; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __is_heap(__first, _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)), __last - __first); -} - -template -bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last, - _StrictWeakOrdering __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __is_heap(__first, __comp, __last - __first); -} - - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -bool __is_sorted(_ForwardIter __first, _ForwardIter __last, - _StrictWeakOrdering __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) - return true; - - _ForwardIter __next = __first; - for (++__next; __next != __last; __first = __next, ++__next) { - if (__comp(*__next, *__first)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first, *__next), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return false; - } - } - - return true; -} - -_STLP_MOVE_TO_STD_NAMESPACE -#endif /* _STLP_NO_EXTENSIONS */ - -_STLP_END_NAMESPACE - -#undef __stl_threshold - -#endif /* _STLP_ALGO_C */ -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_algo.h b/build/stlport/stlport/stl/_algo.h deleted file mode 100644 index 01e5f93f0a7e..000000000000 --- a/build/stlport/stlport/stl/_algo.h +++ /dev/null @@ -1,745 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_ALGO_H -#define _STLP_INTERNAL_ALGO_H - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_HEAP_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -#if defined (__SUNPRO_CC) && !defined (_STLP_INTERNAL_CSTDIO) -// remove() conflict -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// for_each. Apply a function to every element of a range. -template -_STLP_INLINE_LOOP _Function -for_each(_InputIter __first, _InputIter __last, _Function __f) { - for ( ; __first != __last; ++__first) - __f(*__first); - return __f; -} - -// count_if -template -_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_InputIter) -count_if(_InputIter __first, _InputIter __last, _Predicate __pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_DIFFERENCE_TYPE(_InputIter) __n = 0; - for ( ; __first != __last; ++__first) { - if (__pred(*__first)) - ++__n; - } - return __n; -} - -// adjacent_find. - -template -_STLP_INLINE_LOOP _ForwardIter -adjacent_find(_ForwardIter __first, _ForwardIter __last, - _BinaryPredicate __binary_pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - if (__first == __last) - return __last; - _ForwardIter __next = __first; - while(++__next != __last) { - if (__binary_pred(*__first, *__next)) - return __first; - __first = __next; - } - return __last; -} - -template -_STLP_INLINE_LOOP _ForwardIter -adjacent_find(_ForwardIter __first, _ForwardIter __last) { - return adjacent_find(__first, __last, - _STLP_PRIV __equal_to(_STLP_VALUE_TYPE(__first, _ForwardIter))); -} - -#if !defined (_STLP_NO_ANACHRONISMS) -template -_STLP_INLINE_LOOP void -count(_InputIter __first, _InputIter __last, const _Tp& __val, _Size& __n) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) - if (*__first == __val) - ++__n; -} - -template -_STLP_INLINE_LOOP void -count_if(_InputIter __first, _InputIter __last, _Predicate __pred, _Size& __n) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) - if (__pred(*__first)) - ++__n; -} -#endif - -template -_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2); - -// search_n. Search for __count consecutive copies of __val. -template -_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, - _Integer __count, const _Tp& __val); -template -_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last, - _Integer __count, const _Tp& __val, _BinaryPred __binary_pred); - -template -inline _InputIter find_first_of(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - return _STLP_PRIV __find_first_of(__first1, __last1, __first2, __last2); -} - -template -inline _InputIter -find_first_of(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2, _BinaryPredicate __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - return _STLP_PRIV __find_first_of(__first1, __last1, __first2, __last2, __comp); -} - -template -_ForwardIter1 -find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2); - -// swap_ranges -template -_STLP_INLINE_LOOP _ForwardIter2 -swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - for ( ; __first1 != __last1; ++__first1, ++__first2) - iter_swap(__first1, __first2); - return __first2; -} - -// transform -template -_STLP_INLINE_LOOP _OutputIter -transform(_InputIter __first, _InputIter __last, _OutputIter __result, _UnaryOperation __opr) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first, ++__result) - *__result = __opr(*__first); - return __result; -} -template -_STLP_INLINE_LOOP _OutputIter -transform(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _OutputIter __result,_BinaryOperation __binary_op) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result) - *__result = __binary_op(*__first1, *__first2); - return __result; -} - -// replace_if, replace_copy, replace_copy_if - -template -_STLP_INLINE_LOOP void -replace_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, const _Tp& __new_value) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) - if (__pred(*__first)) - *__first = __new_value; -} - -template -_STLP_INLINE_LOOP _OutputIter -replace_copy(_InputIter __first, _InputIter __last,_OutputIter __result, - const _Tp& __old_value, const _Tp& __new_value) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first, ++__result) - *__result = *__first == __old_value ? __new_value : *__first; - return __result; -} - -template -_STLP_INLINE_LOOP _OutputIter -replace_copy_if(_Iterator __first, _Iterator __last, - _OutputIter __result, - _Predicate __pred, const _Tp& __new_value) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first, ++__result) - *__result = __pred(*__first) ? __new_value : *__first; - return __result; -} - -// generate and generate_n - -template -_STLP_INLINE_LOOP void -generate(_ForwardIter __first, _ForwardIter __last, _Generator __gen) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) - *__first = __gen(); -} - -template -_STLP_INLINE_LOOP void -generate_n(_OutputIter __first, _Size __n, _Generator __gen) { - for ( ; __n > 0; --__n, ++__first) - *__first = __gen(); -} - -// remove, remove_if, remove_copy, remove_copy_if - -template -_STLP_INLINE_LOOP _OutputIter -remove_copy(_InputIter __first, _InputIter __last,_OutputIter __result, const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) { - if (!(*__first == __val)) { - *__result = *__first; - ++__result; - } - } - return __result; -} - -template -_STLP_INLINE_LOOP _OutputIter -remove_copy_if(_InputIter __first, _InputIter __last, _OutputIter __result, _Predicate __pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) { - if (!__pred(*__first)) { - *__result = *__first; - ++__result; - } - } - return __result; -} - -template -_STLP_INLINE_LOOP _ForwardIter -remove(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - __first = find(__first, __last, __val); - if (__first == __last) - return __first; - else { - _ForwardIter __next = __first; - return remove_copy(++__next, __last, __first, __val); - } -} - -template -_STLP_INLINE_LOOP _ForwardIter -remove_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - __first = find_if(__first, __last, __pred); - if ( __first == __last ) - return __first; - else { - _ForwardIter __next = __first; - return remove_copy_if(++__next, __last, __first, __pred); - } -} - -// unique and unique_copy -template -_OutputIter unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result); - -template -_OutputIter unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result, - _BinaryPredicate __binary_pred); - -template -inline _ForwardIter unique(_ForwardIter __first, _ForwardIter __last) { - __first = adjacent_find(__first, __last); - return unique_copy(__first, __last, __first); -} - -template -inline _ForwardIter unique(_ForwardIter __first, _ForwardIter __last, - _BinaryPredicate __binary_pred) { - __first = adjacent_find(__first, __last, __binary_pred); - return unique_copy(__first, __last, __first, __binary_pred); -} - -// reverse and reverse_copy, and their auxiliary functions - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP void -__reverse(_BidirectionalIter __first, _BidirectionalIter __last, const bidirectional_iterator_tag &) { - for (; __first != __last && __first != --__last; ++__first) - _STLP_STD::iter_swap(__first,__last); -} - -template -_STLP_INLINE_LOOP void -__reverse(_RandomAccessIter __first, _RandomAccessIter __last, const random_access_iterator_tag &) { - for (; __first < __last; ++__first) - _STLP_STD::iter_swap(__first, --__last); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline void -reverse(_BidirectionalIter __first, _BidirectionalIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_PRIV __reverse(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _BidirectionalIter)); -} - -template -_STLP_INLINE_LOOP -_OutputIter reverse_copy(_BidirectionalIter __first, - _BidirectionalIter __last, - _OutputIter __result) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - while (__first != __last) { - --__last; - *__result = *__last; - ++__result; - } - return __result; -} - -template -void rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last); - -template -inline _OutputIter rotate_copy(_ForwardIter __first, _ForwardIter __middle, - _ForwardIter __last, _OutputIter __result) { - return _STLP_STD::copy(__first, __middle, copy(__middle, __last, __result)); -} - -// random_shuffle - -template -void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last); - -template -void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last, - _RandomNumberGenerator& __rand); - -#if !defined (_STLP_NO_EXTENSIONS) -// random_sample and random_sample_n (extensions, not part of the standard). - -template -_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last, - _OutputIter __out_ite, const _Distance __n); - -template -_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last, - _OutputIter __out_ite, const _Distance __n, - _RandomNumberGenerator& __rand); - -template -_RandomAccessIter -random_sample(_InputIter __first, _InputIter __last, - _RandomAccessIter __out_first, _RandomAccessIter __out_last); - -template -_RandomAccessIter -random_sample(_InputIter __first, _InputIter __last, - _RandomAccessIter __out_first, _RandomAccessIter __out_last, - _RandomNumberGenerator& __rand); - -#endif /* _STLP_NO_EXTENSIONS */ - -// partition, stable_partition, and their auxiliary functions - -template -_ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred); - -template -_ForwardIter -stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred); - -// sort() and its auxiliary functions. -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline _Size __lg(_Size __n) { - _Size __k; - for (__k = 0; __n != 1; __n >>= 1) ++__k; - return __k; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -void sort(_RandomAccessIter __first, _RandomAccessIter __last); -template -void sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp); - -// stable_sort() and its auxiliary functions. -template -void stable_sort(_RandomAccessIter __first, - _RandomAccessIter __last); - -template -void stable_sort(_RandomAccessIter __first, - _RandomAccessIter __last, _Compare __comp); - -// partial_sort, partial_sort_copy, and auxiliary functions. - -template -void partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle, - _RandomAccessIter __last); - -template -void partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, - _RandomAccessIter __last, _Compare __comp); - -template -_RandomAccessIter -partial_sort_copy(_InputIter __first, _InputIter __last, - _RandomAccessIter __result_first, _RandomAccessIter __result_last); - -template -_RandomAccessIter -partial_sort_copy(_InputIter __first, _InputIter __last, - _RandomAccessIter __result_first, - _RandomAccessIter __result_last, _Compare __comp); - -// nth_element() and its auxiliary functions. -template -void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, - _RandomAccessIter __last); - -template -void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth, - _RandomAccessIter __last, _Compare __comp); - -// auxiliary class for lower_bound, etc. -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct __less_2 { - bool operator() (const _T1& __x, const _T2& __y) const { return __x < __y ; } -}; - -template -__less_2<_T1,_T2> __less2(_T1*, _T2* ) { return __less_2<_T1, _T2>(); } - -#if defined (_STLP_FUNCTION_PARTIAL_ORDER) -template -less<_Tp> __less2(_Tp*, _Tp* ) { return less<_Tp>(); } -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -// Binary search (lower_bound, upper_bound, equal_range, binary_search). -template -inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __lower_bound(__first, __last, __val, - _STLP_PRIV __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0), - _STLP_PRIV __less2((_Tp*)0, _STLP_VALUE_TYPE(__first, _ForwardIter)), - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); -} - -template -inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __lower_bound(__first, __last, __val, __comp, __comp, - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - _Compare1 __comp1, _Compare2 __comp2, _Distance*); - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __upper_bound(__first, __last, __val, - _STLP_PRIV __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0), - _STLP_PRIV __less2((_Tp*)0, _STLP_VALUE_TYPE(__first, _ForwardIter)), - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); -} - -template -inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val, _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __upper_bound(__first, __last, __val, __comp, __comp, - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -pair<_ForwardIter, _ForwardIter> -__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - _Compare1 __comp1, _Compare2 __comp2, _Distance*); - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline pair<_ForwardIter, _ForwardIter> -equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __equal_range(__first, __last, __val, - _STLP_PRIV __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0), - _STLP_PRIV __less2((_Tp*)0, _STLP_VALUE_TYPE(__first, _ForwardIter)), - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); -} - -template -inline pair<_ForwardIter, _ForwardIter> -equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __equal_range(__first, __last, __val, __comp, __comp, - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); -} - -template -inline bool binary_search(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _ForwardIter __i = _STLP_PRIV __lower_bound(__first, __last, __val, - _STLP_PRIV __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0), - _STLP_PRIV __less2((_Tp*)0, _STLP_VALUE_TYPE(__first, _ForwardIter)), - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); - return __i != __last && !(__val < *__i); -} - -template -inline bool binary_search(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val, - _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _ForwardIter __i = _STLP_PRIV __lower_bound(__first, __last, __val, __comp, __comp, - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); - return __i != __last && !__comp(__val, *__i); -} - -// merge, with and without an explicitly supplied comparison function. - -template -_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result); - -template -_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp); - - -// inplace_merge and its auxiliary functions. - - -template -void inplace_merge(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last) ; - -template -void inplace_merge(_BidirectionalIter __first, - _BidirectionalIter __middle, - _BidirectionalIter __last, _Compare __comp); - -// Set algorithms: includes, set_union, set_intersection, set_difference, -// set_symmetric_difference. All of these algorithms have the precondition -// that their input ranges are sorted and the postcondition that their output -// ranges are sorted. - -template -bool includes(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2); - -template -bool includes(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, _Compare __comp); - -template -_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result); - -template -_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp); - -template -_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result); - -template -_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp); - - - -template -_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result); - -template -_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, _Compare __comp); - -template -_OutputIter -set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result); - - -template -_OutputIter -set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _OutputIter __result, - _Compare __comp); - - -// min_element and max_element, with and without an explicitly supplied -// comparison function. - -template -_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last); -template -_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last, - _Compare __comp); - -template -_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last); - -template -_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last, - _Compare __comp); - -// next_permutation and prev_permutation, with and without an explicitly -// supplied comparison function. - -template -bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last); - -template -bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last, - _Compare __comp); - - -template -bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last); - - -template -bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last, - _Compare __comp); - -#if !defined (_STLP_NO_EXTENSIONS) -// is_heap, a predicate testing whether or not a range is -// a heap. This function is an extension, not part of the C++ -// standard. - -template -bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last); - -template -bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last, - _StrictWeakOrdering __comp); - -// is_sorted, a predicated testing whether a range is sorted in -// nondescending order. This is an extension, not part of the C++ -// standard. -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -bool __is_sorted(_ForwardIter __first, _ForwardIter __last, - _StrictWeakOrdering __comp); - -_STLP_MOVE_TO_STD_NAMESPACE -template -inline bool is_sorted(_ForwardIter __first, _ForwardIter __last) { - return _STLP_PRIV __is_sorted(__first, __last, - _STLP_PRIV __less(_STLP_VALUE_TYPE(__first, _ForwardIter))); -} - -template -inline bool is_sorted(_ForwardIter __first, _ForwardIter __last, - _StrictWeakOrdering __comp) { - return _STLP_PRIV __is_sorted(__first, __last, __comp); -} -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_ALGO_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_algobase.c b/build/stlport/stlport/stl/_algobase.c deleted file mode 100644 index 157e25c5c42e..000000000000 --- a/build/stlport/stlport/stl/_algobase.c +++ /dev/null @@ -1,483 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_ALGOBASE_C -#define _STLP_ALGOBASE_C - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - for ( ; __first1 != __last1 && __first2 != __last2 - ; ++__first1, ++__first2) { - if (*__first1 < *__first2) { - _STLP_VERBOSE_ASSERT(!(*__first2 < *__first1), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return true; - } - if (*__first2 < *__first1) - return false; - } - return __first1 == __last1 && __first2 != __last2; -} - -template -bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _Compare __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - for ( ; __first1 != __last1 && __first2 != __last2 - ; ++__first1, ++__first2) { - if (__comp(*__first1, *__first2)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first2, *__first1), - _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return true; - } - if (__comp(*__first2, *__first1)) - return false; - } - return __first1 == __last1 && __first2 != __last2; -} - -#if !defined (_STLP_NO_EXTENSIONS) -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -int __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2) { - while (__first1 != __last1 && __first2 != __last2) { - if (*__first1 < *__first2) { - _STLP_VERBOSE_ASSERT(!(*__first2 < *__first1), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - return -1; - } - if (*__first2 < *__first1) - return 1; - ++__first1; - ++__first2; - } - if (__first2 == __last2) { - return !(__first1 == __last1); - } - else { - return -1; - } -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -int lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - return _STLP_PRIV __lexicographical_compare_3way(__first1, __last1, __first2, __last2); -} -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP _RandomAccessIter __find(_RandomAccessIter __first, _RandomAccessIter __last, - const _Tp& __val, - const random_access_iterator_tag &) { - _STLP_DIFFERENCE_TYPE(_RandomAccessIter) __trip_count = (__last - __first) >> 2; - - for ( ; __trip_count > 0 ; --__trip_count) { - if (*__first == __val) return __first; - ++__first; - - if (*__first == __val) return __first; - ++__first; - - if (*__first == __val) return __first; - ++__first; - - if (*__first == __val) return __first; - ++__first; - } - - switch (__last - __first) { - case 3: - if (*__first == __val) return __first; - ++__first; - case 2: - if (*__first == __val) return __first; - ++__first; - case 1: - if (*__first == __val) return __first; - //++__first; - case 0: - default: - return __last; - } -} - -inline char* -__find(char* __first, char* __last, char __val, const random_access_iterator_tag &) { - void *res = memchr(__first, __val, __last - __first); - return res != 0 ? __STATIC_CAST(char*, res) : __last; -} -inline const char* -__find(const char* __first, const char* __last, char __val, const random_access_iterator_tag &) { - const void *res = memchr(__first, __val, __last - __first); - return res != 0 ? __STATIC_CAST(const char*, res) : __last; -} - -template -_STLP_INLINE_LOOP _RandomAccessIter __find_if(_RandomAccessIter __first, _RandomAccessIter __last, - _Predicate __pred, - const random_access_iterator_tag &) { - _STLP_DIFFERENCE_TYPE(_RandomAccessIter) __trip_count = (__last - __first) >> 2; - - for ( ; __trip_count > 0 ; --__trip_count) { - if (__pred(*__first)) return __first; - ++__first; - - if (__pred(*__first)) return __first; - ++__first; - - if (__pred(*__first)) return __first; - ++__first; - - if (__pred(*__first)) return __first; - ++__first; - } - - switch(__last - __first) { - case 3: - if (__pred(*__first)) return __first; - ++__first; - case 2: - if (__pred(*__first)) return __first; - ++__first; - case 1: - if (__pred(*__first)) return __first; - //++__first; - case 0: - default: - return __last; - } -} - -template -_STLP_INLINE_LOOP _InputIter __find(_InputIter __first, _InputIter __last, - const _Tp& __val, - const input_iterator_tag &) { - while (__first != __last && !(*__first == __val)) ++__first; - return __first; -} - -template -_STLP_INLINE_LOOP _InputIter __find_if(_InputIter __first, _InputIter __last, - _Predicate __pred, - const input_iterator_tag &) { - while (__first != __last && !__pred(*__first)) - ++__first; - return __first; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_InputIter find_if(_InputIter __first, _InputIter __last, - _Predicate __pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __find_if(__first, __last, __pred, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); -} - -template -_InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __find(__first, __last, __val, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); -} - -template -_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2, - _BinaryPred __pred) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - // Test for empty ranges - if (__first1 == __last1 || __first2 == __last2) - return __first1; - - // Test for a pattern of length 1. - _ForwardIter2 __p1(__first2); - - if ( ++__p1 == __last2 ) { - while (__first1 != __last1 && !__pred(*__first1, *__first2)) { - ++__first1; - } - return __first1; - } - - // General case. - - for ( ; ; ) { // __first1 != __last1 will be checked below - while (__first1 != __last1 && !__pred(*__first1, *__first2)) { - ++__first1; - } - if (__first1 == __last1) { - return __last1; - } - _ForwardIter2 __p = __p1; - _ForwardIter1 __current = __first1; - if (++__current == __last1) return __last1; - - while (__pred(*__current, *__p)) { - if (++__p == __last2) - return __first1; - if (++__current == __last1) - return __last1; - } - ++__first1; - } - return __first1; -} - -_STLP_MOVE_TO_PRIV_NAMESPACE -template -struct _IsCharLikeType -{ typedef __false_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsCharLikeType -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsCharLikeType -{ typedef __true_type _Ret; }; - -# ifndef _STLP_NO_SIGNED_BUILTINS -_STLP_TEMPLATE_NULL struct _IsCharLikeType -{ typedef __true_type _Ret; }; -# endif - -template -inline bool __stlp_eq(_Tp1 __val1, _Tp2 __val2) -{ return __val1 == __val2; } - -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -template -inline bool __stlp_eq(_Tp, _Tp) -{ return true; } -#endif - -template -inline _InputIter __find_first_of_aux2(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2, - _Tp2*, _Predicate __pred, - const __true_type& /* _UseStrcspnLikeAlgo */) { - unsigned char __hints[(UCHAR_MAX + 1) / CHAR_BIT]; - memset(__hints, 0, sizeof(__hints) / sizeof(unsigned char)); - for (; __first2 != __last2; ++__first2) { - unsigned char __tmp = (unsigned char)*__first2; - __hints[__tmp / CHAR_BIT] |= (1 << (__tmp % CHAR_BIT)); - } - - for (; __first1 != __last1; ++__first1) { - _Tp2 __tmp = (_Tp2)*__first1; - if (__stlp_eq(*__first1, __tmp) && - __pred((__hints[(unsigned char)__tmp / CHAR_BIT] & (1 << ((unsigned char)__tmp % CHAR_BIT))) != 0)) - break; - } - return __first1; -} - -template -inline _InputIter __find_first_of_aux2(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2, - _Tp2* /* __dummy */, _Predicate /* __pred */, - const __false_type& /* _UseStrcspnLikeAlgo */) { - return _STLP_PRIV __find_first_of(__first1, __last1, __first2, __last2, - _STLP_PRIV __equal_to(_STLP_VALUE_TYPE(__first1, _InputIter))); -} - -template -inline _InputIter __find_first_of_aux1(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2, - _Tp1* __pt1, _Tp2* __pt2) { - typedef _STLP_TYPENAME _STLP_STD::_IsIntegral<_Tp1>::_Ret _IsIntegral; - typedef _STLP_TYPENAME _STLP_PRIV _IsCharLikeType<_Tp2>::_Ret _IsCharLike; - typedef _STLP_TYPENAME _STLP_STD::_Land2<_IsIntegral, _IsCharLike>::_Ret _UseStrcspnLikeAlgo; - return _STLP_PRIV __find_first_of_aux2(__first1, __last1, - __first2, __last2, - __pt2, _Identity(), _UseStrcspnLikeAlgo()); -} - -template -inline _InputIter __find_first_of(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2) { - return _STLP_PRIV __find_first_of_aux1(__first1, __last1, __first2, __last2, - _STLP_VALUE_TYPE(__first1, _InputIter), - _STLP_VALUE_TYPE(__first2, _ForwardIter)); -} - -// find_first_of, with and without an explicitly supplied comparison function. -template -_InputIter __find_first_of(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2, - _BinaryPredicate __comp) { - for ( ; __first1 != __last1; ++__first1) { - for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter) { - if (__comp(*__first1, *__iter)) { - return __first1; - } - } - } - return __last1; -} - -// find_end, with and without an explicitly supplied comparison function. -// Search [first2, last2) as a subsequence in [first1, last1), and return -// the *last* possible match. Note that find_end for bidirectional iterators -// is much faster than for forward iterators. - -// find_end for forward iterators. -template -_ForwardIter1 __find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2, - const forward_iterator_tag &, const forward_iterator_tag &, - _BinaryPredicate __comp) { - if (__first2 == __last2) - return __last1; - else { - _ForwardIter1 __result = __last1; - for (;;) { - _ForwardIter1 __new_result = _STLP_STD::search(__first1, __last1, __first2, __last2, __comp); - if (__new_result == __last1) - return __result; - else { - __result = __new_result; - __first1 = __new_result; - ++__first1; - } - } - } -} - -_STLP_MOVE_TO_STD_NAMESPACE - -// find_end for bidirectional iterators. Requires partial specialization. -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) - -# ifndef _STLP_INTERNAL_ITERATOR_H -_STLP_END_NAMESPACE -# include -_STLP_BEGIN_NAMESPACE -# endif /*_STLP_INTERNAL_ITERATOR_H*/ - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_BidirectionalIter1 -__find_end(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1, - _BidirectionalIter2 __first2, _BidirectionalIter2 __last2, - const bidirectional_iterator_tag &, const bidirectional_iterator_tag &, - _BinaryPredicate __comp) { - typedef _STLP_STD::reverse_iterator<_BidirectionalIter1> _RevIter1; - typedef _STLP_STD::reverse_iterator<_BidirectionalIter2> _RevIter2; - - _RevIter1 __rlast1(__first1); - _RevIter2 __rlast2(__first2); - _RevIter1 __rresult = _STLP_STD::search(_RevIter1(__last1), __rlast1, - _RevIter2(__last2), __rlast2, - __comp); - - if (__rresult == __rlast1) - return __last1; - else { - _BidirectionalIter1 __result = __rresult.base(); - _STLP_STD::advance(__result, -_STLP_STD::distance(__first2, __last2)); - return __result; - } -} - -_STLP_MOVE_TO_STD_NAMESPACE -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -template -_ForwardIter1 -find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2, - _BinaryPredicate __comp) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - return _STLP_PRIV __find_end(__first1, __last1, __first2, __last2, -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) - _STLP_ITERATOR_CATEGORY(__first1, _ForwardIter1), - _STLP_ITERATOR_CATEGORY(__first2, _ForwardIter2), -#else - forward_iterator_tag(), - forward_iterator_tag(), -#endif - __comp); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - _Compare1 __comp1, _Compare2 __comp2, _Distance*) { - _Distance __len = _STLP_STD::distance(__first, __last); - _Distance __half; - _ForwardIter __middle; - - while (__len > 0) { - __half = __len >> 1; - __middle = __first; - _STLP_STD::advance(__middle, __half); - if (__comp1(*__middle, __val)) { - _STLP_VERBOSE_ASSERT(!__comp2(__val, *__middle), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __first = __middle; - ++__first; - __len = __len - __half - 1; - } - else - __len = __half; - } - return __first; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_ALGOBASE_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_algobase.h b/build/stlport/stlport/stl/_algobase.h deleted file mode 100644 index 597dcbea3ccf..000000000000 --- a/build/stlport/stlport/stl/_algobase.h +++ /dev/null @@ -1,728 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_ALGOBASE_H -#define _STLP_INTERNAL_ALGOBASE_H - -#ifndef _STLP_INTERNAL_CSTDDEF -# include -#endif - -#ifndef _STLP_INTERNAL_CSTRING -# include -#endif - -#ifndef _STLP_CLIMITS -# include -#endif - -#ifndef _STLP_INTERNAL_CSTDLIB -# include -#endif - -#ifndef _STLP_INTERNAL_PAIR_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -#ifndef _STLP_TYPE_TRAITS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -_STLP_MOVE_TO_PRIV_NAMESPACE -template -inline void __swap_aux(_Tp& __a, _Tp& __b, const __true_type& /*SwapImplemented*/) { - __a._M_swap_workaround(__b); -} - -template -inline void __swap_aux(_Tp& __a, _Tp& __b, const __false_type& /*SwapImplemented*/) { - _Tp __tmp = __a; - __a = __b; - __b = __tmp; -} -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -// swap and iter_swap -template -inline void swap(_Tp& __a, _Tp& __b) { -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -# if !defined(__BORLANDC__) - typedef typename _SwapImplemented<_Tp>::_Ret _Implemented; -# else - enum { _Is = _SwapImplemented<_Tp>::_Is }; - typedef typename __bool2type<_Is>::_Ret _Implemented; -# endif - _STLP_PRIV __swap_aux(__a, __b, _Implemented()); -#else - _Tp __tmp = __a; - __a = __b; - __b = __tmp; -#endif -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline void __iter_swap_aux_aux(_ForwardIter1& __i1, _ForwardIter2& __i2, _Value *) { - _Value tmp = *__i1; - *__i1 = *__i2; - *__i2 = tmp; -} - -template -inline void __iter_swap_aux(_ForwardIter1& __i1, _ForwardIter2& __i2, const __true_type& /*OKToSwap*/) { - /* namespace specification breaks access to the right swap template overload (at least for gcc) */ - /*_STLP_STD::*/ swap(*__i1, *__i2); -} - -template -inline void __iter_swap_aux(_ForwardIter1& __i1, _ForwardIter2& __i2, const __false_type& /*OKToSwap*/) { - _STLP_PRIV __iter_swap_aux_aux( __i1, __i2, _STLP_VALUE_TYPE(__i1,_ForwardIter1) ); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline void iter_swap(_ForwardIter1 __i1, _ForwardIter2 __i2) { - _STLP_PRIV __iter_swap_aux( __i1, __i2, _IsOKToSwap(_STLP_VALUE_TYPE(__i1, _ForwardIter1), _STLP_VALUE_TYPE(__i2, _ForwardIter2), - _STLP_IS_REF_TYPE_REAL_REF(__i1, _ForwardIter1), - _STLP_IS_REF_TYPE_REAL_REF(__i2, _ForwardIter2))._Answer()); -} - -//-------------------------------------------------- -// min and max - -#if !defined (__BORLANDC__) || defined (_STLP_USE_OWN_NAMESPACE) -# if (defined (__BORLANDC__) && (__BORLANDC__ < 0x580)) && !defined (__STDC__) -//In not ANSI mode Borland import min/max in global namespace which conflict -//with STLport min/max when user does a 'using namespace std' in its code -//(see test/unit/alg_test.cpp). To avoid this clash we simply import Borland min/max -//in STLport namespace. -using _STLP_VENDOR_STD::min; -using _STLP_VENDOR_STD::max; -# else -template -inline const _Tp& (min)(const _Tp& __a, const _Tp& __b) { return __b < __a ? __b : __a; } -template -inline const _Tp& (max)(const _Tp& __a, const _Tp& __b) { return __a < __b ? __b : __a; } -# endif -#endif - -# if defined (__BORLANDC__) && defined (_STLP_USE_OWN_NAMESPACE) -inline unsigned long (min) (unsigned long __a, unsigned long __b) { return __b < __a ? __b : __a; } -inline unsigned long (max) (unsigned long __a, unsigned long __b) { return __a < __b ? __b : __a; } -# endif - -# if !defined (__BORLANDC__) || (__BORLANDC__ < 0x590) -template -inline const _Tp& (min)(const _Tp& __a, const _Tp& __b, _Compare __comp) { - return __comp(__b, __a) ? __b : __a; -} - -template -inline const _Tp& (max)(const _Tp& __a, const _Tp& __b, _Compare __comp) { - return __comp(__a, __b) ? __b : __a; -} -# else -template -inline const _Tp (min)(const _Tp __a, const _Tp __b, _Compare __comp) { - return __comp(__b, __a) ? __b : __a; -} - -template -inline const _Tp (max)(const _Tp __a, const _Tp __b, _Compare __comp) { - return __comp(__a, __b) ? __b : __a; -} -# endif - -//-------------------------------------------------- -// copy - -// All of these auxiliary functions serve two purposes. (1) Replace -// calls to copy with memmove whenever possible. (Memmove, not memcpy, -// because the input and output ranges are permitted to overlap.) -// (2) If we're using random access iterators, then write the loop as -// a for loop with an explicit count. - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline _OutputIter __copy(_InputIter __first, _InputIter __last, - _OutputIter __result, const input_iterator_tag &, _Distance*) { - for ( ; __first != __last; ++__result, ++__first) - *__result = *__first; - return __result; -} - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline _OutputIter __copy(_InputIter __first, _InputIter __last, - _OutputIter __result, const forward_iterator_tag &, _Distance* ) { - for ( ; __first != __last; ++__result, ++__first) - *__result = *__first; - return __result; -} - -template -inline _OutputIter __copy(_InputIter __first, _InputIter __last, - _OutputIter __result, const bidirectional_iterator_tag &, _Distance* ) { - for ( ; __first != __last; ++__result, ++__first) - *__result = *__first; - return __result; -} -#endif - -template -inline _OutputIter -__copy(_RandomAccessIter __first, _RandomAccessIter __last, - _OutputIter __result, const random_access_iterator_tag &, _Distance*) { - for (_Distance __n = __last - __first; __n > 0; --__n) { - *__result = *__first; - ++__first; - ++__result; - } - return __result; -} - -inline void* -__copy_trivial(const void* __first, const void* __last, void* __result) { - size_t __n = (const char*)__last - (const char*)__first; - return __n ? (void *)((char*)memmove(__result, __first, __n) + __n) : __result; -} - -//-------------------------------------------------- -// copy_backward auxiliary functions - -template -inline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first, - _BidirectionalIter1 __last, - _BidirectionalIter2 __result, - const bidirectional_iterator_tag &, - _Distance*) { - while (__first != __last) - *--__result = *--__last; - return __result; -} - -template -inline _BidirectionalIter __copy_backward(_RandomAccessIter __first, - _RandomAccessIter __last, - _BidirectionalIter __result, - const random_access_iterator_tag &, - _Distance*) { - for (_Distance __n = __last - __first; __n > 0; --__n) - *--__result = *--__last; - return __result; -} - -inline void* -__copy_trivial_backward(const void* __first, const void* __last, void* __result) { - const ptrdiff_t _Num = (const char*)__last - (const char*)__first; - return (_Num > 0) ? memmove((char*)__result - _Num, __first, _Num) : __result ; -} - -template -inline _OutputIter __copy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, - const __false_type& /*IsOKToMemCpy*/) { - return _STLP_PRIV __copy(__first, __last, __result, random_access_iterator_tag(), (ptrdiff_t*)0); -} -template -inline _OutputIter __copy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, - const __true_type& /*IsOKToMemCpy*/) { - // we know they all pointers, so this cast is OK - // return (_OutputIter)__copy_trivial(&(*__first), &(*__last), &(*__result)); - return (_OutputIter)_STLP_PRIV __copy_trivial(__first, __last, __result); -} - -template -inline _OutputIter __copy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, - const __true_type& /*BothPtrType*/) { - return _STLP_PRIV __copy_ptrs(__first, __last, __result, - _UseTrivialCopy(_STLP_VALUE_TYPE(__first, _InputIter), - _STLP_VALUE_TYPE(__result, _OutputIter))._Answer()); -} - -template -inline _OutputIter __copy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, - const __false_type& /*BothPtrType*/) { - return _STLP_PRIV __copy(__first, __last, __result, - _STLP_ITERATOR_CATEGORY(__first, _InputIter), - _STLP_DISTANCE_TYPE(__first, _InputIter)); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline _OutputIter copy(_InputIter __first, _InputIter __last, _OutputIter __result) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __copy_aux(__first, __last, __result, _BothPtrType< _InputIter, _OutputIter>::_Answer()); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline _OutputIter __copy_backward_ptrs(_InputIter __first, _InputIter __last, - _OutputIter __result, const __false_type& /*TrivialAssignment*/) { - return _STLP_PRIV __copy_backward(__first, __last, __result, - _STLP_ITERATOR_CATEGORY(__first, _InputIter), - _STLP_DISTANCE_TYPE(__first, _InputIter)); -} -template -inline _OutputIter __copy_backward_ptrs(_InputIter __first, _InputIter __last, - _OutputIter __result, const __true_type& /*TrivialAssignment*/) { - return (_OutputIter)_STLP_PRIV __copy_trivial_backward(__first, __last, __result); -} - -template -inline _OutputIter __copy_backward_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) { - return _STLP_PRIV __copy_backward(__first, __last, __result, - _STLP_ITERATOR_CATEGORY(__first,_InputIter), - _STLP_DISTANCE_TYPE(__first, _InputIter)); -} - -template -inline _OutputIter __copy_backward_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) { - return _STLP_PRIV __copy_backward_ptrs(__first, __last, __result, - _UseTrivialCopy(_STLP_VALUE_TYPE(__first, _InputIter), - _STLP_VALUE_TYPE(__result, _OutputIter))._Answer()); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline _OutputIter copy_backward(_InputIter __first, _InputIter __last, _OutputIter __result) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - return _STLP_PRIV __copy_backward_aux(__first, __last, __result, _BothPtrType< _InputIter, _OutputIter>::_Answer() ); -} - -#if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) -# define _STLP_DECLARE_COPY_TRIVIAL(_Tp) \ -inline _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) \ -{ return (_Tp*)_STLP_PRIV __copy_trivial(__first, __last, __result); } \ -inline _Tp* copy_backward(const _Tp* __first, const _Tp* __last, _Tp* __result) \ -{ return (_Tp*)_STLP_PRIV __copy_trivial_backward(__first, __last, __result); } - -# if !defined (_STLP_NO_BOOL) -_STLP_DECLARE_COPY_TRIVIAL(bool) -# endif -_STLP_DECLARE_COPY_TRIVIAL(char) -# if !defined (_STLP_NO_SIGNED_BUILTINS) -_STLP_DECLARE_COPY_TRIVIAL(signed char) -# endif -_STLP_DECLARE_COPY_TRIVIAL(unsigned char) -_STLP_DECLARE_COPY_TRIVIAL(short) -_STLP_DECLARE_COPY_TRIVIAL(unsigned short) -_STLP_DECLARE_COPY_TRIVIAL(int) -_STLP_DECLARE_COPY_TRIVIAL(unsigned int) -_STLP_DECLARE_COPY_TRIVIAL(long) -_STLP_DECLARE_COPY_TRIVIAL(unsigned long) -# if !defined(_STLP_NO_WCHAR_T) && !defined (_STLP_WCHAR_T_IS_USHORT) -_STLP_DECLARE_COPY_TRIVIAL(wchar_t) -# endif -# if defined (_STLP_LONG_LONG) -_STLP_DECLARE_COPY_TRIVIAL(_STLP_LONG_LONG) -_STLP_DECLARE_COPY_TRIVIAL(unsigned _STLP_LONG_LONG) -# endif -_STLP_DECLARE_COPY_TRIVIAL(float) -_STLP_DECLARE_COPY_TRIVIAL(double) -# if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLARE_COPY_TRIVIAL(long double) -# endif -# undef _STLP_DECLARE_COPY_TRIVIAL -#endif - -//-------------------------------------------------- -// copy_n (not part of the C++ standard) - -#if !defined (_STLP_NO_EXTENSIONS) -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP _STLP_STD::pair<_InputIter, _OutputIter> -__copy_n(_InputIter __first, _Size __count, _OutputIter __result, - const input_iterator_tag &) { - for ( ; __count > 0; --__count) { - *__result = *__first; - ++__first; - ++__result; - } - return _STLP_STD::pair<_InputIter, _OutputIter>(__first, __result); -} - -template -inline _STLP_STD::pair<_RAIter, _OutputIter> -__copy_n(_RAIter __first, _Size __count, _OutputIter __result, - const random_access_iterator_tag &) { - _RAIter __last = __first + __count; - return _STLP_STD::pair<_RAIter, _OutputIter>(__last, _STLP_STD::copy(__first, __last, __result)); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline pair<_InputIter, _OutputIter> -copy_n(_InputIter __first, _Size __count, _OutputIter __result) { - _STLP_FIX_LITERAL_BUG(__first) - return _STLP_PRIV __copy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); -} -#endif - -//-------------------------------------------------- -// fill and fill_n -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP -void __fill_fwd(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { - for ( ; __first != __last; ++__first) - *__first = __val; -} - -template -inline void __fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - const input_iterator_tag &, _Distance*) { - _STLP_PRIV __fill_fwd(__first, __last, __val); -} - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -_STLP_INLINE_LOOP -void __fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - const forward_iterator_tag &, _Distance*) { - _STLP_PRIV __fill_fwd(__first, __last, __val); -} - -template -_STLP_INLINE_LOOP -void __fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val, - const bidirectional_iterator_tag &, _Distance*) { - _STLP_PRIV __fill_fwd(__first, __last, __val); -} -#endif - -template -_STLP_INLINE_LOOP -void __fill(_RandomAccessIter __first, _RandomAccessIter __last, const _Tp& __val, - const random_access_iterator_tag &, _Distance*) { - for (_Distance __n = __last - __first ; __n > 0; ++__first, --__n) - *__first = __val; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_PRIV __fill(__first, __last, __val, - _STLP_ITERATOR_CATEGORY(__first, _ForwardIter), - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); -} - -// Specialization: for one-byte types we can use memset. -inline void fill(unsigned char* __first, unsigned char* __last, - const unsigned char& __val) { - unsigned char __tmp = __val; - memset(__first, __tmp, __last - __first); -} -#if !defined (_STLP_NO_SIGNED_BUILTINS) -inline void fill(signed char* __first, signed char* __last, - const signed char& __val) { - signed char __tmp = __val; - memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first); -} -#endif -inline void fill(char* __first, char* __last, const char& __val) { - char __tmp = __val; - memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP -_OutputIter __fill_n(_OutputIter __first, _Size __n, const _Tp& __val) { - _STLP_FIX_LITERAL_BUG(__first) - for ( ; __n > 0; --__n, ++__first) - *__first = __val; - return __first; -} - -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -template -inline unsigned char* __fill_n(unsigned char* __first, _Size __n, - const unsigned char& __val) { - _STLP_STD::fill(__first, __first + __n, __val); - return __first + __n; -} -#if !defined (_STLP_NO_SIGNED_BUILTINS) -template -inline signed char* __fill_n(signed char* __first, _Size __n, - const signed char& __val) { - _STLP_STD::fill(__first, __first + __n, __val); - return __first + __n; -} -#endif -template -inline char* __fill_n(char* __first, _Size __n, - const char& __val) { - _STLP_STD::fill(__first, __first + __n, __val); - return __first + __n; -} -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline void fill_n(_OutputIter __first, _Size __n, const _Tp& __val) { - _STLP_FIX_LITERAL_BUG(__first) - _STLP_PRIV __fill_n(__first, __n, __val); -} - - -//-------------------------------------------------- -// equal and mismatch - -template -_STLP_INLINE_LOOP -_STLP_STD::pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1, - _InputIter1 __last1, - _InputIter2 __first2) { - _STLP_FIX_LITERAL_BUG(__first2) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - while (__first1 != __last1 && *__first1 == *__first2) { - ++__first1; - ++__first2; - } - return _STLP_STD::pair<_InputIter1, _InputIter2>(__first1, __first2); -} - -template -_STLP_INLINE_LOOP -_STLP_STD::pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1, - _InputIter1 __last1, - _InputIter2 __first2, - _BinaryPredicate __binary_pred) { - _STLP_FIX_LITERAL_BUG(__first2) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) { - ++__first1; - ++__first2; - } - return _STLP_STD::pair<_InputIter1, _InputIter2>(__first1, __first2); -} - -template -_STLP_INLINE_LOOP -bool equal(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2) { - _STLP_FIX_LITERAL_BUG(__first1) _STLP_FIX_LITERAL_BUG(__last1) _STLP_FIX_LITERAL_BUG(__first2) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - for ( ; __first1 != __last1; ++__first1, ++__first2) - if (!(*__first1 == *__first2)) - return false; - return true; -} - -template -_STLP_INLINE_LOOP -bool equal(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _BinaryPredicate __binary_pred) { - _STLP_FIX_LITERAL_BUG(__first2) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - for ( ; __first1 != __last1; ++__first1, ++__first2) - if (!__binary_pred(*__first1, *__first2)) - return false; - return true; -} - -//-------------------------------------------------- -// lexicographical_compare and lexicographical_compare_3way. -// (the latter is not part of the C++ standard.) - -template -bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2); - -template -bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _Compare __comp); - -inline bool -lexicographical_compare(const unsigned char* __first1, - const unsigned char* __last1, - const unsigned char* __first2, - const unsigned char* __last2) { - const size_t __len1 = __last1 - __first1; - const size_t __len2 = __last2 - __first2; - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - - const int __result = memcmp(__first1, __first2, (min) (__len1, __len2)); - return __result != 0 ? (__result < 0) : (__len1 < __len2); -} - - -#if !(CHAR_MAX == SCHAR_MAX) -inline bool lexicographical_compare(const char* __first1, const char* __last1, - const char* __first2, const char* __last2) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first2, __last2)) - - return lexicographical_compare((const unsigned char*) __first1, - (const unsigned char*) __last1, - (const unsigned char*) __first2, - (const unsigned char*) __last2); -} -#endif /* CHAR_MAX == SCHAR_MAX */ - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -int __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2); - -inline int -__lexicographical_compare_3way(const unsigned char* __first1, - const unsigned char* __last1, - const unsigned char* __first2, - const unsigned char* __last2) { - const ptrdiff_t __len1 = __last1 - __first1; - const ptrdiff_t __len2 = __last2 - __first2; - const int __result = memcmp(__first1, __first2, (min) (__len1, __len2)); - return __result != 0 ? __result - : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1)); -} - - -#if !(CHAR_MAX == SCHAR_MAX) -inline int -__lexicographical_compare_3way(const char* __first1, const char* __last1, - const char* __first2, const char* __last2) { - return __lexicographical_compare_3way((const unsigned char*) __first1, - (const unsigned char*) __last1, - (const unsigned char*) __first2, - (const unsigned char*) __last2); -} -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -#if !defined (_STLP_NO_EXTENSIONS) -template -int lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2); - -#endif - -// count -template -_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_InputIter) -count(_InputIter __first, _InputIter __last, const _Tp& __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_DIFFERENCE_TYPE(_InputIter) __n = 0; - for ( ; __first != __last; ++__first) - if (*__first == __val) - ++__n; - return __n; -} - -// find and find_if. Note find may be expressed in terms of find_if if appropriate binder was available. -template -_InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val); - -template -_InputIter find_if(_InputIter __first, _InputIter __last, _Predicate __pred); - -// search. -template -_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2, _BinaryPred __predicate); - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// find_first_of -template -_InputIter __find_first_of(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2); - -template -_InputIter __find_first_of(_InputIter __first1, _InputIter __last1, - _ForwardIter __first2, _ForwardIter __last2, - _BinaryPredicate __comp); - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_ForwardIter1 -find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, - _ForwardIter2 __first2, _ForwardIter2 __last2, - _BinaryPredicate __comp); - -// replace -template -_STLP_INLINE_LOOP void -replace(_ForwardIter __first, _ForwardIter __last, - const _Tp& __old_value, const _Tp& __new_value) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) - if (*__first == __old_value) - *__first = __new_value; -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last, - const _Tp& __val, _Compare1 __comp1, _Compare2 __comp2, _Distance*); - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_ALGOBASE_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_alloc.c b/build/stlport/stlport/stl/_alloc.c deleted file mode 100644 index 467405b4b80d..000000000000 --- a/build/stlport/stlport/stl/_alloc.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_ALLOC_C -#define _STLP_ALLOC_C - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#if defined (__WATCOMC__) -# pragma warning 13 9 -# pragma warning 367 9 -# pragma warning 368 9 -#endif - -_STLP_BEGIN_NAMESPACE - -template -void * _STLP_CALL __debug_alloc<_Alloc>::allocate(size_t __n) { - size_t __total_extra = __extra_before_chunk() + __extra_after_chunk(); - size_t __real_n = __n + __total_extra; - if (__real_n < __n) { - //It means that we rolled on size_t, __n must be very large: - _STLP_THROW_BAD_ALLOC; - } - __alloc_header *__result = (__alloc_header *)__allocator_type::allocate(__real_n); - memset((char*)__result, __shred_byte, __real_n * sizeof(value_type)); - __result->__magic = __magic; - __result->__type_size = sizeof(value_type); - __result->_M_size = (_STLP_UINT32_T)__n; - return ((char*)__result) + (long)__extra_before; -} - -template -void _STLP_CALL -__debug_alloc<_Alloc>::deallocate(void *__p, size_t __n) { - __alloc_header * __real_p = (__alloc_header*)((char *)__p -(long)__extra_before); - // check integrity - _STLP_VERBOSE_ASSERT(__real_p->__magic != __deleted_magic, _StlMsg_DBA_DELETED_TWICE) - _STLP_VERBOSE_ASSERT(__real_p->__magic == __magic, _StlMsg_DBA_NEVER_ALLOCATED) - _STLP_VERBOSE_ASSERT(__real_p->__type_size == 1,_StlMsg_DBA_TYPE_MISMATCH) - _STLP_VERBOSE_ASSERT(__real_p->_M_size == __n, _StlMsg_DBA_SIZE_MISMATCH) - // check pads on both sides - unsigned char* __tmp; - for (__tmp = (unsigned char*)(__real_p + 1); __tmp < (unsigned char*)__p; ++__tmp) { - _STLP_VERBOSE_ASSERT(*__tmp == __shred_byte, _StlMsg_DBA_UNDERRUN) - } - - size_t __real_n = __n + __extra_before_chunk() + __extra_after_chunk(); - - for (__tmp= ((unsigned char*)__p) + __n * sizeof(value_type); - __tmp < ((unsigned char*)__real_p) + __real_n ; ++__tmp) { - _STLP_VERBOSE_ASSERT(*__tmp == __shred_byte, _StlMsg_DBA_OVERRUN) - } - - // that may be unfortunate, just in case - __real_p->__magic = __deleted_magic; - memset((char*)__p, __shred_byte, __n * sizeof(value_type)); - __allocator_type::deallocate(__real_p, __real_n); -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_ALLOC_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_alloc.h b/build/stlport/stlport/stl/_alloc.h deleted file mode 100644 index 09b8af518c16..000000000000 --- a/build/stlport/stlport/stl/_alloc.h +++ /dev/null @@ -1,580 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_ALLOC_H -#define _STLP_INTERNAL_ALLOC_H - -#ifndef _STLP_INTERNAL_CSTDDEF -# include -#endif - -#ifndef _STLP_INTERNAL_CSTDLIB -# include -#endif - -#ifndef _STLP_INTERNAL_CSTRING -# include -#endif - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_NEW_HEADER -# include -#endif - -#ifndef _STLP_INTERNAL_CONSTRUCT_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// Malloc-based allocator. Typically slower than default alloc below. -// Typically thread-safe and more storage efficient. - -#if !defined (_STLP_USE_NO_IOSTREAMS) -typedef void (* __oom_handler_type)(); -#endif - -class _STLP_CLASS_DECLSPEC __malloc_alloc { -public: - // this one is needed for proper simple_alloc wrapping - typedef char value_type; - static void* _STLP_CALL allocate(size_t __n) -#if !defined (_STLP_USE_NO_IOSTREAMS) - ; -#else - { - void *__result = malloc(__n); - if (__result == 0) { - _STLP_THROW_BAD_ALLOC; - } - return __result; - } -#endif - - static void _STLP_CALL deallocate(void* __p, size_t /* __n */) { free((char*)__p); } -#if !defined (_STLP_USE_NO_IOSTREAMS) - static __oom_handler_type _STLP_CALL set_malloc_handler(__oom_handler_type __f); -#endif -}; - -// New-based allocator. Typically slower than default alloc below. -// Typically thread-safe and more storage efficient. -class _STLP_CLASS_DECLSPEC __new_alloc { -public: - // this one is needed for proper simple_alloc wrapping - typedef char value_type; - static void* _STLP_CALL allocate(size_t __n) { return __stl_new(__n); } - static void _STLP_CALL deallocate(void* __p, size_t) { __stl_delete(__p); } -}; - -// Allocator adaptor to check size arguments for debugging. -// Reports errors using assert. Checking can be disabled with -// NDEBUG, but it's far better to just use the underlying allocator -// instead when no checking is desired. -// There is some evidence that this can confuse Purify. -// This adaptor can only be applied to raw allocators - -template -class __debug_alloc : public _Alloc { -public: - typedef _Alloc __allocator_type; - typedef typename _Alloc::value_type value_type; -private: - struct __alloc_header { - size_t __magic: 16; - size_t __type_size:16; - _STLP_UINT32_T _M_size; - }; // that is 8 bytes for sure - // Sunpro CC has bug on enums, so extra_before/after set explicitly - enum { __pad = 8, __magic = 0xdeba, __deleted_magic = 0xdebd, - __shred_byte = _STLP_SHRED_BYTE }; - - enum { __extra_before = 16, __extra_after = 8 }; - // Size of space used to store size. Note - // that this must be large enough to preserve - // alignment. - static size_t _STLP_CALL __extra_before_chunk() { - return (long)__extra_before / sizeof(value_type) + - (size_t)((long)__extra_before % sizeof(value_type) > 0); - } - static size_t _STLP_CALL __extra_after_chunk() { - return (long)__extra_after / sizeof(value_type) + - (size_t)((long)__extra_after % sizeof(value_type) > 0); - } -public: - __debug_alloc() {} - ~__debug_alloc() {} - static void* _STLP_CALL allocate(size_t); - static void _STLP_CALL deallocate(void *, size_t); -}; - -# if defined (__OS400__) -// dums 02/05/2007: is it really necessary ? -enum { _MAX_BYTES = 256 }; -# else -enum { _MAX_BYTES = 32 * sizeof(void*) }; -# endif - -#if !defined (_STLP_USE_NO_IOSTREAMS) -// Default node allocator. -// With a reasonable compiler, this should be roughly as fast as the -// original STL class-specific allocators, but with less fragmentation. -class _STLP_CLASS_DECLSPEC __node_alloc { - static void * _STLP_CALL _M_allocate(size_t& __n); - /* __p may not be 0 */ - static void _STLP_CALL _M_deallocate(void *__p, size_t __n); - -public: - // this one is needed for proper simple_alloc wrapping - typedef char value_type; - /* __n must be > 0 */ - static void* _STLP_CALL allocate(size_t& __n) - { return (__n > (size_t)_MAX_BYTES) ? __stl_new(__n) : _M_allocate(__n); } - /* __p may not be 0 */ - static void _STLP_CALL deallocate(void *__p, size_t __n) - { if (__n > (size_t)_MAX_BYTES) __stl_delete(__p); else _M_deallocate(__p, __n); } -}; - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<__node_alloc>; -# endif - -#endif - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<__new_alloc>; -_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<__malloc_alloc>; -#endif - -/* macro to convert the allocator for initialization - * not using MEMBER_TEMPLATE_CLASSES as it should work given template constructor */ -#if defined (_STLP_MEMBER_TEMPLATES) || ! defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -/* if _STLP_NO_TEMPLATE_CONVERSIONS is set, the member template constructor is - * not used implicitly to convert allocator parameter, so let us do it explicitly */ -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_NO_TEMPLATE_CONVERSIONS) -# define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __stl_alloc_create(__a,(_Tp*)0) -# else -# define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __a -# endif -/* else convert, but only if partial specialization works, since else - * Container::allocator_type won't be different */ -#else -# define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __stl_alloc_create(__a,(_Tp*)0) -#endif - -// Another allocator adaptor: _Alloc_traits. This serves two -// purposes. First, make it possible to write containers that can use -// either SGI-style allocators or standard-conforming allocator. - -// The fully general version. -template -struct _Alloc_traits { - typedef _Allocator _Orig; -#if !defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) - typedef typename _Allocator::_STLP_TEMPLATE rebind<_Tp> _Rebind_type; - typedef typename _Rebind_type::other allocator_type; - static allocator_type create_allocator(const _Orig& __a) - { return allocator_type(_STLP_CONVERT_ALLOCATOR(__a, _Tp)); } -#else - // this is not actually true, used only to pass this type through - // to dynamic overload selection in _STLP_alloc_proxy methods - typedef _Allocator allocator_type; -#endif -}; - -#if defined (_STLP_USE_PERTHREAD_ALLOC) - -_STLP_END_NAMESPACE -// include additional header here -# include -_STLP_BEGIN_NAMESPACE - -typedef __pthread_alloc __alloc_type; -#elif defined (_STLP_USE_NEWALLOC) -typedef __new_alloc __alloc_type; -#elif defined (_STLP_USE_MALLOC) -typedef __malloc_alloc __alloc_type; -#else -typedef __node_alloc __alloc_type; -#endif - -#if defined (_STLP_DEBUG_ALLOC) -typedef __debug_alloc<__alloc_type> __sgi_alloc; -#else -typedef __alloc_type __sgi_alloc; -#endif - -#if !defined (_STLP_NO_ANACHRONISMS) -typedef __sgi_alloc __single_client_alloc; -typedef __sgi_alloc __multithreaded_alloc; -#endif - -// This implements allocators as specified in the C++ standard. -// -// Note that standard-conforming allocators use many language features -// that are not yet widely implemented. In particular, they rely on -// member templates, partial specialization, partial ordering of function -// templates, the typename keyword, and the use of the template keyword -// to refer to a template member of a dependent type. - -/* -template -struct _AllocatorAux { - typedef _Tp* pointer; - typedef const _Tp* const_pointer; - typedef _Tp& reference; - typedef const _Tp& const_reference; - - pointer address(reference __x) const {return &__x;} - const_pointer address(const_reference __x) const { return &__x; } -}; - -template -struct _AllocatorAux { - typedef _Tp* pointer; - typedef const _Tp* const_pointer; - typedef _Tp& reference; - typedef const _Tp& const_reference; - - const_pointer address(const_reference __x) const { return &__x; } -}; -*/ - -template -class allocator //: public _AllocatorAux<_Tp> -/* A small helper struct to recognize STLport allocator implementation - * from any user specialization one. - */ - : public __stlport_class > -{ -public: - typedef _Tp value_type; - typedef _Tp* pointer; - typedef const _Tp* const_pointer; - typedef _Tp& reference; - typedef const _Tp& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; -#if defined (_STLP_MEMBER_TEMPLATE_CLASSES) - template struct rebind { - typedef allocator<_Tp1> other; - }; -#endif - allocator() _STLP_NOTHROW {} -#if defined (_STLP_MEMBER_TEMPLATES) - template allocator(const allocator<_Tp1>&) _STLP_NOTHROW {} -#endif - allocator(const allocator<_Tp>&) _STLP_NOTHROW {} -#if !defined (_STLP_NO_MOVE_SEMANTIC) - allocator(__move_source > src) _STLP_NOTHROW {} -#endif - ~allocator() _STLP_NOTHROW {} - pointer address(reference __x) const {return &__x;} - const_pointer address(const_reference __x) const { return &__x; } - // __n is permitted to be 0. The C++ standard says nothing about what the return value is when __n == 0. - _Tp* allocate(size_type __n, const void* = 0) { - if (__n > max_size()) { - _STLP_THROW_BAD_ALLOC; - } - if (__n != 0) { - size_type __buf_size = __n * sizeof(value_type); - _Tp* __ret = __REINTERPRET_CAST(_Tp*, __sgi_alloc::allocate(__buf_size)); -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__ret, _STLP_SHRED_BYTE, __buf_size); -#endif - return __ret; - } - - return 0; - } - // __p is permitted to be a null pointer, only if n==0. - void deallocate(pointer __p, size_type __n) { - _STLP_ASSERT( (__p == 0) == (__n == 0) ) - if (__p != 0) { -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__p, _STLP_SHRED_BYTE, __n * sizeof(value_type)); -#endif - __sgi_alloc::deallocate((void*)__p, __n * sizeof(value_type)); - } - } -#if !defined (_STLP_NO_ANACHRONISMS) - // backwards compatibility - void deallocate(pointer __p) const { if (__p != 0) __sgi_alloc::deallocate((void*)__p, sizeof(value_type)); } -#endif - size_type max_size() const _STLP_NOTHROW { return size_t(-1) / sizeof(value_type); } - void construct(pointer __p, const_reference __val) { _STLP_STD::_Copy_Construct(__p, __val); } - void destroy(pointer __p) { _STLP_STD::_Destroy(__p); } - -#if defined (_STLP_NO_EXTENSIONS) - /* STLport extension giving rounded size of an allocated memory buffer - * This method do not have to be part of a user defined allocator implementation - * and won't even be called if such a function was granted. - */ -protected: -#endif - _Tp* _M_allocate(size_type __n, size_type& __allocated_n) { - if (__n > max_size()) { - _STLP_THROW_BAD_ALLOC; - } - - if (__n != 0) { - size_type __buf_size = __n * sizeof(value_type); - _Tp* __ret = __REINTERPRET_CAST(_Tp*, __sgi_alloc::allocate(__buf_size)); -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__ret, _STLP_SHRED_BYTE, __buf_size); -#endif - __allocated_n = __buf_size / sizeof(value_type); - return __ret; - } - - return 0; - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(allocator<_Tp>& __other) {} -#endif -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC allocator { -public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) - typedef void value_type; -#endif -#if defined (_STLP_MEMBER_TEMPLATE_CLASSES) - template struct rebind { - typedef allocator<_Tp1> other; - }; -#endif -}; - -template -inline bool _STLP_CALL operator==(const allocator<_T1>&, const allocator<_T2>&) _STLP_NOTHROW -{ return true; } -template -inline bool _STLP_CALL operator!=(const allocator<_T1>&, const allocator<_T2>&) _STLP_NOTHROW -{ return false; } - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS allocator; -# if defined (_STLP_HAS_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS allocator; -# endif -# if defined (_STLP_USE_PTR_SPECIALIZATIONS) -_STLP_EXPORT_TEMPLATE_CLASS allocator; -# endif -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct __alloc_type_traits { -#if !defined (__BORLANDC__) - typedef typename _IsSTLportClass >::_Ret _STLportAlloc; -#else - enum { _Is = _IsSTLportClass >::_Is }; - typedef typename __bool2type<_Is>::_Ret _STLportAlloc; -#endif - //The default allocator implementation which is recognize thanks to the - //__stlport_class inheritance is a stateless object so: - typedef _STLportAlloc has_trivial_default_constructor; - typedef _STLportAlloc has_trivial_copy_constructor; - typedef _STLportAlloc has_trivial_assignment_operator; - typedef _STLportAlloc has_trivial_destructor; - typedef _STLportAlloc is_POD_type; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct __type_traits > : _STLP_PRIV __alloc_type_traits<_Tp> {}; -#else -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __alloc_type_traits {}; -# if defined (_STLP_HAS_WCHAR_T) -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __alloc_type_traits {}; -# endif -# if defined (_STLP_USE_PTR_SPECIALIZATIONS) -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __alloc_type_traits {}; -# endif -#endif - - -#if !defined (_STLP_FORCE_ALLOCATORS) -# define _STLP_FORCE_ALLOCATORS(a,y) -#endif - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_MEMBER_TEMPLATE_CLASSES) -// The version for the default allocator, for rare occasion when we have partial spec w/o member template classes -template -struct _Alloc_traits<_Tp, allocator<_Tp1> > { - typedef allocator<_Tp1> _Orig; - typedef allocator<_Tp> allocator_type; - static allocator_type create_allocator(const allocator<_Tp1 >& __a) - { return allocator_type(_STLP_CONVERT_ALLOCATOR(__a, _Tp)); } -}; -#endif - -#if !defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) && defined (_STLP_MEMBER_TEMPLATES) -template -inline _STLP_TYPENAME_ON_RETURN_TYPE _Alloc_traits<_Tp, _Alloc>::allocator_type _STLP_CALL -__stl_alloc_create(const _Alloc& __a, const _Tp*) { - typedef typename _Alloc::_STLP_TEMPLATE rebind<_Tp>::other _Rebound_type; - return _Rebound_type(__a); -} -#else -// If custom allocators are being used without member template classes support : -// user (on purpose) is forced to define rebind/get operations !!! -template -inline allocator<_Tp2>& _STLP_CALL -__stl_alloc_rebind(allocator<_Tp1>& __a, const _Tp2*) { return (allocator<_Tp2>&)(__a); } -template -inline allocator<_Tp2> _STLP_CALL -__stl_alloc_create(const allocator<_Tp1>&, const _Tp2*) { return allocator<_Tp2>(); } -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// inheritance is being used for EBO optimization -template -class _STLP_alloc_proxy : public _MaybeReboundAlloc { -private: - typedef _MaybeReboundAlloc _Base; - typedef typename _Base::size_type size_type; - typedef _STLP_alloc_proxy<_Value, _Tp, _MaybeReboundAlloc> _Self; -public: - _Value _M_data; - - _STLP_alloc_proxy (const _MaybeReboundAlloc& __a, _Value __p) : - _MaybeReboundAlloc(__a), _M_data(__p) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _STLP_alloc_proxy (__move_source<_Self> src) : - _Base(_STLP_PRIV _AsMoveSource(src.get()._M_base())), - _M_data(_STLP_PRIV _AsMoveSource(src.get()._M_data)) {} - - _Base& _M_base() - { return *this; } -#endif - -private: - /* Following are helper methods to detect stateless allocators and avoid - * swap in this case. For some compilers (VC6) it is a workaround for a - * compiler bug in the Empty Base class Optimization feature, for others - * it is a small optimization or nothing if no EBO. */ - void _M_swap_alloc(_Self&, const __true_type& /*_IsStateless*/) - {} - - void _M_swap_alloc(_Self& __x, const __false_type& /*_IsStateless*/) { - _MaybeReboundAlloc &__base_this = *this; - _MaybeReboundAlloc &__base_x = __x; - _STLP_STD::swap(__base_this, __base_x); - } - -public: - void _M_swap_alloc(_Self& __x) { -#if !defined (__BORLANDC__) - typedef typename _IsStateless<_MaybeReboundAlloc>::_Ret _StatelessAlloc; -#else - typedef typename __bool2type<_IsStateless<_MaybeReboundAlloc>::_Is>::_Ret _StatelessAlloc; -#endif - _M_swap_alloc(__x, _StatelessAlloc()); - } - - /* We need to define the following swap implementation for allocator with state - * as those allocators might have implement a special swap function to correctly - * move datas from an instance to the oher, _STLP_alloc_proxy should not break - * this mecanism. */ - void swap(_Self& __x) { - _M_swap_alloc(__x); - _STLP_STD::swap(_M_data, __x._M_data); - } - - _Tp* allocate(size_type __n, size_type& __allocated_n) { -#if !defined (__BORLANDC__) - typedef typename _IsSTLportClass<_MaybeReboundAlloc>::_Ret _STLportAlloc; -#else - typedef typename __bool2type<_IsSTLportClass<_MaybeReboundAlloc>::_Is>::_Ret _STLportAlloc; -#endif - return allocate(__n, __allocated_n, _STLportAlloc()); - } - - // Unified interface to perform allocate()/deallocate() with limited - // language support -#if defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) - // else it is rebound already, and allocate() member is accessible - _Tp* allocate(size_type __n) - { return __stl_alloc_rebind(__STATIC_CAST(_Base&, *this), __STATIC_CAST(_Tp*, 0)).allocate(__n, 0); } - void deallocate(_Tp* __p, size_type __n) - { __stl_alloc_rebind(__STATIC_CAST(_Base&, *this), __STATIC_CAST(_Tp*, 0)).deallocate(__p, __n); } -private: - _Tp* allocate(size_type __n, size_type& __allocated_n, const __true_type& /*STLport allocator*/) - { return __stl_alloc_rebind(__STATIC_CAST(_Base&, *this), __STATIC_CAST(_Tp*, 0))._M_allocate(__n, __allocated_n); } -#else - //Expose Standard allocate overload (using expression do not work for some compilers (Borland)) - _Tp* allocate(size_type __n) - { return _Base::allocate(__n); } -private: - _Tp* allocate(size_type __n, size_type& __allocated_n, const __true_type& /*STLport allocator*/) - { return _Base::_M_allocate(__n, __allocated_n); } -#endif - - _Tp* allocate(size_type __n, size_type& __allocated_n, const __false_type& /*STLport allocator*/) - { __allocated_n = __n; return allocate(__n); } -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy >; -# if defined (_STLP_HAS_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy >; -# endif -# if defined (_STLP_USE_PTR_SPECIALIZATIONS) -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy >; -# endif -#endif - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_ALLOC_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_auto_ptr.h b/build/stlport/stlport/stl/_auto_ptr.h deleted file mode 100644 index c750534a01f7..000000000000 --- a/build/stlport/stlport/stl/_auto_ptr.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_AUTO_PTR_H -#define _STLP_AUTO_PTR_H - -_STLP_BEGIN_NAMESPACE -// implementation primitive -class __ptr_base { -public: - void* _M_p; - void __set(const volatile void* p) { _M_p = __CONST_CAST(void*,p); } - void __set(void* p) { _M_p = p; } -}; - -template -class auto_ptr_ref { -public: - __ptr_base& _M_r; - _Tp* const _M_p; - - auto_ptr_ref(__ptr_base& __r, _Tp* __p) : _M_r(__r), _M_p(__p) { } - - _Tp* release() const { _M_r.__set(__STATIC_CAST(void*, 0)); return _M_p; } - -private: - //explicitely defined as private to avoid warnings: - typedef auto_ptr_ref<_Tp> _Self; - _Self& operator = (_Self const&); -}; - -template -class auto_ptr : public __ptr_base { -public: - typedef _Tp element_type; - typedef auto_ptr<_Tp> _Self; - - _Tp* release() _STLP_NOTHROW { - _Tp* __px = this->get(); - this->_M_p = 0; - return __px; - } - - void reset(_Tp* __px = 0) _STLP_NOTHROW { - _Tp* __pt = this->get(); - if (__px != __pt) - delete __pt; - this->__set(__px); - } - - _Tp* get() const _STLP_NOTHROW -#if !defined (__GNUC__) || (__GNUC__ > 2) - { return __STATIC_CAST(_Tp*, _M_p); } -#else - { return __REINTERPRET_CAST(_Tp*, _M_p); } -#endif - -#if !defined (_STLP_NO_ARROW_OPERATOR) - _Tp* operator->() const _STLP_NOTHROW { - _STLP_VERBOSE_ASSERT(get() != 0, _StlMsg_AUTO_PTR_NULL) - return get(); - } -#endif - _Tp& operator*() const _STLP_NOTHROW { - _STLP_VERBOSE_ASSERT(get() != 0, _StlMsg_AUTO_PTR_NULL) - return *get(); - } - - explicit auto_ptr(_Tp* __px = 0) _STLP_NOTHROW { this->__set(__px); } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if !defined (_STLP_NO_TEMPLATE_CONVERSIONS) - template auto_ptr(auto_ptr<_Tp1>& __r) _STLP_NOTHROW { - _Tp* __conversionCheck = __r.release(); - this->__set(__conversionCheck); - } -# endif - template auto_ptr<_Tp>& operator=(auto_ptr<_Tp1>& __r) _STLP_NOTHROW { - _Tp* __conversionCheck = __r.release(); - reset(__conversionCheck); - return *this; - } -#endif - - auto_ptr(_Self& __r) _STLP_NOTHROW { this->__set(__r.release()); } - - _Self& operator=(_Self& __r) _STLP_NOTHROW { - reset(__r.release()); - return *this; - } - - ~auto_ptr() _STLP_NOTHROW { /* boris : reset(0) might be better */ delete this->get(); } - - auto_ptr(auto_ptr_ref<_Tp> __r) _STLP_NOTHROW - { this->__set(__r.release()); } - - _Self& operator=(auto_ptr_ref<_Tp> __r) _STLP_NOTHROW { - reset(__r.release()); - return *this; - } - -#if defined(_STLP_MEMBER_TEMPLATES) && !defined(_STLP_NO_TEMPLATE_CONVERSIONS) - template operator auto_ptr_ref<_Tp1>() _STLP_NOTHROW - { return auto_ptr_ref<_Tp1>(*this, this->get()); } - template operator auto_ptr<_Tp1>() _STLP_NOTHROW - { return auto_ptr<_Tp1>(release()); } -#else - operator auto_ptr_ref<_Tp>() _STLP_NOTHROW - { return auto_ptr_ref<_Tp>(*this, this->get()); } -#endif -}; -_STLP_END_NAMESPACE - -#endif /* _STLP_AUTO_PTR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_bitset.c b/build/stlport/stlport/stl/_bitset.c deleted file mode 100644 index 82b9312d9ae1..000000000000 --- a/build/stlport/stlport/stl/_bitset.c +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (c) 1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_BITSET_C -#define _STLP_BITSET_C - -#ifndef _STLP_BITSET_H -# include -#endif - -#define __BITS_PER_WORD (CHAR_BIT * sizeof(unsigned long)) - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE -// -// Definitions of non-inline functions from _Base_bitset. -// -template -void _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift) { - if (__shift != 0) { - const size_t __wshift = __shift / __BITS_PER_WORD; - const size_t __offset = __shift % __BITS_PER_WORD; - - if (__offset == 0) - for (size_t __n = _Nw - 1; __n >= __wshift; --__n) - _M_w[__n] = _M_w[__n - __wshift]; - - else { - const size_t __sub_offset = __BITS_PER_WORD - __offset; - for (size_t __n = _Nw - 1; __n > __wshift; --__n) - _M_w[__n] = (_M_w[__n - __wshift] << __offset) | - (_M_w[__n - __wshift - 1] >> __sub_offset); - _M_w[__wshift] = _M_w[0] << __offset; - } - - fill(_M_w + 0, _M_w + __wshift, __STATIC_CAST(_WordT,0)); - } -} - -template -void _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift) { - if (__shift != 0) { - const size_t __wshift = __shift / __BITS_PER_WORD; - const size_t __offset = __shift % __BITS_PER_WORD; - const size_t __limit = _Nw - __wshift - 1; - - if (__offset == 0) - for (size_t __n = 0; __n <= __limit; ++__n) - _M_w[__n] = _M_w[__n + __wshift]; - - else { - const size_t __sub_offset = __BITS_PER_WORD - __offset; - for (size_t __n = 0; __n < __limit; ++__n) - _M_w[__n] = (_M_w[__n + __wshift] >> __offset) | - (_M_w[__n + __wshift + 1] << __sub_offset); - _M_w[__limit] = _M_w[_Nw-1] >> __offset; - } - - fill(_M_w + __limit + 1, _M_w + _Nw, __STATIC_CAST(_WordT,0)); - } -} - -template -unsigned long _Base_bitset<_Nw>::_M_do_to_ulong() const { - for (size_t __i = 1; __i < _Nw; ++__i) - if (_M_w[__i]) - __stl_throw_overflow_error("bitset"); - return _M_w[0]; -} // End _M_do_to_ulong - -template -size_t _Base_bitset<_Nw>::_M_do_find_first(size_t __not_found) const { - for ( size_t __i = 0; __i < _Nw; __i++ ) { - _WordT __thisword = _M_w[__i]; - if ( __thisword != __STATIC_CAST(_WordT,0) ) { - // find byte within word - for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) { - unsigned char __this_byte - = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0))); - if ( __this_byte ) - return __i*__BITS_PER_WORD + __j*CHAR_BIT + - _Bs_G::_S_first_one(__this_byte); - - __thisword >>= CHAR_BIT; - } - } - } - // not found, so return an indication of failure. - return __not_found; -} - -template -size_t -_Base_bitset<_Nw>::_M_do_find_next(size_t __prev, - size_t __not_found) const { - // make bound inclusive - ++__prev; - - // check out of bounds - if ( __prev >= _Nw * __BITS_PER_WORD ) - return __not_found; - - // search first word - size_t __i = _S_whichword(__prev); - _WordT __thisword = _M_w[__i]; - - // mask off bits below bound - __thisword &= (~__STATIC_CAST(_WordT,0)) << _S_whichbit(__prev); - - if ( __thisword != __STATIC_CAST(_WordT,0) ) { - // find byte within word - // get first byte into place - __thisword >>= _S_whichbyte(__prev) * CHAR_BIT; - for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); ++__j ) { - unsigned char __this_byte - = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0))); - if ( __this_byte ) - return __i*__BITS_PER_WORD + __j*CHAR_BIT + - _Bs_G::_S_first_one(__this_byte); - - __thisword >>= CHAR_BIT; - } - } - - // check subsequent words - ++__i; - for ( ; __i < _Nw; ++__i ) { - /* _WordT */ __thisword = _M_w[__i]; - if ( __thisword != __STATIC_CAST(_WordT,0) ) { - // find byte within word - for ( size_t __j = 0; __j < sizeof(_WordT); ++__j ) { - unsigned char __this_byte - = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0))); - if ( __this_byte ) - return __i*__BITS_PER_WORD + __j*CHAR_BIT + - _Bs_G::_S_first_one(__this_byte); - - __thisword >>= CHAR_BIT; - } - } - } - - // not found, so return an indication of failure. - return __not_found; -} // end _M_do_find_next - -_STLP_MOVE_TO_STD_NAMESPACE - -#if !defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) - -# if !defined (_STLP_USE_NO_IOSTREAMS) - -_STLP_END_NAMESPACE - -#ifndef _STLP_STRING_IO_H -# include //includes _istream.h and _ostream.h -#endif - -_STLP_BEGIN_NAMESPACE - -template -basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) { - basic_string<_CharT, _Traits> __tmp; - __tmp.reserve(_Nb); - - // Skip whitespace - typename basic_istream<_CharT, _Traits>::sentry __sentry(__is); - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf(); - for (size_t __i = 0; __i < _Nb; ++__i) { - static typename _Traits::int_type __eof = _Traits::eof(); - - typename _Traits::int_type __c1 = __buf->sbumpc(); - if (_Traits::eq_int_type(__c1, __eof)) { - __is.setstate(ios_base::eofbit); - break; - } - else { - typename _Traits::char_type __c2 = _Traits::to_char_type(__c1); - char __c = __is.narrow(__c2, '*'); - - if (__c == '0' || __c == '1') - __tmp.push_back(__c); - else if (_Traits::eq_int_type(__buf->sputbackc(__c2), __eof)) { - __is.setstate(ios_base::failbit); - break; - } - } - } - - if (__tmp.empty()) - __is.setstate(ios_base::failbit); - else - __x._M_copy_from_string(__tmp, __STATIC_CAST(size_t,0), _Nb); - } - - return __is; -} - -template -basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, - const bitset<_Nb>& __x) { - basic_string<_CharT, _Traits> __tmp; - __x._M_copy_to_string(__tmp); - return __os << __tmp; -} - -# endif /* !_STLP_USE_NO_IOSTREAMS */ - -#endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */ - -_STLP_END_NAMESPACE - -#undef __BITS_PER_WORD -#undef bitset - -#endif /* _STLP_BITSET_C */ diff --git a/build/stlport/stlport/stl/_bitset.h b/build/stlport/stlport/stl/_bitset.h deleted file mode 100644 index f894346a4215..000000000000 --- a/build/stlport/stlport/stl/_bitset.h +++ /dev/null @@ -1,880 +0,0 @@ -/* - * Copyright (c) 1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_BITSET_H -#define _STLP_BITSET_H - -// A bitset of size N has N % (sizeof(unsigned long) * CHAR_BIT) unused -// bits. (They are the high- order bits in the highest word.) It is -// a class invariant of class bitset<> that those unused bits are -// always zero. - -// Most of the actual code isn't contained in bitset<> itself, but in the -// base class _Base_bitset. The base class works with whole words, not with -// individual bits. This allows us to specialize _Base_bitset for the -// important special case where the bitset is only a single word. - -// The C++ standard does not define the precise semantics of operator[]. -// In this implementation the const version of operator[] is equivalent -// to test(), except that it does no range checking. The non-const version -// returns a reference to a bit, again without doing any range checking. - - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_UNINITIALIZED_H -# include -#endif - -#ifndef _STLP_RANGE_ERRORS_H -# include -#endif - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -#define __BITS_PER_WORD (CHAR_BIT*sizeof(unsigned long)) -#define __BITSET_WORDS(__n) ((__n + __BITS_PER_WORD - 1)/__BITS_PER_WORD) - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// structure to aid in counting bits -class _STLP_CLASS_DECLSPEC _Bs_G -{ - public: - //returns the number of bit set within the buffer between __beg and __end. - static size_t _S_count(const unsigned char *__beg, const unsigned char *__end) -#if defined (_STLP_USE_NO_IOSTREAMS) - { - size_t __result = 0; - for (; __beg != __end; ++__beg) { - for (size_t i = 0; i < (sizeof(unsigned char) * 8); ++i) { - if ((*__beg & (1 << i)) != 0) { ++__result; } - } - } - return __result; - } -#else - ; -#endif - // Mapping from 8 bit unsigned integers to the index of the first one bit set: - static unsigned char _S_first_one(unsigned char __x) -#if defined (_STLP_USE_NO_IOSTREAMS) - { - for (unsigned char i = 0; i < (sizeof(unsigned char) * 8); ++i) { - if ((__x & (1 << i)) != 0) { return i; } - } - return 0; - } -#else - ; -#endif -}; - -// -// Base class: general case. -// - -template -struct _Base_bitset { - typedef unsigned long _WordT; - - _WordT _M_w[_Nw]; // 0 is the least significant word. - - _Base_bitset() { _M_do_reset(); } - - _Base_bitset(unsigned long __val) { - _M_do_reset(); - _M_w[0] = __val; - } - - static size_t _STLP_CALL _S_whichword( size_t __pos ) { - return __pos / __BITS_PER_WORD; - } - static size_t _STLP_CALL _S_whichbyte( size_t __pos ) { - return (__pos % __BITS_PER_WORD) / CHAR_BIT; - } - static size_t _STLP_CALL _S_whichbit( size_t __pos ) { - return __pos % __BITS_PER_WORD; - } - static _WordT _STLP_CALL _S_maskbit( size_t __pos ) { - return __STATIC_CAST(_WordT,1) << _S_whichbit(__pos); - } - - _WordT& _M_getword(size_t __pos) { return _M_w[_S_whichword(__pos)]; } - _WordT _M_getword(size_t __pos) const { return _M_w[_S_whichword(__pos)]; } - - _WordT& _M_hiword() { return _M_w[_Nw - 1]; } - _WordT _M_hiword() const { return _M_w[_Nw - 1]; } - - void _M_do_and(const _Base_bitset<_Nw>& __x) { - for ( size_t __i = 0; __i < _Nw; __i++ ) { - _M_w[__i] &= __x._M_w[__i]; - } - } - - void _M_do_or(const _Base_bitset<_Nw>& __x) { - for ( size_t __i = 0; __i < _Nw; __i++ ) { - _M_w[__i] |= __x._M_w[__i]; - } - } - - void _M_do_xor(const _Base_bitset<_Nw>& __x) { - for ( size_t __i = 0; __i < _Nw; __i++ ) { - _M_w[__i] ^= __x._M_w[__i]; - } - } - - void _M_do_left_shift(size_t __shift); - - void _M_do_right_shift(size_t __shift); - - void _M_do_flip() { - for ( size_t __i = 0; __i < _Nw; __i++ ) { - _M_w[__i] = ~_M_w[__i]; - } - } - - void _M_do_set() { - for ( size_t __i = 0; __i < _Nw; __i++ ) { - _M_w[__i] = ~__STATIC_CAST(_WordT,0); - } - } - - void _M_do_reset() { memset(_M_w, 0, _Nw * sizeof(_WordT)); } - - bool _M_is_equal(const _Base_bitset<_Nw>& __x) const { - for (size_t __i = 0; __i < _Nw; ++__i) { - if (_M_w[__i] != __x._M_w[__i]) - return false; - } - return true; - } - - bool _M_is_any() const { - for ( size_t __i = 0; __i < _Nw ; __i++ ) { - if ( _M_w[__i] != __STATIC_CAST(_WordT,0) ) - return true; - } - return false; - } - - size_t _M_do_count() const { - const unsigned char* __byte_ptr = (const unsigned char*)_M_w; - const unsigned char* __end_ptr = (const unsigned char*)(_M_w+_Nw); - - return _Bs_G::_S_count(__byte_ptr, __end_ptr); - } - - unsigned long _M_do_to_ulong() const; - - // find first "on" bit - size_t _M_do_find_first(size_t __not_found) const; - - // find the next "on" bit that follows "prev" - size_t _M_do_find_next(size_t __prev, size_t __not_found) const; -}; - -// -// Base class: specialization for a single word. -// -_STLP_TEMPLATE_NULL -struct _Base_bitset<1UL> { - typedef unsigned long _WordT; - typedef _Base_bitset<1UL> _Self; - - _WordT _M_w; - - _Base_bitset( void ) : _M_w(0) {} - _Base_bitset(unsigned long __val) : _M_w(__val) {} - - static size_t _STLP_CALL _S_whichword( size_t __pos ) { - return __pos / __BITS_PER_WORD ; - } - static size_t _STLP_CALL _S_whichbyte( size_t __pos ) { - return (__pos % __BITS_PER_WORD) / CHAR_BIT; - } - static size_t _STLP_CALL _S_whichbit( size_t __pos ) { - return __pos % __BITS_PER_WORD; - } - static _WordT _STLP_CALL _S_maskbit( size_t __pos ) { - return (__STATIC_CAST(_WordT,1)) << _S_whichbit(__pos); - } - - _WordT& _M_getword(size_t) { return _M_w; } - _WordT _M_getword(size_t) const { return _M_w; } - - _WordT& _M_hiword() { return _M_w; } - _WordT _M_hiword() const { return _M_w; } - - void _M_do_and(const _Self& __x) { _M_w &= __x._M_w; } - void _M_do_or(const _Self& __x) { _M_w |= __x._M_w; } - void _M_do_xor(const _Self& __x) { _M_w ^= __x._M_w; } - void _M_do_left_shift(size_t __shift) { _M_w <<= __shift; } - void _M_do_right_shift(size_t __shift) { _M_w >>= __shift; } - void _M_do_flip() { _M_w = ~_M_w; } - void _M_do_set() { _M_w = ~__STATIC_CAST(_WordT,0); } - void _M_do_reset() { _M_w = 0; } - - bool _M_is_equal(const _Self& __x) const { - return _M_w == __x._M_w; - } - bool _M_is_any() const { - return _M_w != 0; - } - - size_t _M_do_count() const { - const unsigned char* __byte_ptr = (const unsigned char*)&_M_w; - const unsigned char* __end_ptr = ((const unsigned char*)&_M_w)+sizeof(_M_w); - return _Bs_G::_S_count(__byte_ptr, __end_ptr); - } - - unsigned long _M_do_to_ulong() const { return _M_w; } - - inline size_t _M_do_find_first(size_t __not_found) const; - - // find the next "on" bit that follows "prev" - inline size_t _M_do_find_next(size_t __prev, size_t __not_found) const; -}; - - -// ------------------------------------------------------------ -// -// Definitions of should-be-non-inline functions from the single-word version of -// _Base_bitset. -// -inline size_t -_Base_bitset<1UL>::_M_do_find_first(size_t __not_found) const { - // typedef unsigned long _WordT; - _WordT __thisword = _M_w; - - if ( __thisword != __STATIC_CAST(_WordT,0) ) { - // find byte within word - for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) { - unsigned char __this_byte - = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0))); - if ( __this_byte ) - return __j*CHAR_BIT + _Bs_G::_S_first_one(__this_byte); - - __thisword >>= CHAR_BIT; - } - } - // not found, so return a value that indicates failure. - return __not_found; -} - -inline size_t -_Base_bitset<1UL>::_M_do_find_next(size_t __prev, - size_t __not_found ) const { - // make bound inclusive - ++__prev; - - // check out of bounds - if ( __prev >= __BITS_PER_WORD ) - return __not_found; - - // search first (and only) word - _WordT __thisword = _M_w; - - // mask off bits below bound - __thisword &= (~__STATIC_CAST(_WordT,0)) << _S_whichbit(__prev); - - if ( __thisword != __STATIC_CAST(_WordT,0) ) { - // find byte within word - // get first byte into place - __thisword >>= _S_whichbyte(__prev) * CHAR_BIT; - for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) { - unsigned char __this_byte - = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0))); - if ( __this_byte ) - return __j*CHAR_BIT + _Bs_G::_S_first_one(__this_byte); - - __thisword >>= CHAR_BIT; - } - } - - // not found, so return a value that indicates failure. - return __not_found; -} // end _M_do_find_next - - -// ------------------------------------------------------------ -// Helper class to zero out the unused high-order bits in the highest word. - -template struct _Sanitize { - static void _STLP_CALL _M_do_sanitize(unsigned long& __val) - { __val &= ~((~__STATIC_CAST(unsigned long,0)) << _Extrabits); } -}; - -_STLP_TEMPLATE_NULL struct _Sanitize<0UL> { - static void _STLP_CALL _M_do_sanitize(unsigned long) {} -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -// ------------------------------------------------------------ -// Class bitset. -// _Nb may be any nonzero number of type size_t. -template -class bitset : public _STLP_PRIV _Base_bitset<__BITSET_WORDS(_Nb) > { -public: - enum { _Words = __BITSET_WORDS(_Nb) } ; - -private: - typedef _STLP_PRIV _Base_bitset< _Words > _Base; - - void _M_do_sanitize() { - _STLP_PRIV _Sanitize<_Nb%__BITS_PER_WORD >::_M_do_sanitize(this->_M_hiword()); - } -public: - typedef unsigned long _WordT; - struct reference; - friend struct reference; - - // bit reference: - struct reference { - typedef _STLP_PRIV _Base_bitset<_Words > _Bitset_base; - typedef bitset<_Nb> _Bitset; - // friend _Bitset; - _WordT *_M_wp; - size_t _M_bpos; - - // should be left undefined - reference() {} - - reference( _Bitset& __b, size_t __pos ) { - _M_wp = &__b._M_getword(__pos); - _M_bpos = _Bitset_base::_S_whichbit(__pos); - } - - public: - ~reference() {} - - // for b[i] = __x; - reference& operator=(bool __x) { - if ( __x ) - *_M_wp |= _Bitset_base::_S_maskbit(_M_bpos); - else - *_M_wp &= ~_Bitset_base::_S_maskbit(_M_bpos); - - return *this; - } - - // for b[i] = b[__j]; - reference& operator=(const reference& __j) { - if ( (*(__j._M_wp) & _Bitset_base::_S_maskbit(__j._M_bpos)) ) - *_M_wp |= _Bitset_base::_S_maskbit(_M_bpos); - else - *_M_wp &= ~_Bitset_base::_S_maskbit(_M_bpos); - - return *this; - } - - // flips the bit - bool operator~() const { return (*(_M_wp) & _Bitset_base::_S_maskbit(_M_bpos)) == 0; } - - // for __x = b[i]; - operator bool() const { return (*(_M_wp) & _Bitset_base::_S_maskbit(_M_bpos)) != 0; } - - // for b[i].flip(); - reference& flip() { - *_M_wp ^= _Bitset_base::_S_maskbit(_M_bpos); - return *this; - } - }; - - // 23.3.5.1 constructors: - bitset() {} - - bitset(unsigned long __val) : _STLP_PRIV _Base_bitset<_Words>(__val) { _M_do_sanitize(); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - explicit bitset(const basic_string<_CharT,_Traits,_Alloc>& __s, - size_t __pos = 0) - : _STLP_PRIV _Base_bitset<_Words >() { - if (__pos > __s.size()) - __stl_throw_out_of_range("bitset"); - _M_copy_from_string(__s, __pos, - basic_string<_CharT, _Traits, _Alloc>::npos); - } - template - bitset(const basic_string<_CharT, _Traits, _Alloc>& __s, - size_t __pos, - size_t __n) - : _STLP_PRIV _Base_bitset<_Words >() { - if (__pos > __s.size()) - __stl_throw_out_of_range("bitset"); - _M_copy_from_string(__s, __pos, __n); - } -#else /* _STLP_MEMBER_TEMPLATES */ - explicit bitset(const string& __s, - size_t __pos = 0, - size_t __n = (size_t)-1) - : _STLP_PRIV _Base_bitset<_Words >() { - if (__pos > __s.size()) - __stl_throw_out_of_range("bitset"); - _M_copy_from_string(__s, __pos, __n); - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - // 23.3.5.2 bitset operations: - bitset<_Nb>& operator&=(const bitset<_Nb>& __rhs) { - this->_M_do_and(__rhs); - return *this; - } - - bitset<_Nb>& operator|=(const bitset<_Nb>& __rhs) { - this->_M_do_or(__rhs); - return *this; - } - - bitset<_Nb>& operator^=(const bitset<_Nb>& __rhs) { - this->_M_do_xor(__rhs); - return *this; - } - - bitset<_Nb>& operator<<=(size_t __pos) { - this->_M_do_left_shift(__pos); - this->_M_do_sanitize(); - return *this; - } - - bitset<_Nb>& operator>>=(size_t __pos) { - this->_M_do_right_shift(__pos); - this->_M_do_sanitize(); - return *this; - } - - // - // Extension: - // Versions of single-bit set, reset, flip, test with no range checking. - // - - bitset<_Nb>& _Unchecked_set(size_t __pos) { - this->_M_getword(__pos) |= _STLP_PRIV _Base_bitset<_Words > ::_S_maskbit(__pos); - return *this; - } - - bitset<_Nb>& _Unchecked_set(size_t __pos, int __val) { - if (__val) - this->_M_getword(__pos) |= this->_S_maskbit(__pos); - else - this->_M_getword(__pos) &= ~ this->_S_maskbit(__pos); - - return *this; - } - - bitset<_Nb>& _Unchecked_reset(size_t __pos) { - this->_M_getword(__pos) &= ~ this->_S_maskbit(__pos); - return *this; - } - - bitset<_Nb>& _Unchecked_flip(size_t __pos) { - this->_M_getword(__pos) ^= this->_S_maskbit(__pos); - return *this; - } - - bool _Unchecked_test(size_t __pos) const { - return (this->_M_getword(__pos) & this->_S_maskbit(__pos)) != __STATIC_CAST(_WordT,0); - } - - // Set, reset, and flip. - - bitset<_Nb>& set() { - this->_M_do_set(); - this->_M_do_sanitize(); - return *this; - } - - bitset<_Nb>& set(size_t __pos) { - if (__pos >= _Nb) - __stl_throw_out_of_range("bitset"); - return _Unchecked_set(__pos); - } - - bitset<_Nb>& set(size_t __pos, int __val) { - if (__pos >= _Nb) - __stl_throw_out_of_range("bitset"); - return _Unchecked_set(__pos, __val); - } - - bitset<_Nb>& reset() { - this->_M_do_reset(); - return *this; - } - - bitset<_Nb>& reset(size_t __pos) { - if (__pos >= _Nb) - __stl_throw_out_of_range("bitset"); - - return _Unchecked_reset(__pos); - } - - bitset<_Nb>& flip() { - this->_M_do_flip(); - this->_M_do_sanitize(); - return *this; - } - - bitset<_Nb>& flip(size_t __pos) { - if (__pos >= _Nb) - __stl_throw_out_of_range("bitset"); - - return _Unchecked_flip(__pos); - } - - bitset<_Nb> operator~() const { - return bitset<_Nb>(*this).flip(); - } - - // element access: - //for b[i]; - reference operator[](size_t __pos) { return reference(*this,__pos); } - bool operator[](size_t __pos) const { return _Unchecked_test(__pos); } - - unsigned long to_ulong() const { return this->_M_do_to_ulong(); } - -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS) - template - basic_string<_CharT, _Traits, _Alloc> to_string() const { - basic_string<_CharT, _Traits, _Alloc> __result; - _M_copy_to_string(__result); - return __result; - } -#else - string to_string() const { - string __result; - _M_copy_to_string(__result); - return __result; - } -#endif /* _STLP_EXPLICIT_FUNCTION_TMPL_ARGS */ - - size_t count() const { return this->_M_do_count(); } - - size_t size() const { return _Nb; } - - bool operator==(const bitset<_Nb>& __rhs) const { - return this->_M_is_equal(__rhs); - } - bool operator!=(const bitset<_Nb>& __rhs) const { - return !this->_M_is_equal(__rhs); - } - - bool test(size_t __pos) const { - if (__pos >= _Nb) - __stl_throw_out_of_range("bitset"); - - return _Unchecked_test(__pos); - } - - bool any() const { return this->_M_is_any(); } - bool none() const { return !this->_M_is_any(); } - - bitset<_Nb> operator<<(size_t __pos) const { - bitset<_Nb> __result(*this); - __result <<= __pos ; return __result; - } - bitset<_Nb> operator>>(size_t __pos) const { - bitset<_Nb> __result(*this); - __result >>= __pos ; return __result; - } - -#if !defined (_STLP_NO_EXTENSIONS) - // - // EXTENSIONS: bit-find operations. These operations are - // experimental, and are subject to change or removal in future - // versions. - // - - // find the index of the first "on" bit - size_t _Find_first() const - { return this->_M_do_find_first(_Nb); } - - // find the index of the next "on" bit after prev - size_t _Find_next( size_t __prev ) const - { return this->_M_do_find_next(__prev, _Nb); } -#endif - -// -// Definitions of should-be non-inline member functions. -// -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s, - size_t __pos, size_t __n) { -#else - void _M_copy_from_string(const string& __s, - size_t __pos, size_t __n) { - typedef typename string::traits_type _Traits; -#endif - reset(); - size_t __tmp = _Nb; - const size_t __Nbits = (min) (__tmp, (min) (__n, __s.size() - __pos)); - for ( size_t __i= 0; __i < __Nbits; ++__i) { - typename _Traits::int_type __k = _Traits::to_int_type(__s[__pos + __Nbits - __i - 1]); - // boris : widen() ? - if (__k == '1') - set(__i); - else if (__k != '0') - __stl_throw_invalid_argument("bitset"); - } - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_copy_to_string(basic_string<_CharT, _Traits, _Alloc>& __s) const -#else - void _M_copy_to_string(string& __s) const -#endif - { - __s.assign(_Nb, '0'); - - for (size_t __i = 0; __i < _Nb; ++__i) { - if (_Unchecked_test(__i)) - __s[_Nb - 1 - __i] = '1'; - } - } - -#if !defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_NO_WCHAR_T) - void _M_copy_to_string(wstring& __s) const { - __s.assign(_Nb, '0'); - - for (size_t __i = 0; __i < _Nb; ++__i) { - if (_Unchecked_test(__i)) - __s[_Nb - 1 - __i] = '1'; - } - } -#endif - -#if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) - bitset<_Nb> operator&(const bitset<_Nb>& __y) const { - bitset<_Nb> __result(*this); - __result &= __y; - return __result; - } - bitset<_Nb> operator|(const bitset<_Nb>& __y) const { - bitset<_Nb> __result(*this); - __result |= __y; - return __result; - } - bitset<_Nb> operator^(const bitset<_Nb>& __y) const { - bitset<_Nb> __result(*this); - __result ^= __y; - return __result; - } -#endif -}; - -// ------------------------------------------------------------ -// -// 23.3.5.3 bitset operations: -// -#if ! defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) -template -inline bitset<_Nb> _STLP_CALL -operator&(const bitset<_Nb>& __x, - const bitset<_Nb>& __y) { - bitset<_Nb> __result(__x); - __result &= __y; - return __result; -} - - -template -inline bitset<_Nb> _STLP_CALL -operator|(const bitset<_Nb>& __x, - const bitset<_Nb>& __y) { - bitset<_Nb> __result(__x); - __result |= __y; - return __result; -} - -template -inline bitset<_Nb> _STLP_CALL -operator^(const bitset<_Nb>& __x, - const bitset<_Nb>& __y) { - bitset<_Nb> __result(__x); - __result ^= __y; - return __result; -} - -#if !defined (_STLP_USE_NO_IOSTREAMS) - -_STLP_END_NAMESPACE - -# if !(defined (_STLP_MSVC) && (_STLP_MSVC < 1300)) && \ - !(defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x500)) - -#ifndef _STLP_INTERNAL_IOSFWD -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x); - -template -basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Nb>& __x); - -# else - -#ifndef _STLP_STRING_IO_H -# include //includes _istream.h and _ostream.h -#endif - -_STLP_BEGIN_NAMESPACE - -template -istream& _STLP_CALL -operator>>(istream& __is, bitset<_Nb>& __x) { - typedef typename string::traits_type _Traits; - string __tmp; - __tmp.reserve(_Nb); - - // Skip whitespace - typename istream::sentry __sentry(__is); - if (__sentry) { - streambuf* __buf = __is.rdbuf(); - for (size_t __i = 0; __i < _Nb; ++__i) { - static typename _Traits::int_type __eof = _Traits::eof(); - - typename _Traits::int_type __c1 = __buf->sbumpc(); - if (_Traits::eq_int_type(__c1, __eof)) { - __is.setstate(ios_base::eofbit); - break; - } - else { - typename _Traits::char_type __c2 = _Traits::to_char_type(__c1); - char __c = __is.narrow(__c2, '*'); - - if (__c == '0' || __c == '1') - __tmp.push_back(__c); - else if (_Traits::eq_int_type(__buf->sputbackc(__c2), __eof)) { - __is.setstate(ios_base::failbit); - break; - } - } - } - - if (__tmp.empty()) - __is.setstate(ios_base::failbit); - else - __x._M_copy_from_string(__tmp, __STATIC_CAST(size_t,0), _Nb); - } - - return __is; -} - -template -ostream& _STLP_CALL -operator<<(ostream& __os, const bitset<_Nb>& __x) { - string __tmp; - __x._M_copy_to_string(__tmp); - return __os << __tmp; -} - -# if !defined (_STLP_NO_WCHAR_T) - -template -wistream& _STLP_CALL -operator>>(wistream& __is, bitset<_Nb>& __x) { - typedef typename wstring::traits_type _Traits; - wstring __tmp; - __tmp.reserve(_Nb); - - // Skip whitespace - typename wistream::sentry __sentry(__is); - if (__sentry) { - wstreambuf* __buf = __is.rdbuf(); - for (size_t __i = 0; __i < _Nb; ++__i) { - static typename _Traits::int_type __eof = _Traits::eof(); - - typename _Traits::int_type __c1 = __buf->sbumpc(); - if (_Traits::eq_int_type(__c1, __eof)) { - __is.setstate(ios_base::eofbit); - break; - } - else { - typename _Traits::char_type __c2 = _Traits::to_char_type(__c1); - char __c = __is.narrow(__c2, '*'); - - if (__c == '0' || __c == '1') - __tmp.push_back(__c); - else if (_Traits::eq_int_type(__buf->sputbackc(__c2), __eof)) { - __is.setstate(ios_base::failbit); - break; - } - } - } - - if (__tmp.empty()) - __is.setstate(ios_base::failbit); - else - __x._M_copy_from_string(__tmp, __STATIC_CAST(size_t,0), _Nb); - } - - return __is; -} - -template -wostream& _STLP_CALL -operator<<(wostream& __os, const bitset<_Nb>& __x) { - wstring __tmp; - __x._M_copy_to_string(__tmp); - return __os << __tmp; -} - -# endif /* _STLP_NO_WCHAR_T */ -# endif -#endif - -#endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */ - -#undef bitset - -_STLP_END_NAMESPACE - -#undef __BITS_PER_WORD -#undef __BITSET_WORDS - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_BITSET_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_bvector.h b/build/stlport/stlport/stl/_bvector.h deleted file mode 100644 index bf417f179c43..000000000000 --- a/build/stlport/stlport/stl/_bvector.h +++ /dev/null @@ -1,841 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_BVECTOR_H -#define _STLP_INTERNAL_BVECTOR_H - -#ifndef _STLP_INTERNAL_VECTOR_H -# include -#endif - -#define _STLP_WORD_BIT (int(CHAR_BIT * sizeof(unsigned int))) - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -struct _Bit_reference { - unsigned int* _M_p; - unsigned int _M_mask; - _Bit_reference(unsigned int* __x, unsigned int __y) - : _M_p(__x), _M_mask(__y) {} - -public: - _Bit_reference() : _M_p(0), _M_mask(0) {} - - operator bool() const { - return !(!(*_M_p & _M_mask)); - } - _Bit_reference& operator = (bool __x) { - if (__x) *_M_p |= _M_mask; - else *_M_p &= ~_M_mask; - return *this; - } - _Bit_reference& operator = (const _Bit_reference& __x) { - return *this = bool(__x); - } - bool operator == (const _Bit_reference& __x) const { - return bool(*this) == bool(__x); - } - bool operator < (const _Bit_reference& __x) const { - return !bool(*this) && bool(__x); - } - - _Bit_reference& operator |= (bool __x) { - if (__x) - *_M_p |= _M_mask; - return *this; - } - _Bit_reference& operator &= (bool __x) { - if (!__x) - *_M_p &= ~_M_mask; - return *this; - } - void flip() { *_M_p ^= _M_mask; } -}; - - -_STLP_MOVE_TO_STD_NAMESPACE - -inline void swap(_STLP_PRIV _Bit_reference& __x, _STLP_PRIV _Bit_reference& __y) { - bool __tmp = (bool)__x; - __x = __y; - __y = __tmp; -} - -// Might not be very useful but costs nothing! -_STLP_TEMPLATE_NULL -struct __type_traits<_STLP_PRIV _Bit_reference> { - typedef __false_type has_trivial_default_constructor; - typedef __true_type has_trivial_copy_constructor; - typedef __false_type has_trivial_assignment_operator; - typedef __true_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -struct _Bit_iterator_base { - typedef ptrdiff_t difference_type; - - unsigned int* _M_p; - unsigned int _M_offset; - - void _M_bump_up() { - if (_M_offset++ == _STLP_WORD_BIT - 1) { - _M_offset = 0; - ++_M_p; - } - } - - void _M_bump_down() { - if (_M_offset-- == 0) { - _M_offset = _STLP_WORD_BIT - 1; - --_M_p; - } - } - - _Bit_iterator_base() : _M_p(0), _M_offset(0) {} - _Bit_iterator_base(unsigned int* __x, unsigned int __y) : _M_p(__x), _M_offset(__y) {} -// see comment in doc/README.evc4 and doc/README.evc8 -#if defined(_MSC_VER) && _MSC_VER<=1401 && defined(MIPS) && defined(NDEBUG) - _Bit_iterator_base( const _Bit_iterator_base& __x) : _M_p(__x._M_p), _M_offset(__x._M_offset) {} -#endif - // _Bit_iterator_base& operator = ( const _Bit_iterator_base& __x) { _M_p = __x._M_p ; _M_offset = __x._M_offset ; return *this; } - - void _M_advance (difference_type __i) { - difference_type __n = __i + _M_offset; - _M_p += __n / _STLP_WORD_BIT; - __n = __n % _STLP_WORD_BIT; - if (__n < 0) { - _M_offset = (unsigned int) __n + _STLP_WORD_BIT; - --_M_p; - } else - _M_offset = (unsigned int) __n; - } - - difference_type _M_subtract(const _Bit_iterator_base& __x) const { - return _STLP_WORD_BIT * (_M_p - __x._M_p) + _M_offset - __x._M_offset; - } -}; - -inline bool _STLP_CALL operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { - return __y._M_p == __x._M_p && __y._M_offset == __x._M_offset; -} -inline bool _STLP_CALL operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { - return __y._M_p != __x._M_p || __y._M_offset != __x._M_offset; -} - -inline bool _STLP_CALL operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { - return __x._M_p < __y._M_p || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset); -} - -inline bool _STLP_CALL operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { - return operator <(__y , __x); -} -inline bool _STLP_CALL operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { - return !(__y < __x); -} -inline bool _STLP_CALL operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { - return !(__x < __y); -} - -template -struct _Bit_iter : public _Bit_iterator_base { - typedef _Ref reference; - typedef _Ptr pointer; - typedef _Bit_iter<_Ref, _Ptr> _Self; - typedef random_access_iterator_tag iterator_category; - typedef bool value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - - _Bit_iter(unsigned int* __x, unsigned int __y) : _Bit_iterator_base(__x, __y) {} - _Bit_iter() {} - - _Bit_iter(const _Bit_iter<_Bit_reference, _Bit_reference*>& __x): - _Bit_iterator_base((const _Bit_iterator_base&)__x) {} - - // _Self& operator = (const _Bit_iter<_Bit_reference, _Bit_reference*>& __x) - // { (_Bit_iterator_base&)*this = (const _Bit_iterator_base&)__x; return *this; } - - reference operator*() const { - return _Bit_reference(_M_p, 1UL << _M_offset); - } - _Self& operator++() { - _M_bump_up(); - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - _M_bump_up(); - return __tmp; - } - _Self& operator--() { - _M_bump_down(); - return *this; - } - _Self operator--(int) { - _Self __tmp = *this; - _M_bump_down(); - return __tmp; - } - _Self& operator+=(difference_type __i) { - _M_advance(__i); - return *this; - } - _Self& operator-=(difference_type __i) { - *this += -__i; - return *this; - } - _Self operator+(difference_type __i) const { - _Self __tmp = *this; - return __tmp += __i; - } - _Self operator-(difference_type __i) const { - _Self __tmp = *this; - return __tmp -= __i; - } - difference_type operator-(const _Self& __x) const { - return _M_subtract(__x); - } - reference operator[](difference_type __i) { return *(*this + __i); } -}; - -template -inline _Bit_iter<_Ref,_Ptr> _STLP_CALL -operator+(ptrdiff_t __n, const _Bit_iter<_Ref, _Ptr>& __x) { - return __x + __n; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct __type_traits< _STLP_PRIV _Bit_iter<_Ref, _Ptr> > { - typedef __false_type has_trivial_default_constructor; - typedef __true_type has_trivial_copy_constructor; - typedef __true_type has_trivial_assignment_operator; - typedef __true_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -inline random_access_iterator_tag iterator_category(const _STLP_PRIV _Bit_iterator_base&) -{ return random_access_iterator_tag(); } -inline ptrdiff_t* distance_type(const _STLP_PRIV _Bit_iterator_base&) -{ return (ptrdiff_t*)0; } -inline bool* value_type(const _STLP_PRIV _Bit_iter<_STLP_PRIV _Bit_reference, _STLP_PRIV _Bit_reference*>&) -{ return (bool*)0; } -inline bool* value_type(const _STLP_PRIV _Bit_iter&) -{ return (bool*)0; } -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -typedef _Bit_iter _Bit_const_iterator; -typedef _Bit_iter<_Bit_reference, _Bit_reference*> _Bit_iterator; - -// Bit-vector base class, which encapsulates the difference between -// old SGI-style allocators and standard-conforming allocators. -template -class _Bvector_base { - typedef _Bvector_base<_Alloc> _Self; -public: - _STLP_FORCE_ALLOCATORS(bool, _Alloc) - typedef _Alloc allocator_type; - typedef unsigned int __chunk_type; - typedef typename _Alloc_traits<__chunk_type, _Alloc>::allocator_type __chunk_allocator_type; - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR(__STATIC_CAST(const __chunk_allocator_type&, _M_end_of_storage), bool); } - - _Bvector_base(const allocator_type& __a) - : _M_start(), _M_finish(), _M_end_of_storage(_STLP_CONVERT_ALLOCATOR(__a, __chunk_type), - (__chunk_type*)0) - {} -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _Bvector_base(__move_source<_Self> src) - : _M_start(src.get()._M_start), _M_finish(src.get()._M_finish), - _M_end_of_storage(src.get()._M_end_of_storage) { - //Make the source destroyable - src.get()._M_start._M_p = 0; - } -#endif - - ~_Bvector_base() { - _M_deallocate(); - } - -protected: - - static size_t _M_bits_to_chunks(size_t __n_bits) - { return (__n_bits + _STLP_WORD_BIT - 1) / _STLP_WORD_BIT; } - - __chunk_type* _M_bit_alloc(size_t __n) - { return _M_end_of_storage.allocate(_M_bits_to_chunks(__n)); } - - void _M_deallocate() { - if (_M_start._M_p) - _M_end_of_storage.deallocate(_M_start._M_p, - _M_end_of_storage._M_data - _M_start._M_p); - } - - _Bit_iterator _M_start; - _Bit_iterator _M_finish; - _STLP_alloc_proxy<__chunk_type*, __chunk_type, __chunk_allocator_type> _M_end_of_storage; -}; - - -// The next few lines are confusing. What we're doing is declaring a -// partial specialization of vector if we have the necessary -// compiler support. Otherwise, we define a class bit_vector which uses -// the default allocator. - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_BOOL) && !defined (__SUNPRO_CC) -# define _STLP_VECBOOL_TEMPLATE -# define __BVEC_TMPL_HEADER template -#else -# undef _STLP_VECBOOL_TEMPLATE -# ifdef _STLP_NO_BOOL -# define __BVEC_TMPL_HEADER -# else -# define __BVEC_TMPL_HEADER _STLP_TEMPLATE_NULL -# endif -# define _Alloc allocator -#endif - -#if defined (_STLP_DEBUG) -# define vector _STLP_NON_DBG_NAME(vector) -#endif - -#ifdef _STLP_NO_BOOL -# define __BVECTOR_QUALIFIED bit_vector -# define __BVECTOR bit_vector -#else -# ifdef _STLP_VECBOOL_TEMPLATE -# define __BVECTOR_QUALIFIED vector -# else -# define __BVECTOR_QUALIFIED vector > -# endif -# if defined (_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS) -# define __BVECTOR __BVECTOR_QUALIFIED -# else -# define __BVECTOR vector -# endif -#endif - -#if !defined (_STLP_DEBUG) || defined (_STLP_NO_BOOL) -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -__BVEC_TMPL_HEADER -class __BVECTOR_QUALIFIED : public _STLP_PRIV _Bvector_base<_Alloc > -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_DEBUG) - , public __stlport_class< __BVECTOR_QUALIFIED > -#endif -{ - typedef _STLP_PRIV _Bvector_base<_Alloc > _Base; - typedef __BVECTOR_QUALIFIED _Self; -public: - typedef bool value_type; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef _STLP_PRIV _Bit_reference reference; - typedef bool const_reference; - typedef _STLP_PRIV _Bit_reference* pointer; - typedef const bool* const_pointer; - typedef random_access_iterator_tag _Iterator_category; - - typedef _STLP_PRIV _Bit_iterator iterator; - typedef _STLP_PRIV _Bit_const_iterator const_iterator; - - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - -#ifdef _STLP_VECBOOL_TEMPLATE - typedef _STLP_TYPENAME _STLP_PRIV _Bvector_base<_Alloc >::allocator_type allocator_type; - typedef _STLP_TYPENAME _STLP_PRIV _Bvector_base<_Alloc >::__chunk_type __chunk_type; -#else - typedef _STLP_PRIV _Bvector_base<_Alloc >::allocator_type allocator_type; - typedef _STLP_PRIV _Bvector_base<_Alloc >::__chunk_type __chunk_type; -#endif - -protected: - - void _M_initialize(size_type __n) { - __chunk_type* __q = this->_M_bit_alloc(__n); - this->_M_end_of_storage._M_data = __q + _Base::_M_bits_to_chunks(__n); - this->_M_start = iterator(__q, 0); - this->_M_finish = this->_M_start + difference_type(__n); - } - void _M_insert_aux(iterator __position, bool __x) { - if (this->_M_finish._M_p != this->_M_end_of_storage._M_data) { - _STLP_PRIV __copy_backward(__position, this->_M_finish, this->_M_finish + 1, - random_access_iterator_tag(), (difference_type*)0 ); - *__position = __x; - ++this->_M_finish; - } - else { - size_type __len = size() ? 2 * size() : _STLP_WORD_BIT; - __chunk_type* __q = this->_M_bit_alloc(__len); - iterator __i = _STLP_STD::copy(begin(), __position, iterator(__q, 0)); - *__i++ = __x; - this->_M_finish = _STLP_STD::copy(__position, end(), __i); - this->_M_deallocate(); - this->_M_end_of_storage._M_data = __q + _Base::_M_bits_to_chunks(__len); - this->_M_start = iterator(__q, 0); - } - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_initialize_range(_InputIterator __first, _InputIterator __last, - const input_iterator_tag &) { - this->_M_start = iterator(); - this->_M_finish = iterator(); - this->_M_end_of_storage._M_data = 0; - for ( ; __first != __last; ++__first) - push_back(*__first); - } - - template - void _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, - const forward_iterator_tag &) { - size_type __n = _STLP_STD::distance(__first, __last); - _M_initialize(__n); - _STLP_STD::copy(__first, __last, this->_M_start); - } - - template - void _M_insert_range(iterator __pos, - _InputIterator __first, _InputIterator __last, - const input_iterator_tag &) { - for ( ; __first != __last; ++__first) { - __pos = insert(__pos, *__first); - ++__pos; - } - } - - template - void _M_insert_range(iterator __position, - _ForwardIterator __first, _ForwardIterator __last, - const forward_iterator_tag &) { - if (__first != __last) { - size_type __n = _STLP_STD::distance(__first, __last); - if (capacity() - size() >= __n) { - _STLP_PRIV __copy_backward(__position, end(), this->_M_finish + difference_type(__n), - random_access_iterator_tag(), (difference_type*)0 ); - _STLP_STD::copy(__first, __last, __position); - this->_M_finish += difference_type(__n); - } - else { - size_type __len = size() + (max)(size(), __n); - __chunk_type* __q = this->_M_bit_alloc(__len); - iterator __i = _STLP_STD::copy(begin(), __position, iterator(__q, 0)); - __i = _STLP_STD::copy(__first, __last, __i); - this->_M_finish = _STLP_STD::copy(__position, end(), __i); - this->_M_deallocate(); - this->_M_end_of_storage._M_data = __q + _Base::_M_bits_to_chunks(__len); - this->_M_start = iterator(__q, 0); - } - } - } - -#endif /* _STLP_MEMBER_TEMPLATES */ - -public: - iterator begin() { return this->_M_start; } - const_iterator begin() const { return this->_M_start; } - iterator end() { return this->_M_finish; } - const_iterator end() const { return this->_M_finish; } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { - return const_reverse_iterator(end()); - } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { - return const_reverse_iterator(begin()); - } - - size_type size() const { return size_type(end() - begin()); } - size_type max_size() const { return size_type(-1); } - size_type capacity() const { - return size_type(const_iterator(this->_M_end_of_storage._M_data, 0) - begin()); - } - bool empty() const { return begin() == end(); } - reference operator[](size_type __n) - { return *(begin() + difference_type(__n)); } - const_reference operator[](size_type __n) const - { return *(begin() + difference_type(__n)); } - - void _M_range_check(size_type __n) const { - if (__n >= this->size()) - __stl_throw_range_error("vector"); - } - - reference at(size_type __n) - { _M_range_check(__n); return (*this)[__n]; } - const_reference at(size_type __n) const - { _M_range_check(__n); return (*this)[__n]; } - - explicit __BVECTOR(const allocator_type& __a = allocator_type()) - : _STLP_PRIV _Bvector_base<_Alloc >(__a) {} - - __BVECTOR(size_type __n, bool __val, - const allocator_type& __a = allocator_type()) - : _STLP_PRIV _Bvector_base<_Alloc >(__a) { - _M_initialize(__n); - fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __val ? ~0 : 0); - } - - explicit __BVECTOR(size_type __n) - : _STLP_PRIV _Bvector_base<_Alloc >(allocator_type()) { - _M_initialize(__n); - fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), 0); - } - - __BVECTOR(const _Self& __x) - : _STLP_PRIV _Bvector_base<_Alloc >(__x.get_allocator()) { - _M_initialize(__x.size()); - _STLP_STD::copy(__x.begin(), __x.end(), this->_M_start); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_initialize_dispatch(_Integer __n, _Integer __x, const __true_type&) { - _M_initialize(__n); - fill(this->_M_start._M_p, this->_M_end_of_storage._M_data, __x ? ~0 : 0); - } - - template - void _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_initialize_range(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator)); - } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - // Check whether it's an integral type. If so, it's not an iterator. - template - __BVECTOR(_InputIterator __first, _InputIterator __last) - : _STLP_PRIV _Bvector_base<_Alloc >(allocator_type()) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_dispatch(__first, __last, _Integral()); - } -# endif - template - __BVECTOR(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _STLP_PRIV _Bvector_base<_Alloc >(__a) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_dispatch(__first, __last, _Integral()); - } -#else /* _STLP_MEMBER_TEMPLATES */ - __BVECTOR(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type()) - : _STLP_PRIV _Bvector_base<_Alloc >(__a) { - size_type __n = _STLP_STD::distance(__first, __last); - _M_initialize(__n); - _STLP_STD::copy(__first, __last, this->_M_start); - } - __BVECTOR(const bool* __first, const bool* __last, - const allocator_type& __a = allocator_type()) - : _STLP_PRIV _Bvector_base<_Alloc >(__a) { - size_type __n = _STLP_STD::distance(__first, __last); - _M_initialize(__n); - _STLP_STD::copy(__first, __last, this->_M_start); - } -#endif /* _STLP_MEMBER_TEMPLATES */ - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - __BVECTOR(__move_source<_Self> src) - : _STLP_PRIV _Bvector_base<_Alloc >(__move_source<_Base>(src.get())) {} -#endif - - ~__BVECTOR() {} - - __BVECTOR_QUALIFIED& operator=(const __BVECTOR_QUALIFIED& __x) { - if (&__x == this) return *this; - if (__x.size() > capacity()) { - this->_M_deallocate(); - _M_initialize(__x.size()); - } - _STLP_STD::copy(__x.begin(), __x.end(), begin()); - this->_M_finish = begin() + difference_type(__x.size()); - return *this; - } - - // assign(), a generalized assignment member function. Two - // versions: one that takes a count, and one that takes a range. - // The range version is a member template, so we dispatch on whether - // or not the type is an integer. - - void _M_fill_assign(size_t __n, bool __x) { - if (__n > size()) { - fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __x ? ~0 : 0); - insert(end(), __n - size(), __x); - } - else { - erase(begin() + __n, end()); - fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __x ? ~0 : 0); - } - } - void assign(size_t __n, bool __x) { _M_fill_assign(__n, __x); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - - template - void _M_assign_dispatch(_Integer __n, _Integer __val, const __true_type&) - { _M_fill_assign((size_t) __n, (bool) __val); } - - template - void _M_assign_dispatch(_InputIter __first, _InputIter __last, const __false_type&) - { _M_assign_aux(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); } - - template - void _M_assign_aux(_InputIterator __first, _InputIterator __last, - const input_iterator_tag &) { - iterator __cur = begin(); - for ( ; __first != __last && __cur != end(); ++__cur, ++__first) - *__cur = *__first; - if (__first == __last) - erase(__cur, end()); - else - insert(end(), __first, __last); - } - - template - void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, - const forward_iterator_tag &) { - size_type __len = _STLP_STD::distance(__first, __last); - if (__len < size()) - erase(_STLP_STD::copy(__first, __last, begin()), end()); - else { - _ForwardIterator __mid = __first; - _STLP_STD::advance(__mid, size()); - _STLP_STD::copy(__first, __mid, begin()); - insert(end(), __mid, __last); - } - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - void reserve(size_type __n) { - if (capacity() < __n) { - if (max_size() < __n) - __stl_throw_length_error("vector"); - __chunk_type* __q = this->_M_bit_alloc(__n); - _STLP_PRIV _Bit_iterator __z(__q, 0); - this->_M_finish = _STLP_STD::copy(begin(), end(), __z); - this->_M_deallocate(); - this->_M_start = iterator(__q, 0); - this->_M_end_of_storage._M_data = __q + _Base::_M_bits_to_chunks(__n); - } - } - - reference front() { return *begin(); } - const_reference front() const { return *begin(); } - reference back() { return *(end() - 1); } - const_reference back() const { return *(end() - 1); } - void push_back(bool __x) { - if (this->_M_finish._M_p != this->_M_end_of_storage._M_data) { - *(this->_M_finish) = __x; - ++this->_M_finish; - } - else - _M_insert_aux(end(), __x); - } - void swap(__BVECTOR_QUALIFIED& __x) { - _STLP_STD::swap(this->_M_start, __x._M_start); - _STLP_STD::swap(this->_M_finish, __x._M_finish); - this->_M_end_of_storage.swap(__x._M_end_of_storage); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(__BVECTOR_QUALIFIED& __x) { swap(__x); } -#endif - - iterator insert(iterator __position, bool __x = bool()) { - difference_type __n = __position - begin(); - if (this->_M_finish._M_p != this->_M_end_of_storage._M_data && __position == end()) { - *(this->_M_finish) = __x; - ++this->_M_finish; - } - else - _M_insert_aux(__position, __x); - return begin() + __n; - } - -#if defined (_STLP_MEMBER_TEMPLATES) - - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - const __true_type&) { - _M_fill_insert(__pos, (size_type) __n, (bool) __x); - } - - template - void _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_insert_range(__pos, __first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator)); - } - - // Check whether it's an integral type. If so, it's not an iterator. - template - void insert(iterator __position, - _InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_insert_dispatch(__position, __first, __last, _Integral()); - } -#else /* _STLP_MEMBER_TEMPLATES */ - void insert(iterator __position, - const_iterator __first, const_iterator __last) { - if (__first == __last) return; - size_type __n = _STLP_STD::distance(__first, __last); - if (capacity() - size() >= __n) { - _STLP_PRIV __copy_backward(__position, end(), this->_M_finish + __n, - random_access_iterator_tag(), (difference_type*)0 ); - _STLP_STD::copy(__first, __last, __position); - this->_M_finish += __n; - } - else { - size_type __len = size() + (max)(size(), __n); - __chunk_type* __q = this->_M_bit_alloc(__len); - iterator __i = _STLP_STD::copy(begin(), __position, iterator(__q, 0)); - __i = _STLP_STD::copy(__first, __last, __i); - this->_M_finish = _STLP_STD::copy(__position, end(), __i); - this->_M_deallocate(); - this->_M_end_of_storage._M_data = __q + _Base::_M_bits_to_chunks(__len); - this->_M_start = iterator(__q, 0); - } - } - - void insert(iterator __position, const bool* __first, const bool* __last) { - if (__first == __last) return; - size_type __n = _STLP_STD::distance(__first, __last); - if (capacity() - size() >= __n) { - _STLP_PRIV __copy_backward(__position, end(), this->_M_finish + __n, - random_access_iterator_tag(), (difference_type*)0 ); - _STLP_STD::copy(__first, __last, __position); - this->_M_finish += __n; - } - else { - size_type __len = size() + (max)(size(), __n); - __chunk_type* __q = this->_M_bit_alloc(__len); - iterator __i = _STLP_STD::copy(begin(), __position, iterator(__q, 0)); - __i = _STLP_STD::copy(__first, __last, __i); - this->_M_finish = _STLP_STD::copy(__position, end(), __i); - this->_M_deallocate(); - this->_M_end_of_storage._M_data = __q + _Base::_M_bits_to_chunks(__len); - this->_M_start = iterator(__q, 0); - } - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - void _M_fill_insert(iterator __position, size_type __n, bool __x) { - if (__n == 0) return; - if (capacity() - size() >= __n) { - _STLP_PRIV __copy_backward(__position, end(), this->_M_finish + difference_type(__n), - random_access_iterator_tag(), (difference_type*)0 ); - fill(__position, __position + difference_type(__n), __x); - this->_M_finish += difference_type(__n); - } - else { - size_type __len = size() + (max)(size(), __n); - __chunk_type* __q = this->_M_bit_alloc(__len); - iterator __i = _STLP_STD::copy(begin(), __position, iterator(__q, 0)); - fill_n(__i, __n, __x); - this->_M_finish = _STLP_STD::copy(__position, end(), __i + difference_type(__n)); - this->_M_deallocate(); - this->_M_end_of_storage._M_data = __q + _Base::_M_bits_to_chunks(__len); - this->_M_start = iterator(__q, 0); - } - } - - void insert(iterator __position, size_type __n, bool __x) { - _M_fill_insert(__position, __n, __x); - } - - void pop_back() { - --this->_M_finish; - } - iterator erase(iterator __position) { - if (__position + 1 != end()) - _STLP_STD::copy(__position + 1, end(), __position); - --this->_M_finish; - return __position; - } - iterator erase(iterator __first, iterator __last) { - this->_M_finish = _STLP_STD::copy(__last, end(), __first); - return __first; - } - void resize(size_type __new_size, bool __x = bool()) { - if (__new_size < size()) - erase(begin() + difference_type(__new_size), end()); - else - insert(end(), __new_size - size(), __x); - } - void flip() { - for (__chunk_type* __p = this->_M_start._M_p; __p != this->_M_end_of_storage._M_data; ++__p) - *__p = ~*__p; - } - - void clear() { erase(begin(), end()); } -}; - -#if defined (_STLP_NO_BOOL) || defined (__HP_aCC) // fixed soon (03/17/2000) -# define _STLP_TEMPLATE_HEADER __BVEC_TMPL_HEADER -# define _STLP_TEMPLATE_CONTAINER __BVECTOR_QUALIFIED -# include -# undef _STLP_TEMPLATE_CONTAINER -# undef _STLP_TEMPLATE_HEADER -#endif /* NO_BOOL */ - -#if defined (_STLP_DEBUG) && !defined (_STLP_NO_BOOL) -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#undef vector -#undef _Alloc -#undef _STLP_VECBOOL_TEMPLATE -#undef __BVECTOR -#undef __BVECTOR_QUALIFIED -#undef __BVEC_TMPL_HEADER - -#undef _STLP_WORD_BIT - -#endif /* _STLP_INTERNAL_BVECTOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_carray.h b/build/stlport/stlport/stl/_carray.h deleted file mode 100644 index 560bab2957e0..000000000000 --- a/build/stlport/stlport/stl/_carray.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2005 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_CARRAY_H -#define _STLP_CARRAY_H - -/* Purpose: Mimic a pur C array with the additionnal feature of - * being able to be used with type not default constructible. - */ - -#ifndef _STLP_INTERNAL_CONSTRUCT_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _CArray { - _CArray (const _Tp& __val) { - for (size_t __i = 0; __i < _Nb; ++__i) { - _Copy_Construct(__REINTERPRET_CAST(_Tp*, _M_data + __i * sizeof(_Tp)), __val); - } - } - - ~_CArray() { - _Destroy_Range(__REINTERPRET_CAST(_Tp*, _M_data + 0), - __REINTERPRET_CAST(_Tp*, _M_data + _Nb * sizeof(_Tp))); - } - - _Tp& operator [] (size_t __i) { - _STLP_ASSERT(__i < _Nb) - return *__REINTERPRET_CAST(_Tp*, _M_data + __i * sizeof(_Tp)); - } - -private: - char _M_data[sizeof(_Tp) * _Nb]; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif //_STLP_CARRAY_H diff --git a/build/stlport/stlport/stl/_cctype.h b/build/stlport/stlport/stl/_cctype.h deleted file mode 100644 index cf82524ae2eb..000000000000 --- a/build/stlport/stlport/stl/_cctype.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CCTYPE -#define _STLP_INTERNAL_CCTYPE - -#if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cctype) -# endif -#else -# include -#endif /* _STLP_USE_NEW_C_HEADERS */ - -#if ! defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -# if defined ( _STLP_IMPORT_VENDOR_CSTD ) -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::isalnum; -using _STLP_VENDOR_CSTD::isalpha; -using _STLP_VENDOR_CSTD::iscntrl; -using _STLP_VENDOR_CSTD::isdigit; -using _STLP_VENDOR_CSTD::isgraph; -using _STLP_VENDOR_CSTD::islower; -using _STLP_VENDOR_CSTD::isprint; -using _STLP_VENDOR_CSTD::ispunct; -using _STLP_VENDOR_CSTD::isspace; -using _STLP_VENDOR_CSTD::isupper; -using _STLP_VENDOR_CSTD::isxdigit; -using _STLP_VENDOR_CSTD::tolower; -using _STLP_VENDOR_CSTD::toupper; -_STLP_END_NAMESPACE -# endif /* _STLP_IMPORT_VENDOR_CSTD*/ -#endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */ - -#endif diff --git a/build/stlport/stlport/stl/_clocale.h b/build/stlport/stlport/stl/_clocale.h deleted file mode 100644 index 2dcf39a753cb..000000000000 --- a/build/stlport/stlport/stl/_clocale.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CLOCALE -#define _STLP_INTERNAL_CLOCALE - -#if !defined (_STLP_WCE_EVC3) - -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(clocale) -# endif -# else -# include -# endif - -# if defined (_STLP_IMPORT_VENDOR_CSTD) -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::lconv; -# if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) && !defined(__ANDROID__) -using _STLP_VENDOR_CSTD::localeconv; -using _STLP_VENDOR_CSTD::setlocale; -# endif -_STLP_END_NAMESPACE -# endif - -#endif /* !_STLP_WCE_EVC3 */ - -#endif diff --git a/build/stlport/stlport/stl/_cmath.h b/build/stlport/stlport/stl/_cmath.h deleted file mode 100644 index 771c27d482dd..000000000000 --- a/build/stlport/stlport/stl/_cmath.h +++ /dev/null @@ -1,605 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CMATH -#define _STLP_INTERNAL_CMATH - -/* gcc do not like when a using directive appear after a function - * declaration. cmath have abs overloads and cstdlib a using directive - * so cstdlib has to be included first. - */ -#if defined (__GNUC__) && defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstdlib) -# endif -#endif - -#if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_NO_NAMESPACES) && !defined (exception) -# define exception __math_exception -# endif -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cmath) -# endif -# if defined (_STLP_HAS_NO_NAMESPACES) -# undef exception -# endif -#else -# include -#endif - -#if (defined (__SUNPRO_CC) && (__SUNPRO_CC > 0x500)) || \ - !(defined (__IBMCPP__) && (__IBMCPP__ >= 500) || !(defined(__HP_aCC) && (__HP_aCC >= 30000) )) -# if !defined(_STLP_HAS_NO_NAMESPACES) && !defined(__SUNPRO_CC) -// All the other hypot stuff is going to be at file scope, so follow along here. -namespace std { -# endif -extern "C" double hypot(double x, double y); -# if !defined(_STLP_HAS_NO_NAMESPACES) && !defined(__SUNPRO_CC) -} -# endif - -#endif - -#if defined (__sun) && defined (__GNUC__) -extern "C" { - float __cosf(float v); - float __sinf(float v); - float __atan2f(float, float); - float __coshf(float v); - float __sinhf(float v); - float __sqrtf(float v); - float __expf(float v); - float __logf(float v); - float __log10f(float v); - - long double __cosl(long double v); - long double __sinl(long double v); - long double __atan2l(long double, long double); - long double __coshl(long double v); - long double __sinhl(long double v); - long double __sqrtl(long double v); - long double __expl(long double v); - long double __logl(long double v); - long double __log10l(long double v); -} - -extern "C" { - inline float cosf(float v) { return __cosf(v); } - inline float sinf(float v) { return __sinf(v); } - inline float atan2f(float v1, float v2) { return __atan2f(v1,v2); } - inline float coshf(float v) { return __coshf(v); } - inline float sinhf(float v) { return __sinhf(v); } - inline float sqrtf(float v) { return __sqrtf(v); } - inline float expf(float v) { return __expf(v); } - inline float logf(float v) { return __logf(v); } - inline float log10f(float v) { return __log10f(v); } - - inline long double cosl(long double v) { return __cosl(v); } - inline long double sinl(long double v) { return __sinl(v); } - inline long double atan2l(long double v1, long double v2) { return __atan2l(v1,v2); } - inline long double coshl(long double v) { return __coshl(v); } - inline long double sinhl(long double v) { return __sinhl(v); } - inline long double sqrtl(long double v) { return __sqrtl(v); } - inline long double expl(long double v) { return __expl(v); } - inline long double logl(long double v) { return __logl(v); } - inline long double log10l(long double v) { return __log10l(v); } -} -#endif // __sun && __GNUC__ - -#if defined (__sun) -extern "C" { -extern float __acosf(float); -extern float __asinf(float); -extern float __atanf(float); -extern float __atan2f(float, float); -extern float __ceilf(float); -extern float __cosf(float); -extern float __coshf(float); -extern float __expf(float); -extern float __fabsf(float); -extern float __floorf(float); -extern float __fmodf(float, float); -extern float __frexpf(float, int *); -extern float __ldexpf(float, int); -extern float __logf(float); -extern float __log10f(float); -extern float __modff(float, float *); -extern float __powf(float, float); -extern float __sinf(float); -extern float __sinhf(float); -extern float __sqrtf(float); -extern float __tanf(float); -extern float __tanhf(float); - -extern long double __acosl(long double); -extern long double __asinl(long double); -extern long double __atanl(long double); -extern long double __atan2l(long double, long double); -extern long double __ceill(long double); -extern long double __cosl(long double); -extern long double __coshl(long double); -extern long double __expl(long double); -extern long double __fabsl(long double); -extern long double __floorl(long double); -extern long double __fmodl(long double, long double); -extern long double __frexpl(long double, int *); -extern long double __ldexpl(long double, int); -extern long double __logl(long double); -extern long double __log10l(long double); -extern long double __modfl(long double, long double *); -extern long double __powl(long double, long double); -extern long double __sinl(long double); -extern long double __sinhl(long double); -extern long double __sqrtl(long double); -extern long double __tanl(long double); -extern long double __tanhl(long double); -} -#endif - -#if defined (__BORLANDC__) -# define _STLP_CMATH_FUNC_NAMESPACE _STLP_VENDOR_CSTD -#else -# define _STLP_CMATH_FUNC_NAMESPACE -#endif - -#if !defined (__sun) || defined (__GNUC__) -# define _STLP_MATH_INLINE(float_type, func, cfunc) \ - inline float_type func (float_type x) { return _STLP_CMATH_FUNC_NAMESPACE::cfunc(x); } -# define _STLP_MATH_INLINE2(float_type, type, func, cfunc) \ - inline float_type func (float_type x, type y) { return _STLP_CMATH_FUNC_NAMESPACE::cfunc(x, y); } -# define _STLP_MATH_INLINE_D(float_type, func, cfunc) -# define _STLP_MATH_INLINE2_D(float_type, type, func, cfunc) -#else -# ifdef __SUNPRO_CC -# define _STLP_MATH_INLINE(float_type, func, cfunc) \ - inline float_type func (float_type x) { return _STLP_VENDOR_CSTD::__##cfunc(x); } -# define _STLP_MATH_INLINE_D(float_type, func, cfunc) \ - inline float_type func (float_type x) { return _STLP_VENDOR_CSTD::cfunc(x); } -# define _STLP_MATH_INLINE2(float_type, type, func, cfunc) \ - inline float_type func (float_type x, type y) { return _STLP_VENDOR_CSTD::__##cfunc(x,y); } -# define _STLP_MATH_INLINE2_D(float_type, type, func, cfunc) \ - inline float_type func (float_type x, type y) { return _STLP_VENDOR_CSTD::cfunc(x,y); } -# else -# error Unknown compiler for the Sun platform -# endif -#endif - -/** macros to define math functions -These macros (having an X somewhere in the name) forward to the C library's -double functions but cast the arguments and return values to the given type. */ - -#define _STLP_MATH_INLINEX(__type,func,cfunc) \ - inline __type func (__type x) \ - { return __STATIC_CAST(__type, _STLP_CMATH_FUNC_NAMESPACE::cfunc((double)x)); } -#define _STLP_MATH_INLINE2X(__type1,__type2,func,cfunc) \ - inline __type1 func (__type1 x, __type2 y) \ - { return __STATIC_CAST(__type1, _STLP_CMATH_FUNC_NAMESPACE::cfunc((double)x, y)); } -#define _STLP_MATH_INLINE2PX(__type,func,cfunc) \ - inline __type func (__type x, __type *y) { \ - double tmp1, tmp2; \ - tmp1 = _STLP_CMATH_FUNC_NAMESPACE::cfunc(__STATIC_CAST(double, x), &tmp2); \ - *y = __STATIC_CAST(__type, tmp2); \ - return __STATIC_CAST(__type, tmp1); \ - } -#define _STLP_MATH_INLINE2XX(__type,func,cfunc) \ - inline __type func (__type x, __type y) \ - { return __STATIC_CAST(__type, _STLP_CMATH_FUNC_NAMESPACE::cfunc((double)x, (double)y)); } - - -/** rough characterization of compiler and native C library -For the compiler, it can either support long double or not. If it doesn't, the -macro _STLP_NO_LONG_DOUBLE is defined and we don't define any long double -overloads. -For the native C library the question is whether it has variants with an 'f' -suffix (for float as opposed to double) or an 'l' suffix (for long double). If -the float variants are missing, _STLP_NO_VENDOR_MATH_F is defined, when the -long double variants are missing, _STLP_NO_VENDOR_MATH_L is defined. Of course -the latter doesn't make sense anyway when the compiler already has no long -double support. - -Those two traits determine a) which overloads get defined and b) how they are -defined. - -Meaning of suffixes: -"" : function returning and taking a float_type -"2" : function returning a float_type and taking to float_types -"2P" : function returning a float_type and taking a float_type and a float_type* -"2PI": function returning a float_type and taking a float_type and an int* -"2I" : function returning a float_type and taking a float_Type and an int -*/ - -#if !defined (_STLP_NO_LONG_DOUBLE) && !defined (_STLP_NO_VENDOR_MATH_L) && !defined (_STLP_NO_VENDOR_MATH_F) - // long double support and both e.g. sinl(long double) and sinf(float) - // This is the default for a correct and complete native library. -# define _STLP_DEF_MATH_INLINE(func,cf) \ - _STLP_MATH_INLINE(float,func,cf##f) \ - _STLP_MATH_INLINE_D(double,func,cf) \ - _STLP_MATH_INLINE(long double,func,cf##l) -# define _STLP_DEF_MATH_INLINE2(func,cf) \ - _STLP_MATH_INLINE2(float,float,func,cf##f) \ - _STLP_MATH_INLINE2_D(double,double,func,cf) \ - _STLP_MATH_INLINE2(long double,long double,func,cf##l) -# define _STLP_DEF_MATH_INLINE2P(func,cf) \ - _STLP_MATH_INLINE2(float,float *,func,cf##f) \ - _STLP_MATH_INLINE2_D(double,double *,func,cf) \ - _STLP_MATH_INLINE2(long double,long double *,func,cf##l) -# define _STLP_DEF_MATH_INLINE2PI(func,cf) \ - _STLP_MATH_INLINE2(float,int *,func,cf##f) \ - _STLP_MATH_INLINE2_D(double,int *,func,cf) \ - _STLP_MATH_INLINE2(long double,int *,func,cf##l) -# define _STLP_DEF_MATH_INLINE2I(func,cf) \ - _STLP_MATH_INLINE2(float,int,func,cf##f) \ - _STLP_MATH_INLINE2_D(double,int,func,cf) \ - _STLP_MATH_INLINE2(long double,int,func,cf##l) -#else -# if !defined (_STLP_NO_LONG_DOUBLE) -# if !defined (_STLP_NO_VENDOR_MATH_F) - // long double support and e.g. sinf(float) but not e.g. sinl(long double) -# define _STLP_DEF_MATH_INLINE(func,cf) \ - _STLP_MATH_INLINE(float,func,cf##f) \ - _STLP_MATH_INLINEX(long double,func,cf) -# define _STLP_DEF_MATH_INLINE2(func,cf) \ - _STLP_MATH_INLINE2(float,float,func,cf##f) \ - _STLP_MATH_INLINE2XX(long double,func,cf) -# define _STLP_DEF_MATH_INLINE2P(func,cf) \ - _STLP_MATH_INLINE2(float,float *,func,cf##f) \ - _STLP_MATH_INLINE2PX(long double,func,cf) -# define _STLP_DEF_MATH_INLINE2PI(func,cf) \ - _STLP_MATH_INLINE2(float,int *,func,cf##f) \ - _STLP_MATH_INLINE2X(long double,int *,func,cf) -# define _STLP_DEF_MATH_INLINE2I(func,cf) \ - _STLP_MATH_INLINE2(float,int,func,cf##f) \ - _STLP_MATH_INLINE2X(long double,int,func,cf) -# elif !defined (_STLP_NO_VENDOR_MATH_L) - // long double support and e.g. sinl(long double) but not e.g. sinf(float) -# define _STLP_DEF_MATH_INLINE(func,cf) \ - _STLP_MATH_INLINEX(float,func,cf) \ - _STLP_MATH_INLINE(long double,func,cf##l) -# define _STLP_DEF_MATH_INLINE2(func,cf) \ - _STLP_MATH_INLINE2XX(float,func,cf) \ - _STLP_MATH_INLINE2(long double,long double,func,cf##l) -# define _STLP_DEF_MATH_INLINE2P(func,cf) \ - _STLP_MATH_INLINE2PX(float,func,cf) \ - _STLP_MATH_INLINE2(long double,long double *,func,cf##l) -# define _STLP_DEF_MATH_INLINE2PI(func,cf) \ - _STLP_MATH_INLINE2X(float,int *,func,cf) \ - _STLP_MATH_INLINE2(long double,int *,func,cf##l) -# define _STLP_DEF_MATH_INLINE2I(func,cf) \ - _STLP_MATH_INLINE2X(float,int,func,cf) \ - _STLP_MATH_INLINE2(long double,int,func,cf##l) -# else -# define _STLP_DEF_MATH_INLINE(func,cf) \ - _STLP_MATH_INLINEX(float,func,cf) \ - _STLP_MATH_INLINEX(long double,func,cf) -# define _STLP_DEF_MATH_INLINE2(func,cf) \ - _STLP_MATH_INLINE2XX(float,func,cf) \ - _STLP_MATH_INLINE2XX(long double,func,cf) -# define _STLP_DEF_MATH_INLINE2P(func,cf) \ - _STLP_MATH_INLINE2PX(float,func,cf) \ - _STLP_MATH_INLINE2PX(long double,func,cf) -# define _STLP_DEF_MATH_INLINE2PI(func,cf) \ - _STLP_MATH_INLINE2X(float,int *,func,cf) \ - _STLP_MATH_INLINE2X(long double,int *,func,cf) -# define _STLP_DEF_MATH_INLINE2I(func,cf) \ - _STLP_MATH_INLINE2X(float,int,func,cf) \ - _STLP_MATH_INLINE2X(long double,int,func,cf) -# endif -# else -# if !defined (_STLP_NO_VENDOR_MATH_F) -# define _STLP_DEF_MATH_INLINE(func,cf) \ - _STLP_MATH_INLINE(float,func,cf##f) -# define _STLP_DEF_MATH_INLINE2(func,cf) \ - _STLP_MATH_INLINE2(float,float,func,cf##f) -# define _STLP_DEF_MATH_INLINE2P(func,cf) \ - _STLP_MATH_INLINE2(float,float *,func,cf##f) -# define _STLP_DEF_MATH_INLINE2PI(func,cf) \ - _STLP_MATH_INLINE2(float,int *,func,cf##f) -# define _STLP_DEF_MATH_INLINE2I(func,cf) \ - _STLP_MATH_INLINE2(float,int,func,cf##f) -# else // _STLP_NO_VENDOR_MATH_F - // neither long double support nor e.g. sinf(float) functions -# define _STLP_DEF_MATH_INLINE(func,cf) \ - _STLP_MATH_INLINEX(float,func,cf) -# define _STLP_DEF_MATH_INLINE2(func,cf) \ - _STLP_MATH_INLINE2XX(float,func,cf) -# define _STLP_DEF_MATH_INLINE2P(func,cf) \ - _STLP_MATH_INLINE2PX(float,func,cf) -# define _STLP_DEF_MATH_INLINE2PI(func,cf) \ - _STLP_MATH_INLINE2X(float,int *,func,cf) -# define _STLP_DEF_MATH_INLINE2I(func,cf) \ - _STLP_MATH_INLINE2X(float,int,func,cf) -# endif // _STLP_NO_VENDOR_MATH_F -# endif -#endif - -#if defined (_STLP_WCE) || \ - (defined(_STLP_MSVC) && (_STLP_MSVC <= 1300) && defined (_MSC_EXTENSIONS) /* && !defined(_STLP_WCE_NET) */) -/* - * dums: VC6 has all the required C++ functions but only define them if - * _MSC_EXTENSIONS is not defined (a bug?). STLport just do the same - * thing also when _MSC_EXTENSIONS is defined. - * TODO: above check (_STLP_MSVC <= 1300) also catches VC7.0, is that intended? - */ -//We have to tell the compilers that abs, acos ... math functions are not intrinsic -//otherwise we have Internal Compiler Error in release mode... -# pragma warning(push) -# pragma warning(disable: 4162) // no function with C linkage found -# pragma warning(disable: 4163) // not available as an intrinsic function -# pragma function (abs, acos, asin, atan, atan2, cos, cosh, exp, fabs, fmod, log, log10, sin, sinh, sqrt, tan, tanh) -# if defined (_STLP_WCE) -# pragma function (ceil, floor) -# endif -# define _STLP_RESTORE_FUNCTION_INTRINSIC -#endif // _STLP_MSVC && _STLP_MSVC <= 1300 && !_STLP_WCE && _MSC_EXTENSIONS - -#if (defined (__BORLANDC__) || defined (__WATCOMC__)) && defined (_STLP_USE_NEW_C_HEADERS) -/* In this config Borland native lib only define functions in std namespace. - * In order to have all overloads in STLport namespace we need to add the - * double overload in global namespace. We do not use a using statement to avoid - * import of invalid overload. - */ -# define _STLP_DMATH_INLINE(func) _STLP_MATH_INLINE(double, func, func) -# define _STLP_DMATH_INLINE2(func) _STLP_MATH_INLINE2(double, double, func, func) - -_STLP_DMATH_INLINE(acos) -_STLP_DMATH_INLINE(asin) -_STLP_DMATH_INLINE(atan) -_STLP_DMATH_INLINE2(atan2) -_STLP_DMATH_INLINE(ceil) -_STLP_DMATH_INLINE(cos) -_STLP_DMATH_INLINE(cosh) -_STLP_DMATH_INLINE(exp) -_STLP_DMATH_INLINE(fabs) -_STLP_DMATH_INLINE(floor) -_STLP_DMATH_INLINE2(fmod) -_STLP_MATH_INLINE2X(double, int*, frexp, frexp) -_STLP_MATH_INLINE2X(double, int, ldexp, ldexp) -_STLP_DMATH_INLINE(log) -_STLP_DMATH_INLINE(log10) -_STLP_MATH_INLINE2PX(double, modf, modf) -_STLP_DMATH_INLINE(sin) -_STLP_DMATH_INLINE(sinh) -_STLP_DMATH_INLINE(sqrt) -_STLP_DMATH_INLINE(tan) -_STLP_DMATH_INLINE(tanh) -_STLP_DMATH_INLINE2(pow) -_STLP_DMATH_INLINE2(hypot) - -# undef _STLP_DMATH_INLINE -# undef _STLP_DMATH_INLINE2 -#endif - -#if defined (__DMC__) -# if defined (fabs) -inline double __stlp_fabs(double __x) { return fabs(__x); } -# undef fabs -inline double fabs(double __x) { return __stlp_fabs(__x); } -# endif -# if defined (cos) -inline double __stlp_cos(double __x) { return cos(__x); } -# undef cos -inline double cos(double __x) { return __stlp_cos(__x); } -# endif -# if defined (sin) -inline double __stlp_sin(double __x) { return sin(__x); } -# undef sin -inline double sin(double __x) { return __stlp_sin(__x); } -# endif -# if defined (sqrt) -inline double __stlp_sqrt(double __x) { return sqrt(__x); } -# undef sqrt -inline double sqrt(double __x) { return __stlp_sqrt(__x); } -# endif -# if defined (ldexp) -inline double __stlp_ldexp(double __x, int __y) { return ldexp(__x, __y); } -# undef ldexp -inline double ldexp(double __x, int __y) { return __stlp_ldexp(__x, __y); } -# endif -#endif - -/* MSVC native lib starting with .Net 2003 has already all math functions - * in global namespace. - * HP-UX native lib has math functions in the global namespace. - */ -#if (!defined (_STLP_MSVC_LIB) || (_STLP_MSVC_LIB < 1310) || defined(UNDER_CE)) && \ - (!defined (__HP_aCC) || (__HP_aCC < 30000)) && \ - !defined (__WATCOMC__) -inline double abs(double __x) -{ return ::fabs(__x); } -# if !defined (__MVS__) -_STLP_DEF_MATH_INLINE(abs, fabs) -# else // __MVS__ has native long double abs? -inline float abs(float __x) { return ::fabsf(__x); } -# endif - -_STLP_DEF_MATH_INLINE(acos, acos) -_STLP_DEF_MATH_INLINE(asin, asin) -_STLP_DEF_MATH_INLINE(atan, atan) -_STLP_DEF_MATH_INLINE2(atan2, atan2) -_STLP_DEF_MATH_INLINE(ceil, ceil) -_STLP_DEF_MATH_INLINE(cos, cos) -_STLP_DEF_MATH_INLINE(cosh, cosh) -_STLP_DEF_MATH_INLINE(exp, exp) -_STLP_DEF_MATH_INLINE(fabs, fabs) -_STLP_DEF_MATH_INLINE(floor, floor) -_STLP_DEF_MATH_INLINE2(fmod, fmod) -_STLP_DEF_MATH_INLINE2PI(frexp, frexp) -_STLP_DEF_MATH_INLINE2I(ldexp, ldexp) -_STLP_DEF_MATH_INLINE(log, log) -_STLP_DEF_MATH_INLINE(log10, log10) -_STLP_DEF_MATH_INLINE2P(modf, modf) -_STLP_DEF_MATH_INLINE(sin, sin) -_STLP_DEF_MATH_INLINE(sinh, sinh) -_STLP_DEF_MATH_INLINE(sqrt, sqrt) -_STLP_DEF_MATH_INLINE(tan, tan) -_STLP_DEF_MATH_INLINE(tanh, tanh) -_STLP_DEF_MATH_INLINE2(pow, pow) - -# if !defined(_STLP_MSVC) /* || (_STLP_MSVC > 1300) */ || defined(_STLP_WCE) || !defined (_MSC_EXTENSIONS) /* && !defined(_STLP_WCE_NET) */ -# ifndef _STLP_NO_VENDOR_MATH_F -# ifndef __sun -inline float pow(float __x, int __y) { return _STLP_CMATH_FUNC_NAMESPACE::powf(__x, __STATIC_CAST(float,__y)); } -# else -inline float pow(float __x, int __y) { return ::__powf(__x, __STATIC_CAST(float,__y)); } -# endif -# else -inline float pow(float __x, int __y) { return __STATIC_CAST(float, _STLP_CMATH_FUNC_NAMESPACE::pow(__x, __STATIC_CAST(float,__y))); } -# endif -inline double pow(double __x, int __y) { return _STLP_CMATH_FUNC_NAMESPACE::pow(__x, __STATIC_CAST(double,__y)); } -# if !defined (_STLP_NO_LONG_DOUBLE) -# if !defined(_STLP_NO_VENDOR_MATH_L) -# ifndef __sun -inline long double pow(long double __x, int __y) { return _STLP_CMATH_FUNC_NAMESPACE::powl(__x, __STATIC_CAST(long double,__y)); } -# else -# ifndef __SUNPRO_CC -inline long double pow(long double __x, int __y) { return ::__powl(__x, __STATIC_CAST(long double,__y)); } -# else -inline long double pow(long double __x, int __y) { return _STLP_VENDOR_CSTD::__powl(__x, __STATIC_CAST(long double,__y)); } -# endif -# endif -# else -inline long double pow(long double __x, int __y) { return __STATIC_CAST(long double, _STLP_CMATH_FUNC_NAMESPACE::pow(__x, __STATIC_CAST(long double,__y))); } -# endif -# endif -# else -//The MS native pow version has a bugged overload so it is not imported -//in the STLport namespace. -//Here is the bugged version: -//inline double pow(int __x, int __y) { return (_Pow_int(__x, __y)); } -inline double pow(double __x, int __y) { return (_Pow_int(__x, __y)); } -inline float pow(float __x, int __y) { return (_Pow_int(__x, __y)); } -inline long double pow(long double __x, int __y) { return (_Pow_int(__x, __y)); } -# endif -#endif - -#if (defined (_STLP_MSVC) && !defined (_STLP_WCE)) || defined (__ICL) || defined (__sun) -# if defined (_STLP_MSVC) && (_STLP_MSVC >= 1400) -# pragma warning (push) -# pragma warning (disable : 4996) // hypot is deprecated. -# endif -_STLP_MATH_INLINE2XX(float, hypot, hypot) -inline long double hypot(long double x, long double y) { return sqrt(x * x + y * y); } -# if defined (_STLP_MSVC) && (_STLP_MSVC >= 1400) -# pragma warning (pop) -# endif -#else -# if defined (_STLP_USE_UCLIBC) -inline double hypot(double x, double y) { return sqrt(x * x + y * y); } -_STLP_DEF_MATH_INLINE2(hypot, hypot) -# elif defined (_STLP_WCE) - /* CE has a double _hypot(double,double) which we use */ -inline double hypot(double __x, double __y) { return _hypot(__x,__y); } -_STLP_DEF_MATH_INLINE2(hypot, _hypot) -# endif -#endif - -#if defined (_STLP_RESTORE_FUNCTION_INTRINSIC) -//restoration of the default intrinsic status of those functions: -# pragma intrinsic (abs, acos, asin, atan, atan2, cos, cosh, exp, fabs, fmod, log, log10, sin, sinh, sqrt, tan, tanh) -# if defined (_STLP_WCE) -# pragma intrinsic (ceil, floor) -# endif -# pragma warning(pop) -# undef _STLP_RESTORE_FUNCTION_INTRINSIC -#endif // _STLP_MSVC && _STLP_MSVC <= 1300 && !_STLP_WCE && _MSC_EXTENSIONS - -/* C++ Standard is unclear about several call to 'using ::func' if new overloads - * of ::func appears between 2 successive 'using' calls. To avoid this potential - * problem we provide all abs overload before the 'using' call. - * Beware: This header inclusion has to be after all abs overload of this file. - * The first 'using ::abs' call is going to be in the other header. - */ -#ifndef _STLP_INTERNAL_CSTDLIB -# include -#endif - -#if defined (_STLP_IMPORT_VENDOR_CSTD) && !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -#if defined (__ANDROID__) -namespace __captured { -template inline int __capture_isfinite(_Tp __f) { return isfinite(__f); } -template inline int __capture_isinf(_Tp __f) { return isinf(__f); } -template inline int __capture_isnan(_Tp __f) { return isnan(__f); } -template inline int __capture_signbit(_Tp __f) { return signbit(__f); } -} -#undef isfinite -#undef isinf -#undef isnan -#undef signbit -namespace __captured { -template inline int isfinite(_Tp __f) { return __capture_isfinite(__f); } -template inline int isinf(_Tp __f) { return __capture_isinf(__f); } -template inline int isnan(_Tp __f) { return __capture_isnan(__f); } -template inline int signbit(_Tp __f) { return __capture_signbit(__f); } -} -#endif -_STLP_BEGIN_NAMESPACE -using ::abs; -using ::acos; -using ::asin; -using ::atan; -using ::atan2; -using ::ceil; -using ::cos; -using ::cosh; -using ::exp; -using ::fabs; -using ::floor; -using ::fmod; -using ::frexp; -/* - Because of some weird interaction between STLport headers - and native HP-UX headers, when compiled with _STLP_DEBUG - macro defined with aC++, hypot() is not declared. - At some point we'll need to get to the bottom line of - this problem. -*/ -#if !(defined(__HP_aCC) && defined(_STLP_DEBUG)) -using ::hypot; -#endif -#if defined (__ANDROID__) -using __captured::isfinite; -using __captured::isinf; -using __captured::isnan; -#endif -using ::ldexp; -using ::log; -using ::log10; -using ::modf; -using ::pow; -#if defined (__ANDROID__) -using __captured::signbit; -#endif -using ::sin; -using ::sinh; -using ::sqrt; -using ::tan; -using ::tanh; -_STLP_END_NAMESPACE -# if defined (__BORLANDC__) && (__BORLANDC__ >= 0x560) && !defined (__linux__) -using _STLP_VENDOR_CSTD::_ecvt; -using _STLP_VENDOR_CSTD::_fcvt; -# endif -#endif - -#endif /* _STLP_INTERNAL_CMATH */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_codecvt.h b/build/stlport/stlport/stl/_codecvt.h deleted file mode 100644 index 29b408b2e43f..000000000000 --- a/build/stlport/stlport/stl/_codecvt.h +++ /dev/null @@ -1,442 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_CODECVT_H -#define _STLP_INTERNAL_CODECVT_H - -#ifndef _STLP_C_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -class _STLP_CLASS_DECLSPEC codecvt_base { -public: - enum result {ok, partial, error, noconv}; -}; - -template -class codecvt : public locale::facet, public codecvt_base { -public: - typedef _InternT intern_type; - typedef _ExternT extern_type; - typedef _StateT state_type; - -#if defined (_STLP_MSVC) && (_STLP_MSVC < 1300) - /* For the moment VC6 do not support this facet default implementation - * because of the static locale::id instance. When VC6 see this definition - * it goes crasy with locale::id static instances and all the has_facet tests - * unit tests are failing. - */ -}; -#else - explicit codecvt(size_t __refs = 0) : locale::facet(__refs) {} - - result out(state_type& __state, - const intern_type* __from, - const intern_type* __from_end, - const intern_type*& __from_next, - extern_type* __to, - extern_type* __to_limit, - extern_type*& __to_next) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_out(__state, - __from, __from_end, __from_next, - __to, __to_limit, __to_next); - } - - result unshift(state_type& __state, - extern_type* __to, - extern_type* __to_limit, - extern_type*& __to_next) const { - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_unshift(__state, __to, __to_limit, __to_next); - } - - result in(state_type& __state, - const extern_type* __from, - const extern_type* __from_end, - const extern_type*& __from_next, - intern_type* __to, - intern_type* __to_limit, - intern_type*& __to_next) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_in(__state, - __from, __from_end, __from_next, - __to, __to_limit, __to_next); - } - - int encoding() const _STLP_NOTHROW { return do_encoding(); } - - bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); } - - int length(state_type& __state, - const extern_type* __from, - const extern_type* __from_end, - size_t __max) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - return do_length(__state, __from, __from_end, __max); - } - - int max_length() const _STLP_NOTHROW { return do_max_length(); } - - static locale::id id; - -protected: - ~codecvt() {} - - virtual result do_out(state_type&, - const intern_type* __from, - const intern_type*, - const intern_type*& __from_next, - extern_type* __to, - extern_type*, - extern_type*& __to_next) const - { __from_next = __from; __to_next = __to; return noconv; } - - virtual result do_in (state_type&, - const extern_type* __from, - const extern_type*, - const extern_type*& __from_next, - intern_type* __to, - intern_type*, - intern_type*& __to_next) const - { __from_next = __from; __to_next = __to; return noconv; } - - virtual result do_unshift(state_type&, - extern_type* __to, - extern_type*, - extern_type*& __to_next) const - { __to_next = __to; return noconv; } - - virtual int do_encoding() const _STLP_NOTHROW - { return 1; } - - virtual bool do_always_noconv() const _STLP_NOTHROW - { return true; } - - virtual int do_length(state_type&, - const extern_type* __from, - const extern_type* __end, - size_t __max) const - { return (int)(min) ( __STATIC_CAST(size_t, (__end - __from)), __max); } - - virtual int do_max_length() const _STLP_NOTHROW - { return 1; } - -private: - codecvt(const codecvt&); - codecvt& operator = (const codecvt&); -}; - -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x590) -template -locale::id codecvt<_InternT, _ExternT, _StateT>::id; -# endif -# endif -#endif - -template -class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> {}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC codecvt - : public locale::facet, public codecvt_base { -public: - typedef char intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - explicit codecvt(size_t __refs = 0) : locale::facet(__refs) {} - - result out(state_type& __state, - const char* __from, - const char* __from_end, - const char*& __from_next, - char* __to, - char* __to_limit, - char*& __to_next) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_out(__state, - __from, __from_end, __from_next, - __to, __to_limit, __to_next); - } - - result unshift(state_type& __state, - char* __to, char* __to_limit, char*& __to_next) const { - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_unshift(__state, __to, __to_limit, __to_next); - } - - result in(state_type& __state, - const char* __from, - const char* __from_end, - const char*& __from_next, - char* __to, - char* __to_limit, - char*& __to_next) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_in(__state, - __from, __from_end, __from_next, - __to, __to_limit, __to_next); - } - - int encoding() const _STLP_NOTHROW { return do_encoding(); } - - bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); } - - int length(state_type& __state, - const char* __from, const char* __from_end, - size_t __max) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - return do_length(__state, __from, __from_end, __max); - } - - int max_length() const _STLP_NOTHROW { return do_max_length(); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~codecvt(); - - virtual result do_out(state_type& /* __state */, - const char* __from, - const char* /* __from_end */, - const char*& __from_next, - char* __to, - char* /* __to_limit */, - char*& __to_next) const; - - virtual result do_in (state_type& /* __state */ , - const char* __from, - const char* /* __from_end */, - const char*& __from_next, - char* __to, - char* /* __to_end */, - char*& __to_next) const; - - virtual result do_unshift(state_type& /* __state */, - char* __to, - char* /* __to_limit */, - char*& __to_next) const; - - virtual int do_encoding() const _STLP_NOTHROW; - virtual bool do_always_noconv() const _STLP_NOTHROW; - virtual int do_length(state_type& __state, - const char* __from, - const char* __end, - size_t __max) const; - virtual int do_max_length() const _STLP_NOTHROW; -private: - codecvt(const codecvt&); - codecvt& operator =(const codecvt&); -}; - -# ifndef _STLP_NO_WCHAR_T - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC codecvt - : public locale::facet, public codecvt_base { -public: - typedef wchar_t intern_type; - typedef char extern_type; - typedef mbstate_t state_type; - - explicit codecvt(size_t __refs = 0) : locale::facet(__refs) {} - - result out(state_type& __state, - const wchar_t* __from, - const wchar_t* __from_end, - const wchar_t*& __from_next, - char* __to, - char* __to_limit, - char*& __to_next) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_out(__state, - __from, __from_end, __from_next, - __to, __to_limit, __to_next); - } - - result unshift(state_type& __state, - char* __to, char* __to_limit, char*& __to_next) const { - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_unshift(__state, __to, __to_limit, __to_next); - } - - result in(state_type& __state, - const char* __from, - const char* __from_end, - const char*& __from_next, - wchar_t* __to, - wchar_t* __to_limit, - wchar_t*& __to_next) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - _STLP_VERBOSE_ASSERT(__to <= __to_limit, _StlMsg_INVALID_ARGUMENT) - return do_in(__state, - __from, __from_end, __from_next, - __to, __to_limit, __to_next); - } - - int encoding() const _STLP_NOTHROW { return do_encoding(); } - - bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); } - - int length(state_type& __state, - const char* __from, const char* __from_end, - size_t __max) const { - _STLP_VERBOSE_ASSERT(__from <= __from_end, _StlMsg_INVALID_ARGUMENT) - return do_length(__state, __from, __from_end, __max); - } - - int max_length() const _STLP_NOTHROW { return do_max_length(); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~codecvt(); - - virtual result do_out(state_type& __state, - const wchar_t* __from, - const wchar_t* __from_end, - const wchar_t*& __from_next, - char* __to, - char* __to_limit, - char*& __to_next) const; - - virtual result do_in (state_type& __state, - const char* __from, - const char* __from_end, - const char*& __from_next, - wchar_t* __to, - wchar_t* __to_limit, - wchar_t*& __to_next) const; - - virtual result do_unshift(state_type& __state, - char* __to, - char* __to_limit, - char*& __to_next) const; - - virtual int do_encoding() const _STLP_NOTHROW; - - virtual bool do_always_noconv() const _STLP_NOTHROW; - - virtual int do_length(state_type& __state, - const char* __from, - const char* __end, - size_t __max) const; - - virtual int do_max_length() const _STLP_NOTHROW; - -private: - codecvt(const codecvt&); - codecvt& operator = (const codecvt&); -}; - -# endif - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC codecvt_byname - : public codecvt { -public: - explicit codecvt_byname(const char* __name, size_t __refs = 0); - ~codecvt_byname(); -private: - codecvt_byname(const codecvt_byname&); - codecvt_byname& operator =(const codecvt_byname&); -}; - -# ifndef _STLP_NO_WCHAR_T -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC codecvt_byname - : public codecvt { - friend class _Locale_impl; -public: - explicit codecvt_byname(const char * __name, size_t __refs = 0); - -protected: - ~codecvt_byname(); - - virtual result do_out(state_type& __state, - const wchar_t* __from, - const wchar_t* __from_end, - const wchar_t*& __from_next, - char* __to, - char* __to_limit, - char*& __to_next) const; - - virtual result do_in (state_type& __state, - const char* __from, - const char* __from_end, - const char*& __from_next, - wchar_t* __to, - wchar_t* __to_limit, - wchar_t*& __to_next) const; - - virtual result do_unshift(state_type& __state, - char* __to, - char* __to_limit, - char*& __to_next) const; - - virtual int do_encoding() const _STLP_NOTHROW; - - virtual bool do_always_noconv() const _STLP_NOTHROW; - - virtual int do_length(state_type& __state, - const char* __from, - const char* __end, - size_t __max) const; - - virtual int do_max_length() const _STLP_NOTHROW; - -private: - codecvt_byname(_Locale_codecvt* __cvt) - : _M_codecvt(__cvt) {} - - codecvt_byname(const codecvt_byname&); - codecvt_byname& operator =(const codecvt_byname&); - _Locale_codecvt* _M_codecvt; -}; - -# endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_CODECVT_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_collate.h b/build/stlport/stlport/stl/_collate.h deleted file mode 100644 index 4384f2e92074..000000000000 --- a/build/stlport/stlport/stl/_collate.h +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - -#ifndef _STLP_INTERNAL_COLLATE_H -#define _STLP_INTERNAL_COLLATE_H - -#ifndef _STLP_C_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template class collate {}; -template class collate_byname {}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC collate : public locale::facet { -public: - typedef char char_type; - typedef string string_type; - - explicit collate(size_t __refs = 0) : locale::facet(__refs) {} - - int compare(const char* __low1, const char* __high1, - const char* __low2, const char* __high2) const { - return do_compare( __low1, __high1, __low2, __high2); - } - - string_type transform(const char* __low, const char* __high) const { - return do_transform(__low, __high); - } - - long hash(const char* __low, const char* __high) const - { return do_hash(__low, __high); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~collate(); - - virtual int do_compare(const char*, const char*, - const char*, const char*) const; - virtual string_type do_transform(const char*, const char*) const; - virtual long do_hash(const char*, const char*) const; -private: - collate(const collate&); - collate& operator =(const collate&); -}; - -# ifndef _STLP_NO_WCHAR_T - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC collate : public locale::facet { -public: - typedef wchar_t char_type; - typedef wstring string_type; - - explicit collate(size_t __refs = 0) : locale::facet(__refs) {} - - int compare(const wchar_t* __low1, const wchar_t* __high1, - const wchar_t* __low2, const wchar_t* __high2) const { - return do_compare( __low1, __high1, __low2, __high2); - } - - string_type transform(const wchar_t* __low, const wchar_t* __high) const { - return do_transform(__low, __high); - } - - long hash(const wchar_t* __low, const wchar_t* __high) const - { return do_hash(__low, __high); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~collate(); - - virtual int do_compare(const wchar_t*, const wchar_t*, - const wchar_t*, const wchar_t*) const; - virtual string_type do_transform(const wchar_t*, const wchar_t*) const; - virtual long do_hash(const wchar_t* __low, const wchar_t* __high) const; -private: - collate(const collate&); - collate& operator = (const collate&); -}; - -# endif /* NO_WCHAR_T */ - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC collate_byname: public collate { - friend class _Locale_impl; -public: - explicit collate_byname(const char* __name, size_t __refs = 0); - -protected: - ~collate_byname(); - - virtual int do_compare(const char*, const char*, - const char*, const char*) const; - virtual string_type do_transform(const char*, const char*) const; - -private: - collate_byname(_Locale_collate *__coll) - : _M_collate(__coll) {} - _Locale_collate* _M_collate; - collate_byname(const collate_byname&); - collate_byname& operator =(const collate_byname&); -}; - -# ifndef _STLP_NO_WCHAR_T - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC collate_byname: public collate { - friend class _Locale_impl; -public: - explicit collate_byname(const char * __name, size_t __refs = 0); - -protected: - ~collate_byname(); - - virtual int do_compare(const wchar_t*, const wchar_t*, - const wchar_t*, const wchar_t*) const; - virtual string_type do_transform(const wchar_t*, const wchar_t*) const; - -private: - collate_byname(_Locale_collate *__coll) - : _M_collate(__coll) {} - _Locale_collate* _M_collate; - collate_byname(const collate_byname&); - collate_byname& operator =(const collate_byname&); -}; - -# endif /* NO_WCHAR_T */ - -template -bool -__locale_do_operator_call (const locale& __loc, - const basic_string<_CharT, _Traits, _Alloc>& __x, - const basic_string<_CharT, _Traits, _Alloc>& __y) { - collate<_CharT> const& __coll = use_facet >(__loc); - return __coll.compare(__x.data(), __x.data() + __x.size(), - __y.data(), __y.data() + __y.size()) < 0; -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_COLLATE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_complex.c b/build/stlport/stlport/stl/_complex.c deleted file mode 100644 index 204fa1ecf208..000000000000 --- a/build/stlport/stlport/stl/_complex.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_COMPLEX_C -#define _STLP_COMPLEX_C - -#ifndef _STLP_INTERNAL_COMPLEX -# include -#endif - -#if !defined (_STLP_USE_NO_IOSTREAMS) -# ifndef _STLP_INTERNAL_ISTREAM -# include -# endif - -# ifndef _STLP_INTERNAL_SSTREAM -# include -# endif - -# ifndef _STLP_STRING_IO_H -# include -# endif -#endif - -_STLP_BEGIN_NAMESPACE - -// Non-inline member functions. - -template -void complex<_Tp>::_div(const _Tp& __z1_r, const _Tp& __z1_i, - const _Tp& __z2_r, const _Tp& __z2_i, - _Tp& __res_r, _Tp& __res_i) { - _Tp __ar = __z2_r >= 0 ? __z2_r : -__z2_r; - _Tp __ai = __z2_i >= 0 ? __z2_i : -__z2_i; - - if (__ar <= __ai) { - _Tp __ratio = __z2_r / __z2_i; - _Tp __denom = __z2_i * (1 + __ratio * __ratio); - __res_r = (__z1_r * __ratio + __z1_i) / __denom; - __res_i = (__z1_i * __ratio - __z1_r) / __denom; - } - else { - _Tp __ratio = __z2_i / __z2_r; - _Tp __denom = __z2_r * (1 + __ratio * __ratio); - __res_r = (__z1_r + __z1_i * __ratio) / __denom; - __res_i = (__z1_i - __z1_r * __ratio) / __denom; - } -} - -template -void complex<_Tp>::_div(const _Tp& __z1_r, - const _Tp& __z2_r, const _Tp& __z2_i, - _Tp& __res_r, _Tp& __res_i) { - _Tp __ar = __z2_r >= 0 ? __z2_r : -__z2_r; - _Tp __ai = __z2_i >= 0 ? __z2_i : -__z2_i; - - if (__ar <= __ai) { - _Tp __ratio = __z2_r / __z2_i; - _Tp __denom = __z2_i * (1 + __ratio * __ratio); - __res_r = (__z1_r * __ratio) / __denom; - __res_i = - __z1_r / __denom; - } - else { - _Tp __ratio = __z2_i / __z2_r; - _Tp __denom = __z2_r * (1 + __ratio * __ratio); - __res_r = __z1_r / __denom; - __res_i = - (__z1_r * __ratio) / __denom; - } -} - -// I/O. -#if !defined (_STLP_USE_NO_IOSTREAMS) - -// Complex output, in the form (re,im). We use a two-step process -// involving stringstream so that we get the padding right. -template -basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __z) { - basic_ostringstream<_CharT, _Traits, allocator<_CharT> > __tmp; - __tmp.flags(__os.flags()); - __tmp.imbue(__os.getloc()); - __tmp.precision(__os.precision()); - __tmp << '(' << __z.real() << ',' << __z.imag() << ')'; - return __os << __tmp.str(); -} - -// Complex input from arbitrary streams. Note that results in some -// locales may be confusing, since the decimal character varies with -// locale and the separator between real and imaginary parts does not. - -template -basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __z) { - _Tp __re = 0; - _Tp __im = 0; - - const ctype<_CharT>& __c_type = *__is._M_ctype_facet(); - - const char __punct[4] = "(,)"; - _CharT __wpunct[3]; - __c_type.widen(__punct, __punct + 3, __wpunct); - - _CharT __c; - - __is >> __c; - if (_Traits::eq(__c, __wpunct[0])) { // Left paren - __is >> __re >> __c; - if (_Traits::eq(__c, __wpunct[1])) // Comma - __is >> __im >> __c; - if (!_Traits::eq(__c, __wpunct[2])) // Right paren - __is.setstate(ios_base::failbit); - } - else { - __is.putback(__c); - __is >> __re; - } - - if (__is) - __z = complex<_Tp>(__re, __im); - return __is; -} - -#endif /* _STLP_USE_NO_IOSTREAMS */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_COMPLEX_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_complex.h b/build/stlport/stlport/stl/_complex.h deleted file mode 100644 index 5dba0ad401a0..000000000000 --- a/build/stlport/stlport/stl/_complex.h +++ /dev/null @@ -1,935 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_INTERNAL_COMPLEX -#define _STLP_INTERNAL_COMPLEX - -// This header declares the template class complex, as described in -// in the draft C++ standard. Single-precision complex numbers -// are complex, double-precision are complex, and -// quad precision are complex. - -// Note that the template class complex is declared within namespace -// std, as called for by the draft C++ standard. - -#ifndef _STLP_INTERNAL_CMATH -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -struct complex { - typedef _Tp value_type; - typedef complex<_Tp> _Self; - - // Constructors, destructor, assignment operator. - complex() : _M_re(0), _M_im(0) {} - complex(const value_type& __x) - : _M_re(__x), _M_im(0) {} - complex(const value_type& __x, const value_type& __y) - : _M_re(__x), _M_im(__y) {} - complex(const _Self& __z) - : _M_re(__z._M_re), _M_im(__z._M_im) {} - - _Self& operator=(const _Self& __z) { - _M_re = __z._M_re; - _M_im = __z._M_im; - return *this; - } - -#if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - template - explicit complex(const complex<_Tp2>& __z) - : _M_re(__z._M_re), _M_im(__z._M_im) {} - - template - _Self& operator=(const complex<_Tp2>& __z) { - _M_re = __z._M_re; - _M_im = __z._M_im; - return *this; - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - // Element access. - value_type real() const { return _M_re; } - value_type imag() const { return _M_im; } - - // Arithmetic op= operations involving one real argument. - - _Self& operator= (const value_type& __x) { - _M_re = __x; - _M_im = 0; - return *this; - } - _Self& operator+= (const value_type& __x) { - _M_re += __x; - return *this; - } - _Self& operator-= (const value_type& __x) { - _M_re -= __x; - return *this; - } - _Self& operator*= (const value_type& __x) { - _M_re *= __x; - _M_im *= __x; - return *this; - } - _Self& operator/= (const value_type& __x) { - _M_re /= __x; - _M_im /= __x; - return *this; - } - - // Arithmetic op= operations involving two complex arguments. - - static void _STLP_CALL _div(const value_type& __z1_r, const value_type& __z1_i, - const value_type& __z2_r, const value_type& __z2_i, - value_type& __res_r, value_type& __res_i); - - static void _STLP_CALL _div(const value_type& __z1_r, - const value_type& __z2_r, const value_type& __z2_i, - value_type& __res_r, value_type& __res_i); - -#if defined (_STLP_MEMBER_TEMPLATES) // && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - - template _Self& operator+= (const complex<_Tp2>& __z) { - _M_re += __z._M_re; - _M_im += __z._M_im; - return *this; - } - - template _Self& operator-= (const complex<_Tp2>& __z) { - _M_re -= __z._M_re; - _M_im -= __z._M_im; - return *this; - } - - template _Self& operator*= (const complex<_Tp2>& __z) { - value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; - value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; - _M_re = __r; - _M_im = __i; - return *this; - } - - template _Self& operator/= (const complex<_Tp2>& __z) { - value_type __r; - value_type __i; - _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); - _M_re = __r; - _M_im = __i; - return *this; - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - _Self& operator+= (const _Self& __z) { - _M_re += __z._M_re; - _M_im += __z._M_im; - return *this; - } - - _Self& operator-= (const _Self& __z) { - _M_re -= __z._M_re; - _M_im -= __z._M_im; - return *this; - } - - _Self& operator*= (const _Self& __z) { - value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; - value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; - _M_re = __r; - _M_im = __i; - return *this; - } - - _Self& operator/= (const _Self& __z) { - value_type __r; - value_type __i; - _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); - _M_re = __r; - _M_im = __i; - return *this; - } - - // Data members. - value_type _M_re; - value_type _M_im; -}; - -// Explicit specializations for float, double, long double. The only -// reason for these specializations is to enable automatic conversions -// from complex to complex, and complex to -// complex. - -_STLP_TEMPLATE_NULL -struct _STLP_CLASS_DECLSPEC complex { - typedef float value_type; - typedef complex _Self; - // Constructors, destructor, assignment operator. - - complex(value_type __x = 0.0f, value_type __y = 0.0f) - : _M_re(__x), _M_im(__y) {} - - complex(const complex& __z) : _M_re(__z._M_re), _M_im(__z._M_im) {} - - inline explicit complex(const complex& __z); -#ifndef _STLP_NO_LONG_DOUBLE - inline explicit complex(const complex& __z); -#endif - // Element access. - value_type real() const { return _M_re; } - value_type imag() const { return _M_im; } - - // Arithmetic op= operations involving one real argument. - - _Self& operator= (value_type __x) { - _M_re = __x; - _M_im = 0.0f; - return *this; - } - _Self& operator+= (value_type __x) { - _M_re += __x; - return *this; - } - _Self& operator-= (value_type __x) { - _M_re -= __x; - return *this; - } - _Self& operator*= (value_type __x) { - _M_re *= __x; - _M_im *= __x; - return *this; - } - _Self& operator/= (value_type __x) { - _M_re /= __x; - _M_im /= __x; - return *this; - } - - // Arithmetic op= operations involving two complex arguments. - - static void _STLP_CALL _div(const float& __z1_r, const float& __z1_i, - const float& __z2_r, const float& __z2_i, - float& __res_r, float& __res_i); - - static void _STLP_CALL _div(const float& __z1_r, - const float& __z2_r, const float& __z2_i, - float& __res_r, float& __res_i); - -#if defined (_STLP_MEMBER_TEMPLATES) - template - complex& operator=(const complex<_Tp2>& __z) { - _M_re = __z._M_re; - _M_im = __z._M_im; - return *this; - } - - template - complex& operator+= (const complex<_Tp2>& __z) { - _M_re += __z._M_re; - _M_im += __z._M_im; - return *this; - } - - template - complex& operator-= (const complex<_Tp2>& __z) { - _M_re -= __z._M_re; - _M_im -= __z._M_im; - return *this; - } - - template - complex& operator*= (const complex<_Tp2>& __z) { - float __r = _M_re * __z._M_re - _M_im * __z._M_im; - float __i = _M_re * __z._M_im + _M_im * __z._M_re; - _M_re = __r; - _M_im = __i; - return *this; - } - - template - complex& operator/= (const complex<_Tp2>& __z) { - float __r; - float __i; - _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); - _M_re = __r; - _M_im = __i; - return *this; - } - -#endif /* _STLP_MEMBER_TEMPLATES */ - - _Self& operator=(const _Self& __z) { - _M_re = __z._M_re; - _M_im = __z._M_im; - return *this; - } - - _Self& operator+= (const _Self& __z) { - _M_re += __z._M_re; - _M_im += __z._M_im; - return *this; - } - - _Self& operator-= (const _Self& __z) { - _M_re -= __z._M_re; - _M_im -= __z._M_im; - return *this; - } - - _Self& operator*= (const _Self& __z) { - value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; - value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; - _M_re = __r; - _M_im = __i; - return *this; - } - - _Self& operator/= (const _Self& __z) { - value_type __r; - value_type __i; - _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); - _M_re = __r; - _M_im = __i; - return *this; - } - - // Data members. - value_type _M_re; - value_type _M_im; -}; - -_STLP_TEMPLATE_NULL -struct _STLP_CLASS_DECLSPEC complex { - typedef double value_type; - typedef complex _Self; - - // Constructors, destructor, assignment operator. - - complex(value_type __x = 0.0, value_type __y = 0.0) - : _M_re(__x), _M_im(__y) {} - - complex(const complex& __z) - : _M_re(__z._M_re), _M_im(__z._M_im) {} - inline complex(const complex& __z); -#if !defined (_STLP_NO_LONG_DOUBLE) - explicit inline complex(const complex& __z); -#endif - // Element access. - value_type real() const { return _M_re; } - value_type imag() const { return _M_im; } - - // Arithmetic op= operations involving one real argument. - - _Self& operator= (value_type __x) { - _M_re = __x; - _M_im = 0.0; - return *this; - } - _Self& operator+= (value_type __x) { - _M_re += __x; - return *this; - } - _Self& operator-= (value_type __x) { - _M_re -= __x; - return *this; - } - _Self& operator*= (value_type __x) { - _M_re *= __x; - _M_im *= __x; - return *this; - } - _Self& operator/= (value_type __x) { - _M_re /= __x; - _M_im /= __x; - return *this; - } - - // Arithmetic op= operations involving two complex arguments. - - static void _STLP_CALL _div(const double& __z1_r, const double& __z1_i, - const double& __z2_r, const double& __z2_i, - double& __res_r, double& __res_i); - static void _STLP_CALL _div(const double& __z1_r, - const double& __z2_r, const double& __z2_i, - double& __res_r, double& __res_i); - -#if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - template - complex& operator=(const complex<_Tp2>& __z) { - _M_re = __z._M_re; - _M_im = __z._M_im; - return *this; - } - - template - complex& operator+= (const complex<_Tp2>& __z) { - _M_re += __z._M_re; - _M_im += __z._M_im; - return *this; - } - - template - complex& operator-= (const complex<_Tp2>& __z) { - _M_re -= __z._M_re; - _M_im -= __z._M_im; - return *this; - } - - template - complex& operator*= (const complex<_Tp2>& __z) { - double __r = _M_re * __z._M_re - _M_im * __z._M_im; - double __i = _M_re * __z._M_im + _M_im * __z._M_re; - _M_re = __r; - _M_im = __i; - return *this; - } - - template - complex& operator/= (const complex<_Tp2>& __z) { - double __r; - double __i; - _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); - _M_re = __r; - _M_im = __i; - return *this; - } - -#endif /* _STLP_MEMBER_TEMPLATES */ - - _Self& operator=(const _Self& __z) { - _M_re = __z._M_re; - _M_im = __z._M_im; - return *this; - } - - _Self& operator+= (const _Self& __z) { - _M_re += __z._M_re; - _M_im += __z._M_im; - return *this; - } - - _Self& operator-= (const _Self& __z) { - _M_re -= __z._M_re; - _M_im -= __z._M_im; - return *this; - } - - _Self& operator*= (const _Self& __z) { - value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; - value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; - _M_re = __r; - _M_im = __i; - return *this; - } - - _Self& operator/= (const _Self& __z) { - value_type __r; - value_type __i; - _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); - _M_re = __r; - _M_im = __i; - return *this; - } - - // Data members. - value_type _M_re; - value_type _M_im; -}; - -#if !defined (_STLP_NO_LONG_DOUBLE) - -_STLP_TEMPLATE_NULL -struct _STLP_CLASS_DECLSPEC complex { - typedef long double value_type; - typedef complex _Self; - - // Constructors, destructor, assignment operator. - complex(value_type __x = 0.0l, value_type __y = 0.0l) - : _M_re(__x), _M_im(__y) {} - - complex(const complex& __z) - : _M_re(__z._M_re), _M_im(__z._M_im) {} - inline complex(const complex& __z); - inline complex(const complex& __z); - - // Element access. - value_type real() const { return _M_re; } - value_type imag() const { return _M_im; } - - // Arithmetic op= operations involving one real argument. - - _Self& operator= (value_type __x) { - _M_re = __x; - _M_im = 0.0l; - return *this; - } - _Self& operator+= (value_type __x) { - _M_re += __x; - return *this; - } - _Self& operator-= (value_type __x) { - _M_re -= __x; - return *this; - } - _Self& operator*= (value_type __x) { - _M_re *= __x; - _M_im *= __x; - return *this; - } - _Self& operator/= (value_type __x) { - _M_re /= __x; - _M_im /= __x; - return *this; - } - - // Arithmetic op= operations involving two complex arguments. - - static void _STLP_CALL _div(const long double& __z1_r, const long double& __z1_i, - const long double& __z2_r, const long double& __z2_i, - long double& __res_r, long double& __res_i); - - static void _STLP_CALL _div(const long double& __z1_r, - const long double& __z2_r, const long double& __z2_i, - long double& __res_r, long double& __res_i); - -# if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - - template - complex& operator=(const complex<_Tp2>& __z) { - _M_re = __z._M_re; - _M_im = __z._M_im; - return *this; - } - - template - complex& operator+= (const complex<_Tp2>& __z) { - _M_re += __z._M_re; - _M_im += __z._M_im; - return *this; - } - - template - complex& operator-= (const complex<_Tp2>& __z) { - _M_re -= __z._M_re; - _M_im -= __z._M_im; - return *this; - } - - template - complex& operator*= (const complex<_Tp2>& __z) { - long double __r = _M_re * __z._M_re - _M_im * __z._M_im; - long double __i = _M_re * __z._M_im + _M_im * __z._M_re; - _M_re = __r; - _M_im = __i; - return *this; - } - - template - complex& operator/= (const complex<_Tp2>& __z) { - long double __r; - long double __i; - _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); - _M_re = __r; - _M_im = __i; - return *this; - } - -# endif /* _STLP_MEMBER_TEMPLATES */ - - _Self& operator=(const _Self& __z) { - _M_re = __z._M_re; - _M_im = __z._M_im; - return *this; - } - - _Self& operator+= (const _Self& __z) { - _M_re += __z._M_re; - _M_im += __z._M_im; - return *this; - } - - _Self& operator-= (const _Self& __z) { - _M_re -= __z._M_re; - _M_im -= __z._M_im; - return *this; - } - - _Self& operator*= (const _Self& __z) { - value_type __r = _M_re * __z._M_re - _M_im * __z._M_im; - value_type __i = _M_re * __z._M_im + _M_im * __z._M_re; - _M_re = __r; - _M_im = __i; - return *this; - } - - _Self& operator/= (const _Self& __z) { - value_type __r; - value_type __i; - _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i); - _M_re = __r; - _M_im = __i; - return *this; - } - - // Data members. - value_type _M_re; - value_type _M_im; -}; - -#endif /* _STLP_NO_LONG_DOUBLE */ - -// Converting constructors from one of these three specialized types -// to another. - -inline complex::complex(const complex& __z) - : _M_re((float)__z._M_re), _M_im((float)__z._M_im) {} -inline complex::complex(const complex& __z) - : _M_re(__z._M_re), _M_im(__z._M_im) {} -#ifndef _STLP_NO_LONG_DOUBLE -inline complex::complex(const complex& __z) - : _M_re((float)__z._M_re), _M_im((float)__z._M_im) {} -inline complex::complex(const complex& __z) - : _M_re((double)__z._M_re), _M_im((double)__z._M_im) {} -inline complex::complex(const complex& __z) - : _M_re(__z._M_re), _M_im(__z._M_im) {} -inline complex::complex(const complex& __z) - : _M_re(__z._M_re), _M_im(__z._M_im) {} -#endif - -// Unary non-member arithmetic operators. - -template -inline complex<_Tp> _STLP_CALL operator+(const complex<_Tp>& __z) -{ return __z; } - -template -inline complex<_Tp> _STLP_CALL operator-(const complex<_Tp>& __z) -{ return complex<_Tp>(-__z._M_re, -__z._M_im); } - -// Non-member arithmetic operations involving one real argument. - -template -inline complex<_Tp> _STLP_CALL operator+(const _Tp& __x, const complex<_Tp>& __z) -{ return complex<_Tp>(__x + __z._M_re, __z._M_im); } - -template -inline complex<_Tp> _STLP_CALL operator+(const complex<_Tp>& __z, const _Tp& __x) -{ return complex<_Tp>(__z._M_re + __x, __z._M_im); } - -template -inline complex<_Tp> _STLP_CALL operator-(const _Tp& __x, const complex<_Tp>& __z) -{ return complex<_Tp>(__x - __z._M_re, -__z._M_im); } - -template -inline complex<_Tp> _STLP_CALL operator-(const complex<_Tp>& __z, const _Tp& __x) -{ return complex<_Tp>(__z._M_re - __x, __z._M_im); } - -template -inline complex<_Tp> _STLP_CALL operator*(const _Tp& __x, const complex<_Tp>& __z) -{ return complex<_Tp>(__x * __z._M_re, __x * __z._M_im); } - -template -inline complex<_Tp> _STLP_CALL operator*(const complex<_Tp>& __z, const _Tp& __x) -{ return complex<_Tp>(__z._M_re * __x, __z._M_im * __x); } - -template -inline complex<_Tp> _STLP_CALL operator/(const _Tp& __x, const complex<_Tp>& __z) { - complex<_Tp> __result; - complex<_Tp>::_div(__x, - __z._M_re, __z._M_im, - __result._M_re, __result._M_im); - return __result; -} - -template -inline complex<_Tp> _STLP_CALL operator/(const complex<_Tp>& __z, const _Tp& __x) -{ return complex<_Tp>(__z._M_re / __x, __z._M_im / __x); } - -// Non-member arithmetic operations involving two complex arguments - -template -inline complex<_Tp> _STLP_CALL -operator+(const complex<_Tp>& __z1, const complex<_Tp>& __z2) -{ return complex<_Tp>(__z1._M_re + __z2._M_re, __z1._M_im + __z2._M_im); } - -template -inline complex<_Tp> _STLP_CALL -operator-(const complex<_Tp>& __z1, const complex<_Tp>& __z2) -{ return complex<_Tp>(__z1._M_re - __z2._M_re, __z1._M_im - __z2._M_im); } - -template -inline complex<_Tp> _STLP_CALL -operator*(const complex<_Tp>& __z1, const complex<_Tp>& __z2) { - return complex<_Tp>(__z1._M_re * __z2._M_re - __z1._M_im * __z2._M_im, - __z1._M_re * __z2._M_im + __z1._M_im * __z2._M_re); -} - -template -inline complex<_Tp> _STLP_CALL -operator/(const complex<_Tp>& __z1, const complex<_Tp>& __z2) { - complex<_Tp> __result; - complex<_Tp>::_div(__z1._M_re, __z1._M_im, - __z2._M_re, __z2._M_im, - __result._M_re, __result._M_im); - return __result; -} - -// Comparison operators. - -template -inline bool _STLP_CALL operator==(const complex<_Tp>& __z1, const complex<_Tp>& __z2) -{ return __z1._M_re == __z2._M_re && __z1._M_im == __z2._M_im; } - -template -inline bool _STLP_CALL operator==(const complex<_Tp>& __z, const _Tp& __x) -{ return __z._M_re == __x && __z._M_im == 0; } - -template -inline bool _STLP_CALL operator==(const _Tp& __x, const complex<_Tp>& __z) -{ return __x == __z._M_re && 0 == __z._M_im; } - -//04/27/04 dums: removal of this check, if it is restablish -//please explain why the other operators are not macro guarded -//#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER - -template -inline bool _STLP_CALL operator!=(const complex<_Tp>& __z1, const complex<_Tp>& __z2) -{ return __z1._M_re != __z2._M_re || __z1._M_im != __z2._M_im; } - -//#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */ - -template -inline bool _STLP_CALL operator!=(const complex<_Tp>& __z, const _Tp& __x) -{ return __z._M_re != __x || __z._M_im != 0; } - -template -inline bool _STLP_CALL operator!=(const _Tp& __x, const complex<_Tp>& __z) -{ return __x != __z._M_re || 0 != __z._M_im; } - -// Other basic arithmetic operations -template -inline _Tp _STLP_CALL real(const complex<_Tp>& __z) -{ return __z._M_re; } - -template -inline _Tp _STLP_CALL imag(const complex<_Tp>& __z) -{ return __z._M_im; } - -template -_Tp _STLP_CALL abs(const complex<_Tp>& __z); - -template -_Tp _STLP_CALL arg(const complex<_Tp>& __z); - -template -inline _Tp _STLP_CALL norm(const complex<_Tp>& __z) -{ return __z._M_re * __z._M_re + __z._M_im * __z._M_im; } - -template -inline complex<_Tp> _STLP_CALL conj(const complex<_Tp>& __z) -{ return complex<_Tp>(__z._M_re, -__z._M_im); } - -template -complex<_Tp> _STLP_CALL polar(const _Tp& __rho) -{ return complex<_Tp>(__rho, 0); } - -template -complex<_Tp> _STLP_CALL polar(const _Tp& __rho, const _Tp& __phi); - -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC float _STLP_CALL abs(const complex&); -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC double _STLP_CALL abs(const complex&); -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC float _STLP_CALL arg(const complex&); -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC double _STLP_CALL arg(const complex&); -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC complex _STLP_CALL polar(const float& __rho, const float& __phi); -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC complex _STLP_CALL polar(const double& __rho, const double& __phi); - -template -_Tp _STLP_CALL abs(const complex<_Tp>& __z) -{ return _Tp(abs(complex(double(__z.real()), double(__z.imag())))); } - -template -_Tp _STLP_CALL arg(const complex<_Tp>& __z) -{ return _Tp(arg(complex(double(__z.real()), double(__z.imag())))); } - -template -complex<_Tp> _STLP_CALL polar(const _Tp& __rho, const _Tp& __phi) { - complex __tmp = polar(double(__rho), double(__phi)); - return complex<_Tp>(_Tp(__tmp.real()), _Tp(__tmp.imag())); -} - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC long double _STLP_CALL arg(const complex&); -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC long double _STLP_CALL abs(const complex&); -_STLP_TEMPLATE_NULL -_STLP_DECLSPEC complex _STLP_CALL polar(const long double&, const long double&); -#endif - - -#if !defined (_STLP_USE_NO_IOSTREAMS) - -_STLP_END_NAMESPACE - -# ifndef _STLP_INTERNAL_IOSFWD -# include -# endif - -_STLP_BEGIN_NAMESPACE - -// Complex output, in the form (re,im). We use a two-step process -// involving stringstream so that we get the padding right. -template -basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __z); - -template -basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __z); - -// Specializations for narrow characters; lets us avoid widen. - -_STLP_OPERATOR_TEMPLATE -_STLP_DECLSPEC basic_istream >& _STLP_CALL -operator>>(basic_istream >& __is, complex& __z); - -_STLP_OPERATOR_TEMPLATE -_STLP_DECLSPEC basic_istream >& _STLP_CALL -operator>>(basic_istream >& __is, complex& __z); - -_STLP_OPERATOR_TEMPLATE -_STLP_DECLSPEC basic_ostream >& _STLP_CALL -operator<<(basic_ostream >& __is, const complex& __z); - -_STLP_OPERATOR_TEMPLATE -_STLP_DECLSPEC basic_ostream >& _STLP_CALL -operator<<(basic_ostream >& __is, const complex& __z); - -# if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_OPERATOR_TEMPLATE -_STLP_DECLSPEC basic_istream >& _STLP_CALL -operator>>(basic_istream >& __is, complex& __z); - -_STLP_OPERATOR_TEMPLATE -_STLP_DECLSPEC basic_ostream >& _STLP_CALL -operator<<(basic_ostream >& __is, const complex& __z); - -# endif - -# if defined (_STLP_USE_TEMPLATE_EXPORT) && ! defined (_STLP_NO_WCHAR_T) - -_STLP_EXPORT_TEMPLATE basic_istream >& _STLP_CALL -operator>>(basic_istream >&, complex&); -_STLP_EXPORT_TEMPLATE basic_ostream >& _STLP_CALL -operator<<(basic_ostream >&, const complex&); -_STLP_EXPORT_TEMPLATE basic_istream >& _STLP_CALL -operator>>(basic_istream >&, complex&); -_STLP_EXPORT_TEMPLATE basic_ostream >& _STLP_CALL -operator<<(basic_ostream >&, const complex&); - -# if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_EXPORT_TEMPLATE basic_istream >& _STLP_CALL -operator>>(basic_istream >&, complex&); -_STLP_EXPORT_TEMPLATE basic_ostream >& _STLP_CALL -operator<<(basic_ostream >&, const complex&); -# endif -# endif -#endif - - -// Transcendental functions. These are defined only for float, -// double, and long double. (Sqrt isn't transcendental, of course, -// but it's included in this section anyway.) - -_STLP_DECLSPEC complex _STLP_CALL sqrt(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL exp(const complex&); -_STLP_DECLSPEC complex _STLP_CALL log(const complex&); -_STLP_DECLSPEC complex _STLP_CALL log10(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, int); -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, const float&); -_STLP_DECLSPEC complex _STLP_CALL pow(const float&, const complex&); -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, const complex&); - -_STLP_DECLSPEC complex _STLP_CALL sin(const complex&); -_STLP_DECLSPEC complex _STLP_CALL cos(const complex&); -_STLP_DECLSPEC complex _STLP_CALL tan(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL sinh(const complex&); -_STLP_DECLSPEC complex _STLP_CALL cosh(const complex&); -_STLP_DECLSPEC complex _STLP_CALL tanh(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL sqrt(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL exp(const complex&); -_STLP_DECLSPEC complex _STLP_CALL log(const complex&); -_STLP_DECLSPEC complex _STLP_CALL log10(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, int); -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, const double&); -_STLP_DECLSPEC complex _STLP_CALL pow(const double&, const complex&); -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, const complex&); - -_STLP_DECLSPEC complex _STLP_CALL sin(const complex&); -_STLP_DECLSPEC complex _STLP_CALL cos(const complex&); -_STLP_DECLSPEC complex _STLP_CALL tan(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL sinh(const complex&); -_STLP_DECLSPEC complex _STLP_CALL cosh(const complex&); -_STLP_DECLSPEC complex _STLP_CALL tanh(const complex&); - -#if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_DECLSPEC complex _STLP_CALL sqrt(const complex&); -_STLP_DECLSPEC complex _STLP_CALL exp(const complex&); -_STLP_DECLSPEC complex _STLP_CALL log(const complex&); -_STLP_DECLSPEC complex _STLP_CALL log10(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, int); -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, const long double&); -_STLP_DECLSPEC complex _STLP_CALL pow(const long double&, const complex&); -_STLP_DECLSPEC complex _STLP_CALL pow(const complex&, - const complex&); - -_STLP_DECLSPEC complex _STLP_CALL sin(const complex&); -_STLP_DECLSPEC complex _STLP_CALL cos(const complex&); -_STLP_DECLSPEC complex _STLP_CALL tan(const complex&); - -_STLP_DECLSPEC complex _STLP_CALL sinh(const complex&); -_STLP_DECLSPEC complex _STLP_CALL cosh(const complex&); -_STLP_DECLSPEC complex _STLP_CALL tanh(const complex&); -#endif - -_STLP_END_NAMESPACE - -#ifndef _STLP_LINK_TIME_INSTANTIATION -# include -#endif - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_config_compat_post.h b/build/stlport/stlport/stl/_config_compat_post.h deleted file mode 100644 index e3b411172c2c..000000000000 --- a/build/stlport/stlport/stl/_config_compat_post.h +++ /dev/null @@ -1,51 +0,0 @@ -/*========================================== */ -#if 1 /* def _STLP_3_COMPATIBILITY */ - -# define __SGI_STL_PORT _STLPORT_VERSION - -# if defined (_STLP_DEBUG) && ! defined ( __STL_DEBUG ) -# define __STL_DEBUG _STLP_DEBUG -# endif - -# if defined (_STLP_USE_NAMESPACES) -# undef __STL_USE_NAMESPACES -# define __STL_USE_NAMESPACES _STLP_USE_NAMESPACES -# endif - -# if defined (_STLP_USE_EXCEPTIONS) -# undef __STL_USE_EXCEPTIONS -# define __STL_USE_EXCEPTIONS _STLP_USE_EXCEPTIONS -# endif - -# if defined (_STLP_BEGIN_NAMESPACE) && ! defined ( __STL_BEGIN_NAMESPACE ) -# define __STL_BEGIN_NAMESPACE _STLP_BEGIN_NAMESPACE -# define __STL_END_NAMESPACE _STLP_END_NAMESPACE -# define __STL_VENDOR_STD _STLP_VENDOR_STD -# define __STL_VENDOR_CSTD _STLP_VENDOR_CSTD -# endif -# endif - -/* -# if defined (_STLP_XXX) && ! defined ( __STL_XXX ) -# define __STL_XXX _STLP_XXX -# endif -*/ - -/* 5.0 -> 4.6 compatibility section */ -#if 1 /* def _STLP_46_COMPATIBILITY */ - -/* provide a uniform way to access full functionality */ -# define __slist__ slist -# define __map__ map -# define __multimap__ multimap -# define __set__ set -# define __multiset__ multiset -# define __list__ list -# define __hash_map__ hash_map -# define __hash_multimap__ hash_multimap -# define __hash_set__ hash_set -# define __hash_multiset__ hash_multiset -# define __vector__ vector - -#endif - diff --git a/build/stlport/stlport/stl/_construct.h b/build/stlport/stlport/stl/_construct.h deleted file mode 100644 index 93618780b9ee..000000000000 --- a/build/stlport/stlport/stl/_construct.h +++ /dev/null @@ -1,289 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_CONSTRUCT_H -#define _STLP_INTERNAL_CONSTRUCT_H - -#if !defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_INTERNAL_CSTRING) -# include -#endif - -#ifndef _STLP_INTERNAL_NEW -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -#ifndef _STLP_TYPE_TRAITS_H -# include -#endif - -#if !defined (_STLP_MOVE_CONSTRUCT_FWK_H) && !defined (_STLP_NO_MOVE_SEMANTIC) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -inline void __destroy_aux(_Tp* __pointer, const __false_type& /*_Trivial_destructor*/) -{ __pointer->~_Tp(); } - -template -inline void __destroy_aux(_Tp*, const __true_type& /*_Trivial_destructor*/) {} - -template -inline void _Destroy(_Tp* __pointer) { - typedef typename __type_traits<_Tp>::has_trivial_destructor _Trivial_destructor; - __destroy_aux(__pointer, _Trivial_destructor()); -#if defined (_STLP_DEBUG_UNINITIALIZED) - memset(__REINTERPRET_CAST(char*, __pointer), _STLP_SHRED_BYTE, sizeof(_Tp)); -#endif -} - -template -inline void _Destroy_Moved(_Tp* __pointer) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::complete _Trivial_destructor; - __destroy_aux(__pointer, _Trivial_destructor()); -# if defined (_STLP_DEBUG_UNINITIALIZED) - memset((char*)__pointer, _STLP_SHRED_BYTE, sizeof(_Tp)); -# endif -#else - _Destroy(__pointer); -#endif -} - -#if defined (new) -# define _STLP_NEW_REDEFINE new -# undef new -#endif - -template -inline void _Construct_aux (_T1* __p, const __false_type&) { - new(__p) _T1(); -} - -template -inline void _Construct_aux (_T1* __p, const __true_type&) { -#if defined (_STLP_DEF_CONST_PLCT_NEW_BUG) - *__p = _T1(0); -#else - // We use binary copying for POD types since it results - // in a considerably better code at least on MSVC. - *__p = _T1(); -#endif /* _STLP_DEF_CONST_PLCT_NEW_BUG */ -} - -template -inline void _Construct(_T1* __p) { -#if defined (_STLP_DEBUG_UNINITIALIZED) - memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_T1)); -#endif -#if defined (_STLP_DEF_CONST_PLCT_NEW_BUG) - _Construct_aux (__p, _HasDefaultZeroValue(__p)._Answer()); -#else - _Construct_aux (__p, _Is_POD(__p)._Answer()); -#endif /* _STLP_DEF_CONST_PLCT_NEW_BUG */ -} - -template -inline void _Copy_Construct_aux(_Tp* __p, const _Tp& __val, const __false_type&) { - new(__p) _Tp(__val); -} - -template -inline void _Copy_Construct_aux(_Tp* __p, const _Tp& __val, const __true_type&) { - // We use binary copying for POD types since it results - // in a considerably better code at least on MSVC. - *__p = __val; -} - -template -inline void _Copy_Construct(_Tp* __p, const _Tp& __val) { -#if defined (_STLP_DEBUG_UNINITIALIZED) - memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_Tp)); -#endif - _Copy_Construct_aux(__p, __val, _Is_POD(__p)._Answer()); -} - -template -inline void _Param_Construct_aux(_T1* __p, const _T2& __val, const __false_type&) { - new(__p) _T1(__val); -} - -template -inline void _Param_Construct_aux(_T1* __p, const _T2& __val, const __true_type&) { - // We use binary copying for POD types since it results - // in a considerably better code at least on MSVC. - *__p = _T1(__val); -} - -template -inline void _Param_Construct(_T1* __p, const _T2& __val) { -#if defined (_STLP_DEBUG_UNINITIALIZED) - memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_T1)); -#endif - _Param_Construct_aux(__p, __val, _Is_POD(__p)._Answer()); -} - -template -inline void _Move_Construct_Aux(_T1* __p, _T2& __val, const __false_type& /*_IsPOD*/) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - new(__p) _T1(_STLP_PRIV _AsMoveSource(__val)); -#else - _Param_Construct(__p, __val); -#endif -} - -template -inline void _Move_Construct_Aux(_T1* __p, _T2& __val, const __true_type& /*_IsPOD*/) { - // We use binary copying for POD types since it results - // in a considerably better code at least on MSVC. - *__p = _T1(__val); -} - -template -inline void _Move_Construct(_T1* __p, _T2& __val) { -#if defined (_STLP_DEBUG_UNINITIALIZED) - memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_T1)); -#endif - _Move_Construct_Aux(__p, __val, _Is_POD(__p)._Answer()); -} - -#if defined(_STLP_NEW_REDEFINE) -# if defined (DEBUG_NEW) -# define new DEBUG_NEW -# endif -# undef _STLP_NEW_REDEFINE -#endif - -template -_STLP_INLINE_LOOP void -__destroy_range_aux(_ForwardIterator __first, _ForwardIterator __last, _Tp*, const __false_type& /*_Trivial_destructor*/) { - for ( ; __first != __last; ++__first) { - __destroy_aux(&(*__first), __false_type()); -#if defined (_STLP_DEBUG_UNINITIALIZED) - memset((char*)&(*__first), _STLP_SHRED_BYTE, sizeof(_Tp)); -#endif - } -} - -template -#if defined (_STLP_DEBUG_UNINITIALIZED) -_STLP_INLINE_LOOP void -__destroy_range_aux(_ForwardIterator __first, _ForwardIterator __last, _Tp*, const __true_type& /*_Trivial_destructor*/) { - for ( ; __first != __last; ++__first) - memset((char*)&(*__first), _STLP_SHRED_BYTE, sizeof(_Tp)); -} -#else -inline void -__destroy_range_aux(_ForwardIterator, _ForwardIterator, _Tp*, const __true_type& /*_Trivial_destructor*/) {} -#endif - -template -inline void -__destroy_range(_ForwardIterator __first, _ForwardIterator __last, _Tp *__ptr) { - typedef typename __type_traits<_Tp>::has_trivial_destructor _Trivial_destructor; - __destroy_range_aux(__first, __last, __ptr, _Trivial_destructor()); -} - -template -inline void _Destroy_Range(_ForwardIterator __first, _ForwardIterator __last) { - __destroy_range(__first, __last, _STLP_VALUE_TYPE(__first, _ForwardIterator)); -} - -inline void _Destroy_Range(char*, char*) {} -#if defined (_STLP_HAS_WCHAR_T) // dwa 8/15/97 -inline void _Destroy_Range(wchar_t*, wchar_t*) {} -inline void _Destroy_Range(const wchar_t*, const wchar_t*) {} -#endif - -#if !defined (_STLP_NO_MOVE_SEMANTIC) -template -inline void -__destroy_mv_srcs(_ForwardIterator __first, _ForwardIterator __last, _Tp *__ptr) { - typedef typename __move_traits<_Tp>::complete _CompleteMove; - __destroy_range_aux(__first, __last, __ptr, _CompleteMove()); -} -#endif - -template -inline void _Destroy_Moved_Range(_ForwardIterator __first, _ForwardIterator __last) -#if !defined (_STLP_NO_MOVE_SEMANTIC) -{ __destroy_mv_srcs(__first, __last, _STLP_VALUE_TYPE(__first, _ForwardIterator)); } -#else -{ _Destroy_Range(__first, __last); } -#endif - -#if defined (_STLP_DEF_CONST_DEF_PARAM_BUG) -// Those adaptors are here to fix common compiler bug regarding builtins: -// expressions like int k = int() should initialize k to 0 -template -inline _Tp __default_constructed_aux(_Tp*, const __false_type&) { - return _Tp(); -} -template -inline _Tp __default_constructed_aux(_Tp*, const __true_type&) { - return _Tp(0); -} - -template -inline _Tp __default_constructed(_Tp* __p) { - return __default_constructed_aux(__p, _HasDefaultZeroValue(__p)._Answer()); -} - -# define _STLP_DEFAULT_CONSTRUCTED(_TTp) __default_constructed((_TTp*)0) -#else -# define _STLP_DEFAULT_CONSTRUCTED(_TTp) _TTp() -#endif /* _STLP_DEF_CONST_DEF_PARAM_BUG */ - - -#if !defined (_STLP_NO_ANACHRONISMS) -// -------------------------------------------------- -// Old names from the HP STL. - -template -inline void construct(_T1* __p, const _T2& __val) {_Param_Construct(__p, __val); } -template -inline void construct(_T1* __p) { _STLP_STD::_Construct(__p); } -template -inline void destroy(_Tp* __pointer) { _STLP_STD::_Destroy(__pointer); } -template -inline void destroy(_ForwardIterator __first, _ForwardIterator __last) { _STLP_STD::_Destroy_Range(__first, __last); } -#endif /* _STLP_NO_ANACHRONISMS */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_CONSTRUCT_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_cprolog.h b/build/stlport/stlport/stl/_cprolog.h deleted file mode 100644 index 1d276562cccc..000000000000 --- a/build/stlport/stlport/stl/_cprolog.h +++ /dev/null @@ -1,25 +0,0 @@ -/* NOTE : this header has no guards and is MEANT for multiple inclusion! - * If you are using "header protection" option with your compiler, - * please also find #pragma which disables it and put it here, to - * allow reentrancy of this header. - */ - -#ifdef std -# undef std /* We undef "std" on entry , as STLport headers may include native ones. */ -#endif - -#ifdef _STLP_PROLOG_HEADER_INCLUDED -# error STlport prolog header can not be reincluded as long as epilog has not be included. -#endif - -#define _STLP_PROLOG_HEADER_INCLUDED - -#ifndef _STLP_FEATURES_H -# include -#endif - -/* If the platform provides any specific prolog actions, - * like #pragmas, do include platform-specific prolog file */ -#if defined (_STLP_HAS_SPECIFIC_PROLOG_EPILOG) -# include -#endif diff --git a/build/stlport/stlport/stl/_csetjmp.h b/build/stlport/stlport/stl/_csetjmp.h deleted file mode 100644 index ca132c1101b5..000000000000 --- a/build/stlport/stlport/stl/_csetjmp.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CSETJMP -#define _STLP_INTERNAL_CSETJMP - -// if the macro is on, the header is already there -#if !defined (setjmp) -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(csetjmp) -# endif -# else -# include -# endif -#endif - -#if defined (_STLP_IMPORT_VENDOR_CSTD) - -# if defined (__BORLANDC__) && defined (_STLP_USE_NEW_C_HEADERS) -/* For Borland, even if stdjmp.h is included symbols won't be in global namespace - * so we need to reach them in vendor namespace: - */ -# undef _STLP_NATIVE_SETJMP_H_INCLUDED -# endif - -_STLP_BEGIN_NAMESPACE -# if !defined (_STLP_NATIVE_SETJMP_H_INCLUDED) -using _STLP_VENDOR_CSTD::jmp_buf; -# else -// if setjmp.h was included first, this is in global namespace, not in -// vendor's std. - 2005-08-04, ptr -using ::jmp_buf; -# endif -# if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -# if !defined (setjmp) -# if !defined (__MSL__) || ((__MSL__ > 0x7001) && (__MSL__ < 0x8000)) -# ifndef _STLP_NATIVE_SETJMP_H_INCLUDED -using _STLP_VENDOR_CSTD::setjmp; -# else -using ::setjmp; -# endif -# endif -# endif -# if !defined (_STLP_NATIVE_SETJMP_H_INCLUDED) -using _STLP_VENDOR_CSTD::longjmp; -# else -using ::longjmp; -# endif -# endif -_STLP_END_NAMESPACE -#endif /* _STLP_IMPORT_VENDOR_CSTD */ - -#endif diff --git a/build/stlport/stlport/stl/_csignal.h b/build/stlport/stlport/stl/_csignal.h deleted file mode 100644 index 551846b3853d..000000000000 --- a/build/stlport/stlport/stl/_csignal.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CSIGNAL -#define _STLP_INTERNAL_CSIGNAL - -#if !defined (_STLP_WCE) -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(csignal) -# endif -# else -# include -# endif - -# if defined (_STLP_IMPORT_VENDOR_CSTD) -_STLP_BEGIN_NAMESPACE -# if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -using _STLP_VENDOR_CSTD::signal; -using _STLP_VENDOR_CSTD::raise; -# endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */ -using _STLP_VENDOR_CSTD::sig_atomic_t; -_STLP_END_NAMESPACE -# endif /* _STLP_IMPORT_VENDOR_CSTD */ -#endif - -#endif /* _STLP_INTERNAL_CSIGNAL */ diff --git a/build/stlport/stlport/stl/_cstdarg.h b/build/stlport/stlport/stl/_cstdarg.h deleted file mode 100644 index e98f31cd5aec..000000000000 --- a/build/stlport/stlport/stl/_cstdarg.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - */ - -#ifndef _STLP_INTERNAL_CSTDARG -#define _STLP_INTERNAL_CSTDARG - -#if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstdarg) -# endif -#else -# include -#endif - -#ifdef _STLP_IMPORT_VENDOR_CSTD -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::va_list; -_STLP_END_NAMESPACE -#endif /* _STLP_IMPORT_VENDOR_CSTD */ - -#endif diff --git a/build/stlport/stlport/stl/_cstddef.h b/build/stlport/stlport/stl/_cstddef.h deleted file mode 100644 index 35a585c4eea5..000000000000 --- a/build/stlport/stlport/stl/_cstddef.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CSTDDEF -#define _STLP_INTERNAL_CSTDDEF - -# if (__GNUC__ >= 3) && defined (__CYGWIN__) // this total HACK is the only expedient way I could cygwin to work with GCC 3.0 -# define __need_wint_t // mostly because wint_t didn't seem to get defined otherwise :( -# define __need_wchar_t -# define __need_size_t -# define __need_ptrdiff_t -# define __need_NULL -# endif - -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstddef) -# endif -# else -# include -# endif - -# ifdef _STLP_IMPORT_VENDOR_CSTD -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::ptrdiff_t; -using _STLP_VENDOR_CSTD::size_t; -_STLP_END_NAMESPACE -# endif /* _STLP_IMPORT_VENDOR_CSTD */ - -#endif /* _STLP_INTERNAL_CSTDDEF */ diff --git a/build/stlport/stlport/stl/_cstdio.h b/build/stlport/stlport/stl/_cstdio.h deleted file mode 100644 index 67236f259fdc..000000000000 --- a/build/stlport/stlport/stl/_cstdio.h +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CSTDIO -#define _STLP_INTERNAL_CSTDIO - -#if defined (__Lynx__) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(stdarg.h) -# endif -#endif - -#if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstdio) -# endif -#else -# include -#endif - -#if defined (__MWERKS__) -# undef stdin -# undef stdout -# undef stderr -# define stdin (&_STLP_VENDOR_CSTD::__files[0]) -# define stdout (&_STLP_VENDOR_CSTD::__files[1]) -# define stderr (&_STLP_VENDOR_CSTD::__files[2]) -#endif - -#if defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB < 1400) || defined (_STLP_USING_PLATFORM_SDK_COMPILER) -inline int vsnprintf(char *s1, size_t n, const char *s2, va_list v) -{ return _STLP_VENDOR_CSTD::_vsnprintf(s1, n, s2, v); } -#endif - -#if defined (_STLP_IMPORT_VENDOR_CSTD ) -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::FILE; -using _STLP_VENDOR_CSTD::fpos_t; -using _STLP_VENDOR_CSTD::size_t; - -// undef obsolete macros -# undef putc -# undef getc -# undef getchar -# undef putchar -# undef feof -# undef ferror - -# if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -using _STLP_VENDOR_CSTD::clearerr; -using _STLP_VENDOR_CSTD::fclose; -using _STLP_VENDOR_CSTD::feof; -using _STLP_VENDOR_CSTD::ferror; -using _STLP_VENDOR_CSTD::fflush; -using _STLP_VENDOR_CSTD::fgetc; -using _STLP_VENDOR_CSTD::fgetpos; -using _STLP_VENDOR_CSTD::fgets; -using _STLP_VENDOR_CSTD::fopen; -using _STLP_VENDOR_CSTD::fprintf; -using _STLP_VENDOR_CSTD::fputc; -using _STLP_VENDOR_CSTD::fputs; -using _STLP_VENDOR_CSTD::fread; -# if !defined (_WIN32_WCE) || (_WIN32_WCE < 400) -using _STLP_VENDOR_CSTD::freopen; -# endif -using _STLP_VENDOR_CSTD::fscanf; -using _STLP_VENDOR_CSTD::fseek; -using _STLP_VENDOR_CSTD::fsetpos; -using _STLP_VENDOR_CSTD::ftell; -using _STLP_VENDOR_CSTD::fwrite; - -# if !(defined (__IBMCPP__) && (__IBMCPP__ >= 500)) -# if !defined (_WIN32_WCE) || (_WIN32_WCE < 400) // Supplied as macros, TODO: use inline function to redirect to the macros? - using _STLP_VENDOR_CSTD::getc; - using _STLP_VENDOR_CSTD::putc; -# endif - using _STLP_VENDOR_CSTD::getchar; - using _STLP_VENDOR_CSTD::putchar; -# endif - -using _STLP_VENDOR_CSTD::gets; -# if !defined (_WIN32_WCE) || (_WIN32_WCE < 400) -using _STLP_VENDOR_CSTD::perror; -# endif -using _STLP_VENDOR_CSTD::printf; -using _STLP_VENDOR_CSTD::puts; -# if !defined (_WIN32_WCE) || (_WIN32_WCE < 400) -using _STLP_VENDOR_CSTD::remove; -using _STLP_VENDOR_CSTD::rename; -using _STLP_VENDOR_CSTD::rewind; -using _STLP_VENDOR_CSTD::setbuf; -using _STLP_VENDOR_CSTD::tmpfile; -using _STLP_VENDOR_CSTD::tmpnam; -# endif -using _STLP_VENDOR_CSTD::scanf; -using _STLP_VENDOR_CSTD::setvbuf; -using _STLP_VENDOR_CSTD::sprintf; -using _STLP_VENDOR_CSTD::sscanf; -using _STLP_VENDOR_CSTD::ungetc; -using _STLP_VENDOR_CSTD::vfprintf; -using _STLP_VENDOR_CSTD::vprintf; -using _STLP_VENDOR_CSTD::vsprintf; -# if (defined (__MWERKS__) || (defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB < 1400)) || \ - (defined (__BORLANDC__))) -using _STLP_VENDOR_CSTD::vsnprintf; -# endif -# endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */ -_STLP_END_NAMESPACE -#endif /* _STLP_IMPORT_VENDOR_CSTD */ - -#endif /* _STLP_INTERNAL_CSTDIO */ diff --git a/build/stlport/stlport/stl/_cstdlib.h b/build/stlport/stlport/stl/_cstdlib.h deleted file mode 100644 index 4d1dd35ee510..000000000000 --- a/build/stlport/stlport/stl/_cstdlib.h +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CSTDLIB -#define _STLP_INTERNAL_CSTDLIB - -#if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstdlib) -# endif -#else -# include -#endif - -#if defined (__BORLANDC__) && !defined (__linux__) -/* Borland process.h header do not bring anything here and is just included - * in order to avoid inclusion later. This header cannot be included later - * because Borland compiler consider that for instance the abort function - * defined as extern "C" cannot be overloaded and it finds 2 "overloads", - * once in native std namespace and the other in STLport namespace... - */ -# include -#endif - -/* on evc3/evc4 including stdlib.h also defines setjmp macro */ -#if defined (_STLP_WCE) -# define _STLP_NATIVE_SETJMP_H_INCLUDED -#endif - -#if defined (__MSL__) && (__MSL__ <= 0x5003) -namespace std { - typedef ::div_t div_t; - typedef ::ldiv_t ldiv_t; -# ifdef __MSL_LONGLONG_SUPPORT__ - typedef ::lldiv_t lldiv_t; -# endif -} -#endif - -#ifdef _STLP_IMPORT_VENDOR_CSTD -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::div_t; -using _STLP_VENDOR_CSTD::ldiv_t; -using _STLP_VENDOR_CSTD::size_t; - -# ifndef _STLP_NO_CSTD_FUNCTION_IMPORTS -# ifndef _STLP_WCE -// these functions just don't exist on Windows CE -using _STLP_VENDOR_CSTD::abort; -using _STLP_VENDOR_CSTD::getenv; -using _STLP_VENDOR_CSTD::mblen; -using _STLP_VENDOR_CSTD::mbtowc; -using _STLP_VENDOR_CSTD::system; -using _STLP_VENDOR_CSTD::bsearch; -# endif -using _STLP_VENDOR_CSTD::atexit; -using _STLP_VENDOR_CSTD::exit; -using _STLP_VENDOR_CSTD::calloc; -using _STLP_VENDOR_CSTD::free; -using _STLP_VENDOR_CSTD::malloc; -using _STLP_VENDOR_CSTD::realloc; -using _STLP_VENDOR_CSTD::atof; -using _STLP_VENDOR_CSTD::atoi; -using _STLP_VENDOR_CSTD::atol; -using _STLP_VENDOR_CSTD::mbstowcs; -using _STLP_VENDOR_CSTD::strtod; -using _STLP_VENDOR_CSTD::strtol; -using _STLP_VENDOR_CSTD::strtoul; - -# if !(defined (_STLP_NO_NATIVE_WIDE_STREAMS) || defined (_STLP_NO_NATIVE_MBSTATE_T)) -using _STLP_VENDOR_CSTD::wcstombs; -# ifndef _STLP_WCE -using _STLP_VENDOR_CSTD::wctomb; -# endif -# endif -using _STLP_VENDOR_CSTD::qsort; -using _STLP_VENDOR_CSTD::labs; -using _STLP_VENDOR_CSTD::ldiv; -# if defined (_STLP_LONG_LONG) && !defined (_STLP_NO_VENDOR_STDLIB_L) -# if !defined(__sun) -using _STLP_VENDOR_CSTD::llabs; -using _STLP_VENDOR_CSTD::lldiv_t; -using _STLP_VENDOR_CSTD::lldiv; -# else -using ::llabs; -using ::lldiv_t; -using ::lldiv; -# endif -# endif -using _STLP_VENDOR_CSTD::rand; -using _STLP_VENDOR_CSTD::srand; -# endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */ -_STLP_END_NAMESPACE -#endif /* _STLP_IMPORT_VENDOR_CSTD */ - -#if (defined (__BORLANDC__) || defined (__WATCOMC__)) && defined (_STLP_USE_NEW_C_HEADERS) -//In this config bcc define everything in std namespace and not in -//the global one. -inline int abs(int __x) { return _STLP_VENDOR_CSTD::abs(__x); } -inline _STLP_VENDOR_CSTD::div_t div(int __x, int __y) { return _STLP_VENDOR_CSTD::div(__x, __y); } -#endif - -#if defined(_MSC_EXTENSIONS) && defined(_STLP_MSVC) && (_STLP_MSVC <= 1300) -# define _STLP_RESTORE_FUNCTION_INTRINSIC -# pragma warning (push) -# pragma warning (disable: 4162) -# pragma function (abs) -#endif - -//HP-UX native lib has abs() and div() functions in global namespace -#if !defined (__SUNPRO_CC) && \ - (!defined (__HP_aCC) || (__HP_aCC < 30000)) - -//MSVC starting with .Net 2003 already define all math functions in global namespace: -# if !defined (__WATCOMC__) && \ - (!defined (_STLP_MSVC_LIB) || (_STLP_MSVC_LIB < 1310) || defined (UNDER_CE)) -inline long abs(long __x) { return _STLP_VENDOR_CSTD::labs(__x); } -# endif - -/** VC since version 8 has this, the platform SDK and CE SDKs hanging behind. */ -# if !defined (__WATCOMC__) && \ - (!defined (_STLP_MSVC_LIB) || (_STLP_MSVC_LIB < 1400) || defined (_STLP_USING_PLATFORM_SDK_COMPILER) || defined (UNDER_CE)) -inline _STLP_VENDOR_CSTD::ldiv_t div(long __x, long __y) { return _STLP_VENDOR_CSTD::ldiv(__x, __y); } -# endif - -#endif - -#if defined (_STLP_RESTORE_FUNCTION_INTRINSIC) -# pragma intrinsic (abs) -# pragma warning (pop) -# undef _STLP_RESTORE_FUNCTION_INTRINSIC -#endif - -#if defined (_STLP_LONG_LONG) -# if !defined (_STLP_NO_VENDOR_STDLIB_L) -# if !defined (__sun) -inline _STLP_LONG_LONG abs(_STLP_LONG_LONG __x) { return _STLP_VENDOR_CSTD::llabs(__x); } -inline lldiv_t div(_STLP_LONG_LONG __x, _STLP_LONG_LONG __y) { return _STLP_VENDOR_CSTD::lldiv(__x, __y); } -# else -inline _STLP_LONG_LONG abs(_STLP_LONG_LONG __x) { return ::llabs(__x); } -inline lldiv_t div(_STLP_LONG_LONG __x, _STLP_LONG_LONG __y) { return ::lldiv(__x, __y); } -# endif -# else -inline _STLP_LONG_LONG abs(_STLP_LONG_LONG __x) { return __x < 0 ? -__x : __x; } -# endif -#endif - -/* C++ Standard is unclear about several call to 'using ::func' if new overloads - * of ::func appears between 2 successive 'using' calls. To avoid this potential - * problem we provide all abs overload before the 'using' call. - * Beware: This header inclusion has to be after all abs overload of this file. - * The first 'using ::abs' call is going to be in the other header. - */ -#ifndef _STLP_INTERNAL_CMATH -# include -#endif - -#if defined (_STLP_IMPORT_VENDOR_CSTD) && !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -// ad hoc, don't replace with _STLP_VENDOR_CSTD::abs here! - ptr 2005-03-05 -_STLP_BEGIN_NAMESPACE -using ::abs; -using ::div; -_STLP_END_NAMESPACE -#endif - -#endif /* _STLP_INTERNAL_CSTDLIB */ diff --git a/build/stlport/stlport/stl/_cstring.h b/build/stlport/stlport/stl/_cstring.h deleted file mode 100644 index fe0fd5fe4346..000000000000 --- a/build/stlport/stlport/stl/_cstring.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CSTRING -#define _STLP_INTERNAL_CSTRING - -#if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstring) -# endif -#else -# include -#endif - -#ifdef _STLP_IMPORT_VENDOR_CSTD -_STLP_BEGIN_NAMESPACE -# include -_STLP_END_NAMESPACE -#endif /* _STLP_IMPORT_VENDOR_CSTD */ - -#endif /* _STLP_INTERNAL_CSTRING */ diff --git a/build/stlport/stlport/stl/_ctime.h b/build/stlport/stlport/stl/_ctime.h deleted file mode 100644 index 56e433bb88a8..000000000000 --- a/build/stlport/stlport/stl/_ctime.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CTIME -#define _STLP_INTERNAL_CTIME - -#if !defined (_STLP_WCE_EVC3) - -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(ctime) -# endif -# else -# include -# endif - -# if defined (_STLP_IMPORT_VENDOR_CSTD) -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD::size_t; -using _STLP_VENDOR_CSTD::clock_t; -using _STLP_VENDOR_CSTD::time_t; -using _STLP_VENDOR_CSTD::tm; -# if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -using _STLP_VENDOR_CSTD::clock; -using _STLP_VENDOR_CSTD::asctime; -using _STLP_VENDOR_CSTD::ctime; -using _STLP_VENDOR_CSTD::gmtime; - -# if !defined (_WIN32_WCE) || (_WIN32_WCE < 0x500) // CE5 stopped supplying this -using _STLP_VENDOR_CSTD::difftime; -# endif -using _STLP_VENDOR_CSTD::mktime; -using _STLP_VENDOR_CSTD::localtime; -using _STLP_VENDOR_CSTD::strftime; -using _STLP_VENDOR_CSTD::time; -# endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */ -_STLP_END_NAMESPACE -# endif /* _STLP_IMPORT_VENDOR_CSTD */ - -#endif - -#endif /* _STLP_INTERNAL_CTIME */ diff --git a/build/stlport/stlport/stl/_ctraits_fns.h b/build/stlport/stlport/stl/_ctraits_fns.h deleted file mode 100644 index e4a4af109be7..000000000000 --- a/build/stlport/stlport/stl/_ctraits_fns.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - -#ifndef _STLP_INTERNAL_CTRAITS_FUNCTIONS_H -#define _STLP_INTERNAL_CTRAITS_FUNCTIONS_H - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -// This file contains a few small adapters that allow a character -// traits class to be used as a function object. - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _Eq_traits - : public binary_function { - bool operator()(const typename _Traits::char_type& __x, - const typename _Traits::char_type& __y) const - { return _Traits::eq(__x, __y); } -}; - -template -struct _Eq_char_bound - : public unary_function { - typename _Traits::char_type __val; - _Eq_char_bound(typename _Traits::char_type __c) : __val(__c) {} - bool operator()(const typename _Traits::char_type& __x) const - { return _Traits::eq(__x, __val); } -}; - -template -struct _Neq_char_bound - : public unary_function -{ - typename _Traits::char_type __val; - _Neq_char_bound(typename _Traits::char_type __c) : __val(__c) {} - bool operator()(const typename _Traits::char_type& __x) const - { return !_Traits::eq(__x, __val); } -}; - -template -struct _Eq_int_bound - : public unary_function { - typename _Traits::int_type __val; - - _Eq_int_bound(typename _Traits::int_type __c) : __val(__c) {} - bool operator()(const typename _Traits::char_type& __x) const - { return _Traits::eq_int_type(_Traits::to_int_type(__x), __val); } -}; - -#if 0 -template -struct _Lt_traits - : public binary_function { - bool operator()(const typename _Traits::char_type& __x, - const typename _Traits::char_type& __y) const - { return _Traits::lt(__x, __y); } -}; -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_CTRAITS_FUNCTIONS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_ctype.h b/build/stlport/stlport/stl/_ctype.h deleted file mode 100644 index 33a5d3cbed3c..000000000000 --- a/build/stlport/stlport/stl/_ctype.h +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - -#ifndef _STLP_INTERNAL_CTYPE_H -#define _STLP_INTERNAL_CTYPE_H - -#ifndef _STLP_C_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -class _STLP_CLASS_DECLSPEC ctype_base { -public: - enum mask { - space = _Locale_SPACE, - print = _Locale_PRINT, - cntrl = _Locale_CNTRL, - upper = _Locale_UPPER, - lower = _Locale_LOWER, - alpha = _Locale_ALPHA, - digit = _Locale_DIGIT, - punct = _Locale_PUNCT, - xdigit = _Locale_XDIGIT, - alnum = alpha | digit, - graph = alnum | punct - }; -}; - -// ctype<> template - -template class ctype {}; -template class ctype_byname {}; - -//ctype specializations - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC ctype : public locale::facet, public ctype_base { -#ifndef _STLP_NO_WCHAR_T -# ifdef _STLP_MSVC - typedef ctype _Wctype; - friend _Wctype; -# else - friend class ctype; -# endif -#endif -public: - - typedef char char_type; - - explicit ctype(const mask* __tab = 0, bool __del = false, size_t __refs = 0); - bool is(mask __m, char __c) const - { return ((*(_M_ctype_table+(unsigned char)__c)) & __m) != 0; } - - const char* is(const char* __low, const char* __high, mask* __vec) const { - for (const char* __p = __low;__p != __high; ++__p, ++__vec) { - *__vec = _M_ctype_table[(unsigned char)*__p]; - } - return __high; - } - - const char* scan_is(mask __m, const char* __low, const char* __high) const; - const char* scan_not(mask __m, const char* __low, const char* __high) const; - - char (toupper)(char __c) const { return do_toupper(__c); } - const char* (toupper)(char* __low, const char* __high) const { - return do_toupper(__low, __high); - } - - char (tolower)(char __c) const { return do_tolower(__c); } - const char* (tolower)(char* __low, const char* __high) const { - return do_tolower(__low, __high); - } - - char widen(char __c) const { return do_widen(__c); } - const char* widen(const char* __low, const char* __high, char* __to) const { - return do_widen(__low, __high, __to); - } - - char narrow(char __c, char __dfault) const { - return do_narrow(__c, __dfault); - } - const char* narrow(const char* __low, const char* __high, - char __dfault, char* __to) const { - return do_narrow(__low, __high, __dfault, __to); - } - - static _STLP_STATIC_DECLSPEC locale::id id; - _STLP_STATIC_CONSTANT(size_t, table_size = 256); - -protected: - const mask* table() const _STLP_NOTHROW { return _M_ctype_table; } - static const mask* _STLP_CALL classic_table() _STLP_NOTHROW; - - ~ctype(); - - virtual char do_toupper(char __c) const; - virtual char do_tolower(char __c) const; - virtual const char* do_toupper(char* __low, const char* __high) const; - virtual const char* do_tolower(char* __low, const char* __high) const; - virtual char do_widen(char __c) const; - virtual const char* do_widen(const char* __low, const char* __high, - char* __to) const; - virtual char do_narrow(char __c, char /* dfault */ ) const; - virtual const char* do_narrow(const char* __low, const char* __high, - char /* dfault */, char* __to) const; -private: - struct _Is_mask { - mask __m; - _Is_mask(mask __x): __m(__x) {} - bool operator()(char __c) {return (__m & (unsigned char) __c) != 0;} - }; - -protected: - const mask* _M_ctype_table; -private: - bool _M_delete; -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC ctype_byname: public ctype { - friend class _Locale_impl; -public: - explicit ctype_byname(const char*, size_t = 0); - ~ctype_byname(); - - virtual char do_toupper(char __c) const; - virtual char do_tolower(char __c) const; - - virtual const char* do_toupper(char*, const char*) const; - virtual const char* do_tolower(char*, const char*) const; - -private: - ctype_byname(_Locale_ctype* __ctype) - : _M_ctype(__ctype) - { _M_init(); } - - void _M_init(); - - //explicitely defined as private to avoid warnings: - typedef ctype_byname _Self; - ctype_byname(_Self const&); - _Self& operator = (_Self const&); - - mask _M_byname_table[table_size]; - _Locale_ctype* _M_ctype; -}; - -# ifndef _STLP_NO_WCHAR_T -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC ctype : public locale::facet, public ctype_base { -public: - typedef wchar_t char_type; - - explicit ctype(size_t __refs = 0) : locale::facet(__refs) {} - - bool is(mask __m, wchar_t __c) const - { return do_is(__m, __c); } - - const wchar_t* is(const wchar_t* __low, const wchar_t* __high, - mask* __vec) const - { return do_is(__low, __high, __vec); } - - const wchar_t* scan_is(mask __m, - const wchar_t* __low, const wchar_t* __high) const - { return do_scan_is(__m, __low, __high); } - - const wchar_t* scan_not (mask __m, - const wchar_t* __low, const wchar_t* __high) const - { return do_scan_not(__m, __low, __high); } - - wchar_t (toupper)(wchar_t __c) const { return do_toupper(__c); } - const wchar_t* (toupper)(wchar_t* __low, const wchar_t* __high) const - { return do_toupper(__low, __high); } - - wchar_t (tolower)(wchar_t __c) const { return do_tolower(__c); } - const wchar_t* (tolower)(wchar_t* __low, const wchar_t* __high) const - { return do_tolower(__low, __high); } - - wchar_t widen(char __c) const { return do_widen(__c); } - const char* widen(const char* __low, const char* __high, - wchar_t* __to) const - { return do_widen(__low, __high, __to); } - - char narrow(wchar_t __c, char __dfault) const - { return do_narrow(__c, __dfault); } - const wchar_t* narrow(const wchar_t* __low, const wchar_t* __high, - char __dfault, char* __to) const - { return do_narrow(__low, __high, __dfault, __to); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~ctype(); - - virtual bool do_is(mask __m, wchar_t __c) const; - virtual const wchar_t* do_is(const wchar_t*, const wchar_t*, mask*) const; - virtual const wchar_t* do_scan_is(mask, - const wchar_t*, const wchar_t*) const; - virtual const wchar_t* do_scan_not(mask, - const wchar_t*, const wchar_t*) const; - virtual wchar_t do_toupper(wchar_t __c) const; - virtual const wchar_t* do_toupper(wchar_t*, const wchar_t*) const; - virtual wchar_t do_tolower(wchar_t c) const; - virtual const wchar_t* do_tolower(wchar_t*, const wchar_t*) const; - virtual wchar_t do_widen(char c) const; - virtual const char* do_widen(const char*, const char*, wchar_t*) const; - virtual char do_narrow(wchar_t __c, char __dfault) const; - virtual const wchar_t* do_narrow(const wchar_t*, const wchar_t*, - char, char*) const; -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC ctype_byname: public ctype { - friend class _Locale_impl; -public: - explicit ctype_byname(const char* __name, size_t __refs = 0); - -protected: - ~ctype_byname(); - - virtual bool do_is(mask __m, wchar_t __c) const; - virtual const wchar_t* do_is(const wchar_t*, const wchar_t*, mask*) const; - virtual const wchar_t* do_scan_is(mask, - const wchar_t*, const wchar_t*) const; - virtual const wchar_t* do_scan_not(mask, - const wchar_t*, const wchar_t*) const; - virtual wchar_t do_toupper(wchar_t __c) const; - virtual const wchar_t* do_toupper(wchar_t*, const wchar_t*) const; - virtual wchar_t do_tolower(wchar_t c) const; - virtual const wchar_t* do_tolower(wchar_t*, const wchar_t*) const; - -private: - ctype_byname(_Locale_ctype* __ctype) - : _M_ctype(__ctype) {} - - //explicitely defined as private to avoid warnings: - typedef ctype_byname _Self; - ctype_byname(_Self const&); - _Self& operator = (_Self const&); - - _Locale_ctype* _M_ctype; -}; - -# endif /* WCHAR_T */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_CTYPE_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_cwchar.h b/build/stlport/stlport/stl/_cwchar.h deleted file mode 100644 index 87cb82b7e266..000000000000 --- a/build/stlport/stlport/stl/_cwchar.h +++ /dev/null @@ -1,342 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CWCHAR -#define _STLP_INTERNAL_CWCHAR - -#if defined (_STLP_WCE_EVC3) -# ifndef _STLP_INTERNAL_MBSTATE_T -# include -# endif -#else -# if defined (__GNUC__) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cstddef) -# endif -# endif - -# if !defined (_STLP_NO_CWCHAR) && defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cwchar) -# endif -# if defined (__OpenBSD__) -typedef _BSD_WINT_T_ wint_t; -# endif /* __OpenBSD__ */ - -# if defined (__DMC__) -# define __STDC_LIMIT_MACROS -# include // WCHAR_MIN, WCHAR_MAX -# endif -# elif defined (_STLP_NO_WCHAR_T) || \ - (defined (__BORLANDC__) && (__BORLANDC__ < 0x570)) || \ - defined (__OpenBSD__) || defined (__FreeBSD__) || \ - (defined (__GNUC__) && (defined (__APPLE__) || defined ( __Lynx__ ))) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(stddef.h) -# endif -# if defined (__Lynx__) -# ifndef _WINT_T -typedef long int wint_t; -# define _WINT_T -# endif /* _WINT_T */ -# endif -# if defined(__OpenBSD__) -typedef _BSD_WINT_T_ wint_t; -# endif /* __OpenBSD__ */ -# else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(wchar.h) -# endif - -# if defined (__sun) && (defined (_XOPEN_SOURCE) || (_XOPEN_VERSION - 0 == 4)) -extern wint_t btowc(); -extern int fwprintf(); -extern int fwscanf(); -extern int fwide(); -extern int mbsinit(); -extern size_t mbrlen(); -extern size_t mbrtowc(); -extern size_t mbsrtowcs(); -extern int swprintf(); -extern int swscanf(); -extern int vfwprintf(); -extern int vwprintf(); -extern int vswprintf(); -extern size_t wcrtomb(); -extern size_t wcsrtombs(); -extern wchar_t *wcsstr(); -extern int wctob(); -extern wchar_t *wmemchr(); -extern int wmemcmp(); -extern wchar_t *wmemcpy(); -extern wchar_t *wmemmove(); -extern wchar_t *wmemset(); -extern int wprintf(); -extern int wscanf(); -# endif -# endif - -# if defined (__MSL__) && (__MSL__ <= 0x51FF) /* dwa 2/28/99 - not yet implemented by MSL */ -# define _STLP_WCHAR_MSL_EXCLUDE 1 -namespace std { - extern "C" size_t wcsftime(wchar_t * str, size_t max_size, const wchar_t * format_str, const struct tm * timeptr); -} -# define _STLP_NO_NATIVE_MBSTATE_T 1 -# elif defined (__BORLANDC__) -# if !defined (_STLP_USE_NO_IOSTREAMS) -# define _STLP_NO_NATIVE_MBSTATE_T -# endif -# define _STLP_WCHAR_BORLAND_EXCLUDE 1 -# endif - -# ifndef _STLP_INTERNAL_MBSTATE_T -# include -# endif - -# if !defined (_STLP_NO_WCHAR_T) -# ifndef WCHAR_MIN -# define WCHAR_MIN 0 -/* SUNpro has some bugs with casts. wchar_t is size of int there anyway. */ -# if defined (__SUNPRO_CC) || defined (__DJGPP) -# define WCHAR_MAX (~0) -# else -# define WCHAR_MAX ((wchar_t)~0) -# endif -# endif -# if defined (__DMC__) || (defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB < 1400)) || defined(_WIN32_WCE) -/* Compilers that do not define WCHAR_MIN and WCHAR_MAX to be testable at - * preprocessing time. */ -# undef WCHAR_MIN -# define WCHAR_MIN 0 -# undef WCHAR_MAX -# define WCHAR_MAX 0xffff -# endif -# if defined (__GNUC__) && defined (__alpha__) -/* Definition of WCHAR_MIN and MAX are wrong for alpha platform - * as gcc consider wchar_t as an unsigned type but WCHAR_MIN is defined as - * a negative value. Static assertion is here to check that a future alpha - * SDK or a future gcc won't change the situation making this workaround - * useless. - */ -/* Check that gcc still consider wchar_t as unsigned */ -_STLP_STATIC_ASSERT(((wchar_t)-1 > 0)) -/* Check that WCHAR_MIN value hasn't been fixed */ -_STLP_STATIC_ASSERT((WCHAR_MIN < 0)) -# undef WCHAR_MIN -# define WCHAR_MIN 0 -# undef WCHAR_MAX -# define WCHAR_MAX 0xffffffff -# endif -# if defined(__HP_aCC) && (__HP_aCC >= 60000) -/* Starting with B.11.31, HP-UX/ia64 provides C99-compliant definitions - * of WCHAR_MIN/MAX macros without having to define - * _INCLUDE_STDC__SOURCE_199901 macro (which aCC compiler does not - * predefine). Let STLport provide B.11.31 definitions on any version of - * HP-UX/ia64. - */ -# undef WCHAR_MIN -# define WCHAR_MIN 0 -# undef WCHAR_MAX -# define WCHAR_MAX UINT_MAX -# endif -# endif - -# if defined (_STLP_IMPORT_VENDOR_CSTD) - -# if defined (__SUNPRO_CC) && !defined (_STLP_HAS_NO_NEW_C_HEADERS) -using _STLP_VENDOR_CSTD::wint_t; -# endif - -_STLP_BEGIN_NAMESPACE -# if defined (_STLP_NO_WCHAR_T) -typedef int wint_t; -# else -// gcc 3.0 has a glitch : wint_t only sucked into the global namespace if _GLIBCPP_USE_WCHAR_T is defined -// __MWERKS__ has definition in wchar_t.h (MSL C++), but ones differ from definition -// in stdio.h; I prefer settings from last file. -# if (defined (__GNUC__) && ! defined (_GLIBCPP_USE_WCHAR_T)) -using ::wint_t; -# else -using _STLP_VENDOR_CSTD::wint_t; -# endif -# endif - -using _STLP_VENDOR_CSTD::size_t; - -# if !defined (_STLP_NO_NATIVE_MBSTATE_T) && !defined (_STLP_USE_OWN_MBSTATE_T) -using _STLP_VENDOR_MB_NAMESPACE::mbstate_t; - -# if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) && !defined(_STLP_WCHAR_BORLAND_EXCLUDE) && \ - (!defined(__MSL__) || __MSL__ > 0x6001) -# if defined (__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION >= 8))) || \ - !(defined (__KCC) || defined (__GNUC__)) && !defined(_STLP_WCE_NET) -using _STLP_VENDOR_MB_NAMESPACE::btowc; -# if (!defined(__MSL__) || __MSL__ > 0x7001) -using _STLP_VENDOR_MB_NAMESPACE::mbsinit; -# endif -# endif -# if defined (__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION >= 8))) || \ - !defined (__GNUC__) && !defined(_STLP_WCE_NET) -using _STLP_VENDOR_MB_NAMESPACE::mbrlen; -using _STLP_VENDOR_MB_NAMESPACE::mbrtowc; -using _STLP_VENDOR_MB_NAMESPACE::mbsrtowcs; -using _STLP_VENDOR_MB_NAMESPACE::wcrtomb; -using _STLP_VENDOR_MB_NAMESPACE::wcsrtombs; -# endif -# endif /* BORLAND && !__MSL__ || __MSL__ > 0x6001 */ - -# endif /* _STLP_NO_NATIVE_MBSTATE_T */ - -# if !defined (_STLP_NO_NATIVE_WIDE_FUNCTIONS) && ! defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) - -# if !defined (_STLP_WCHAR_BORLAND_EXCLUDE) && ! defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -using _STLP_VENDOR_CSTD::fgetwc; -using _STLP_VENDOR_CSTD::fgetws; -using _STLP_VENDOR_CSTD::fputwc; -using _STLP_VENDOR_CSTD::fputws; -# endif - -# if !(defined (_STLP_WCHAR_SUNPRO_EXCLUDE) || defined (_STLP_WCHAR_BORLAND_EXCLUDE) || \ - defined(_STLP_WCHAR_HPACC_EXCLUDE) ) -# if !defined (__DECCXX) -using _STLP_VENDOR_CSTD::fwide; -# endif -using _STLP_VENDOR_CSTD::fwprintf; -using _STLP_VENDOR_CSTD::fwscanf; -using _STLP_VENDOR_CSTD::getwchar; -# endif - -# if !defined(_STLP_WCHAR_BORLAND_EXCLUDE) -# ifndef _STLP_WCE_NET -using _STLP_VENDOR_CSTD::getwc; -# endif -using _STLP_VENDOR_CSTD::ungetwc; -# ifndef _STLP_WCE_NET -using _STLP_VENDOR_CSTD::putwc; -# endif -using _STLP_VENDOR_CSTD::putwchar; -# endif - -# if !(defined (_STLP_WCHAR_SUNPRO_EXCLUDE) || defined (_STLP_WCHAR_BORLAND_EXCLUDE) || \ - defined (_STLP_WCHAR_HPACC_EXCLUDE) ) -# if defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB <= 1300) || \ - defined (__MINGW32__) -# undef swprintf -# define swprintf _snwprintf -# undef vswprintf -# define vswprintf _vsnwprintf -using ::swprintf; -using ::vswprintf; -# else -using _STLP_VENDOR_CSTD::swprintf; -using _STLP_VENDOR_CSTD::vswprintf; -# endif -using _STLP_VENDOR_CSTD::swscanf; -using _STLP_VENDOR_CSTD::vfwprintf; -using _STLP_VENDOR_CSTD::vwprintf; - -# if (!defined(__MSL__) || __MSL__ > 0x7001 ) && !defined(_STLP_WCE_NET) && \ - !defined(_STLP_USE_UCLIBC) /* at least in uClibc 0.9.26 */ - -using _STLP_VENDOR_CSTD::wcsftime; -# endif -using _STLP_VENDOR_CSTD::wcstok; - -# endif - -# if !defined (_STLP_WCE_NET) -using _STLP_VENDOR_CSTD::wcscoll; -using _STLP_VENDOR_CSTD::wcsxfrm; -# endif -using _STLP_VENDOR_CSTD::wcscat; -using _STLP_VENDOR_CSTD::wcsrchr; -using _STLP_VENDOR_CSTD::wcscmp; - -using _STLP_VENDOR_CSTD::wcscpy; -using _STLP_VENDOR_CSTD::wcscspn; - -using _STLP_VENDOR_CSTD::wcslen; -using _STLP_VENDOR_CSTD::wcsncat; -using _STLP_VENDOR_CSTD::wcsncmp; -using _STLP_VENDOR_CSTD::wcsncpy; -using _STLP_VENDOR_CSTD::wcspbrk; -using _STLP_VENDOR_CSTD::wcschr; - -using _STLP_VENDOR_CSTD::wcsspn; - -# if !defined (_STLP_WCHAR_BORLAND_EXCLUDE) -using _STLP_VENDOR_CSTD::wcstod; -using _STLP_VENDOR_CSTD::wcstol; -# endif - -# if !(defined (_STLP_WCHAR_SUNPRO_EXCLUDE) || defined (_STLP_WCHAR_HPACC_EXCLUDE) ) -using _STLP_VENDOR_CSTD::wcsstr; -using _STLP_VENDOR_CSTD::wmemchr; - -# if !defined (_STLP_WCHAR_BORLAND_EXCLUDE) -# if !defined (_STLP_WCE_NET) -using _STLP_VENDOR_CSTD::wctob; -# endif -# if !defined (__DMC__) -using _STLP_VENDOR_CSTD::wmemcmp; -using _STLP_VENDOR_CSTD::wmemmove; -# endif -using _STLP_VENDOR_CSTD::wprintf; -using _STLP_VENDOR_CSTD::wscanf; -# endif - -# if defined (__BORLANDC__) && !defined (__linux__) -inline wchar_t* _STLP_wmemcpy(wchar_t* __wdst, const wchar_t* __wsrc, size_t __n) -{ return __STATIC_CAST(wchar_t*, _STLP_VENDOR_CSTD::wmemcpy(__wdst, __wsrc, __n)); } -inline wchar_t* _STLP_wmemset(wchar_t* __wdst, wchar_t __wc, size_t __n) -{ return __STATIC_CAST(wchar_t*, _STLP_VENDOR_CSTD::memset(__wdst, __wc, __n)); } -# undef wmemcpy -# undef wmemset -inline wchar_t* wmemcpy(wchar_t* __wdst, const wchar_t* __wsrc, size_t __n) -{ return _STLP_wmemcpy(__wdst, __wsrc, __n); } -inline wchar_t* wmemset(wchar_t* __wdst, wchar_t __wc, size_t __n) -{ return _STLP_wmemset(__wdst, __wc, __n); } -# elif defined (__DMC__) -inline wchar_t* wmemcpy(wchar_t* __RESTRICT __wdst, const wchar_t* __RESTRICT __wsrc, size_t __n) -{ return __STATIC_CAST(wchar_t*, memcpy(__wdst, __wsrc, __n * sizeof(wchar_t))); } -inline wchar_t* wmemmove(wchar_t* __RESTRICT __wdst, const wchar_t * __RESTRICT __wc, size_t __n) -{ return __STATIC_CAST(wchar_t*, memmove(__wdst, __wc, __n * sizeof(wchar_t))); } -inline wchar_t* wmemset(wchar_t* __wdst, wchar_t __wc, size_t __n) -{ for (size_t i = 0; i < __n; i++) __wdst[i] = __wc; return __wdst; } -# else -using _STLP_VENDOR_CSTD::wmemcpy; -using _STLP_VENDOR_CSTD::wmemset; -# endif -# endif - -# endif /* _STLP_NO_NATIVE_WIDE_FUNCTIONS */ -_STLP_END_NAMESPACE - -# endif /* _STLP_IMPORT_VENDOR_CSTD */ - -# undef _STLP_WCHAR_SUNPRO_EXCLUDE -# undef _STLP_WCHAR_MSL_EXCLUDE - -# endif /* !defined(_STLP_WCE_EVC3) */ - -#endif /* _STLP_INTERNAL_CWCHAR */ diff --git a/build/stlport/stlport/stl/_cwctype.h b/build/stlport/stlport/stl/_cwctype.h deleted file mode 100644 index 83b551f7b508..000000000000 --- a/build/stlport/stlport/stl/_cwctype.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_CWCTYPE -#define _STLP_INTERNAL_CWCTYPE - -#if defined (__BORLANDC__) && !defined (_STLP_INTERNAL_CCTYPE) -# include -#endif - -#if !defined (_STLP_WCE_EVC3) -# if defined (_STLP_USE_NEW_C_HEADERS) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_C_HEADER(cwctype) -# endif -# if defined (__MSL__) -namespace std { - typedef wchar_t wctrans_t; - wint_t towctrans(wint_t c, wctrans_t value); - wctrans_t wctrans(const char *name); -} -using std::wctrans_t; -using std::towctrans; -using std::wctrans; -# endif -# else -# include -# endif - -# if defined (_STLP_IMPORT_VENDOR_CSTD) && !defined (__hpux) - -# if defined (_STLP_USE_GLIBC) && !(defined (_GLIBCPP_USE_WCHAR_T) || defined (_GLIBCXX_USE_WCHAR_T)) || \ - defined (__sun) || defined (__FreeBSD__) || \ - defined (__CYGWIN__) || \ - defined (__MINGW32__) && ((__MINGW32_MAJOR_VERSION < 3) || (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION <= 0)) -//We take wide functions from global namespace: -# define _STLP_VENDOR_CSTD_WFUNC -# else -# define _STLP_VENDOR_CSTD_WFUNC _STLP_VENDOR_CSTD -# endif - -_STLP_BEGIN_NAMESPACE -using _STLP_VENDOR_CSTD_WFUNC::wctype_t; -using _STLP_VENDOR_CSTD_WFUNC::wint_t; -# if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -# if !defined (__BORLANDC__) && !defined (__MSL__) -using _STLP_VENDOR_CSTD_WFUNC::wctrans_t; -# if !defined (__DMC__) && (!defined(_WIN32_WCE) || (_WIN32_WCE < 400)) -using _STLP_VENDOR_CSTD_WFUNC::towctrans; -using _STLP_VENDOR_CSTD_WFUNC::wctrans; -using _STLP_VENDOR_CSTD_WFUNC::wctype; -# endif -using _STLP_VENDOR_CSTD_WFUNC::iswctype; -# endif -using _STLP_VENDOR_CSTD_WFUNC::iswalnum; -using _STLP_VENDOR_CSTD_WFUNC::iswalpha; -using _STLP_VENDOR_CSTD_WFUNC::iswcntrl; - -using _STLP_VENDOR_CSTD_WFUNC::iswdigit; -using _STLP_VENDOR_CSTD_WFUNC::iswgraph; -using _STLP_VENDOR_CSTD_WFUNC::iswlower; -using _STLP_VENDOR_CSTD_WFUNC::iswprint; -using _STLP_VENDOR_CSTD_WFUNC::iswpunct; -using _STLP_VENDOR_CSTD_WFUNC::iswspace; -using _STLP_VENDOR_CSTD_WFUNC::iswupper; -using _STLP_VENDOR_CSTD_WFUNC::iswxdigit; - -using _STLP_VENDOR_CSTD_WFUNC::towlower; -using _STLP_VENDOR_CSTD_WFUNC::towupper; -# endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */ -_STLP_END_NAMESPACE -# endif /* _STLP_IMPORT_VENDOR_CSTD */ -#endif /* _STLP_WCE_EVC3 */ - -#endif /* _STLP_INTERNAL_CWCTYPE */ diff --git a/build/stlport/stlport/stl/_deque.c b/build/stlport/stlport/stl/_deque.c deleted file mode 100644 index 74e9ef61daf9..000000000000 --- a/build/stlport/stlport/stl/_deque.c +++ /dev/null @@ -1,823 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_DEQUE_C -#define _STLP_DEQUE_C - -#ifndef _STLP_INTERNAL_DEQUE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Non-inline member functions from _Deque_base. - -template -_Deque_base<_Tp,_Alloc >::~_Deque_base() { - if (_M_map._M_data) { - _M_destroy_nodes(_M_start._M_node, this->_M_finish._M_node + 1); - _M_map.deallocate(_M_map._M_data, _M_map_size._M_data); - } -} - -template -void _Deque_base<_Tp,_Alloc>::_M_initialize_map(size_t __num_elements) { - size_t __num_nodes = __num_elements / this->buffer_size() + 1 ; - - _M_map_size._M_data = (max)((size_t) _S_initial_map_size, __num_nodes + 2); - _M_map._M_data = _M_map.allocate(_M_map_size._M_data); - - _Tp** __nstart = _M_map._M_data + (_M_map_size._M_data - __num_nodes) / 2; - _Tp** __nfinish = __nstart + __num_nodes; - - _STLP_TRY { - _M_create_nodes(__nstart, __nfinish); - } - _STLP_UNWIND((_M_map.deallocate(_M_map._M_data, _M_map_size._M_data), - _M_map._M_data = 0, _M_map_size._M_data = 0)) - _M_start._M_set_node(__nstart); - this->_M_finish._M_set_node(__nfinish - 1); - _M_start._M_cur = _M_start._M_first; - this->_M_finish._M_cur = this->_M_finish._M_first + __num_elements % this->buffer_size(); -} - -template -void _Deque_base<_Tp,_Alloc>::_M_create_nodes(_Tp** __nstart, - _Tp** __nfinish) { - _Tp** __cur = __nstart; - _STLP_TRY { - for (; __cur < __nfinish; ++__cur) - *__cur = _M_map_size.allocate(this->buffer_size()); - } - _STLP_UNWIND(_M_destroy_nodes(__nstart, __cur)) -} - -template -void _Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart, - _Tp** __nfinish) { - for (_Tp** __n = __nstart; __n < __nfinish; ++__n) - _M_map_size.deallocate(*__n, this->buffer_size()); -} - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define deque _STLP_PTR_IMPL_NAME(deque) -#elif defined (_STLP_DEBUG) -# define deque _STLP_NON_DBG_NAME(deque) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -// qualified references -# define __iterator__ _Deque_iterator<_Tp, _Nonconst_traits<_Tp> > -# define const_iterator _Deque_iterator<_Tp, _Const_traits<_Tp> > -# define iterator __iterator__ -# define size_type size_t -# define value_type _Tp -#else -# define __iterator__ _STLP_TYPENAME_ON_RETURN_TYPE deque<_Tp, _Alloc>::iterator -#endif - -template -deque<_Tp, _Alloc >& -deque<_Tp, _Alloc >::operator= (const deque<_Tp, _Alloc >& __x) { - const size_type __len = size(); - if (&__x != this) { - if (__len >= __x.size()) - erase(_STLP_STD::copy(__x.begin(), __x.end(), this->_M_start), this->_M_finish); - else { - const_iterator __mid = __x.begin() + difference_type(__len); - _STLP_STD::copy(__x.begin(), __mid, this->_M_start); - insert(this->_M_finish, __mid, __x.end()); - } - } - return *this; -} - -template -void deque<_Tp, _Alloc >::_M_fill_insert(iterator __pos, - size_type __n, const value_type& __x) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - if (__pos._M_cur == this->_M_start._M_cur) { - iterator __new_start = _M_reserve_elements_at_front(__n); - _STLP_TRY { - uninitialized_fill(__new_start, this->_M_start, __x); - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - this->_M_start = __new_start; - } - else if (__pos._M_cur == this->_M_finish._M_cur) { - iterator __new_finish = _M_reserve_elements_at_back(__n); - _STLP_TRY { - uninitialized_fill(this->_M_finish, __new_finish, __x); - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node+1, __new_finish._M_node+1)) - this->_M_finish = __new_finish; - } - else - _M_fill_insert_aux(__pos, __n, __x, _Movable()); -} - -#if !defined (_STLP_MEMBER_TEMPLATES) - -template -void deque<_Tp, _Alloc>::insert(iterator __pos, - const value_type* __first, const value_type* __last) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - size_type __n = __last - __first; - if (__pos._M_cur == this->_M_start._M_cur) { - iterator __new_start = _M_reserve_elements_at_front(__n); - _STLP_TRY { - _STLP_PRIV __ucopy(__first, __last, __new_start); - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - this->_M_start = __new_start; - } - else if (__pos._M_cur == this->_M_finish._M_cur) { - iterator __new_finish = _M_reserve_elements_at_back(__n); - _STLP_TRY { - _STLP_PRIV __ucopy(__first, __last, this->_M_finish); - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, - __new_finish._M_node + 1)) - this->_M_finish = __new_finish; - } - else - _M_insert_range_aux(__pos, __first, __last, __n, _Movable()); -} - -template -void deque<_Tp,_Alloc>::insert(iterator __pos, - const_iterator __first, const_iterator __last) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - size_type __n = __last - __first; - if (__pos._M_cur == this->_M_start._M_cur) { - iterator __new_start = _M_reserve_elements_at_front(__n); - _STLP_TRY { - _STLP_PRIV __ucopy(__first, __last, __new_start); - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - this->_M_start = __new_start; - } - else if (__pos._M_cur == this->_M_finish._M_cur) { - iterator __new_finish = _M_reserve_elements_at_back(__n); - _STLP_TRY { - _STLP_PRIV __ucopy(__first, __last, this->_M_finish); - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, - __new_finish._M_node + 1)) - this->_M_finish = __new_finish; - } - else - _M_insert_range_aux(__pos, __first, __last, __n, _Movable()); -} - -#endif /* _STLP_MEMBER_TEMPLATES */ - -template -__iterator__ deque<_Tp,_Alloc>::_M_erase(iterator __pos, - const __true_type& /*_Movable*/) { - difference_type __index = __pos - this->_M_start; - if (size_type(__index) < this->size() >> 1) { - //We move the start of the deque one position to the right - //starting from the rightmost element to move. - iterator __src = __pos, __dst = __pos; - _STLP_STD::_Destroy(&(*__dst)); - if (__src != this->_M_start) { - for (--__src; __dst != this->_M_start; --__src, --__dst) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - } - _M_pop_front_aux(); - } - else { - iterator __src = __pos, __dst = __pos; - _STLP_STD::_Destroy(&(*__dst)); - for (++__src; __src != this->_M_finish; ++__src, ++__dst) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - //Duplication of the pop_back code without the destroy which has already been done: - if (this->_M_finish._M_cur != this->_M_finish._M_first) { - --this->_M_finish._M_cur; - } - else { - _M_pop_back_aux(); - } - } - return this->_M_start + __index; -} - -template -__iterator__ deque<_Tp,_Alloc>::_M_erase(iterator __pos, - const __false_type& /*_Movable*/) { - iterator __next = __pos; - ++__next; - difference_type __index = __pos - this->_M_start; - if (size_type(__index) < this->size() >> 1) { - copy_backward(this->_M_start, __pos, __next); - pop_front(); - } - else { - _STLP_STD::copy(__next, this->_M_finish, __pos); - pop_back(); - } - return this->_M_start + __index; -} - -template -__iterator__ deque<_Tp,_Alloc>::_M_erase(iterator __first, iterator __last, - const __true_type& /*_Movable*/) { - difference_type __n = __last - __first; - difference_type __elems_before = __first - this->_M_start; - if (__elems_before <= difference_type(this->size() - __n) / 2) { - iterator __src = __first, __dst = __last; - if (__src != this->_M_start) { - for (--__src, --__dst; (__src >= this->_M_start) && (__dst >= __first); --__src, --__dst) { - _STLP_STD::_Destroy(&(*__dst)); - _STLP_STD::_Move_Construct(&(*__dst), *__src); - } - if (__dst >= __first) { - //There are more elements to erase than elements to move - _STLP_STD::_Destroy_Range(__first, ++__dst); - _STLP_STD::_Destroy_Moved_Range(this->_M_start, __first); - } - else { - //There are more elements to move than elements to erase - for (; __src >= this->_M_start; --__src, --__dst) { - _STLP_STD::_Destroy_Moved(&(*__dst)); - _STLP_STD::_Move_Construct(&(*__dst), *__src); - } - _STLP_STD::_Destroy_Moved_Range(this->_M_start, ++__dst); - } - } - else { - _STLP_STD::_Destroy_Range(this->_M_start, __last); - } - iterator __new_start = this->_M_start + __n; - this->_M_destroy_nodes(this->_M_start._M_node, __new_start._M_node); - this->_M_start = __new_start; - } - else { - if (__last != this->_M_finish) { - iterator __src = __last, __dst = __first; - for (; (__src != this->_M_finish) && (__dst != __last); ++__src, ++__dst) { - _STLP_STD::_Destroy(&(*__dst)); - _STLP_STD::_Move_Construct(&(*__dst), *__src); - } - if (__dst != __last) { - //There are more elements to erase than elements to move - _STLP_STD::_Destroy_Range(__dst, __last); - _STLP_STD::_Destroy_Moved_Range(__last, this->_M_finish); - } - else { - //There are more elements to move than elements to erase - for (; __src != this->_M_finish; ++__src, ++__dst) { - _STLP_STD::_Destroy_Moved(&(*__dst)); - _STLP_STD::_Move_Construct(&(*__dst), *__src); - } - _STLP_STD::_Destroy_Moved_Range(__dst, this->_M_finish); - } - } - else { - _STLP_STD::_Destroy_Range(__first, this->_M_finish); - } - iterator __new_finish = this->_M_finish - __n; - this->_M_destroy_nodes(__new_finish._M_node + 1, this->_M_finish._M_node + 1); - this->_M_finish = __new_finish; - } - return this->_M_start + __elems_before; -} - -template -__iterator__ deque<_Tp,_Alloc>::_M_erase(iterator __first, iterator __last, - const __false_type& /*_Movable*/) { - difference_type __n = __last - __first; - difference_type __elems_before = __first - this->_M_start; - if (__elems_before <= difference_type(this->size() - __n) / 2) { - copy_backward(this->_M_start, __first, __last); - iterator __new_start = this->_M_start + __n; - _STLP_STD::_Destroy_Range(this->_M_start, __new_start); - this->_M_destroy_nodes(this->_M_start._M_node, __new_start._M_node); - this->_M_start = __new_start; - } - else { - _STLP_STD::copy(__last, this->_M_finish, __first); - iterator __new_finish = this->_M_finish - __n; - _STLP_STD::_Destroy_Range(__new_finish, this->_M_finish); - this->_M_destroy_nodes(__new_finish._M_node + 1, this->_M_finish._M_node + 1); - this->_M_finish = __new_finish; - } - return this->_M_start + __elems_before; -} - -template -void deque<_Tp,_Alloc>::clear() { - for (_Map_pointer __node = this->_M_start._M_node + 1; - __node < this->_M_finish._M_node; - ++__node) { - _STLP_STD::_Destroy_Range(*__node, *__node + this->buffer_size()); - this->_M_map_size.deallocate(*__node, this->buffer_size()); - } - - if (this->_M_start._M_node != this->_M_finish._M_node) { - _STLP_STD::_Destroy_Range(this->_M_start._M_cur, this->_M_start._M_last); - _STLP_STD::_Destroy_Range(this->_M_finish._M_first, this->_M_finish._M_cur); - this->_M_map_size.deallocate(this->_M_finish._M_first, this->buffer_size()); - } - else - _STLP_STD::_Destroy_Range(this->_M_start._M_cur, this->_M_finish._M_cur); - - this->_M_finish = this->_M_start; -} - -// Precondition: this->_M_start and this->_M_finish have already been initialized, -// but none of the deque's elements have yet been constructed. -template -void deque<_Tp,_Alloc>::_M_fill_initialize(const value_type& __val, - const __false_type& /*_TrivialInit*/) { - _Map_pointer __cur = this->_M_start._M_node; - _STLP_TRY { - for (; __cur < this->_M_finish._M_node; ++__cur) - uninitialized_fill(*__cur, *__cur + this->buffer_size(), __val); - uninitialized_fill(this->_M_finish._M_first, this->_M_finish._M_cur, __val); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(this->_M_start, iterator(*__cur, __cur))) -} - - -// Called only if this->_M_finish._M_cur == this->_M_finish._M_last - 1. -template -void deque<_Tp,_Alloc>::_M_push_back_aux_v(const value_type& __t) { - _M_reserve_map_at_back(); - *(this->_M_finish._M_node + 1) = this->_M_map_size.allocate(this->buffer_size()); - _STLP_TRY { - _Copy_Construct(this->_M_finish._M_cur, __t); - this->_M_finish._M_set_node(this->_M_finish._M_node + 1); - this->_M_finish._M_cur = this->_M_finish._M_first; - } - _STLP_UNWIND(this->_M_map_size.deallocate(*(this->_M_finish._M_node + 1), - this->buffer_size())) -} - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) -// Called only if this->_M_finish._M_cur == this->_M_finish._M_last - 1. -template -void deque<_Tp,_Alloc>::_M_push_back_aux() { - _M_reserve_map_at_back(); - *(this->_M_finish._M_node + 1) = this->_M_map_size.allocate(this->buffer_size()); - _STLP_TRY { - _STLP_STD::_Construct(this->_M_finish._M_cur); - this->_M_finish._M_set_node(this->_M_finish._M_node + 1); - this->_M_finish._M_cur = this->_M_finish._M_first; - } - _STLP_UNWIND(this->_M_map_size.deallocate(*(this->_M_finish._M_node + 1), - this->buffer_size())) -} -#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - -// Called only if this->_M_start._M_cur == this->_M_start._M_first. -template -void deque<_Tp,_Alloc>::_M_push_front_aux_v(const value_type& __t) { - _M_reserve_map_at_front(); - *(this->_M_start._M_node - 1) = this->_M_map_size.allocate(this->buffer_size()); - _STLP_TRY { - this->_M_start._M_set_node(this->_M_start._M_node - 1); - this->_M_start._M_cur = this->_M_start._M_last - 1; - _Copy_Construct(this->_M_start._M_cur, __t); - } - _STLP_UNWIND((++this->_M_start, - this->_M_map_size.deallocate(*(this->_M_start._M_node - 1), this->buffer_size()))) -} - - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) -// Called only if this->_M_start._M_cur == this->_M_start._M_first. -template -void deque<_Tp,_Alloc>::_M_push_front_aux() { - _M_reserve_map_at_front(); - *(this->_M_start._M_node - 1) = this->_M_map_size.allocate(this->buffer_size()); - _STLP_TRY { - this->_M_start._M_set_node(this->_M_start._M_node - 1); - this->_M_start._M_cur = this->_M_start._M_last - 1; - _STLP_STD::_Construct(this->_M_start._M_cur); - } - _STLP_UNWIND((++this->_M_start, this->_M_map_size.deallocate(*(this->_M_start._M_node - 1), - this->buffer_size()))) -} -#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - -// Called only if this->_M_finish._M_cur == this->_M_finish._M_first. -template -void deque<_Tp,_Alloc>::_M_pop_back_aux() { - this->_M_map_size.deallocate(this->_M_finish._M_first, this->buffer_size()); - this->_M_finish._M_set_node(this->_M_finish._M_node - 1); - this->_M_finish._M_cur = this->_M_finish._M_last - 1; -} - -// Note that if the deque has at least one element (a precondition for this member -// function), and if this->_M_start._M_cur == this->_M_start._M_last, then the deque -// must have at least two nodes. -template -void deque<_Tp,_Alloc>::_M_pop_front_aux() { - if (this->_M_start._M_cur != this->_M_start._M_last - 1) - ++this->_M_start._M_cur; - else { - this->_M_map_size.deallocate(this->_M_start._M_first, this->buffer_size()); - this->_M_start._M_set_node(this->_M_start._M_node + 1); - this->_M_start._M_cur = this->_M_start._M_first; - } -} - -template -__iterator__ deque<_Tp,_Alloc>::_M_fill_insert_aux(iterator __pos, size_type __n, - const value_type& __x, - const __true_type& /*_Movable*/) { - const difference_type __elems_before = __pos - this->_M_start; - size_type __length = this->size(); - value_type __x_copy = __x; - if (__elems_before <= difference_type(__length / 2)) { - iterator __new_start = _M_reserve_elements_at_front(__n); - __pos = this->_M_start + __elems_before; - _STLP_TRY { - iterator __dst = __new_start; - iterator __src = this->_M_start; - for (; __src != __pos; ++__dst, ++__src) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - this->_M_start = __new_start; - uninitialized_fill(__dst, __src, __x_copy); - __pos = __dst; - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else { - iterator __new_finish = _M_reserve_elements_at_back(__n); - const difference_type __elems_after = difference_type(__length) - __elems_before; - __pos = this->_M_finish - __elems_after; - _STLP_TRY { - iterator __dst = __new_finish; - iterator __src = this->_M_finish; - for (--__src, --__dst; __src >= __pos; --__src, --__dst) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - this->_M_finish = __new_finish; - uninitialized_fill(__pos, __pos + __n, __x_copy); - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } - return __pos; -} - -template -__iterator__ deque<_Tp,_Alloc>::_M_fill_insert_aux(iterator __pos, size_type __n, - const value_type& __x, - const __false_type& /*_Movable*/) { - const difference_type __elems_before = __pos - this->_M_start; - size_type __length = this->size(); - value_type __x_copy = __x; - if (__elems_before <= difference_type(__length / 2)) { - iterator __new_start = _M_reserve_elements_at_front(__n); - iterator __old_start = this->_M_start; - __pos = this->_M_start + __elems_before; - _STLP_TRY { - if (__elems_before >= difference_type(__n)) { - iterator __start_n = this->_M_start + difference_type(__n); - _STLP_PRIV __ucopy(this->_M_start, __start_n, __new_start); - this->_M_start = __new_start; - _STLP_STD::copy(__start_n, __pos, __old_start); - _STLP_STD::fill(__pos - difference_type(__n), __pos, __x_copy); - __pos -= difference_type(__n); - } - else { - _STLP_PRIV __uninitialized_copy_fill(this->_M_start, __pos, __new_start, - this->_M_start, __x_copy); - this->_M_start = __new_start; - fill(__old_start, __pos, __x_copy); - } - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else { - iterator __new_finish = _M_reserve_elements_at_back(__n); - iterator __old_finish = this->_M_finish; - const difference_type __elems_after = - difference_type(__length) - __elems_before; - __pos = this->_M_finish - __elems_after; - _STLP_TRY { - if (__elems_after > difference_type(__n)) { - iterator __finish_n = this->_M_finish - difference_type(__n); - _STLP_PRIV __ucopy(__finish_n, this->_M_finish, this->_M_finish); - this->_M_finish = __new_finish; - copy_backward(__pos, __finish_n, __old_finish); - fill(__pos, __pos + difference_type(__n), __x_copy); - } - else { - _STLP_PRIV __uninitialized_fill_copy(this->_M_finish, __pos + difference_type(__n), - __x_copy, __pos, this->_M_finish); - this->_M_finish = __new_finish; - fill(__pos, __old_finish, __x_copy); - } - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } - return __pos; -} - -#if !defined (_STLP_MEMBER_TEMPLATES) -template -void deque<_Tp,_Alloc>::_M_insert_range_aux(iterator __pos, - const value_type* __first, const value_type* __last, - size_type __n, const __true_type& /*_Movable*/) { - const difference_type __elems_before = __pos - this->_M_start; - size_type __length = size(); - if (__elems_before <= difference_type(__length / 2)) { - iterator __new_start = _M_reserve_elements_at_front(__n); - __pos = this->_M_start + __elems_before; - _STLP_TRY { - iterator __dst = __new_start; - iterator __src = this->_M_start; - for (; __src != __pos; ++__dst, ++__src) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - this->_M_start = __new_start; - _STLP_PRIV __ucopy(__first, __last, __dst); - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else { - iterator __new_finish = _M_reserve_elements_at_back(__n); - const difference_type __elems_after = difference_type(__length) - __elems_before; - __pos = this->_M_finish - __elems_after; - _STLP_TRY { - iterator __dst = __new_finish; - iterator __src = this->_M_finish; - for (--__src, --__dst; __src >= __pos; --__src, --__dst) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - this->_M_finish = __new_finish; - _STLP_PRIV __ucopy(__first, __last, __pos); - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } -} - -template -void deque<_Tp,_Alloc>::_M_insert_range_aux(iterator __pos, - const value_type* __first, const value_type* __last, - size_type __n, const __false_type& /*_Movable*/) { - const difference_type __elems_before = __pos - this->_M_start; - size_type __length = size(); - if (__elems_before <= difference_type(__length / 2)) { - iterator __new_start = _M_reserve_elements_at_front(__n); - iterator __old_start = this->_M_start; - __pos = this->_M_start + __elems_before; - _STLP_TRY { - if (__elems_before >= difference_type(__n)) { - iterator __start_n = this->_M_start + difference_type(__n); - _STLP_PRIV __ucopy(this->_M_start, __start_n, __new_start); - this->_M_start = __new_start; - _STLP_STD::copy(__start_n, __pos, __old_start); - _STLP_STD::copy(__first, __last, __pos - difference_type(__n)); - } - else { - const value_type* __mid = __first + (difference_type(__n) - __elems_before); - _STLP_PRIV __uninitialized_copy_copy(this->_M_start, __pos, __first, __mid, __new_start); - this->_M_start = __new_start; - _STLP_STD::copy(__mid, __last, __old_start); - } - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else { - iterator __new_finish = _M_reserve_elements_at_back(__n); - iterator __old_finish = this->_M_finish; - const difference_type __elems_after = - difference_type(__length) - __elems_before; - __pos = this->_M_finish - __elems_after; - _STLP_TRY { - - if (__elems_after > difference_type(__n)) { - iterator __finish_n = this->_M_finish - difference_type(__n); - _STLP_PRIV __ucopy(__finish_n, this->_M_finish, this->_M_finish); - this->_M_finish = __new_finish; - _STLP_STD::copy_backward(__pos, __finish_n, __old_finish); - _STLP_STD::copy(__first, __last, __pos); - } - else { - const value_type* __mid = __first + __elems_after; - _STLP_PRIV __uninitialized_copy_copy(__mid, __last, __pos, this->_M_finish, this->_M_finish); - this->_M_finish = __new_finish; - _STLP_STD::copy(__first, __mid, __pos); - } - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } -} - -template -void deque<_Tp,_Alloc>::_M_insert_range_aux(iterator __pos, - const_iterator __first, const_iterator __last, - size_type __n, const __true_type& /*_Movable*/) { - const difference_type __elems_before = __pos - this->_M_start; - size_type __length = size(); - if (__elems_before <= difference_type(__length / 2)) { - iterator __new_start = _M_reserve_elements_at_front(__n); - __pos = this->_M_start + __elems_before; - _STLP_TRY { - iterator __dst = __new_start; - iterator __src = this->_M_start; - for (; __src != __pos; ++__dst, ++__src) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - this->_M_start = __new_start; - _STLP_PRIV __ucopy(__first, __last, __dst); - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else { - iterator __new_finish = _M_reserve_elements_at_back(__n); - const difference_type __elems_after = difference_type(__length) - __elems_before; - __pos = this->_M_finish - __elems_after; - _STLP_TRY { - iterator __dst = __new_finish; - iterator __src = this->_M_finish; - for (--__src, --__dst; __src >= __pos; --__src, --__dst) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - this->_M_finish = __new_finish; - _STLP_PRIV __ucopy(__first, __last, __pos); - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } -} - -template -void deque<_Tp,_Alloc>::_M_insert_range_aux(iterator __pos, - const_iterator __first, const_iterator __last, - size_type __n, const __false_type& /*_Movable*/) { - const difference_type __elems_before = __pos - this->_M_start; - size_type __length = size(); - if (__elems_before < difference_type(__length / 2)) { - iterator __new_start = _M_reserve_elements_at_front(__n); - iterator __old_start = this->_M_start; - __pos = this->_M_start + __elems_before; - _STLP_TRY { - if (__elems_before >= difference_type(__n)) { - iterator __start_n = this->_M_start + __n; - _STLP_PRIV __ucopy(this->_M_start, __start_n, __new_start); - this->_M_start = __new_start; - _STLP_STD::copy(__start_n, __pos, __old_start); - _STLP_STD::copy(__first, __last, __pos - difference_type(__n)); - } - else { - const_iterator __mid = __first + (__n - __elems_before); - _STLP_PRIV __uninitialized_copy_copy(this->_M_start, __pos, __first, __mid, __new_start); - this->_M_start = __new_start; - _STLP_STD::copy(__mid, __last, __old_start); - } - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else { - iterator __new_finish = _M_reserve_elements_at_back(__n); - iterator __old_finish = this->_M_finish; - const difference_type __elems_after = __length - __elems_before; - __pos = this->_M_finish - __elems_after; - _STLP_TRY { - if (__elems_after > difference_type(__n)) { - iterator __finish_n = this->_M_finish - difference_type(__n); - _STLP_PRIV __ucopy(__finish_n, this->_M_finish, this->_M_finish); - this->_M_finish = __new_finish; - _STLP_STD::copy_backward(__pos, __finish_n, __old_finish); - _STLP_STD::copy(__first, __last, __pos); - } - else { - const_iterator __mid = __first + __elems_after; - _STLP_PRIV __uninitialized_copy_copy(__mid, __last, __pos, this->_M_finish, this->_M_finish); - this->_M_finish = __new_finish; - _STLP_STD::copy(__first, __mid, __pos); - } - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } -} -#endif /* _STLP_MEMBER_TEMPLATES */ - -template -void deque<_Tp,_Alloc>::_M_new_elements_at_front(size_type __new_elems) { - size_type __new_nodes - = (__new_elems + this->buffer_size() - 1) / this->buffer_size(); - _M_reserve_map_at_front(__new_nodes); - size_type __i = 1; - _STLP_TRY { - for (; __i <= __new_nodes; ++__i) - *(this->_M_start._M_node - __i) = this->_M_map_size.allocate(this->buffer_size()); - } - _STLP_UNWIND(for (size_type __j = 1; __j < __i; ++__j) - this->_M_map_size.deallocate(*(this->_M_start._M_node - __j), this->buffer_size())) -} - -template -void deque<_Tp,_Alloc>::_M_new_elements_at_back(size_type __new_elems) { - size_type __new_nodes - = (__new_elems + this->buffer_size() - 1) / this->buffer_size(); - _M_reserve_map_at_back(__new_nodes); - size_type __i = 1; - _STLP_TRY { - for (; __i <= __new_nodes; ++__i) - *(this->_M_finish._M_node + __i) = this->_M_map_size.allocate(this->buffer_size()); - } - _STLP_UNWIND(for (size_type __j = 1; __j < __i; ++__j) - this->_M_map_size.deallocate(*(this->_M_finish._M_node + __j), this->buffer_size())) -} - -template -void deque<_Tp,_Alloc>::_M_reallocate_map(size_type __nodes_to_add, - bool __add_at_front) { - size_type __old_num_nodes = this->_M_finish._M_node - this->_M_start._M_node + 1; - size_type __new_num_nodes = __old_num_nodes + __nodes_to_add; - - _Map_pointer __new_nstart; - if (this->_M_map_size._M_data > 2 * __new_num_nodes) { - __new_nstart = this->_M_map._M_data + (this->_M_map_size._M_data - __new_num_nodes) / 2 - + (__add_at_front ? __nodes_to_add : 0); - if (__new_nstart < this->_M_start._M_node) - _STLP_STD::copy(this->_M_start._M_node, this->_M_finish._M_node + 1, __new_nstart); - else - _STLP_STD::copy_backward(this->_M_start._M_node, this->_M_finish._M_node + 1, - __new_nstart + __old_num_nodes); - } - else { - size_type __new_map_size = - this->_M_map_size._M_data + (max)((size_t)this->_M_map_size._M_data, __nodes_to_add) + 2; - - _Map_pointer __new_map = this->_M_map.allocate(__new_map_size); - __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2 - + (__add_at_front ? __nodes_to_add : 0); - _STLP_STD::copy(this->_M_start._M_node, this->_M_finish._M_node + 1, __new_nstart); - this->_M_map.deallocate(this->_M_map._M_data, this->_M_map_size._M_data); - - this->_M_map._M_data = __new_map; - this->_M_map_size._M_data = __new_map_size; - } - - this->_M_start._M_set_node(__new_nstart); - this->_M_finish._M_set_node(__new_nstart + __old_num_nodes - 1); -} - -#if defined (deque) -# undef deque -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#undef __iterator__ -#undef iterator -#undef const_iterator -#undef size_type -#undef value_type - -#endif /* _STLP_DEQUE_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_deque.h b/build/stlport/stlport/stl/_deque.h deleted file mode 100644 index a8faeef286e8..000000000000 --- a/build/stlport/stlport/stl/_deque.h +++ /dev/null @@ -1,1115 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_DEQUE_H -#define _STLP_INTERNAL_DEQUE_H - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_UNINITIALIZED_H -# include -#endif - -#ifndef _STLP_RANGE_ERRORS_H -# include -#endif - -/* Class invariants: - * For any nonsingular iterator i: - * i.node is the address of an element in the map array. The - * contents of i.node is a pointer to the beginning of a node. - * i.first == *(i.node) - * i.last == i.first + node_size - * i.cur is a pointer in the range [i.first, i.last). NOTE: - * the implication of this is that i.cur is always a dereferenceable - * pointer, even if i is a past-the-end iterator. - * Start and Finish are always nonsingular iterators. NOTE: this means - * that an empty deque must have one node, and that a deque - * with N elements, where N is the buffer size, must have two nodes. - * For every node other than start.node and finish.node, every element - * in the node is an initialized object. If start.node == finish.node, - * then [start.cur, finish.cur) are initialized objects, and - * the elements outside that range are uninitialized storage. Otherwise, - * [start.cur, start.last) and [finish.first, finish.cur) are initialized - * objects, and [start.first, start.cur) and [finish.cur, finish.last) - * are uninitialized storage. - * [map, map + map_size) is a valid, non-empty range. - * [start.node, finish.node] is a valid range contained within - * [map, map + map_size). - * A pointer in the range [map, map + map_size) points to an allocated node - * if and only if the pointer is in the range [start.node, finish.node]. - */ - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _Deque_iterator_base { - - static size_t _S_buffer_size() { - const size_t blocksize = _MAX_BYTES; - return (sizeof(_Tp) < blocksize ? (blocksize / sizeof(_Tp)) : 1); - } - - typedef random_access_iterator_tag iterator_category; - - typedef _Tp value_type; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - - typedef value_type** _Map_pointer; - - typedef _Deque_iterator_base< _Tp > _Self; - - value_type* _M_cur; - value_type* _M_first; - value_type* _M_last; - _Map_pointer _M_node; - - _Deque_iterator_base(value_type* __x, _Map_pointer __y) - : _M_cur(__x), _M_first(*__y), - _M_last(*__y + _S_buffer_size()), _M_node(__y) {} - - _Deque_iterator_base() : _M_cur(0), _M_first(0), _M_last(0), _M_node(0) {} - -// see comment in doc/README.evc4 and doc/README.evc8 -#if defined (_STLP_MSVC) && (_STLP_MSVC <= 1401) && defined (MIPS) && defined (NDEBUG) - _Deque_iterator_base(_Deque_iterator_base const& __other) - : _M_cur(__other._M_cur), _M_first(__other._M_first), - _M_last(__other._M_last), _M_node(__other._M_node) {} -#endif - - difference_type _M_subtract(const _Self& __x) const { - return difference_type(_S_buffer_size()) * (_M_node - __x._M_node - 1) + - (_M_cur - _M_first) + (__x._M_last - __x._M_cur); - } - - void _M_increment() { - if (++_M_cur == _M_last) { - _M_set_node(_M_node + 1); - _M_cur = _M_first; - } - } - - void _M_decrement() { - if (_M_cur == _M_first) { - _M_set_node(_M_node - 1); - _M_cur = _M_last; - } - --_M_cur; - } - - void _M_advance(difference_type __n) { - const size_t buffersize = _S_buffer_size(); - difference_type __offset = __n + (_M_cur - _M_first); - if (__offset >= 0 && __offset < difference_type(buffersize)) - _M_cur += __n; - else { - difference_type __node_offset = - __offset > 0 ? __offset / buffersize - : -difference_type((-__offset - 1) / buffersize) - 1; - _M_set_node(_M_node + __node_offset); - _M_cur = _M_first + - - (__offset - __node_offset * difference_type(buffersize)); - } - } - - void _M_set_node(_Map_pointer __new_node) { - _M_last = (_M_first = *(_M_node = __new_node)) + difference_type(_S_buffer_size()); - } -}; - - -template -struct _Deque_iterator : public _Deque_iterator_base< _Tp> { - typedef random_access_iterator_tag iterator_category; - typedef _Tp value_type; - typedef typename _Traits::reference reference; - typedef typename _Traits::pointer pointer; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef value_type** _Map_pointer; - - typedef _Deque_iterator_base< _Tp > _Base; - typedef _Deque_iterator<_Tp, _Traits> _Self; - typedef typename _Traits::_NonConstTraits _NonConstTraits; - typedef _Deque_iterator<_Tp, _NonConstTraits> iterator; - typedef typename _Traits::_ConstTraits _ConstTraits; - typedef _Deque_iterator<_Tp, _ConstTraits> const_iterator; - - _Deque_iterator(value_type* __x, _Map_pointer __y) : - _Deque_iterator_base(__x,__y) {} - - _Deque_iterator() {} - //copy constructor for iterator and constructor from iterator for const_iterator - _Deque_iterator(const iterator& __x) : - _Deque_iterator_base(__x) {} - - reference operator*() const { - return *this->_M_cur; - } - - _STLP_DEFINE_ARROW_OPERATOR - - difference_type operator-(const const_iterator& __x) const { return this->_M_subtract(__x); } - - _Self& operator++() { this->_M_increment(); return *this; } - _Self operator++(int) { - _Self __tmp = *this; - ++*this; - return __tmp; - } - - _Self& operator--() { this->_M_decrement(); return *this; } - _Self operator--(int) { - _Self __tmp = *this; - --*this; - return __tmp; - } - - _Self& operator+=(difference_type __n) { this->_M_advance(__n); return *this; } - _Self operator+(difference_type __n) const { - _Self __tmp = *this; - return __tmp += __n; - } - - _Self& operator-=(difference_type __n) { return *this += -__n; } - _Self operator-(difference_type __n) const { - _Self __tmp = *this; - return __tmp -= __n; - } - - reference operator[](difference_type __n) const { return *(*this + __n); } -}; - - -template -inline _Deque_iterator<_Tp, _Traits> _STLP_CALL -operator+(ptrdiff_t __n, const _Deque_iterator<_Tp, _Traits>& __x) -{ return __x + __n; } - - -#if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) -template -inline bool _STLP_CALL -operator==(const _Deque_iterator_base<_Tp >& __x, - const _Deque_iterator_base<_Tp >& __y) -{ return __x._M_cur == __y._M_cur; } - -template -inline bool _STLP_CALL -operator < (const _Deque_iterator_base<_Tp >& __x, - const _Deque_iterator_base<_Tp >& __y) { - return (__x._M_node == __y._M_node) ? - (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node); -} - -template -inline bool _STLP_CALL -operator!=(const _Deque_iterator_base<_Tp >& __x, - const _Deque_iterator_base<_Tp >& __y) -{ return __x._M_cur != __y._M_cur; } - -template -inline bool _STLP_CALL -operator>(const _Deque_iterator_base<_Tp >& __x, - const _Deque_iterator_base<_Tp >& __y) -{ return __y < __x; } - -template -inline bool _STLP_CALL operator>=(const _Deque_iterator_base<_Tp >& __x, - const _Deque_iterator_base<_Tp >& __y) -{ return !(__x < __y); } - -template -inline bool _STLP_CALL operator<=(const _Deque_iterator_base<_Tp >& __x, - const _Deque_iterator_base<_Tp >& __y) -{ return !(__y < __x); } - -#else /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -template -inline bool _STLP_CALL -operator==(const _Deque_iterator<_Tp, _Traits1 >& __x, - const _Deque_iterator<_Tp, _Traits2 >& __y) -{ return __x._M_cur == __y._M_cur; } - -template -inline bool _STLP_CALL -operator < (const _Deque_iterator<_Tp, _Traits1 >& __x, - const _Deque_iterator<_Tp, _Traits2 >& __y) { - return (__x._M_node == __y._M_node) ? - (__x._M_cur < __y._M_cur) : (__x._M_node < __y._M_node); -} - -template -inline bool _STLP_CALL -operator!=(const _Deque_iterator<_Tp, _Nonconst_traits<_Tp> >& __x, - const _Deque_iterator<_Tp, _Const_traits<_Tp> >& __y) -{ return __x._M_cur != __y._M_cur; } - -template -inline bool _STLP_CALL -operator>(const _Deque_iterator<_Tp, _Nonconst_traits<_Tp> >& __x, - const _Deque_iterator<_Tp, _Const_traits<_Tp> >& __y) -{ return __y < __x; } - -template -inline bool _STLP_CALL -operator>=(const _Deque_iterator<_Tp, _Nonconst_traits<_Tp> >& __x, - const _Deque_iterator<_Tp, _Const_traits<_Tp> >& __y) -{ return !(__x < __y); } - -template -inline bool _STLP_CALL -operator<=(const _Deque_iterator<_Tp, _Nonconst_traits<_Tp> >& __x, - const _Deque_iterator<_Tp, _Const_traits<_Tp> >& __y) -{ return !(__y < __x); } -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -_STLP_MOVE_TO_STD_NAMESPACE -template -struct __type_traits<_STLP_PRIV _Deque_iterator<_Tp, _Traits> > { - typedef __false_type has_trivial_default_constructor; - typedef __true_type has_trivial_copy_constructor; - typedef __true_type has_trivial_assignment_operator; - typedef __true_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -_STLP_MOVE_TO_STD_NAMESPACE -template inline _Tp* _STLP_CALL -value_type(const _STLP_PRIV _Deque_iterator<_Tp, _Traits >&) { return (_Tp*)0; } -template inline random_access_iterator_tag _STLP_CALL -iterator_category(const _STLP_PRIV _Deque_iterator<_Tp, _Traits >&) { return random_access_iterator_tag(); } -template inline ptrdiff_t* _STLP_CALL -distance_type(const _STLP_PRIV _Deque_iterator<_Tp, _Traits >&) { return 0; } -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -/* Deque base class. It has two purposes. First, its constructor - * and destructor allocate (but don't initialize) storage. This makes - * exception safety easier. Second, the base class encapsulates all of - * the differences between SGI-style allocators and standard-conforming - * allocators. - */ - -template -class _Deque_base { - typedef _Deque_base<_Tp, _Alloc> _Self; -public: - typedef _Tp value_type; - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef _Alloc allocator_type; - typedef _STLP_alloc_proxy _Alloc_proxy; - - typedef typename _Alloc_traits<_Tp*, _Alloc>::allocator_type _Map_alloc_type; - typedef _STLP_alloc_proxy _Map_alloc_proxy; - - typedef _Deque_iterator<_Tp, _Nonconst_traits<_Tp> > iterator; - typedef _Deque_iterator<_Tp, _Const_traits<_Tp> > const_iterator; - - static size_t _STLP_CALL buffer_size() { return _Deque_iterator_base<_Tp>::_S_buffer_size(); } - - _Deque_base(const allocator_type& __a, size_t __num_elements) - : _M_start(), _M_finish(), _M_map(_STLP_CONVERT_ALLOCATOR(__a, _Tp*), 0), - _M_map_size(__a, (size_t)0) - { _M_initialize_map(__num_elements); } - - _Deque_base(const allocator_type& __a) - : _M_start(), _M_finish(), _M_map(_STLP_CONVERT_ALLOCATOR(__a, _Tp*), 0), - _M_map_size(__a, (size_t)0) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _Deque_base(__move_source<_Self> src) - : _M_start(src.get()._M_start), _M_finish(src.get()._M_finish), - _M_map(__move_source<_Map_alloc_proxy>(src.get()._M_map)), - _M_map_size(__move_source<_Alloc_proxy>(src.get()._M_map_size)) { - src.get()._M_map._M_data = 0; - src.get()._M_map_size._M_data = 0; - src.get()._M_finish = src.get()._M_start; - } -#endif - - ~_Deque_base(); - -protected: - void _M_initialize_map(size_t); - void _M_create_nodes(_Tp** __nstart, _Tp** __nfinish); - void _M_destroy_nodes(_Tp** __nstart, _Tp** __nfinish); - enum { _S_initial_map_size = 8 }; - -protected: - iterator _M_start; - iterator _M_finish; - _Map_alloc_proxy _M_map; - _Alloc_proxy _M_map_size; -}; - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define deque _STLP_PTR_IMPL_NAME(deque) -#elif defined (_STLP_DEBUG) -# define deque _STLP_NON_DBG_NAME(deque) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template ) > -class deque : protected _STLP_PRIV _Deque_base<_Tp, _Alloc> -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (deque) - , public __stlport_class > -#endif -{ - typedef _STLP_PRIV _Deque_base<_Tp, _Alloc> _Base; - typedef deque<_Tp, _Alloc> _Self; -public: // Basic types - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef random_access_iterator_tag _Iterator_category; - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef typename _Base::allocator_type allocator_type; - -public: // Iterators - typedef typename _Base::iterator iterator; - typedef typename _Base::const_iterator const_iterator; - - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - -protected: // Internal typedefs - typedef pointer* _Map_pointer; -#if defined (_STLP_NO_MOVE_SEMANTIC) - typedef __false_type _Movable; -#endif - -public: // Basic accessors - iterator begin() { return this->_M_start; } - iterator end() { return this->_M_finish; } - const_iterator begin() const { return const_iterator(this->_M_start); } - const_iterator end() const { return const_iterator(this->_M_finish); } - - reverse_iterator rbegin() { return reverse_iterator(this->_M_finish); } - reverse_iterator rend() { return reverse_iterator(this->_M_start); } - const_reverse_iterator rbegin() const - { return const_reverse_iterator(this->_M_finish); } - const_reverse_iterator rend() const - { return const_reverse_iterator(this->_M_start); } - - reference operator[](size_type __n) - { return this->_M_start[difference_type(__n)]; } - const_reference operator[](size_type __n) const - { return this->_M_start[difference_type(__n)]; } - - void _M_range_check(size_type __n) const { - if (__n >= this->size()) - __stl_throw_out_of_range("deque"); - } - reference at(size_type __n) - { _M_range_check(__n); return (*this)[__n]; } - const_reference at(size_type __n) const - { _M_range_check(__n); return (*this)[__n]; } - - reference front() { return *this->_M_start; } - reference back() { - iterator __tmp = this->_M_finish; - --__tmp; - return *__tmp; - } - const_reference front() const { return *this->_M_start; } - const_reference back() const { - const_iterator __tmp = this->_M_finish; - --__tmp; - return *__tmp; - } - - size_type size() const { return this->_M_finish - this->_M_start; } - size_type max_size() const { return size_type(-1); } - bool empty() const { return this->_M_finish == this->_M_start; } - allocator_type get_allocator() const { return this->_M_map_size; } - -public: // Constructor, destructor. -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit deque(const allocator_type& __a = allocator_type()) -#else - deque() - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(allocator_type(), 0) {} - deque(const allocator_type& __a) -#endif - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(__a, 0) {} - - deque(const _Self& __x) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(__x.get_allocator(), __x.size()) - { _STLP_PRIV __ucopy(__x.begin(), __x.end(), this->_M_start); } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) -private: - void _M_initialize(size_type __n, const value_type& __val = _STLP_DEFAULT_CONSTRUCTED(_Tp)) { - typedef typename _TrivialInit<_Tp>::_Ret _TrivialInit; - _M_fill_initialize(__val, _TrivialInit()); - } -public: - explicit deque(size_type __n) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(allocator_type(), __n) - { _M_initialize(__n); } - deque(size_type __n, const value_type& __val, const allocator_type& __a = allocator_type()) -#else - explicit deque(size_type __n) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(allocator_type(), __n) { - typedef typename _TrivialInit<_Tp>::_Ret _TrivialInit; - _M_fill_initialize(_STLP_DEFAULT_CONSTRUCTED(_Tp), _TrivialInit()); - } - deque(size_type __n, const value_type& __val) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(allocator_type(), __n) - { _M_fill_initialize(__val, __false_type()); } - deque(size_type __n, const value_type& __val, const allocator_type& __a) -#endif - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(__a, __n) - { _M_fill_initialize(__val, __false_type()); } - -#if defined (_STLP_MEMBER_TEMPLATES) -protected: - template - void _M_initialize_dispatch(_Integer __n, _Integer __x, const __true_type&) { - this->_M_initialize_map(__n); - _M_fill_initialize(__x, __false_type()); - } - - template - void _M_initialize_dispatch(_InputIter __first, _InputIter __last, - const __false_type&) { - _M_range_initialize(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); - } - -public: - // Check whether it's an integral type. If so, it's not an iterator. - template - deque(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(__a) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_dispatch(__first, __last, _Integral()); - } - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - deque(_InputIterator __first, _InputIterator __last) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(allocator_type()) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_dispatch(__first, __last, _Integral()); - } -# endif - -#else - deque(const value_type* __first, const value_type* __last, - const allocator_type& __a = allocator_type() ) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(__a, __last - __first) - { _STLP_PRIV __ucopy(__first, __last, this->_M_start); } - - deque(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type() ) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(__a, __last - __first) - { _STLP_PRIV __ucopy(__first, __last, this->_M_start); } -#endif /* _STLP_MEMBER_TEMPLATES */ - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - deque(__move_source<_Self> src) - : _STLP_PRIV _Deque_base<_Tp, _Alloc>(__move_source<_Base>(src.get())) - {} -#endif - - ~deque() - { _STLP_STD::_Destroy_Range(this->_M_start, this->_M_finish); } - - _Self& operator= (const _Self& __x); - - void swap(_Self& __x) { - _STLP_STD::swap(this->_M_start, __x._M_start); - _STLP_STD::swap(this->_M_finish, __x._M_finish); - this->_M_map.swap(__x._M_map); - this->_M_map_size.swap(__x._M_map_size); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -public: - // assign(), a generalized assignment member function. Two - // versions: one that takes a count, and one that takes a range. - // The range version is a member template, so we dispatch on whether - // or not the type is an integer. - - void _M_fill_assign(size_type __n, const _Tp& __val) { - if (__n > size()) { - _STLP_STD::fill(begin(), end(), __val); - insert(end(), __n - size(), __val); - } - else { - erase(begin() + __n, end()); - _STLP_STD::fill(begin(), end(), __val); - } - } - - void assign(size_type __n, const _Tp& __val) { - _M_fill_assign(__n, __val); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - -private: // helper functions for assign() - - template - void _M_assign_dispatch(_Integer __n, _Integer __val, - const __true_type& /*_IsIntegral*/) - { _M_fill_assign((size_type) __n, (_Tp) __val); } - - template - void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, - const __false_type& /*_IsIntegral*/) { - _M_assign_aux(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator)); - } - - template - void _M_assign_aux(_InputIter __first, _InputIter __last, const input_iterator_tag &) { - iterator __cur = begin(); - for ( ; __first != __last && __cur != end(); ++__cur, ++__first) - *__cur = *__first; - if (__first == __last) - erase(__cur, end()); - else - insert(end(), __first, __last); - } - - template - void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, - const forward_iterator_tag &) { -#else - void assign(const value_type *__first, const value_type *__last) { - size_type __size = size(); - size_type __len = __last - __first; - if (__len > __size) { - const value_type *__mid = __first + __size; - _STLP_STD::copy(__first, __mid, begin()); - insert(end(), __mid, __last); - } - else { - erase(_STLP_STD::copy(__first, __last, begin()), end()); - } - } - void assign(const_iterator __first, const_iterator __last) { - typedef const_iterator _ForwardIterator; -#endif /* _STLP_MEMBER_TEMPLATES */ - size_type __len = _STLP_STD::distance(__first, __last); - if (__len > size()) { - _ForwardIterator __mid = __first; - _STLP_STD::advance(__mid, size()); - _STLP_STD::copy(__first, __mid, begin()); - insert(end(), __mid, __last); - } - else { - erase(_STLP_STD::copy(__first, __last, begin()), end()); - } - } - - -public: // push_* and pop_* - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_back(const value_type& __t = _STLP_DEFAULT_CONSTRUCTED(_Tp)) { -#else - void push_back(const value_type& __t) { -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - if (this->_M_finish._M_cur != this->_M_finish._M_last - 1) { - _Copy_Construct(this->_M_finish._M_cur, __t); - ++this->_M_finish._M_cur; - } - else - _M_push_back_aux_v(__t); - } -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_front(const value_type& __t = _STLP_DEFAULT_CONSTRUCTED(_Tp)) { -#else - void push_front(const value_type& __t) { -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - if (this->_M_start._M_cur != this->_M_start._M_first) { - _Copy_Construct(this->_M_start._M_cur - 1, __t); - --this->_M_start._M_cur; - } - else - _M_push_front_aux_v(__t); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_back() { - if (this->_M_finish._M_cur != this->_M_finish._M_last - 1) { - _STLP_STD::_Construct(this->_M_finish._M_cur); - ++this->_M_finish._M_cur; - } - else - _M_push_back_aux(); - } - void push_front() { - if (this->_M_start._M_cur != this->_M_start._M_first) { - _STLP_STD::_Construct(this->_M_start._M_cur - 1); - --this->_M_start._M_cur; - } - else - _M_push_front_aux(); - } -#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - void pop_back() { - if (this->_M_finish._M_cur != this->_M_finish._M_first) { - --this->_M_finish._M_cur; - _STLP_STD::_Destroy(this->_M_finish._M_cur); - } - else { - _M_pop_back_aux(); - _STLP_STD::_Destroy(this->_M_finish._M_cur); - } - } - - void pop_front() { - _STLP_STD::_Destroy(this->_M_start._M_cur); - _M_pop_front_aux(); - } - -public: // Insert - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(_Tp)) { -#else - iterator insert(iterator __pos, const value_type& __x) { -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - if (__pos._M_cur == this->_M_start._M_cur) { - push_front(__x); - return this->_M_start; - } - else if (__pos._M_cur == this->_M_finish._M_cur) { - push_back(__x); - iterator __tmp = this->_M_finish; - --__tmp; - return __tmp; - } - else { - return _M_fill_insert_aux(__pos, 1, __x, _Movable()); - } - } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos) - { return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - void insert(iterator __pos, size_type __n, const value_type& __x) - { _M_fill_insert(__pos, __n, __x); } - -protected: - iterator _M_fill_insert_aux(iterator __pos, size_type __n, const value_type& __x, const __true_type& /*_Movable*/); - iterator _M_fill_insert_aux(iterator __pos, size_type __n, const value_type& __x, const __false_type& /*_Movable*/); - - void _M_fill_insert(iterator __pos, size_type __n, const value_type& __x); - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - const __true_type& /*_IsIntegral*/) { - _M_fill_insert(__pos, (size_type) __n, (value_type) __x); - } - - template - void _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - const __false_type& /*_IsIntegral*/) { - _M_insert(__pos, __first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator)); - } - -public: - // Check whether it's an integral type. If so, it's not an iterator. - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_insert_dispatch(__pos, __first, __last, _Integral()); - } - -#else /* _STLP_MEMBER_TEMPLATES */ - void _M_insert_range_aux(iterator __pos, - const value_type* __first, const value_type* __last, - size_type __n, const __true_type& /*_Movable*/); - void _M_insert_range_aux(iterator __pos, - const value_type* __first, const value_type* __last, - size_type __n, const __false_type& /*_Movable*/); - void _M_insert_range_aux(iterator __pos, - const_iterator __first, const_iterator __last, - size_type __n, const __true_type& /*_Movable*/); - void _M_insert_range_aux(iterator __pos, - const_iterator __first, const_iterator __last, - size_type __n, const __false_type& /*_Movable*/); -public: - void insert(iterator __pos, - const value_type* __first, const value_type* __last); - void insert(iterator __pos, - const_iterator __first, const_iterator __last); - -#endif /* _STLP_MEMBER_TEMPLATES */ - -public: -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, - const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(_Tp)) { -#else - void resize(size_type __new_size, const value_type& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - const size_type __len = size(); - if (__new_size < __len) - erase(this->_M_start + __new_size, this->_M_finish); - else - insert(this->_M_finish, __new_size - __len, __x); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size) - { resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -protected: - iterator _M_erase(iterator __pos, const __true_type& /*_Movable*/); - iterator _M_erase(iterator __pos, const __false_type& /*_Movable*/); - - iterator _M_erase(iterator __first, iterator __last, const __true_type& /*_Movable*/); - iterator _M_erase(iterator __first, iterator __last, const __false_type& /*_Movable*/); -public: // Erase - iterator erase(iterator __pos) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - return _M_erase(__pos, _Movable()); - } - iterator erase(iterator __first, iterator __last) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - if (__first == this->_M_start && __last == this->_M_finish) { - clear(); - return this->_M_finish; - } - else { - if (__first == __last) - return __first; - return _M_erase(__first, __last, _Movable()); - } - } - void clear(); - -protected: // Internal construction/destruction - - void _M_fill_initialize(const value_type& __val, const __true_type& /*_TrivialInit*/) - {} - void _M_fill_initialize(const value_type& __val, const __false_type& /*_TrivialInit*/); - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_range_initialize(_InputIterator __first, _InputIterator __last, - const input_iterator_tag &) { - this->_M_initialize_map(0); - _STLP_TRY { - for ( ; __first != __last; ++__first) - push_back(*__first); - } - _STLP_UNWIND(clear()) - } - template - void _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, - const forward_iterator_tag &) { - size_type __n = _STLP_STD::distance(__first, __last); - this->_M_initialize_map(__n); - _Map_pointer __cur_node = this->_M_start._M_node; - _STLP_TRY { - for (; __cur_node < this->_M_finish._M_node; ++__cur_node) { - _ForwardIterator __mid = __first; - _STLP_STD::advance(__mid, this->buffer_size()); - _STLP_STD::uninitialized_copy(__first, __mid, *__cur_node); - __first = __mid; - } - _STLP_STD::uninitialized_copy(__first, __last, this->_M_finish._M_first); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(this->_M_start, iterator(*__cur_node, __cur_node))) - } -#endif /* _STLP_MEMBER_TEMPLATES */ - -protected: // Internal push_* and pop_* - - void _M_push_back_aux_v(const value_type&); - void _M_push_front_aux_v(const value_type&); -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void _M_push_back_aux(); - void _M_push_front_aux(); -#endif /*_STLP_DONT_SUP_DFLT_PARAM !_STLP_NO_ANACHRONISMS*/ - void _M_pop_back_aux(); - void _M_pop_front_aux(); - -protected: // Internal insert functions - -#if defined (_STLP_MEMBER_TEMPLATES) - - template - void _M_insert(iterator __pos, - _InputIterator __first, - _InputIterator __last, - const input_iterator_tag &) { - _STLP_STD::copy(__first, __last, inserter(*this, __pos)); - } - - template - void _M_insert(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, - const forward_iterator_tag &) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - size_type __n = _STLP_STD::distance(__first, __last); - if (__pos._M_cur == this->_M_start._M_cur) { - iterator __new_start = _M_reserve_elements_at_front(__n); - _STLP_TRY { - uninitialized_copy(__first, __last, __new_start); - this->_M_start = __new_start; - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else if (__pos._M_cur == this->_M_finish._M_cur) { - iterator __new_finish = _M_reserve_elements_at_back(__n); - _STLP_TRY { - uninitialized_copy(__first, __last, this->_M_finish); - this->_M_finish = __new_finish; - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } - else - _M_insert_range_aux(__pos, __first, __last, __n, _Movable()); - } - - template - void _M_insert_range_aux(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, - size_type __n, const __true_type& /*_Movable*/) { - const difference_type __elemsbefore = __pos - this->_M_start; - size_type __length = size(); - if (__elemsbefore <= difference_type(__length / 2)) { - iterator __new_start = _M_reserve_elements_at_front(__n); - __pos = this->_M_start + __elemsbefore; - _STLP_TRY { - iterator __dst = __new_start; - iterator __src = this->_M_start; - for (; __src != __pos; ++__dst, ++__src) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - this->_M_start = __new_start; - uninitialized_copy(__first, __last, __dst); - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else { - iterator __new_finish = _M_reserve_elements_at_back(__n); - const difference_type __elemsafter = difference_type(__length) - __elemsbefore; - __pos = this->_M_finish - __elemsafter; - _STLP_TRY { - iterator __dst = __new_finish; - iterator __src = this->_M_finish; - for (--__src, --__dst; __src >= __pos; --__src, --__dst) { - _STLP_STD::_Move_Construct(&(*__dst), *__src); - _STLP_STD::_Destroy_Moved(&(*__src)); - } - this->_M_finish = __new_finish; - uninitialized_copy(__first, __last, __pos); - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } - } - - template - void _M_insert_range_aux(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, - size_type __n, const __false_type& /*_Movable*/) { - const difference_type __elemsbefore = __pos - this->_M_start; - size_type __length = size(); - if (__elemsbefore <= difference_type(__length / 2)) { - iterator __new_start = _M_reserve_elements_at_front(__n); - iterator __old_start = this->_M_start; - __pos = this->_M_start + __elemsbefore; - _STLP_TRY { - if (__elemsbefore >= difference_type(__n)) { - iterator __start_n = this->_M_start + difference_type(__n); - _STLP_STD::uninitialized_copy(this->_M_start, __start_n, __new_start); - this->_M_start = __new_start; - _STLP_STD::copy(__start_n, __pos, __old_start); - _STLP_STD::copy(__first, __last, __pos - difference_type(__n)); - } - else { - _ForwardIterator __mid = __first; - _STLP_STD::advance(__mid, difference_type(__n) - __elemsbefore); - _STLP_PRIV __uninitialized_copy_copy(this->_M_start, __pos, __first, __mid, __new_start); - this->_M_start = __new_start; - _STLP_STD::copy(__mid, __last, __old_start); - } - } - _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node)) - } - else { - iterator __new_finish = _M_reserve_elements_at_back(__n); - iterator __old_finish = this->_M_finish; - const difference_type __elemsafter = difference_type(__length) - __elemsbefore; - __pos = this->_M_finish - __elemsafter; - _STLP_TRY { - if (__elemsafter > difference_type(__n)) { - iterator __finish_n = this->_M_finish - difference_type(__n); - _STLP_STD::uninitialized_copy(__finish_n, this->_M_finish, this->_M_finish); - this->_M_finish = __new_finish; - _STLP_STD::copy_backward(__pos, __finish_n, __old_finish); - _STLP_STD::copy(__first, __last, __pos); - } - else { - _ForwardIterator __mid = __first; - _STLP_STD::advance(__mid, __elemsafter); - _STLP_PRIV __uninitialized_copy_copy(__mid, __last, __pos, this->_M_finish, this->_M_finish); - this->_M_finish = __new_finish; - _STLP_STD::copy(__first, __mid, __pos); - } - } - _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1)) - } - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - iterator _M_reserve_elements_at_front(size_type __n) { - size_type __vacancies = this->_M_start._M_cur - this->_M_start._M_first; - if (__n > __vacancies) - _M_new_elements_at_front(__n - __vacancies); - return this->_M_start - difference_type(__n); - } - - iterator _M_reserve_elements_at_back(size_type __n) { - size_type __vacancies = (this->_M_finish._M_last - this->_M_finish._M_cur) - 1; - if (__n > __vacancies) - _M_new_elements_at_back(__n - __vacancies); - return this->_M_finish + difference_type(__n); - } - - void _M_new_elements_at_front(size_type __new_elements); - void _M_new_elements_at_back(size_type __new_elements); - -protected: // Allocation of _M_map and nodes - - // Makes sure the _M_map has space for new nodes. Does not actually - // add the nodes. Can invalidate _M_map pointers. (And consequently, - // deque iterators.) - - void _M_reserve_map_at_back (size_type __nodes_to_add = 1) { - if (__nodes_to_add + 1 > this->_M_map_size._M_data - (this->_M_finish._M_node - this->_M_map._M_data)) - _M_reallocate_map(__nodes_to_add, false); - } - - void _M_reserve_map_at_front (size_type __nodes_to_add = 1) { - if (__nodes_to_add > size_type(this->_M_start._M_node - this->_M_map._M_data)) - _M_reallocate_map(__nodes_to_add, true); - } - - void _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front); -}; - -#if defined (deque) -# undef deque -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# include -#endif - -#if defined (_STLP_DEBUG) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#define _STLP_TEMPLATE_CONTAINER deque<_Tp, _Alloc> -#define _STLP_TEMPLATE_HEADER template -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > { - typedef __true_type implemented; - typedef typename __move_traits<_Alloc>::complete complete; -}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_DEQUE_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_epilog.h b/build/stlport/stlport/stl/_epilog.h deleted file mode 100644 index 0747ae3204a0..000000000000 --- a/build/stlport/stlport/stl/_epilog.h +++ /dev/null @@ -1,42 +0,0 @@ -/* NOTE : this header has no guards and is MEANT for multiple inclusion! - * If you are using "header protection" option with your compiler, - * please also find #pragma which disables it and put it here, to - * allow reentrancy of this header. - */ - -#ifndef _STLP_PROLOG_HEADER_INCLUDED -# error STLport epilog header can not be included as long as prolog has not be included. -#endif - -/* If the platform provides any specific epilog actions, - * like #pragmas, do include platform-specific prolog file - */ -#if defined (_STLP_HAS_SPECIFIC_PROLOG_EPILOG) -# include -#endif - -#if !defined (_STLP_NO_POST_COMPATIBLE_SECTION) -# include -#endif - -#if defined (_STLP_USE_OWN_NAMESPACE) - -# if !defined (_STLP_DONT_REDEFINE_STD) -/* We redefine "std" to STLPORT, so that user code may use std:: transparently - * The STLPORT macro contains the STLport namespace name containing all the std - * stuff. - */ -# if defined (std) -/* - * Looks like the compiler native library on which STLport rely defined the std macro. - * This might introduce major incompatibility so report the problem to the STLport - * forum or comment the following #error at your own risk. - */ -# error Incompatible native Std library. -# endif /* std */ -# define std STLPORT -# endif /* _STLP_DONT_REDEFINE_STD */ - -#endif - -#undef _STLP_PROLOG_HEADER_INCLUDED /* defined in _prolog.h */ diff --git a/build/stlport/stlport/stl/_exception.h b/build/stlport/stlport/stl/_exception.h deleted file mode 100644 index 1dd71278474b..000000000000 --- a/build/stlport/stlport/stl/_exception.h +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - */ - -// The header contains low-level functions that interact -// with a compiler's exception-handling mechanism. It is assumed to -// be supplied with the compiler, rather than with the library, because -// it is inherently tied very closely to the compiler itself. - -// On platforms where does not exist, this header defines -// an exception base class. This is *not* a substitute for everything -// in , but it suffices to support a bare minimum of STL -// functionality. - -#ifndef _STLP_INTERNAL_EXCEPTION -#define _STLP_INTERNAL_EXCEPTION - -#if !defined (_STLP_NO_EXCEPTION_HEADER) - -# if defined ( _UNCAUGHT_EXCEPTION ) -# undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT -# endif - -# if defined (_STLP_BROKEN_EXCEPTION_CLASS) -# define exception _STLP_NULLIFIED_BROKEN_EXCEPTION_CLASS -# define bad_exception _STLP_NULLIFIED_BROKEN_BAD_EXCEPTION_CLASS -# if defined (_STLP_NO_NEW_NEW_HEADER) -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(Exception.h) -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(Exception) -# endif -# undef exception -# undef bad_exception -# else -# if defined (_STLP_NO_NEW_NEW_HEADER) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception.h) -# endif -# else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception) -# endif -# endif -# endif - -# if defined (_STLP_HAS_SPECIFIC_PROLOG_EPILOG) && defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB < 1300) -// dwa 02/04/00 -// The header which ships with vc6 and is included by its native -// actually turns on warnings, so we have to turn them back off. -# include -# endif - -# if defined (_STLP_USE_OWN_NAMESPACE) - -_STLP_BEGIN_NAMESPACE -# if !defined (_STLP_BROKEN_EXCEPTION_CLASS) -# if !defined (_STLP_USING_PLATFORM_SDK_COMPILER) || !defined (_WIN64) -using _STLP_VENDOR_EXCEPT_STD::exception; -# else -using ::exception; -# endif -using _STLP_VENDOR_EXCEPT_STD::bad_exception; -# endif - -# if !defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS) -// fbp : many platforms present strange mix of -// those in various namespaces -# if !defined (_STLP_VENDOR_UNEXPECTED_STD) -# define _STLP_VENDOR_UNEXPECTED_STD _STLP_VENDOR_EXCEPT_STD -# else -/* The following definitions are for backward compatibility as _STLP_VENDOR_TERMINATE_STD - * and _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD has been introduce after _STLP_VENDOR_UNEXPECTED_STD - * and _STLP_VENDOR_UNEXPECTED_STD was the macro used in their place before that introduction. - */ -# if !defined (_STLP_VENDOR_TERMINATE_STD) -# define _STLP_VENDOR_TERMINATE_STD _STLP_VENDOR_UNEXPECTED_STD -# endif -# if !defined (_STLP_VENDOR_UNCAUGHT_EXCEPTION_STD) -# define _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD _STLP_VENDOR_UNEXPECTED_STD -# endif -# endif -# if !defined (_STLP_VENDOR_TERMINATE_STD) -# define _STLP_VENDOR_TERMINATE_STD _STLP_VENDOR_EXCEPT_STD -# endif -# if !defined (_STLP_VENDOR_UNCAUGHT_EXCEPTION_STD) -# define _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD _STLP_VENDOR_EXCEPT_STD -# endif -# if !defined (_STLP_VENDOR_TERMINATE_STD) -# define _STLP_VENDOR_TERMINATE_STD _STLP_VENDOR_EXCEPT_STD -# endif -# if !defined (_STLP_VENDOR_UNCAUGHT_EXCEPTION_STD) -# define _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD _STLP_VENDOR_EXCEPT_STD -# endif -// weird errors -# if !defined (_STLP_NO_UNEXPECTED_EXCEPT_SUPPORT) -# if defined (__ICL) && (__ICL >= 900) && (_STLP_MSVC_LIB < 1300) -//See config/_intel.h for reason about this workaround -using std::unexpected; -# else -using _STLP_VENDOR_UNEXPECTED_STD::unexpected; -# endif -using _STLP_VENDOR_UNEXPECTED_STD::unexpected_handler; -using _STLP_VENDOR_UNEXPECTED_STD::set_unexpected; -# endif -using _STLP_VENDOR_TERMINATE_STD::terminate; -using _STLP_VENDOR_TERMINATE_STD::terminate_handler; -using _STLP_VENDOR_TERMINATE_STD::set_terminate; - -# if !defined (_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT) -using _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD::uncaught_exception; -# endif -# endif /* !_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS */ -_STLP_END_NAMESPACE -# endif /* _STLP_OWN_NAMESPACE */ -#else /* _STLP_NO_EXCEPTION_HEADER */ - -/* fbp : absence of usually means that those - * functions are not going to be called by compiler. - * Still, define them for the user. - * dums: Policy modification, if the function do not behave like the Standard - * defined it we do not grant it in the STLport namespace. We will have - * compile time error rather than runtime error. - */ -#if 0 -/* -typedef void (*unexpected_handler)(); -unexpected_handler set_unexpected(unexpected_handler f) _STLP_NOTHROW_INHERENTLY; -void unexpected(); - -typedef void (*terminate_handler)(); -terminate_handler set_terminate(terminate_handler f) _STLP_NOTHROW_INHERENTLY; -void terminate(); - -bool uncaught_exception(); // not implemented under mpw as of Jan/1999 -*/ -#endif - -#endif /* _STLP_NO_EXCEPTION_HEADER */ - -#if defined (_STLP_NO_EXCEPTION_HEADER) || defined (_STLP_BROKEN_EXCEPTION_CLASS) -_STLP_BEGIN_NAMESPACE - -// section 18.6.1 -class _STLP_CLASS_DECLSPEC exception { -public: -# ifndef _STLP_USE_NO_IOSTREAMS - exception() _STLP_NOTHROW; - virtual ~exception() _STLP_NOTHROW; - virtual const char* what() const _STLP_NOTHROW; -# else - exception() _STLP_NOTHROW {} - virtual ~exception() _STLP_NOTHROW {} - virtual const char* what() const _STLP_NOTHROW {return "class exception";} -# endif -}; - -// section 18.6.2.1 -class _STLP_CLASS_DECLSPEC bad_exception : public exception { -public: -# ifndef _STLP_USE_NO_IOSTREAMS - bad_exception() _STLP_NOTHROW; - ~bad_exception() _STLP_NOTHROW; - const char* what() const _STLP_NOTHROW; -# else - bad_exception() _STLP_NOTHROW {} - ~bad_exception() _STLP_NOTHROW {} - const char* what() const _STLP_NOTHROW {return "class bad_exception";} -# endif -}; - -#ifdef _STLP_USE_EXCEPTIONS -// forward declaration -class __Named_exception; -#endif - -_STLP_END_NAMESPACE -#endif - -#endif /* _STLP_INTERNAL_EXCEPTION */ diff --git a/build/stlport/stlport/stl/_facets_fwd.h b/build/stlport/stlport/stl/_facets_fwd.h deleted file mode 100644 index d4c8451f534c..000000000000 --- a/build/stlport/stlport/stl/_facets_fwd.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef _STLP_FACETS_FWD_H -#define _STLP_FACETS_FWD_H - - -#include - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -#else -template > > -#endif -class money_get; - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -#else -template > > -#endif -class money_put; - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -#else -template > > -#endif -class num_get; - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -#else -template > > -#endif -class num_put; - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -#else -template > > -#endif -class time_get; - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -#else -template > > -#endif -class time_put; - -_STLP_END_NAMESPACE - -#endif diff --git a/build/stlport/stlport/stl/_fstream.c b/build/stlport/stlport/stl/_fstream.c deleted file mode 100644 index 7306f9eda4e9..000000000000 --- a/build/stlport/stlport/stl/_fstream.c +++ /dev/null @@ -1,766 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_FSTREAM_C -#define _STLP_FSTREAM_C - -#ifndef _STLP_INTERNAL_FSTREAM_H -# include -#endif - -#ifndef _STLP_INTERNAL_LIMITS -# include -#endif - -_STLP_BEGIN_NAMESPACE - -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG ) -// no wchar_t is supported for this mode -# define __BF_int_type__ int -# define __BF_pos_type__ streampos -# define __BF_off_type__ streamoff -# else -# define __BF_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::int_type -# define __BF_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::pos_type -# define __BF_off_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::off_type -# endif - - -//---------------------------------------------------------------------- -// Public basic_filebuf<> member functions - -template -basic_filebuf<_CharT, _Traits>::basic_filebuf() - : basic_streambuf<_CharT, _Traits>(), _M_base(), - _M_constant_width(false), _M_always_noconv(false), - _M_int_buf_dynamic(false), - _M_in_input_mode(false), _M_in_output_mode(false), - _M_in_error_mode(false), _M_in_putback_mode(false), - _M_int_buf(0), _M_int_buf_EOS(0), - _M_ext_buf(0), _M_ext_buf_EOS(0), - _M_ext_buf_converted(0), _M_ext_buf_end(0), - _M_state(_STLP_DEFAULT_CONSTRUCTED(_State_type)), - _M_end_state(_STLP_DEFAULT_CONSTRUCTED(_State_type)), - _M_mmap_base(0), _M_mmap_len(0), - _M_saved_eback(0), _M_saved_gptr(0), _M_saved_egptr(0), - _M_codecvt(0), - _M_width(1), _M_max_width(1) -{ - this->_M_setup_codecvt(locale(), false); -} - -template -basic_filebuf<_CharT, _Traits>::~basic_filebuf() { - this->close(); - _M_deallocate_buffers(); -} - - -template -_STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::int_type -basic_filebuf<_CharT, _Traits>::underflow() { - return _Underflow<_CharT, _Traits>::_M_doit(this); -} - -template -basic_filebuf<_CharT, _Traits>* -basic_filebuf<_CharT, _Traits>::close() { - bool __ok = this->is_open(); - - if (_M_in_output_mode) { - __ok = __ok && !_Traits::eq_int_type(this->overflow(traits_type::eof()), - traits_type::eof()); - __ok = __ok && this->_M_unshift(); - } - else if (_M_in_input_mode) - this->_M_exit_input_mode(); - - // Note order of arguments. We close the file even if __ok is false. - __ok = _M_base._M_close() && __ok; - - // Restore the initial state, except that we don't deallocate the buffer - // or mess with the cached codecvt information. - _M_state = _M_end_state = _State_type(); - _M_ext_buf_converted = _M_ext_buf_end = 0; - - _M_mmap_base = 0; - _M_mmap_len = 0; - - this->setg(0, 0, 0); - this->setp(0, 0); - - _M_saved_eback = _M_saved_gptr = _M_saved_egptr = 0; - - _M_in_input_mode = _M_in_output_mode = _M_in_error_mode = _M_in_putback_mode - = false; - - return __ok ? this : 0; -} - -// This member function is called whenever we exit input mode. -// It unmaps the memory-mapped file, if any, and sets -// _M_in_input_mode to false. -template -void basic_filebuf<_CharT, _Traits>::_M_exit_input_mode() { - if (_M_mmap_base != 0) { - _M_base._M_unmap(_M_mmap_base, _M_mmap_len); - _M_mmap_base = 0; - _M_mmap_len = 0; - } - _M_in_input_mode = false; -} - - -//---------------------------------------------------------------------- -// basic_filebuf<> overridden protected virtual member functions - -template -streamsize basic_filebuf<_CharT, _Traits>::showmanyc() { - // Is there any possibility that reads can succeed? - if (!this->is_open() || _M_in_output_mode || _M_in_error_mode) - return -1; - else if (_M_in_putback_mode) - return this->egptr() - this->gptr(); - else if (_M_constant_width) { - streamoff __pos = _M_base._M_seek(0, ios_base::cur); - streamoff __size = _M_base._M_file_size(); - return __pos >= 0 && __size > __pos ? __size - __pos : 0; - } - else - return 0; -} - - -// Make a putback position available, if necessary, by switching to a -// special internal buffer used only for putback. The buffer is -// [_M_pback_buf, _M_pback_buf + _S_pback_buf_size), but the base -// class only sees a piece of it at a time. (We want to make sure -// that we don't try to read a character that hasn't been initialized.) -// The end of the putback buffer is always _M_pback_buf + _S_pback_buf_size, -// but the beginning is usually not _M_pback_buf. -template -__BF_int_type__ -basic_filebuf<_CharT, _Traits>::pbackfail(int_type __c) { - const int_type __eof = traits_type::eof(); - - // If we aren't already in input mode, pushback is impossible. - if (!_M_in_input_mode) - return __eof; - - // We can use the ordinary get buffer if there's enough space, and - // if it's a buffer that we're allowed to write to. - if (this->gptr() != this->eback() && - (traits_type::eq_int_type(__c, __eof) || - traits_type::eq(traits_type::to_char_type(__c), this->gptr()[-1]) || - !_M_mmap_base)) { - this->gbump(-1); - if (traits_type::eq_int_type(__c, __eof) || - traits_type::eq(traits_type::to_char_type(__c), *this->gptr())) - return traits_type::to_int_type(*this->gptr()); - } - else if (!traits_type::eq_int_type(__c, __eof)) { - // Are we in the putback buffer already? - _CharT* __pback_end = _M_pback_buf + __STATIC_CAST(int,_S_pback_buf_size); - if (_M_in_putback_mode) { - // Do we have more room in the putback buffer? - if (this->eback() != _M_pback_buf) - this->setg(this->egptr() - 1, this->egptr() - 1, __pback_end); - else - return __eof; // No more room in the buffer, so fail. - } - else { // We're not yet in the putback buffer. - _M_saved_eback = this->eback(); - _M_saved_gptr = this->gptr(); - _M_saved_egptr = this->egptr(); - this->setg(__pback_end - 1, __pback_end - 1, __pback_end); - _M_in_putback_mode = true; - } - } - else - return __eof; - - // We have made a putback position available. Assign to it, and return. - *this->gptr() = traits_type::to_char_type(__c); - return __c; -} - -// This member function flushes the put area, and also outputs the -// character __c (unless __c is eof). Invariant: we always leave room -// in the internal buffer for one character more than the base class knows -// about. We see the internal buffer as [_M_int_buf, _M_int_buf_EOS), but -// the base class only sees [_M_int_buf, _M_int_buf_EOS - 1). -template -__BF_int_type__ -basic_filebuf<_CharT, _Traits>::overflow(int_type __c) { - // Switch to output mode, if necessary. - if (!_M_in_output_mode) - if (!_M_switch_to_output_mode()) - return traits_type::eof(); - - _CharT* __ibegin = this->_M_int_buf; - _CharT* __iend = this->pptr(); - this->setp(_M_int_buf, _M_int_buf_EOS - 1); - - // Put __c at the end of the internal buffer. - if (!traits_type::eq_int_type(__c, traits_type::eof())) - *__iend++ = _Traits::to_char_type(__c); - - // For variable-width encodings, output may take more than one pass. - while (__ibegin != __iend) { - const _CharT* __inext = __ibegin; - char* __enext = _M_ext_buf; - typename _Codecvt::result __status - = _M_codecvt->out(_M_state, __ibegin, __iend, __inext, - _M_ext_buf, _M_ext_buf_EOS, __enext); - if (__status == _Codecvt::noconv) { - return _Noconv_output<_Traits>::_M_doit(this, __ibegin, __iend) - ? traits_type::not_eof(__c) - : _M_output_error(); - } - - // For a constant-width encoding we know that the external buffer - // is large enough, so failure to consume the entire internal buffer - // or to produce the correct number of external characters, is an error. - // For a variable-width encoding, however, we require only that we - // consume at least one internal character - else if (__status != _Codecvt::error && - (((__inext == __iend) && - (__enext - _M_ext_buf == _M_width * (__iend - __ibegin))) || - (!_M_constant_width && __inext != __ibegin))) { - // We successfully converted part or all of the internal buffer. - ptrdiff_t __n = __enext - _M_ext_buf; - if (_M_write(_M_ext_buf, __n)) - __ibegin += __inext - __ibegin; - else - return _M_output_error(); - } - else - return _M_output_error(); - } - - return traits_type::not_eof(__c); -} - -// This member function must be called before any I/O has been -// performed on the stream, otherwise it has no effect. -// -// __buf == 0 && __n == 0 means to make this stream unbuffered. -// __buf != 0 && __n > 0 means to use __buf as the stream's internal -// buffer, rather than the buffer that would otherwise be allocated -// automatically. __buf must be a pointer to an array of _CharT whose -// size is at least __n. -template -basic_streambuf<_CharT, _Traits>* -basic_filebuf<_CharT, _Traits>::setbuf(_CharT* __buf, streamsize __n) { - if (!_M_in_input_mode &&! _M_in_output_mode && !_M_in_error_mode && - _M_int_buf == 0) { - if (__buf == 0 && __n == 0) - _M_allocate_buffers(0, 1); - else if (__buf != 0 && __n > 0) - _M_allocate_buffers(__buf, __n); - } - return this; -} - -#if defined (_STLP_ASSERTIONS) -// helper class. -template -struct _Filebuf_Tmp_Buf { - _CharT* _M_ptr; - _Filebuf_Tmp_Buf(ptrdiff_t __n) : _M_ptr(0) { _M_ptr = new _CharT[__n]; } - ~_Filebuf_Tmp_Buf() { delete[] _M_ptr; } -}; -#endif - -template -__BF_pos_type__ -basic_filebuf<_CharT, _Traits>::seekoff(off_type __off, - ios_base::seekdir __whence, - ios_base::openmode /* dummy */) { - if (!this->is_open()) - return pos_type(-1); - - if (!_M_constant_width && __off != 0) - return pos_type(-1); - - if (!_M_seek_init(__off != 0 || __whence != ios_base::cur)) - return pos_type(-1); - - // Seek to beginning or end, regardless of whether we're in input mode. - if (__whence == ios_base::beg || __whence == ios_base::end) - return _M_seek_return(_M_base._M_seek(_M_width * __off, __whence), - _State_type()); - - // Seek relative to current position. Complicated if we're in input mode. - _STLP_ASSERT(__whence == ios_base::cur) - if (!_M_in_input_mode) - return _M_seek_return(_M_base._M_seek(_M_width * __off, __whence), - _State_type()); - - if (_M_mmap_base != 0) { - // __off is relative to gptr(). We need to do a bit of arithmetic - // to get an offset relative to the external file pointer. - streamoff __adjust = _M_mmap_len - (this->gptr() - (_CharT*) _M_mmap_base); - - // if __off == 0, we do not need to exit input mode and to shift file pointer - return __off == 0 ? pos_type(_M_base._M_seek(0, ios_base::cur) - __adjust) - : _M_seek_return(_M_base._M_seek(__off - __adjust, ios_base::cur), _State_type()); - } - - if (_M_constant_width) { // Get or set the position. - streamoff __iadj = _M_width * (this->gptr() - this->eback()); - - // Compensate for offset relative to gptr versus offset relative - // to external pointer. For a text-oriented stream, where the - // compensation is more than just pointer arithmetic, we may get - // but not set the current position. - - if (__iadj <= _M_ext_buf_end - _M_ext_buf) { - streamoff __eadj = _M_base._M_get_offset(_M_ext_buf + __STATIC_CAST(ptrdiff_t, __iadj), _M_ext_buf_end); - - return __off == 0 ? pos_type(_M_base._M_seek(0, ios_base::cur) - __eadj) - : _M_seek_return(_M_base._M_seek(__off - __eadj, ios_base::cur), _State_type()); - } - } - else { // Get the position. Encoding is var width. - // Get position in internal buffer. - ptrdiff_t __ipos = this->gptr() - this->eback(); - - // Get corresponding position in external buffer. - _State_type __state = _M_state; - int __epos = _M_codecvt->length(__state, _M_ext_buf, _M_ext_buf_converted, - __ipos); -#if defined (_STLP_ASSERTIONS) - // Sanity check (expensive): make sure __epos is the right answer. - _STLP_ASSERT(__epos >= 0) - _State_type __tmp_state = _M_state; - _Filebuf_Tmp_Buf<_CharT> __buf(__ipos); - _CharT* __ibegin = __buf._M_ptr; - _CharT* __inext = __ibegin; - const char* __dummy; - typename _Codecvt::result __status - = _M_codecvt->in(__tmp_state, - _M_ext_buf, _M_ext_buf + __epos, __dummy, - __ibegin, __ibegin + __ipos, __inext); - // The result code is necessarily ok because: - // - noconv: impossible for a variable encoding - // - error: length method is supposed to count until it reach max value or find an error so we cannot have - // an error again when decoding an external buffer up to length return value. - // - partial: idem error, it is also a reason for length to stop counting. - _STLP_ASSERT(__status == _Codecvt::ok) - _STLP_ASSERT(__inext == __ibegin + __ipos) - _STLP_ASSERT(equal(this->eback(), this->gptr(), __ibegin, _STLP_PRIV _Eq_traits())) -#endif - // Get the current position (at the end of the external buffer), - // then adjust it. Again, it might be a text-oriented stream. - streamoff __cur = _M_base._M_seek(0, ios_base::cur); - streamoff __adj = _M_base._M_get_offset(_M_ext_buf, _M_ext_buf + __epos) - - _M_base._M_get_offset(_M_ext_buf, _M_ext_buf_end); - if (__cur != -1 && __cur + __adj >= 0) - return __off == 0 ? pos_type(__cur + __adj) - : _M_seek_return(__cur + __adj, __state); - } - - return pos_type(-1); -} - - -template -__BF_pos_type__ -basic_filebuf<_CharT, _Traits>::seekpos(pos_type __pos, - ios_base::openmode /* dummy */) { - if (this->is_open()) { - if (!_M_seek_init(true)) - return pos_type(-1); - - streamoff __off = off_type(__pos); - if (__off != -1 && _M_base._M_seek(__off, ios_base::beg) != -1) { - _M_state = __pos.state(); - return _M_seek_return(__off, __pos.state()); - } - } - - return pos_type(-1); -} - - -template -int basic_filebuf<_CharT, _Traits>::sync() { - if (_M_in_output_mode) - return traits_type::eq_int_type(this->overflow(traits_type::eof()), - traits_type::eof()) ? -1 : 0; - return 0; -} - - -// Change the filebuf's locale. This member function has no effect -// unless it is called before any I/O is performed on the stream. -template -void basic_filebuf<_CharT, _Traits>::imbue(const locale& __loc) { - if (!_M_in_input_mode && !_M_in_output_mode && !_M_in_error_mode) { - this->_M_setup_codecvt(__loc); - } -} - -//---------------------------------------------------------------------- -// basic_filebuf<> helper functions. - -//---------------------------------------- -// Helper functions for switching between modes. - -// This member function is called if we're performing the first I/O -// operation on a filebuf, or if we're performing an input operation -// immediately after a seek. -template -bool basic_filebuf<_CharT, _Traits>::_M_switch_to_input_mode() { - if (this->is_open() && (((int)_M_base.__o_mode() & (int)ios_base::in) !=0) - && (_M_in_output_mode == 0) && (_M_in_error_mode == 0)) { - if (!_M_int_buf && !_M_allocate_buffers()) - return false; - - _M_ext_buf_converted = _M_ext_buf; - _M_ext_buf_end = _M_ext_buf; - - _M_end_state = _M_state; - - _M_in_input_mode = true; - return true; - } - - return false; -} - - -// This member function is called if we're performing the first I/O -// operation on a filebuf, or if we're performing an output operation -// immediately after a seek. -template -bool basic_filebuf<_CharT, _Traits>::_M_switch_to_output_mode() { - if (this->is_open() && (_M_base.__o_mode() & (int)ios_base::out) && - _M_in_input_mode == 0 && _M_in_error_mode == 0) { - - if (!_M_int_buf && !_M_allocate_buffers()) - return false; - - // In append mode, every write does an implicit seek to the end - // of the file. Whenever leaving output mode, the end of file - // get put in the initial shift state. - if (_M_base.__o_mode() & ios_base::app) - _M_state = _State_type(); - - this->setp(_M_int_buf, _M_int_buf_EOS - 1); - _M_in_output_mode = true; - return true; - } - - return false; -} - - -//---------------------------------------- -// Helper functions for input - -// This member function is called if there is an error during input. -// It puts the filebuf in error mode, clear the get area buffer, and -// returns eof. -// returns eof. Error mode is sticky; it is cleared only by close or -// seek. - -template -__BF_int_type__ -basic_filebuf<_CharT, _Traits>::_M_input_error() { - this->_M_exit_input_mode(); - _M_in_output_mode = false; - _M_in_error_mode = true; - this->setg(0, 0, 0); - return traits_type::eof(); -} - -template -__BF_int_type__ -basic_filebuf<_CharT, _Traits>::_M_underflow_aux() { - // We have the state and file position from the end of the internal - // buffer. This round, they become the beginning of the internal buffer. - _M_state = _M_end_state; - - // Fill the external buffer. Start with any leftover characters that - // didn't get converted last time. - if (_M_ext_buf_end > _M_ext_buf_converted) - - _M_ext_buf_end = _STLP_STD::copy(_M_ext_buf_converted, _M_ext_buf_end, _M_ext_buf); - // boris : copy_backward did not work - //_M_ext_buf_end = copy_backward(_M_ext_buf_converted, _M_ext_buf_end, - //_M_ext_buf+ (_M_ext_buf_end - _M_ext_buf_converted)); - else - _M_ext_buf_end = _M_ext_buf; - - // Now fill the external buffer with characters from the file. This is - // a loop because occasionally we don't get enough external characters - // to make progress. - for (;;) { - ptrdiff_t __n = _M_base._M_read(_M_ext_buf_end, _M_ext_buf_EOS - _M_ext_buf_end); - if (__n < 0) { - // Read failed, maybe we should set err bit on associated stream... - this->setg(0, 0, 0); - return traits_type::eof(); - } - - _M_ext_buf_end += __n; - - // If external buffer is empty there is nothing to do. - if (_M_ext_buf == _M_ext_buf_end) { - this->setg(0, 0, 0); - return traits_type::eof(); - } - - // Convert the external buffer to internal characters. - const char* __enext; - _CharT* __inext; - - typename _Codecvt::result __status - = _M_codecvt->in(_M_end_state, - _M_ext_buf, _M_ext_buf_end, __enext, - _M_int_buf, _M_int_buf_EOS, __inext); - - /* Error conditions: - * (1) Return value of error. - * (2) Producing internal characters without consuming external characters. - * (3) In fixed-width encodings, producing an internal sequence whose length - * is inconsistent with that of the internal sequence. - * (4) Failure to produce any characters if we have enough characters in - * the external buffer, where "enough" means the largest possible width - * of a single character. */ - if (__status == _Codecvt::noconv) - return _Noconv_input<_Traits>::_M_doit(this); - else if (__status == _Codecvt::error || - (__inext != _M_int_buf && __enext == _M_ext_buf) || - (_M_constant_width && (__inext - _M_int_buf) * _M_width != (__enext - _M_ext_buf)) || - (__inext == _M_int_buf && __enext - _M_ext_buf >= _M_max_width)) - return _M_input_error(); - else if (__inext != _M_int_buf) { - _M_ext_buf_converted = _M_ext_buf + (__enext - _M_ext_buf); - this->setg(_M_int_buf, _M_int_buf, __inext); - return traits_type::to_int_type(*_M_int_buf); - } - /* We need to go around the loop again to get more external characters. - * But if the previous read failed then don't try again for now. - * Don't enter error mode for a failed read. Error mode is sticky, - * and we might succeed if we try again. */ - if (__n <= 0) { - this->setg(0, 0, 0); - return traits_type::eof(); - } - } -} - -//---------------------------------------- -// Helper functions for output - -// This member function is called if there is an error during output. -// It puts the filebuf in error mode, clear the put area buffer, and -// returns eof. Error mode is sticky; it is cleared only by close or -// seek. -template -__BF_int_type__ -basic_filebuf<_CharT, _Traits>::_M_output_error() { - _M_in_output_mode = false; - _M_in_input_mode = false; - _M_in_error_mode = true; - this->setp(0, 0); - return traits_type::eof(); -} - - -// Write whatever sequence of characters is necessary to get back to -// the initial shift state. This function overwrites the external -// buffer, changes the external file position, and changes the state. -// Precondition: the internal buffer is empty. -template -bool basic_filebuf<_CharT, _Traits>::_M_unshift() { - if (_M_in_output_mode && !_M_constant_width) { - typename _Codecvt::result __status; - do { - char* __enext = _M_ext_buf; - __status = _M_codecvt->unshift(_M_state, - _M_ext_buf, _M_ext_buf_EOS, __enext); - if (__status == _Codecvt::noconv || - (__enext == _M_ext_buf && __status == _Codecvt::ok)) - return true; - else if (__status == _Codecvt::error) - return false; - else if (!_M_write(_M_ext_buf, __enext - _M_ext_buf)) - return false; - } while (__status == _Codecvt::partial); - } - - return true; -} - - -//---------------------------------------- -// Helper functions for buffer allocation and deallocation - -// This member function is called when we're initializing a filebuf's -// internal and external buffers. The argument is the size of the -// internal buffer; the external buffer is sized using the character -// width in the current encoding. Preconditions: the buffers are currently -// null. __n >= 1. __buf is either a null pointer or a pointer to an -// array show size is at least __n. - -// We need __n >= 1 for two different reasons. For input, the base -// class always needs a buffer because of the semantics of underflow(). -// For output, we want to have an internal buffer that's larger by one -// element than the buffer that the base class knows about. (See -// basic_filebuf<>::overflow() for the reason.) -template -bool basic_filebuf<_CharT, _Traits>::_M_allocate_buffers(_CharT* __buf, streamsize __n) { - //The major hypothesis in the following implementation is that size_t is unsigned. - //We also need streamsize byte representation to be larger or equal to the int - //representation to correctly store the encoding information. - _STLP_STATIC_ASSERT(!numeric_limits::is_signed && - sizeof(streamsize) >= sizeof(int)) - - if (__buf == 0) { - streamsize __bufsize = __n * sizeof(_CharT); - //We first check that the streamsize representation can't overflow a size_t one. - //If it can, we check that __bufsize is not higher than the size_t max value. - if ((sizeof(streamsize) > sizeof(size_t)) && - (__bufsize > __STATIC_CAST(streamsize, (numeric_limits::max)()))) - return false; - _M_int_buf = __STATIC_CAST(_CharT*, malloc(__STATIC_CAST(size_t, __bufsize))); - if (!_M_int_buf) - return false; - _M_int_buf_dynamic = true; - } - else { - _M_int_buf = __buf; - _M_int_buf_dynamic = false; - } - - streamsize __ebufsiz = (max)(__n * __STATIC_CAST(streamsize, _M_width), - __STATIC_CAST(streamsize, _M_codecvt->max_length())); - - _M_ext_buf = 0; - if ((sizeof(streamsize) < sizeof(size_t)) || - ((sizeof(streamsize) == sizeof(size_t)) && numeric_limits::is_signed) || - (__ebufsiz <= __STATIC_CAST(streamsize, (numeric_limits::max)()))) { - _M_ext_buf = __STATIC_CAST(char*, malloc(__STATIC_CAST(size_t, __ebufsiz))); - } - - if (!_M_ext_buf) { - _M_deallocate_buffers(); - return false; - } - - _M_int_buf_EOS = _M_int_buf + __STATIC_CAST(ptrdiff_t, __n); - _M_ext_buf_EOS = _M_ext_buf + __STATIC_CAST(ptrdiff_t, __ebufsiz); - return true; -} - -// Abbreviation for the most common case. -template -bool basic_filebuf<_CharT, _Traits>::_M_allocate_buffers() { - // Choose a buffer that's at least 4096 characters long and that's a - // multiple of the page size. - streamsize __default_bufsiz = - ((_M_base.__page_size() + 4095UL) / _M_base.__page_size()) * _M_base.__page_size(); - return _M_allocate_buffers(0, __default_bufsiz); -} - -template -void basic_filebuf<_CharT, _Traits>::_M_deallocate_buffers() { - if (_M_int_buf_dynamic) - free(_M_int_buf); - free(_M_ext_buf); - _M_int_buf = 0; - _M_int_buf_EOS = 0; - _M_ext_buf = 0; - _M_ext_buf_EOS = 0; -} - - -//---------------------------------------- -// Helper functiosn for seek and imbue - -template -bool basic_filebuf<_CharT, _Traits>::_M_seek_init(bool __do_unshift) { - // If we're in error mode, leave it. - _M_in_error_mode = false; - - // Flush the output buffer if we're in output mode, and (conditionally) - // emit an unshift sequence. - if (_M_in_output_mode) { - bool __ok = !traits_type::eq_int_type(this->overflow(traits_type::eof()), - traits_type::eof()); - if (__do_unshift) - __ok = __ok && this->_M_unshift(); - if (!__ok) { - _M_in_output_mode = false; - _M_in_error_mode = true; - this->setp(0, 0); - return false; - } - } - - // Discard putback characters, if any. - if (_M_in_input_mode && _M_in_putback_mode) - _M_exit_putback_mode(); - - return true; -} - - -/* Change the filebuf's locale. This member function has no effect - * unless it is called before any I/O is performed on the stream. - * This function is called on construction and on an imbue call. In the - * case of the construction the codecvt facet might be a custom one if - * the basic_filebuf user has instanciate it with a custom char_traits. - * The user will have to call imbue before any I/O operation. - */ -template -void basic_filebuf<_CharT, _Traits>::_M_setup_codecvt(const locale& __loc, bool __on_imbue) { - if (has_facet<_Codecvt>(__loc)) { - _M_codecvt = &use_facet<_Codecvt>(__loc) ; - int __encoding = _M_codecvt->encoding(); - - _M_width = (max)(__encoding, 1); - _M_max_width = _M_codecvt->max_length(); - _M_constant_width = __encoding > 0; - _M_always_noconv = _M_codecvt->always_noconv(); - } - else { - _M_codecvt = 0; - _M_width = _M_max_width = 1; - _M_constant_width = _M_always_noconv = false; - if (__on_imbue) { - //This call will generate an exception reporting the problem. - use_facet<_Codecvt>(__loc); - } - } -} - -_STLP_END_NAMESPACE - -# undef __BF_int_type__ -# undef __BF_pos_type__ -# undef __BF_off_type__ - -#endif /* _STLP_FSTREAM_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_fstream.h b/build/stlport/stlport/stl/_fstream.h deleted file mode 100644 index 1945e411884b..000000000000 --- a/build/stlport/stlport/stl/_fstream.h +++ /dev/null @@ -1,714 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// This header defines classes basic_filebuf, basic_ifstream, -// basic_ofstream, and basic_fstream. These classes represent -// streambufs and streams whose sources or destinations are files. - -#ifndef _STLP_INTERNAL_FSTREAM_H -#define _STLP_INTERNAL_FSTREAM_H - -#if defined(__sgi) && !defined(__GNUC__) && !defined(_STANDARD_C_PLUS_PLUS) -# error This header file requires the -LANG:std option -#endif - -#ifndef _STLP_INTERNAL_STREAMBUF -# include -#endif - -#ifndef _STLP_INTERNAL_ISTREAM -# include -#endif - -#ifndef _STLP_INTERNAL_CODECVT_H -# include -#endif - -#if defined (_STLP_USE_WIN32_IO) -typedef void* _STLP_fd; -#elif defined (_STLP_USE_UNIX_EMULATION_IO) || defined (_STLP_USE_STDIO_IO) || defined (_STLP_USE_UNIX_IO) -typedef int _STLP_fd; -#else -# error "Configure i/o !" -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// Class _Filebuf_base, a private base class to factor out the system- -// dependent code from basic_filebuf<>. - -class _STLP_CLASS_DECLSPEC _Filebuf_base { -public: // Opening and closing files. - _Filebuf_base(); - - bool _M_open(const char*, ios_base::openmode, long __protection); - bool _M_open(const char*, ios_base::openmode); - bool _M_open(int __id, ios_base::openmode = ios_base::__default_mode); -#if defined (_STLP_USE_WIN32_IO) - bool _M_open(_STLP_fd __id, ios_base::openmode = ios_base::__default_mode); -#endif /* _STLP_USE_WIN32_IO */ - bool _M_close(); - -public: // Low-level I/O, like Unix read/write - ptrdiff_t _M_read(char* __buf, ptrdiff_t __n); - streamoff _M_seek(streamoff __offset, ios_base::seekdir __dir); - streamoff _M_file_size(); - bool _M_write(char* __buf, ptrdiff_t __n); - -public: // Memory-mapped I/O. - void* _M_mmap(streamoff __offset, streamoff __len); - void _M_unmap(void* __mmap_base, streamoff __len); - -public: - // Returns a value n such that, if pos is the file pointer at the - // beginning of the range [first, last), pos + n is the file pointer at - // the end. On many operating systems n == __last - __first. - // In Unix, writing n characters always bumps the file position by n. - // In Windows text mode, however, it bumps the file position by n + m, - // where m is the number of newlines in the range. That's because an - // internal \n corresponds to an external two-character sequence. - streamoff _M_get_offset(char* __first, char* __last) { -#if defined (_STLP_UNIX) || defined (_STLP_MAC) - return __last - __first; -#else // defined (_STLP_WIN32) - return ( (_M_openmode & ios_base::binary) != 0 ) - ? (__last - __first) - : count(__first, __last, '\n') + (__last - __first); -#endif - } - - // Returns true if we're in binary mode or if we're using an OS or file - // system where there is no distinction between text and binary mode. - bool _M_in_binary_mode() const { -#if defined (_STLP_UNIX) || defined (_STLP_MAC) || defined(__BEOS__) || defined (__amigaos__) - return true; -#elif defined (_STLP_WIN32) || defined (_STLP_VM) - return (_M_openmode & ios_base::binary) != 0; -#else -# error "Port!" -#endif - } - - static void _S_initialize(); - -protected: // Static data members. - static size_t _M_page_size; - -protected: // Data members. - _STLP_fd _M_file_id; -#if defined (_STLP_USE_STDIO_IO) - // for stdio, the whole FILE* is being kept here - FILE* _M_file; -#endif - ios_base::openmode _M_openmode ; - unsigned char _M_is_open ; - unsigned char _M_should_close ; - unsigned char _M_regular_file ; - -#if defined (_STLP_USE_WIN32_IO) - _STLP_fd _M_view_id; -#endif - -public : - static size_t _STLP_CALL __page_size() { return _M_page_size; } - int __o_mode() const { return (int)_M_openmode; } - bool __is_open() const { return (_M_is_open !=0 ); } - bool __should_close() const { return (_M_should_close != 0); } - bool __regular_file() const { return (_M_regular_file != 0); } - _STLP_fd __get_fd() const { return _M_file_id; } -}; - -//---------------------------------------------------------------------- -// Class basic_filebuf<>. - -// Forward declaration of two helper classes. -template class _Noconv_input; -template class _Noconv_output; - -// There is a specialized version of underflow, for basic_filebuf, -// in fstream.cpp. -template -class _Underflow; - -template -class basic_filebuf : public basic_streambuf<_CharT, _Traits> { -public: // Types. - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - - typedef typename _Traits::state_type _State_type; - typedef basic_streambuf<_CharT, _Traits> _Base; - typedef basic_filebuf<_CharT, _Traits> _Self; - -public: // Constructors, destructor. - basic_filebuf(); - ~basic_filebuf(); - -public: // Opening and closing files. - bool is_open() const { return _M_base.__is_open(); } - - _Self* open(const char* __s, ios_base::openmode __m) { - return _M_base._M_open(__s, __m) ? this : 0; - } - -#if !defined (_STLP_NO_EXTENSIONS) - // These two version of open() and file descriptor getter are extensions. - _Self* open(const char* __s, ios_base::openmode __m, - long __protection) { - return _M_base._M_open(__s, __m, __protection) ? this : 0; - } - - _STLP_fd fd() const { return _M_base.__get_fd(); } - - _Self* open(int __id, ios_base::openmode _Init_mode = ios_base::__default_mode) { - return this->_M_open(__id, _Init_mode); - } - -# if defined (_STLP_USE_WIN32_IO) - _Self* open(_STLP_fd __id, ios_base::openmode _Init_mode = ios_base::__default_mode) { - return _M_base._M_open(__id, _Init_mode) ? this : 0; - } -# endif /* _STLP_USE_WIN32_IO */ - -#endif - - _Self* _M_open(int __id, ios_base::openmode _Init_mode = ios_base::__default_mode) { - return _M_base._M_open(__id, _Init_mode) ? this : 0; - } - - _Self* close(); - -protected: // Virtual functions from basic_streambuf. - virtual streamsize showmanyc(); - virtual int_type underflow(); - - virtual int_type pbackfail(int_type = traits_type::eof()); - virtual int_type overflow(int_type = traits_type::eof()); - - virtual basic_streambuf<_CharT, _Traits>* setbuf(char_type*, streamsize); - virtual pos_type seekoff(off_type, ios_base::seekdir, - ios_base::openmode = ios_base::in | ios_base::out); - virtual pos_type seekpos(pos_type, - ios_base::openmode = ios_base::in | ios_base::out); - - virtual int sync(); - virtual void imbue(const locale&); - -private: // Helper functions. - - // Precondition: we are currently in putback input mode. Effect: - // switches back to ordinary input mode. - void _M_exit_putback_mode() { - this->setg(_M_saved_eback, _M_saved_gptr, _M_saved_egptr); - _M_in_putback_mode = false; - } - bool _M_switch_to_input_mode(); - void _M_exit_input_mode(); - bool _M_switch_to_output_mode(); - - int_type _M_input_error(); - int_type _M_underflow_aux(); - friend class _Underflow<_CharT, _Traits>; - - int_type _M_output_error(); - bool _M_unshift(); - - bool _M_allocate_buffers(_CharT* __buf, streamsize __n); - bool _M_allocate_buffers(); - void _M_deallocate_buffers(); - - pos_type _M_seek_return(off_type __off, _State_type __state) { - if (__off != -1) { - if (_M_in_input_mode) - _M_exit_input_mode(); - _M_in_input_mode = false; - _M_in_output_mode = false; - _M_in_putback_mode = false; - _M_in_error_mode = false; - this->setg(0, 0, 0); - this->setp(0, 0); - } - - pos_type __result(__off); - __result.state(__state); - return __result; - } - - bool _M_seek_init(bool __do_unshift); - - void _M_setup_codecvt(const locale&, bool __on_imbue = true); - -private: // Data members used in all modes. - - _Filebuf_base _M_base; - -private: // Locale-related information. - - unsigned char _M_constant_width; - unsigned char _M_always_noconv; - - // private: // Mode flags. - unsigned char _M_int_buf_dynamic; // True if internal buffer is heap allocated, - // false if it was supplied by the user. - unsigned char _M_in_input_mode; - unsigned char _M_in_output_mode; - unsigned char _M_in_error_mode; - unsigned char _M_in_putback_mode; - - // Internal buffer: characters seen by the filebuf's clients. - _CharT* _M_int_buf; - _CharT* _M_int_buf_EOS; - - // External buffer: characters corresponding to the external file. - char* _M_ext_buf; - char* _M_ext_buf_EOS; - - // The range [_M_ext_buf, _M_ext_buf_converted) contains the external - // characters corresponding to the sequence in the internal buffer. The - // range [_M_ext_buf_converted, _M_ext_buf_end) contains characters that - // have been read into the external buffer but have not been converted - // to an internal sequence. - char* _M_ext_buf_converted; - char* _M_ext_buf_end; - - // State corresponding to beginning of internal buffer. - _State_type _M_state; - -private: // Data members used only in input mode. - - // Similar to _M_state except that it corresponds to - // the end of the internal buffer instead of the beginning. - _State_type _M_end_state; - - // This is a null pointer unless we are in mmap input mode. - void* _M_mmap_base; - streamoff _M_mmap_len; - -private: // Data members used only in putback mode. - _CharT* _M_saved_eback; - _CharT* _M_saved_gptr; - _CharT* _M_saved_egptr; - - typedef codecvt<_CharT, char, _State_type> _Codecvt; - const _Codecvt* _M_codecvt; - - int _M_width; // Width of the encoding (if constant), else 1 - int _M_max_width; // Largest possible width of single character. - - - enum { _S_pback_buf_size = 8 }; - _CharT _M_pback_buf[_S_pback_buf_size]; - - // for _Noconv_output -public: - bool _M_write(char* __buf, ptrdiff_t __n) {return _M_base._M_write(__buf, __n); } - -public: - int_type - _M_do_noconv_input() { - _M_ext_buf_converted = _M_ext_buf_end; - /* this-> */ _Base::setg((char_type*)_M_ext_buf, (char_type*)_M_ext_buf, (char_type*)_M_ext_buf_end); - return traits_type::to_int_type(*_M_ext_buf); - } -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_filebuf >; -# if ! defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_filebuf >; -# endif -#endif /* _STLP_USE_TEMPLATE_EXPORT */ - -// -// This class had to be designed very carefully to work -// with Visual C++. -// -template -class _Noconv_output { -public: - typedef typename _Traits::char_type char_type; - static bool _STLP_CALL _M_doit(basic_filebuf*, - char_type*, char_type*) - { return false; } -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC _Noconv_output< char_traits > { -public: - static bool _STLP_CALL - _M_doit(basic_filebuf >* __buf, - char* __first, char* __last) { - ptrdiff_t __n = __last - __first; - return (__buf->_M_write(__first, __n)); - } -}; - -//---------------------------------------------------------------------- -// basic_filebuf<> helper functions. - - -//---------------------------------------- -// Helper functions for switching between modes. - -// -// This class had to be designed very carefully to work -// with Visual C++. -// -template -class _Noconv_input { -public: - typedef typename _Traits::int_type int_type; - typedef typename _Traits::char_type char_type; - - static inline int_type _STLP_CALL - _M_doit(basic_filebuf*) - { return _Traits::eof(); } -}; - -_STLP_TEMPLATE_NULL -class _Noconv_input > { -public: - static inline int _STLP_CALL - _M_doit(basic_filebuf >* __buf) { - return __buf->_M_do_noconv_input(); - } -}; - -// underflow() may be called for one of two reasons. (1) We've -// been going through the special putback buffer, and we need to move back -// to the regular internal buffer. (2) We've exhausted the internal buffer, -// and we need to replentish it. -template -class _Underflow { -public: - typedef typename _Traits::int_type int_type; - typedef _Traits traits_type; - - // There is a specialized version of underflow, for basic_filebuf, - // in fstream.cpp. - static int_type _STLP_CALL _M_doit(basic_filebuf<_CharT, _Traits>* __this) { - if (!__this->_M_in_input_mode) { - if (!__this->_M_switch_to_input_mode()) - return traits_type::eof(); - } - else if (__this->_M_in_putback_mode) { - __this->_M_exit_putback_mode(); - if (__this->gptr() != __this->egptr()) { - int_type __c = traits_type::to_int_type(*__this->gptr()); - return __c; - } - } - - return __this->_M_underflow_aux(); - } -}; - -// Specialization of underflow: if the character type is char, maybe -// we can use mmap instead of read. -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC _Underflow< char, char_traits > -{ - public: - typedef char_traits::int_type int_type; - typedef char_traits traits_type; - static int_type _STLP_CALL _M_doit(basic_filebuf* __this); -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS _Underflow >; -#endif - -//---------------------------------------------------------------------- -// Class basic_ifstream<> - -template -class basic_ifstream : public basic_istream<_CharT, _Traits> { -public: // Types - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - - typedef basic_ios<_CharT, _Traits> _Basic_ios; - typedef basic_istream<_CharT, _Traits> _Base; - typedef basic_filebuf<_CharT, _Traits> _Buf; - -public: // Constructors, destructor. - - basic_ifstream() : - basic_ios<_CharT, _Traits>(), basic_istream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - } - - explicit basic_ifstream(const char* __s, ios_base::openmode __mod = ios_base::in) : - basic_ios<_CharT, _Traits>(), basic_istream<_CharT, _Traits>(0), - _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__s, __mod | ios_base::in)) - this->setstate(ios_base::failbit); - } - -#if !defined (_STLP_NO_EXTENSIONS) - explicit basic_ifstream(int __id, ios_base::openmode __mod = ios_base::in) : - basic_ios<_CharT, _Traits>(), basic_istream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__id, __mod | ios_base::in)) - this->setstate(ios_base::failbit); - } - basic_ifstream(const char* __s, ios_base::openmode __m, - long __protection) : - basic_ios<_CharT, _Traits>(), basic_istream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__s, __m | ios_base::in, __protection)) - this->setstate(ios_base::failbit); - } - -# if defined (_STLP_USE_WIN32_IO) - explicit basic_ifstream(_STLP_fd __id, ios_base::openmode __mod = ios_base::in) : - basic_ios<_CharT, _Traits>(), basic_istream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__id, __mod | ios_base::in)) - this->setstate(ios_base::failbit); - } -# endif /* _STLP_USE_WIN32_IO */ -#endif - - ~basic_ifstream() {} - -public: // File and buffer operations. - basic_filebuf<_CharT, _Traits>* rdbuf() const - { return __CONST_CAST(_Buf*,&_M_buf); } - - bool is_open() { - return this->rdbuf()->is_open(); - } - - void open(const char* __s, ios_base::openmode __mod = ios_base::in) { - if (!this->rdbuf()->open(__s, __mod | ios_base::in)) - this->setstate(ios_base::failbit); - } - - void close() { - if (!this->rdbuf()->close()) - this->setstate(ios_base::failbit); - } - -private: - basic_filebuf<_CharT, _Traits> _M_buf; -}; - - -//---------------------------------------------------------------------- -// Class basic_ofstream<> - -template -class basic_ofstream : public basic_ostream<_CharT, _Traits> { -public: // Types - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - - typedef basic_ios<_CharT, _Traits> _Basic_ios; - typedef basic_ostream<_CharT, _Traits> _Base; - typedef basic_filebuf<_CharT, _Traits> _Buf; - -public: // Constructors, destructor. - basic_ofstream() : - basic_ios<_CharT, _Traits>(), - basic_ostream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - } - explicit basic_ofstream(const char* __s, ios_base::openmode __mod = ios_base::out) - : basic_ios<_CharT, _Traits>(), basic_ostream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__s, __mod | ios_base::out)) - this->setstate(ios_base::failbit); - } - -#if !defined (_STLP_NO_EXTENSIONS) - explicit basic_ofstream(int __id, ios_base::openmode __mod = ios_base::out) - : basic_ios<_CharT, _Traits>(), basic_ostream<_CharT, _Traits>(0), - _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__id, __mod | ios_base::out)) - this->setstate(ios_base::failbit); - } - basic_ofstream(const char* __s, ios_base::openmode __m, long __protection) : - basic_ios<_CharT, _Traits>(), basic_ostream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__s, __m | ios_base::out, __protection)) - this->setstate(ios_base::failbit); - } -# if defined (_STLP_USE_WIN32_IO) - explicit basic_ofstream(_STLP_fd __id, ios_base::openmode __mod = ios_base::out) - : basic_ios<_CharT, _Traits>(), basic_ostream<_CharT, _Traits>(0), - _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__id, __mod | ios_base::out)) - this->setstate(ios_base::failbit); - } -# endif /* _STLP_USE_WIN32_IO */ -#endif - - ~basic_ofstream() {} - -public: // File and buffer operations. - basic_filebuf<_CharT, _Traits>* rdbuf() const - { return __CONST_CAST(_Buf*,&_M_buf); } - - bool is_open() { - return this->rdbuf()->is_open(); - } - - void open(const char* __s, ios_base::openmode __mod= ios_base::out) { - if (!this->rdbuf()->open(__s, __mod | ios_base::out)) - this->setstate(ios_base::failbit); - } - - void close() { - if (!this->rdbuf()->close()) - this->setstate(ios_base::failbit); - } - -private: - basic_filebuf<_CharT, _Traits> _M_buf; -}; - - -//---------------------------------------------------------------------- -// Class basic_fstream<> - -template -class basic_fstream : public basic_iostream<_CharT, _Traits> { -public: // Types - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - - typedef basic_ios<_CharT, _Traits> _Basic_ios; - typedef basic_iostream<_CharT, _Traits> _Base; - typedef basic_filebuf<_CharT, _Traits> _Buf; - -public: // Constructors, destructor. - - basic_fstream() - : basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - } - - explicit basic_fstream(const char* __s, - ios_base::openmode __mod = ios_base::in | ios_base::out) : - basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__s, __mod)) - this->setstate(ios_base::failbit); - } - -#if !defined (_STLP_NO_EXTENSIONS) - explicit basic_fstream(int __id, - ios_base::openmode __mod = ios_base::in | ios_base::out) : - basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__id, __mod)) - this->setstate(ios_base::failbit); - } - basic_fstream(const char* __s, ios_base::openmode __m, long __protection) : - basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__s, __m, __protection)) - this->setstate(ios_base::failbit); - } -# if defined (_STLP_USE_WIN32_IO) - explicit basic_fstream(_STLP_fd __id, - ios_base::openmode __mod = ios_base::in | ios_base::out) : - basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() { - this->init(&_M_buf); - if (!_M_buf.open(__id, __mod)) - this->setstate(ios_base::failbit); - } -# endif /* _STLP_USE_WIN32_IO */ -#endif - ~basic_fstream() {} - -public: // File and buffer operations. - - basic_filebuf<_CharT, _Traits>* rdbuf() const - { return __CONST_CAST(_Buf*,&_M_buf); } - - bool is_open() { - return this->rdbuf()->is_open(); - } - - void open(const char* __s, - ios_base::openmode __mod = - ios_base::in | ios_base::out) { - if (!this->rdbuf()->open(__s, __mod)) - this->setstate(ios_base::failbit); - } - - void close() { - if (!this->rdbuf()->close()) - this->setstate(ios_base::failbit); - } - -private: - basic_filebuf<_CharT, _Traits> _M_buf; - -#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) - typedef basic_fstream<_CharT, _Traits> _Self; - //explicitely defined as private to avoid warnings: - basic_fstream(_Self const&); - _Self& operator = (_Self const&); -#endif -}; - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_ifstream >; -_STLP_EXPORT_TEMPLATE_CLASS basic_ofstream >; -_STLP_EXPORT_TEMPLATE_CLASS basic_fstream >; -# if ! defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_ifstream >; -_STLP_EXPORT_TEMPLATE_CLASS basic_ofstream >; -_STLP_EXPORT_TEMPLATE_CLASS basic_fstream >; -# endif -#endif /* _STLP_USE_TEMPLATE_EXPORT */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_FSTREAM */ - - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_function.h b/build/stlport/stlport/stl/_function.h deleted file mode 100644 index bf4ad3ee4bd5..000000000000 --- a/build/stlport/stlport/stl/_function.h +++ /dev/null @@ -1,433 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_FUNCTION_H -#define _STLP_INTERNAL_FUNCTION_H - -#ifndef _STLP_TYPE_TRAITS_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -struct not_equal_to : public binary_function<_Tp, _Tp, bool> { - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; } -}; - -template -struct greater : public binary_function<_Tp, _Tp, bool> { - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; } -}; - -template -struct greater_equal : public binary_function<_Tp, _Tp, bool> { - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; } -}; - -template -struct less_equal : public binary_function<_Tp, _Tp, bool> { - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x <= __y; } -}; - -template -struct divides : public binary_function<_Tp, _Tp, _Tp> { - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x / __y; } -}; - -template -struct modulus : public binary_function<_Tp, _Tp, _Tp> { - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; } -}; - -template -struct negate : public unary_function<_Tp, _Tp> { - _Tp operator()(const _Tp& __x) const { return -__x; } -}; - -template -struct logical_and : public binary_function<_Tp, _Tp, bool> { - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; } -}; - -template -struct logical_or : public binary_function<_Tp, _Tp,bool> { - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; } -}; - -template -struct logical_not : public unary_function<_Tp, bool> { - bool operator()(const _Tp& __x) const { return !__x; } -}; - -#if !defined (_STLP_NO_EXTENSIONS) -// identity_element (not part of the C++ standard). -template inline _Tp identity_element(plus<_Tp>) { return _Tp(0); } -template inline _Tp identity_element(multiplies<_Tp>) { return _Tp(1); } -#endif - -#if defined (_STLP_BASE_TYPEDEF_BUG) -// this workaround is needed for SunPro 4.0.1 -// suggested by "Martin Abernethy" : - -// We have to introduce the XXary_predicate_aux structures in order to -// access the argument and return types of predicate functions supplied -// as type parameters. SUN C++ 4.0.1 compiler gives errors for template type parameters -// of the form 'name1::name2', where name1 is itself a type parameter. -template -struct __pair_aux : private _Pair { - typedef typename _Pair::first_type first_type; - typedef typename _Pair::second_type second_type; -}; - -template -struct __unary_fun_aux : private _Operation { - typedef typename _Operation::argument_type argument_type; - typedef typename _Operation::result_type result_type; -}; - -template -struct __binary_fun_aux : private _Operation { - typedef typename _Operation::first_argument_type first_argument_type; - typedef typename _Operation::second_argument_type second_argument_type; - typedef typename _Operation::result_type result_type; -}; - -# define __UNARY_ARG(__Operation,__type) __unary_fun_aux<__Operation>::__type -# define __BINARY_ARG(__Operation,__type) __binary_fun_aux<__Operation>::__type -# define __PAIR_ARG(__Pair,__type) __pair_aux<__Pair>::__type -#else -# define __UNARY_ARG(__Operation,__type) __Operation::__type -# define __BINARY_ARG(__Operation,__type) __Operation::__type -# define __PAIR_ARG(__Pair,__type) __Pair::__type -#endif - -template -class unary_negate - : public unary_function { - typedef unary_function _Base; -public: - typedef typename _Base::argument_type argument_type; -private: - typedef typename __call_traits::const_param_type _ArgParamType; -protected: - _Predicate _M_pred; -public: - explicit unary_negate(const _Predicate& __x) : _M_pred(__x) {} - bool operator()(_ArgParamType __x) const { - return !_M_pred(__x); - } -}; - -template -inline unary_negate<_Predicate> -not1(const _Predicate& __pred) { - return unary_negate<_Predicate>(__pred); -} - -template -class binary_negate - : public binary_function { - typedef binary_function _Base; -public: - typedef typename _Base::first_argument_type first_argument_type; - typedef typename _Base::second_argument_type second_argument_type; -private: - typedef typename __call_traits::const_param_type _FstArgParamType; - typedef typename __call_traits::const_param_type _SndArgParamType; -protected: - _Predicate _M_pred; -public: - explicit binary_negate(const _Predicate& __x) : _M_pred(__x) {} - bool operator()(_FstArgParamType __x, _SndArgParamType __y) const { - return !_M_pred(__x, __y); - } -}; - -template -inline binary_negate<_Predicate> -not2(const _Predicate& __pred) { - return binary_negate<_Predicate>(__pred); -} - -template -class binder1st : - public unary_function { - typedef unary_function _Base; -public: - typedef typename _Base::argument_type argument_type; - typedef typename _Base::result_type result_type; -private: - typedef typename __call_traits::param_type _ArgParamType; - typedef typename __call_traits::const_param_type _ConstArgParamType; - typedef typename __call_traits::const_param_type _ValueParamType; -protected: - //op is a Standard name (20.3.6.1), do no make it STLport naming convention compliant. - _Operation op; - typename _Operation::first_argument_type _M_value; -public: - binder1st(const _Operation& __x, _ValueParamType __y) - : op(__x), _M_value(__y) {} - - result_type operator()(_ConstArgParamType __x) const - { return op(_M_value, __x); } - // DR 109 Missing binders for non-const sequence elements - result_type operator()(_ArgParamType __x) const - { return op(_M_value, __x); } -}; - -template -inline binder1st<_Operation> -bind1st(const _Operation& __fn, const _Tp& __x) { - typedef typename _Operation::first_argument_type _Arg1_type; - return binder1st<_Operation>(__fn, _Arg1_type(__x)); -} - -template -class binder2nd - : public unary_function { - typedef unary_function _Base; -public: - typedef typename _Base::argument_type argument_type; - typedef typename _Base::result_type result_type; -private: - typedef typename __call_traits::param_type _ArgParamType; - typedef typename __call_traits::const_param_type _ConstArgParamType; - typedef typename __call_traits::const_param_type _ValueParamType; -protected: - //op is a Standard name (20.3.6.3), do no make it STLport naming convention compliant. - _Operation op; - typename _Operation::second_argument_type value; -public: - binder2nd(const _Operation& __x, _ValueParamType __y) - : op(__x), value(__y) {} - - result_type operator()(_ConstArgParamType __x) const - { return op(__x, value); } - // DR 109 Missing binders for non-const sequence elements - result_type operator()(_ArgParamType __x) const - { return op(__x, value); } -}; - -template -inline binder2nd<_Operation> -bind2nd(const _Operation& __fn, const _Tp& __x) { - typedef typename _Operation::second_argument_type _Arg2_type; - return binder2nd<_Operation>(__fn, _Arg2_type(__x)); -} - -#if !defined (_STLP_NO_EXTENSIONS) -// unary_compose and binary_compose (extensions, not part of the standard). - -template -class unary_compose : - public unary_function { - typedef unary_function _Base; -public: - typedef typename _Base::argument_type argument_type; - typedef typename _Base::result_type result_type; -private: - typedef typename __call_traits::const_param_type _ArgParamType; -protected: - _Operation1 _M_fn1; - _Operation2 _M_fn2; -public: - unary_compose(const _Operation1& __x, const _Operation2& __y) - : _M_fn1(__x), _M_fn2(__y) {} - - result_type operator()(_ArgParamType __x) const { - return _M_fn1(_M_fn2(__x)); - } -}; - -template -inline unary_compose<_Operation1,_Operation2> -compose1(const _Operation1& __fn1, const _Operation2& __fn2) { - return unary_compose<_Operation1,_Operation2>(__fn1, __fn2); -} - -template -class binary_compose : - public unary_function { - typedef unary_function _Base; -public: - typedef typename _Base::argument_type argument_type; - typedef typename _Base::result_type result_type; -private: - typedef typename __call_traits::const_param_type _ArgParamType; -protected: - _Operation1 _M_fn1; - _Operation2 _M_fn2; - _Operation3 _M_fn3; -public: - binary_compose(const _Operation1& __x, const _Operation2& __y, - const _Operation3& __z) - : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { } - - result_type operator()(_ArgParamType __x) const { - return _M_fn1(_M_fn2(__x), _M_fn3(__x)); - } -}; - -template -inline binary_compose<_Operation1, _Operation2, _Operation3> -compose2(const _Operation1& __fn1, const _Operation2& __fn2, - const _Operation3& __fn3) { - return binary_compose<_Operation1,_Operation2,_Operation3>(__fn1, __fn2, __fn3); -} - -// identity is an extension: it is not part of the standard. -template struct identity : public _STLP_PRIV _Identity<_Tp> {}; -// select1st and select2nd are extensions: they are not part of the standard. -template struct select1st : public _STLP_PRIV _Select1st<_Pair> {}; -template struct select2nd : public _STLP_PRIV _Select2nd<_Pair> {}; - -template -struct project1st : public _STLP_PRIV _Project1st<_Arg1, _Arg2> {}; - -template -struct project2nd : public _STLP_PRIV _Project2nd<_Arg1, _Arg2> {}; - - -// constant_void_fun, constant_unary_fun, and constant_binary_fun are -// extensions: they are not part of the standard. (The same, of course, -// is true of the helper functions constant0, constant1, and constant2.) - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _Constant_void_fun { - typedef _Result result_type; - result_type _M_val; - - _Constant_void_fun(const result_type& __v) : _M_val(__v) {} - const result_type& operator()() const { return _M_val; } -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -template -struct constant_void_fun : public _STLP_PRIV _Constant_void_fun<_Result> { - constant_void_fun(const _Result& __v) - : _STLP_PRIV _Constant_void_fun<_Result>(__v) {} -}; - -template -struct constant_unary_fun : public _STLP_PRIV _Constant_unary_fun<_Result, _Argument> { - constant_unary_fun(const _Result& __v) - : _STLP_PRIV _Constant_unary_fun<_Result, _Argument>(__v) {} -}; - -template -struct constant_binary_fun - : public _STLP_PRIV _Constant_binary_fun<_Result, _Arg1, _Arg2> { - constant_binary_fun(const _Result& __v) - : _STLP_PRIV _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {} -}; - -template -inline constant_void_fun<_Result> constant0(const _Result& __val) { - return constant_void_fun<_Result>(__val); -} - -template -inline constant_unary_fun<_Result,_Result> constant1(const _Result& __val) { - return constant_unary_fun<_Result,_Result>(__val); -} - -template -inline constant_binary_fun<_Result,_Result,_Result> -constant2(const _Result& __val) { - return constant_binary_fun<_Result,_Result,_Result>(__val); -} - -// subtractive_rng is an extension: it is not part of the standard. -// Note: this code assumes that int is 32 bits. -class subtractive_rng : public unary_function<_STLP_UINT32_T, _STLP_UINT32_T> { -private: - _STLP_UINT32_T _M_table[55]; - _STLP_UINT32_T _M_index1; - _STLP_UINT32_T _M_index2; -public: - _STLP_UINT32_T operator()(_STLP_UINT32_T __limit) { - _M_index1 = (_M_index1 + 1) % 55; - _M_index2 = (_M_index2 + 1) % 55; - _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2]; - return _M_table[_M_index1] % __limit; - } - - void _M_initialize(_STLP_UINT32_T __seed) { - _STLP_UINT32_T __k = 1; - _M_table[54] = __seed; - _STLP_UINT32_T __i; - for (__i = 0; __i < 54; __i++) { - _STLP_UINT32_T __ii = (21 * (__i + 1) % 55) - 1; - _M_table[__ii] = __k; - __k = __seed - __k; - __seed = _M_table[__ii]; - } - for (int __loop = 0; __loop < 4; __loop++) { - for (__i = 0; __i < 55; __i++) - _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55]; - } - _M_index1 = 0; - _M_index2 = 31; - } - - subtractive_rng(unsigned int __seed) { _M_initialize(__seed); } - subtractive_rng() { _M_initialize(161803398ul); } -}; - -#endif /* _STLP_NO_EXTENSIONS */ - -_STLP_END_NAMESPACE - -#include - -#endif /* _STLP_INTERNAL_FUNCTION_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_function_adaptors.h b/build/stlport/stlport/stl/_function_adaptors.h deleted file mode 100644 index 0da419b9ad24..000000000000 --- a/build/stlport/stlport/stl/_function_adaptors.h +++ /dev/null @@ -1,783 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * Copyright (c) 2000 - * Pavel Kuznetsov - * - * Copyright (c) 2001 - * Meridian'93 - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -// This file has noo macro protection as it is meant to be included several times -// from other header. -// Adaptor function objects: pointers to member functions. - -// There are a total of 16 = 2^4 function objects in this family. -// (1) Member functions taking no arguments vs member functions taking -// one argument. -// (2) Call through pointer vs call through reference. -// (3) Member function with void return type vs member function with -// non-void return type. -// (4) Const vs non-const member function. - -// Note that choice (3) is nothing more than a workaround: according -// to the draft, compilers should handle void and non-void the same way. -// This feature is not yet widely implemented, though. You can only use -// member functions returning void if your compiler supports partial -// specialization. - -// All of this complexity is in the function objects themselves. You can -// ignore it by using the helper function mem_fun and mem_fun_ref, -// which create whichever type of adaptor is appropriate. - -_STLP_BEGIN_NAMESPACE - -//This implementation will only be used if needed, that is to say when there is the return void bug -//and when there is no partial template specialization -#if defined (_STLP_DONT_RETURN_VOID) && defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined (_STLP_MEMBER_TEMPLATE_CLASSES) - -template -class _Mem_fun0_ptr : public unary_function<_Tp*, _Result> { -protected: - typedef _Result (_Tp::*__fun_type) (); - explicit _Mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator ()(_Tp* __p) const { return (__p->*_M_f)(); } - -private: - __fun_type _M_f; -}; - -template -class _Mem_fun1_ptr : public binary_function<_Tp*,_Arg,_Result> { -protected: - typedef _Result (_Tp::*__fun_type) (_Arg); - explicit _Mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator ()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); } - -private: - __fun_type _M_f; -}; - -template -class _Const_mem_fun0_ptr : public unary_function { -protected: - typedef _Result (_Tp::*__fun_type) () const; - explicit _Const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator ()(const _Tp* __p) const { return (__p->*_M_f)(); } - -private: - __fun_type _M_f; -}; - -template -class _Const_mem_fun1_ptr : public binary_function { -protected: - typedef _Result (_Tp::*__fun_type) (_Arg) const; - explicit _Const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator ()(const _Tp* __p, _Arg __x) const { - return (__p->*_M_f)(__x); } - -private: - __fun_type _M_f; -}; - -template -class _Mem_fun0_ref : public unary_function<_Tp,_Result> { -protected: - typedef _Result (_Tp::*__fun_type) (); - explicit _Mem_fun0_ref(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator ()(_Tp& __p) const { return (__p.*_M_f)(); } - -private: - __fun_type _M_f; -}; - -template -class _Mem_fun1_ref : public binary_function<_Tp,_Arg,_Result> { -protected: - typedef _Result (_Tp::*__fun_type) (_Arg); - explicit _Mem_fun1_ref(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator ()(_Tp& __p, _Arg __x) const { return (__p.*_M_f)(__x); } - -private: - __fun_type _M_f; -}; - -template -class _Const_mem_fun0_ref : public unary_function<_Tp,_Result> { -protected: - typedef _Result (_Tp::*__fun_type) () const; - explicit _Const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator ()(const _Tp& __p) const { return (__p.*_M_f)(); } - -private: - __fun_type _M_f; -}; - -template -class _Const_mem_fun1_ref : public binary_function<_Tp,_Arg,_Result> { -protected: - typedef _Result (_Tp::*__fun_type) (_Arg) const; - explicit _Const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator ()(const _Tp& __p, _Arg __x) const { return (__p.*_M_f)(__x); } - -private: - __fun_type _M_f; -}; - -template -struct _Mem_fun_traits { - template - struct _Args0 { - typedef _Mem_fun0_ptr<_Result,_Tp> _Ptr; - typedef _Const_mem_fun0_ptr<_Result,_Tp> _Ptr_const; - typedef _Mem_fun0_ref<_Result,_Tp> _Ref; - typedef _Const_mem_fun0_ref<_Result,_Tp> _Ref_const; - }; - - template - struct _Args1 { - typedef _Mem_fun1_ptr<_Result,_Tp,_Arg> _Ptr; - typedef _Const_mem_fun1_ptr<_Result,_Tp,_Arg> _Ptr_const; - typedef _Mem_fun1_ref<_Result,_Tp,_Arg> _Ref; - typedef _Const_mem_fun1_ref<_Result,_Tp,_Arg> _Ref_const; - }; -}; - -template -class _Ptr_fun1_base : public unary_function<_Arg, _Result> { -protected: - typedef _Result (*__fun_type) (_Arg); - explicit _Ptr_fun1_base(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator()(_Arg __x) const { return _M_f(__x); } - -private: - __fun_type _M_f; -}; - -template -class _Ptr_fun2_base : public binary_function<_Arg1,_Arg2,_Result> { -protected: - typedef _Result (*__fun_type) (_Arg1, _Arg2); - explicit _Ptr_fun2_base(__fun_type __f) : _M_f(__f) {} - -public: - _Result operator()(_Arg1 __x, _Arg2 __y) const { return _M_f(__x, __y); } - -private: - __fun_type _M_f; -}; - -template -struct _Ptr_fun_traits { - template struct _Args1 { - typedef _Ptr_fun1_base<_Arg,_Result> _Fun; - }; - - template struct _Args2 { - typedef _Ptr_fun2_base<_Arg1,_Arg2,_Result> _Fun; - }; -}; - -/* Specializations for void return type */ -template -class _Void_mem_fun0_ptr : public unary_function<_Tp*,void> { -protected: - typedef void (_Tp::*__fun_type) (); - explicit _Void_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} - -public: - void operator ()(_Tp* __p) const { (__p->*_M_f)(); } - -private: - __fun_type _M_f; -}; - -template -class _Void_mem_fun1_ptr : public binary_function<_Tp*,_Arg,void> { -protected: - typedef void (_Tp::*__fun_type) (_Arg); - explicit _Void_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} - -public: - void operator ()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } - -private: - __fun_type _M_f; -}; - -template -class _Void_const_mem_fun0_ptr : public unary_function { -protected: - typedef void (_Tp::*__fun_type) () const; - explicit _Void_const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {} - -public: - void operator ()(const _Tp* __p) const { (__p->*_M_f)(); } - -private: - __fun_type _M_f; -}; - -template -class _Void_const_mem_fun1_ptr : public binary_function { -protected: - typedef void (_Tp::*__fun_type) (_Arg) const; - explicit _Void_const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {} - -public: - void operator ()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } - -private: - __fun_type _M_f; -}; - -template -class _Void_mem_fun0_ref : public unary_function<_Tp,void> { -protected: - typedef void (_Tp::*__fun_type) (); - explicit _Void_mem_fun0_ref(__fun_type __f) : _M_f(__f) {} - -public: - void operator ()(_Tp& __p) const { (__p.*_M_f)(); } - -private: - __fun_type _M_f; -}; - -template -class _Void_mem_fun1_ref : public binary_function<_Tp,_Arg,void> { -protected: - typedef void (_Tp::*__fun_type) (_Arg); - explicit _Void_mem_fun1_ref(__fun_type __f) : _M_f(__f) {} - -public: - void operator ()(_Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); } - -private: - __fun_type _M_f; -}; - -template -class _Void_const_mem_fun0_ref : public unary_function<_Tp,void> { -protected: - typedef void (_Tp::*__fun_type) () const; - explicit _Void_const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {} - -public: - void operator ()(const _Tp& __p) const { (__p.*_M_f)(); } - -private: - __fun_type _M_f; -}; - -template -class _Void_const_mem_fun1_ref : public binary_function<_Tp,_Arg,void> { -protected: - typedef void (_Tp::*__fun_type) (_Arg) const; - explicit _Void_const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {} - -public: - void operator ()(const _Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); } - -private: - __fun_type _M_f; -}; - -_STLP_TEMPLATE_NULL -struct _Mem_fun_traits { - template struct _Args0 { - typedef _Void_mem_fun0_ptr<_Tp> _Ptr; - typedef _Void_const_mem_fun0_ptr<_Tp> _Ptr_const; - typedef _Void_mem_fun0_ref<_Tp> _Ref; - typedef _Void_const_mem_fun0_ref<_Tp> _Ref_const; - }; - - template struct _Args1 { - typedef _Void_mem_fun1_ptr<_Tp,_Arg> _Ptr; - typedef _Void_const_mem_fun1_ptr<_Tp,_Arg> _Ptr_const; - typedef _Void_mem_fun1_ref<_Tp,_Arg> _Ref; - typedef _Void_const_mem_fun1_ref<_Tp,_Arg> _Ref_const; - }; -}; - -template -class _Ptr_void_fun1_base : public unary_function<_Arg, void> { -protected: - typedef void (*__fun_type) (_Arg); - explicit _Ptr_void_fun1_base(__fun_type __f) : _M_f(__f) {} - -public: - void operator()(_Arg __x) const { _M_f(__x); } - -private: - __fun_type _M_f; -}; - -template -class _Ptr_void_fun2_base : public binary_function<_Arg1,_Arg2,void> { -protected: - typedef void (*__fun_type) (_Arg1, _Arg2); - explicit _Ptr_void_fun2_base(__fun_type __f) : _M_f(__f) {} - -public: - void operator()(_Arg1 __x, _Arg2 __y) const { _M_f(__x, __y); } - -private: - __fun_type _M_f; -}; - -_STLP_TEMPLATE_NULL -struct _Ptr_fun_traits { - template struct _Args1 { - typedef _Ptr_void_fun1_base<_Arg> _Fun; - }; - - template struct _Args2 { - typedef _Ptr_void_fun2_base<_Arg1,_Arg2> _Fun; - }; -}; - -// pavel: need extra level of inheritance here since MSVC++ does not -// accept traits-based fake partial specialization for template -// arguments other than first - -template -class _Ptr_fun1 : - public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun { -protected: - typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun _Base; - explicit _Ptr_fun1(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class _Ptr_fun2 : - public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun { -protected: - typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun _Base; - explicit _Ptr_fun2(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class mem_fun_t : - public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr { - typedef typename - _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr _Base; -public: - explicit mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class const_mem_fun_t : - public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const { - typedef typename - _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const _Base; -public: - explicit const_mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class mem_fun_ref_t : - public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref { - typedef typename - _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref _Base; -public: - explicit mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class const_mem_fun_ref_t : - public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const { - typedef typename - _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const _Base; -public: - explicit const_mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class mem_fun1_t : - public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr { - typedef typename - _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr _Base; -public: - explicit mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class const_mem_fun1_t : - public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const { - typedef typename - _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const _Base; -public: - explicit const_mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class mem_fun1_ref_t : - public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref { - typedef typename - _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref _Base; -public: - explicit mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class const_mem_fun1_ref_t : - public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const { - typedef typename - _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const _Base; -public: - explicit const_mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {} -}; - -template -class pointer_to_unary_function : - public _Ptr_fun1<_Result,_Arg> { - typedef typename - _Ptr_fun1<_Result,_Arg>::__fun_type __fun_type; -public: - explicit pointer_to_unary_function(__fun_type __f) - : _Ptr_fun1<_Result,_Arg>(__f) {} -}; - -template -class pointer_to_binary_function : - public _Ptr_fun2<_Result,_Arg1,_Arg2> { - typedef typename - _Ptr_fun2<_Result,_Arg1,_Arg2>::__fun_type __fun_type; -public: - explicit pointer_to_binary_function(__fun_type __f) - : _Ptr_fun2<_Result,_Arg1,_Arg2>(__f) {} -}; - -#else - -template -class mem_fun_t : public unary_function<_Tp*,_Ret> { - typedef _Ret (_Tp::*__fun_type)(void); -public: - explicit mem_fun_t(__fun_type __pf) : _M_f(__pf) {} - _Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); } -private: - __fun_type _M_f; -}; - -template -class const_mem_fun_t : public unary_function { - typedef _Ret (_Tp::*__fun_type)(void) const; -public: - explicit const_mem_fun_t(__fun_type __pf) : _M_f(__pf) {} - _Ret operator()(const _Tp* __p) const { return (__p->*_M_f)(); } -private: - __fun_type _M_f; -}; - -template -class mem_fun_ref_t : public unary_function<_Tp,_Ret> { - typedef _Ret (_Tp::*__fun_type)(void); -public: - explicit mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {} - _Ret operator()(_Tp& __r) const { return (__r.*_M_f)(); } -private: - __fun_type _M_f; -}; - -template -class const_mem_fun_ref_t : public unary_function<_Tp,_Ret> { - typedef _Ret (_Tp::*__fun_type)(void) const; -public: - explicit const_mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {} - _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); } -private: - __fun_type _M_f; -}; - -template -class mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> { - typedef _Ret (_Tp::*__fun_type)(_Arg); -public: - explicit mem_fun1_t(__fun_type __pf) : _M_f(__pf) {} - _Ret operator()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); } -private: - __fun_type _M_f; -}; - -template -class const_mem_fun1_t : public binary_function { - typedef _Ret (_Tp::*__fun_type)(_Arg) const; -public: - explicit const_mem_fun1_t(__fun_type __pf) : _M_f(__pf) {} - _Ret operator()(const _Tp* __p, _Arg __x) const - { return (__p->*_M_f)(__x); } -private: - __fun_type _M_f; -}; - -template -class mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> { - typedef _Ret (_Tp::*__fun_type)(_Arg); -public: - explicit mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {} - _Ret operator()(_Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); } -private: - __fun_type _M_f; -}; - -template -class const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> { - typedef _Ret (_Tp::*__fun_type)(_Arg) const; -public: - explicit const_mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {} - _Ret operator()(const _Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); } -private: - __fun_type _M_f; -}; - -template -class pointer_to_unary_function : public unary_function<_Arg, _Result> { -protected: - _Result (*_M_ptr)(_Arg); -public: - pointer_to_unary_function() {} - explicit pointer_to_unary_function(_Result (*__x)(_Arg)) : _M_ptr(__x) {} - _Result operator()(_Arg __x) const { return _M_ptr(__x); } -}; - -template -class pointer_to_binary_function : - public binary_function<_Arg1,_Arg2,_Result> { -protected: - _Result (*_M_ptr)(_Arg1, _Arg2); -public: - pointer_to_binary_function() {} - explicit pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) - : _M_ptr(__x) {} - _Result operator()(_Arg1 __x, _Arg2 __y) const { - return _M_ptr(__x, __y); - } -}; - -# if defined (_STLP_DONT_RETURN_VOID) && !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) -//Partial specializations for the void type -template -class mem_fun_t : public unary_function<_Tp*,void> { - typedef void (_Tp::*__fun_type)(void); -public: - explicit mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} - void operator()(_Tp* __p) const { (__p->*_M_f)(); } -private: - __fun_type _M_f; -}; - -template -class const_mem_fun_t : public unary_function { - typedef void (_Tp::*__fun_type)(void) const; -public: - explicit const_mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} - void operator()(const _Tp* __p) const { (__p->*_M_f)(); } -private: - __fun_type _M_f; -}; - -template -class mem_fun_ref_t : public unary_function<_Tp,void> { - typedef void (_Tp::*__fun_type)(void); -public: - explicit mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} - void operator()(_Tp& __r) const { (__r.*_M_f)(); } -private: - __fun_type _M_f; -}; - -template -class const_mem_fun_ref_t : public unary_function<_Tp,void> { - typedef void (_Tp::*__fun_type)(void) const; -public: - explicit const_mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {} - void operator()(const _Tp& __r) const { (__r.*_M_f)(); } -private: - __fun_type _M_f; -}; - -template -class mem_fun1_t : public binary_function<_Tp*,_Arg,void> { - typedef void (_Tp::*__fun_type)(_Arg); -public: - explicit mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} - void operator()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } -private: - __fun_type _M_f; -}; - -template -class const_mem_fun1_t - : public binary_function { - typedef void (_Tp::*__fun_type)(_Arg) const; -public: - explicit const_mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} - void operator()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); } -private: - __fun_type _M_f; -}; - -template -class mem_fun1_ref_t - : public binary_function<_Tp,_Arg,void> { - typedef void (_Tp::*__fun_type)(_Arg); -public: - explicit mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} - void operator()(_Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); } -private: - __fun_type _M_f; -}; - -template -class const_mem_fun1_ref_t - : public binary_function<_Tp,_Arg,void> { - typedef void (_Tp::*__fun_type)(_Arg) const; -public: - explicit const_mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {} - void operator()(const _Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); } -private: - __fun_type _M_f; -}; - -template -class pointer_to_unary_function<_Arg, void> : public unary_function<_Arg, void> { - typedef void (*__fun_type)(_Arg); - __fun_type _M_ptr; -public: - pointer_to_unary_function() {} - explicit pointer_to_unary_function(__fun_type __x) : _M_ptr(__x) {} - void operator()(_Arg __x) const { _M_ptr(__x); } -}; - -template -class pointer_to_binary_function<_Arg1, _Arg2, void> : public binary_function<_Arg1,_Arg2,void> { - typedef void (*__fun_type)(_Arg1, _Arg2); - __fun_type _M_ptr; -public: - pointer_to_binary_function() {} - explicit pointer_to_binary_function(__fun_type __x) : _M_ptr(__x) {} - void operator()(_Arg1 __x, _Arg2 __y) const { _M_ptr(__x, __y); } -}; - -# endif - -#endif - -#if !defined (_STLP_MEMBER_POINTER_PARAM_BUG) -// Mem_fun adaptor helper functions. There are only two: -// mem_fun and mem_fun_ref. (mem_fun1 and mem_fun1_ref -// are provided for backward compatibility, but they are no longer -// part of the C++ standard.) - -template -inline mem_fun_t<_Result,_Tp> -mem_fun(_Result (_Tp::*__f)()) { return mem_fun_t<_Result,_Tp>(__f); } - -template -inline const_mem_fun_t<_Result,_Tp> -mem_fun(_Result (_Tp::*__f)() const) { return const_mem_fun_t<_Result,_Tp>(__f); } - -template -inline mem_fun_ref_t<_Result,_Tp> -mem_fun_ref(_Result (_Tp::*__f)()) { return mem_fun_ref_t<_Result,_Tp>(__f); } - -template -inline const_mem_fun_ref_t<_Result,_Tp> -mem_fun_ref(_Result (_Tp::*__f)() const) { return const_mem_fun_ref_t<_Result,_Tp>(__f); } - -template -inline mem_fun1_t<_Result,_Tp,_Arg> -mem_fun(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); } - -template -inline const_mem_fun1_t<_Result,_Tp,_Arg> -mem_fun(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); } - -template -inline mem_fun1_ref_t<_Result,_Tp,_Arg> -mem_fun_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } - -template -inline const_mem_fun1_ref_t<_Result,_Tp,_Arg> -mem_fun_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } - -# if !(defined (_STLP_NO_EXTENSIONS) || defined (_STLP_NO_ANACHRONISMS)) -// mem_fun1 and mem_fun1_ref are no longer part of the C++ standard, -// but they are provided for backward compatibility. -template -inline mem_fun1_t<_Result,_Tp,_Arg> -mem_fun1(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); } - -template -inline const_mem_fun1_t<_Result,_Tp,_Arg> -mem_fun1(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); } - -template -inline mem_fun1_ref_t<_Result,_Tp,_Arg> -mem_fun1_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } - -template -inline const_mem_fun1_ref_t<_Result,_Tp,_Arg> -mem_fun1_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); } - -# endif - -#endif - -template -inline pointer_to_unary_function<_Arg, _Result> -ptr_fun(_Result (*__f)(_Arg)) -{ return pointer_to_unary_function<_Arg, _Result>(__f); } - -template -inline pointer_to_binary_function<_Arg1,_Arg2,_Result> -ptr_fun(_Result (*__f)(_Arg1, _Arg2)) -{ return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f); } - -_STLP_END_NAMESPACE diff --git a/build/stlport/stlport/stl/_function_base.h b/build/stlport/stlport/stl/_function_base.h deleted file mode 100644 index 1e7f4f54842f..000000000000 --- a/build/stlport/stlport/stl/_function_base.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -#define _STLP_INTERNAL_FUNCTION_BASE_H - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_TYPE_TRAITS_H) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -struct unary_function { - typedef _Arg argument_type; - typedef _Result result_type; -#if !defined (__BORLANDC__) || (__BORLANDC__ < 0x580) -protected: - /* This class purpose is to be derived but it is not polymorphic so users should never try - * to destroy an instance of it directly. The protected non-virtual destructor make this - * fact obvious at compilation time. */ - ~unary_function() {} -#endif -}; - -template -struct binary_function { - typedef _Arg1 first_argument_type; - typedef _Arg2 second_argument_type; - typedef _Result result_type; -#if !defined (__BORLANDC__) || (__BORLANDC__ < 0x580) -protected: - /* See unary_function comment. */ - ~binary_function() {} -#endif -}; - -template -struct equal_to : public binary_function<_Tp, _Tp, bool> { - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; } -}; - -template -struct less : public binary_function<_Tp,_Tp,bool> -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -/* less is the default template parameter for many STL containers, to fully use - * the move constructor feature we need to know that the default less is just a - * functor. - */ - , public __stlport_class > -#endif -{ - bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; } - -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(less<_Tp>& __x) {} -#endif -}; - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct __type_traits > { -#if !defined (__BORLANDC__) - typedef typename _IsSTLportClass >::_Ret _STLportLess; -#else - enum { _Is = _IsSTLportClass >::_Is }; - typedef typename __bool2type<_Is>::_Ret _STLportLess; -#endif - typedef _STLportLess has_trivial_default_constructor; - typedef _STLportLess has_trivial_copy_constructor; - typedef _STLportLess has_trivial_assignment_operator; - typedef _STLportLess has_trivial_destructor; - typedef _STLportLess is_POD_type; -}; -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -less<_Tp> __less(_Tp* ) { return less<_Tp>(); } - -template -equal_to<_Tp> __equal_to(_Tp* ) { return equal_to<_Tp>(); } - -_STLP_MOVE_TO_STD_NAMESPACE - -template -struct plus : public binary_function<_Tp, _Tp, _Tp> { - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; } -}; - -template -struct minus : public binary_function<_Tp, _Tp, _Tp> { - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; } -}; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -plus<_Tp> __plus(_Tp* ) { return plus<_Tp>(); } - -template -minus<_Tp> __minus(_Tp* ) { return minus<_Tp>(); } - -_STLP_MOVE_TO_STD_NAMESPACE - -template -struct multiplies : public binary_function<_Tp, _Tp, _Tp> { - _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; } -}; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _Select1st : public unary_function<_Pair, typename _Pair::first_type> { - const typename _Pair::first_type& operator()(const _Pair& __x) const { - return __x.first; - } -}; - -template -struct _Select2nd : public unary_function<_Pair, typename _Pair::second_type> { - const typename _Pair::second_type& operator()(const _Pair& __x) const { - return __x.second; - } -}; - -// project1st and project2nd are extensions: they are not part of the standard -template -struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> { - _Arg1 operator()(const _Arg1& __x, const _Arg2&) const { return __x; } -}; - -template -struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2> { - _Arg2 operator()(const _Arg1&, const _Arg2& __y) const { return __y; } -}; - -#if defined (_STLP_MULTI_CONST_TEMPLATE_ARG_BUG) -// fbp : sort of select1st just for maps -template -// JDJ (CW Pro1 doesn't like const when first_type is also const) -struct __Select1st_hint : public unary_function<_Pair, _Whatever> { - const _Whatever& operator () (const _Pair& __x) const { return __x.first; } -}; -# define _STLP_SELECT1ST(__x,__y) _STLP_PRIV __Select1st_hint< __x, __y > -#else -# define _STLP_SELECT1ST(__x, __y) _STLP_PRIV _Select1st< __x > -#endif - -template -struct _Identity : public unary_function<_Tp,_Tp> { - const _Tp& operator()(const _Tp& __x) const { return __x; } -}; - -template -struct _Constant_unary_fun { - typedef _Argument argument_type; - typedef _Result result_type; - result_type _M_val; - - _Constant_unary_fun(const result_type& __v) : _M_val(__v) {} - const result_type& operator()(const _Argument&) const { return _M_val; } -}; - -template -struct _Constant_binary_fun { - typedef _Arg1 first_argument_type; - typedef _Arg2 second_argument_type; - typedef _Result result_type; - _Result _M_val; - - _Constant_binary_fun(const _Result& __v) : _M_val(__v) {} - const result_type& operator()(const _Arg1&, const _Arg2&) const { - return _M_val; - } -}; - -// identity_element (not part of the C++ standard). -template inline _Tp __identity_element(plus<_Tp>) { return _Tp(0); } -template inline _Tp __identity_element(multiplies<_Tp>) { return _Tp(1); } - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_FUNCTION_BASE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_hash_fun.h b/build/stlport/stlport/stl/_hash_fun.h deleted file mode 100644 index 6197d7b2e6b1..000000000000 --- a/build/stlport/stlport/stl/_hash_fun.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Hewlett-Packard Company makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_HASH_FUN_H -#define _STLP_HASH_FUN_H - -#ifndef _STLP_INTERNAL_CSTDDEF -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template struct hash { }; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -inline size_t __stl_hash_string(const char* __s) { - _STLP_FIX_LITERAL_BUG(__s) - unsigned long __h = 0; - for ( ; *__s; ++__s) - __h = 5*__h + *__s; - - return size_t(__h); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_TEMPLATE_NULL -struct hash { - size_t operator()(const char* __s) const { - _STLP_FIX_LITERAL_BUG(__s) - return _STLP_PRIV __stl_hash_string(__s); - } -}; - -_STLP_TEMPLATE_NULL -struct hash { - size_t operator()(const char* __s) const { - _STLP_FIX_LITERAL_BUG(__s) - return _STLP_PRIV __stl_hash_string(__s); - } -}; - -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(char __x) const { return __x; } -}; -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(unsigned char __x) const { return __x; } -}; -#if !defined (_STLP_NO_SIGNED_BUILTINS) -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(unsigned char __x) const { return __x; } -}; -#endif -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(short __x) const { return __x; } -}; -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(unsigned short __x) const { return __x; } -}; -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(int __x) const { return __x; } -}; - -#if !defined (_STLP_MSVC) || (_STLP_MSVC < 1300) || defined (_WIN64) -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(unsigned int __x) const { return __x; } -}; -#else -/* MSVC .Net since 2002 has a 64 bits portability warning feature. typedef - * like size_t are tagged as potential 64 bits variables making them different from - * unsigned int. To avoid the warning when a hash container is instanciated with - * the size_t key we prefer to grant the size_t specialization rather than the - * unsigned int one. - */ -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(size_t __x) const { return __x; } -}; -#endif - -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(long __x) const { return __x; } -}; -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(unsigned long __x) const { return __x; } -}; - -#if defined (_STLP_LONG_LONG) -_STLP_TEMPLATE_NULL struct hash<_STLP_LONG_LONG> { - size_t operator()(_STLP_LONG_LONG x) const { return (size_t)x; } -}; -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(unsigned _STLP_LONG_LONG x) const { return (size_t)x; } -}; -#endif - -_STLP_TEMPLATE_NULL -struct hash -{ - union __vp { - size_t s; - void *p; - }; - - size_t operator()(void *__x) const - { - __vp vp; - vp.p = __x; - return vp.s; - } -}; - -_STLP_END_NAMESPACE - -#endif /* _STLP_HASH_FUN_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_hash_map.h b/build/stlport/stlport/stl/_hash_map.h deleted file mode 100644 index cd4660315aed..000000000000 --- a/build/stlport/stlport/stl/_hash_map.h +++ /dev/null @@ -1,500 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_HASH_MAP_H -#define _STLP_INTERNAL_HASH_MAP_H - -#ifndef _STLP_INTERNAL_HASHTABLE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//Specific iterator traits creation -_STLP_CREATE_HASH_ITERATOR_TRAITS(HashMapTraitsT, traits) - -template ), - _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Key>), - _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_STLP_CONST _Key, _Tp) > -class hash_map -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ -private: - typedef hash_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> _Self; -public: - typedef _Key key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef pair<_STLP_CONST key_type, data_type> value_type; -private: - //Specific iterator traits creation - typedef _STLP_PRIV _HashMapTraitsT _HashMapTraits; - -public: - typedef hashtable _Ht; - - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher hash_funct() const { return _M_ht.hash_funct(); } - key_equal key_eq() const { return _M_ht.key_eq(); } - allocator_type get_allocator() const { return _M_ht.get_allocator(); } - -private: - _Ht _M_ht; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) -public: - hash_map() : _M_ht(0, hasher(), key_equal(), allocator_type()) {} - explicit hash_map(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - hash_map(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - hash_map(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - hash_map(__move_source<_Self> src) - : _M_ht(__move_source<_Ht>(src.get()._M_ht)) { - } -#endif - -#ifdef _STLP_MEMBER_TEMPLATES - template - hash_map(_InputIterator __f, _InputIterator __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } -# ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql) - : _M_ht(__n, __hf, __eql, allocator_type()) - { _M_ht.insert_unique(__f, __l); } -# endif - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - -#else - hash_map(const value_type* __f, const value_type* __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_map(const value_type* __f, const value_type* __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_map(const value_type* __f, const value_type* __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_map(const value_type* __f, const value_type* __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - - hash_map(const_iterator __f, const_iterator __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_map(const_iterator __f, const_iterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_map(const_iterator __f, const_iterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_map(const_iterator __f, const_iterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - -public: - size_type size() const { return _M_ht.size(); } - size_type max_size() const { return _M_ht.max_size(); } - bool empty() const { return _M_ht.empty(); } - void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - iterator begin() { return _M_ht.begin(); } - iterator end() { return _M_ht.end(); } - const_iterator begin() const { return _M_ht.begin(); } - const_iterator end() const { return _M_ht.end(); } - -public: - pair insert(const value_type& __obj) - { return _M_ht.insert_unique(__obj); } -#ifdef _STLP_MEMBER_TEMPLATES - template - void insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_unique(__f,__l); } -#else - void insert(const value_type* __f, const value_type* __l) - { _M_ht.insert_unique(__f,__l); } - void insert(const_iterator __f, const_iterator __l) - { _M_ht.insert_unique(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - pair insert_noresize(const value_type& __obj) - { return _M_ht.insert_unique_noresize(__obj); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_ht.find(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - _Tp& operator[](const _KT& __key) { - iterator __it = _M_ht.find(__key); - return (__it == _M_ht.end() ? - _M_ht._M_insert(value_type(__key, _STLP_DEFAULT_CONSTRUCTED(_Tp))).second : - (*__it).second ); - } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_ht.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) - { return _M_ht.equal_range(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const - { return _M_ht.equal_range(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type erase(const _KT& __key) {return _M_ht.erase(__key); } - void erase(iterator __it) { _M_ht.erase(__it); } - void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); } - void clear() { _M_ht.clear(); } - - void resize(size_type __hint) { _M_ht.resize(__hint); } - size_type bucket_count() const { return _M_ht.bucket_count(); } - size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } - size_type elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } -}; - -//Specific iterator traits creation -_STLP_CREATE_HASH_ITERATOR_TRAITS(HashMultimapTraitsT, traits) - -template ), - _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Key>), - _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_STLP_CONST _Key, _Tp) > -class hash_multimap -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ -private: - typedef hash_multimap<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> _Self; -public: - typedef _Key key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef pair<_STLP_CONST key_type, data_type> value_type; -private: - //Specific iterator traits creation - typedef _STLP_PRIV _HashMultimapTraitsT _HashMultimapTraits; - -public: - typedef hashtable _Ht; - - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher hash_funct() const { return _M_ht.hash_funct(); } - key_equal key_eq() const { return _M_ht.key_eq(); } - allocator_type get_allocator() const { return _M_ht.get_allocator(); } - -private: - _Ht _M_ht; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) -public: - hash_multimap() : _M_ht(0, hasher(), key_equal(), allocator_type()) {} - explicit hash_multimap(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - hash_multimap(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - hash_multimap(__move_source<_Self> src) - : _M_ht(__move_source<_Ht>(src.get()._M_ht)) { - } -#endif - -#ifdef _STLP_MEMBER_TEMPLATES - template - hash_multimap(_InputIterator __f, _InputIterator __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } -# ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql) - : _M_ht(__n, __hf, __eql, allocator_type()) - { _M_ht.insert_equal(__f, __l); } -# endif - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - -#else - hash_multimap(const value_type* __f, const value_type* __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multimap(const value_type* __f, const value_type* __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multimap(const value_type* __f, const value_type* __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multimap(const value_type* __f, const value_type* __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - - hash_multimap(const_iterator __f, const_iterator __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multimap(const_iterator __f, const_iterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multimap(const_iterator __f, const_iterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multimap(const_iterator __f, const_iterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - -public: - size_type size() const { return _M_ht.size(); } - size_type max_size() const { return _M_ht.max_size(); } - bool empty() const { return _M_ht.empty(); } - void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - iterator begin() { return _M_ht.begin(); } - iterator end() { return _M_ht.end(); } - const_iterator begin() const { return _M_ht.begin(); } - const_iterator end() const { return _M_ht.end(); } - -public: - iterator insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } -#ifdef _STLP_MEMBER_TEMPLATES - template - void insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_equal(__f,__l); } -#else - void insert(const value_type* __f, const value_type* __l) { - _M_ht.insert_equal(__f,__l); - } - void insert(const_iterator __f, const_iterator __l) - { _M_ht.insert_equal(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - iterator insert_noresize(const value_type& __obj) - { return _M_ht.insert_equal_noresize(__obj); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_ht.find(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_ht.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair - equal_range(const _KT& __key) { return _M_ht.equal_range(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair - equal_range(const _KT& __key) const { return _M_ht.equal_range(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type erase(const _KT& __key) {return _M_ht.erase(__key); } - void erase(iterator __it) { _M_ht.erase(__it); } - void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); } - void clear() { _M_ht.clear(); } - -public: - void resize(size_type __hint) { _M_ht.resize(__hint); } - size_type bucket_count() const { return _M_ht.bucket_count(); } - size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } - size_type elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } -}; - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER hash_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#define _STLP_TEMPLATE_CONTAINER hash_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# if !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > : - _STLP_PRIV __move_traits_help::_Ht> -{}; - -template -struct __move_traits > : - _STLP_PRIV __move_traits_help::_Ht> -{}; -# endif - -// Specialization of insert_iterator so that it will work for hash_map -// and hash_multimap. -template -class insert_iterator > { -protected: - typedef hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container; - _Container* container; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) : container(&__x) {} - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __val) { - container->insert(__val); - return *this; - } - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; - -template -class insert_iterator > { -protected: - typedef hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container; - _Container* container; - typename _Container::iterator iter; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) : container(&__x) {} - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __val) { - container->insert(__val); - return *this; - } - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_HASH_MAP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_hash_set.h b/build/stlport/stlport/stl/_hash_set.h deleted file mode 100644 index 29b168b8dd63..000000000000 --- a/build/stlport/stlport/stl/_hash_set.h +++ /dev/null @@ -1,495 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_HASH_SET_H -#define _STLP_INTERNAL_HASH_SET_H - -#ifndef _STLP_INTERNAL_HASHTABLE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//Specific iterator traits creation -_STLP_CREATE_HASH_ITERATOR_TRAITS(HashSetTraitsT, Const_traits) - -template ), - _STLP_DFL_TMPL_PARAM(_EqualKey, equal_to<_Value>), - _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Value>) > -class hash_set -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef hash_set<_Value, _HashFcn, _EqualKey, _Alloc> _Self; - //Specific iterator traits creation - typedef _STLP_PRIV _HashSetTraitsT<_Value> _HashSetTraits; -public: - typedef hashtable<_Value, _Value, _HashFcn, - _HashSetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht; -public: - typedef typename _Ht::key_type key_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher hash_funct() const { return _M_ht.hash_funct(); } - key_equal key_eq() const { return _M_ht.key_eq(); } - allocator_type get_allocator() const { return _M_ht.get_allocator(); } - -private: - _Ht _M_ht; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - hash_set() - : _M_ht(0, hasher(), key_equal(), allocator_type()) {} - explicit hash_set(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - hash_set(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) -#else - hash_set(size_type __n, const hasher& __hf, const key_equal& __eql) - : _M_ht(__n, __hf, __eql, allocator_type()) {} - hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a) -#endif - : _M_ht(__n, __hf, __eql, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - hash_set(__move_source<_Self> src) - : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {} -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - hash_set(_InputIterator __f, _InputIterator __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql) - : _M_ht(__n, __hf, __eql, allocator_type()) - { _M_ht.insert_unique(__f, __l); } -# endif -#else - hash_set(const value_type* __f, const value_type* __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_set(const value_type* __f, const value_type* __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_set(const value_type* __f, const value_type* __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_set(const value_type* __f, const value_type* __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - - hash_set(const_iterator __f, const_iterator __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_set(const_iterator __f, const_iterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_set(const_iterator __f, const_iterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - hash_set(const_iterator __f, const_iterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - -public: - size_type size() const { return _M_ht.size(); } - size_type max_size() const { return _M_ht.max_size(); } - bool empty() const { return _M_ht.empty(); } - void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - iterator begin() { return _M_ht.begin(); } - iterator end() { return _M_ht.end(); } - const_iterator begin() const { return _M_ht.begin(); } - const_iterator end() const { return _M_ht.end(); } - -public: - pair insert(const value_type& __obj) - { return _M_ht.insert_unique(__obj); } -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __f, _InputIterator __l) -#else - void insert(const_iterator __f, const_iterator __l) - {_M_ht.insert_unique(__f, __l); } - void insert(const value_type* __f, const value_type* __l) -#endif - { _M_ht.insert_unique(__f,__l); } - - pair insert_noresize(const value_type& __obj) - { return _M_ht.insert_unique_noresize(__obj); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_ht.find(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_ht.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) - { return _M_ht.equal_range(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const - { return _M_ht.equal_range(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type erase(const _KT& __key) {return _M_ht.erase(__key); } - void erase(iterator __it) { _M_ht.erase(__it); } - void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); } - void clear() { _M_ht.clear(); } - -public: - void resize(size_type __hint) { _M_ht.resize(__hint); } - size_type bucket_count() const { return _M_ht.bucket_count(); } - size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } - size_type elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } -}; - -//Specific iterator traits creation -_STLP_CREATE_HASH_ITERATOR_TRAITS(HashMultisetTraitsT, Const_traits) - -template ), - _STLP_DFL_TMPL_PARAM(_EqualKey, equal_to<_Value>), - _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Value>) > -class hash_multiset -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Self; - //Specific iterator traits creation - typedef _STLP_PRIV _HashMultisetTraitsT<_Value> _HashMultisetTraits; -public: - typedef hashtable<_Value, _Value, _HashFcn, - _HashMultisetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht; - - typedef typename _Ht::key_type key_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher hash_funct() const { return _M_ht.hash_funct(); } - key_equal key_eq() const { return _M_ht.key_eq(); } - allocator_type get_allocator() const { return _M_ht.get_allocator(); } - -private: - _Ht _M_ht; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - hash_multiset() - : _M_ht(0, hasher(), key_equal(), allocator_type()) {} - explicit hash_multiset(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - hash_multiset(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql) - : _M_ht(__n, __hf, __eql, allocator_type()) {} - hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a) - : _M_ht(__n, __hf, __eql, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - hash_multiset(__move_source<_Self> src) - : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {} -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - hash_multiset(_InputIterator __f, _InputIterator __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql) - : _M_ht(__n, __hf, __eql, allocator_type()) - { _M_ht.insert_equal(__f, __l); } -# endif -#else - hash_multiset(const value_type* __f, const value_type* __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multiset(const value_type* __f, const value_type* __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multiset(const value_type* __f, const value_type* __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multiset(const value_type* __f, const value_type* __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - - hash_multiset(const_iterator __f, const_iterator __l) - : _M_ht(0, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multiset(const_iterator __f, const_iterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multiset(const_iterator __f, const_iterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - hash_multiset(const_iterator __f, const_iterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - -public: - size_type size() const { return _M_ht.size(); } - size_type max_size() const { return _M_ht.max_size(); } - bool empty() const { return _M_ht.empty(); } - void swap(_Self& hs) { _M_ht.swap(hs._M_ht); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - iterator begin() { return _M_ht.begin(); } - iterator end() { return _M_ht.end(); } - const_iterator begin() const { return _M_ht.begin(); } - const_iterator end() const { return _M_ht.end(); } - -public: - iterator insert(const value_type& __obj) { return _M_ht.insert_equal(__obj); } -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_equal(__f,__l); } -#else - void insert(const value_type* __f, const value_type* __l) - { _M_ht.insert_equal(__f,__l); } - void insert(const_iterator __f, const_iterator __l) - { _M_ht.insert_equal(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - iterator insert_noresize(const value_type& __obj) - { return _M_ht.insert_equal_noresize(__obj); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_ht.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) - { return _M_ht.equal_range(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const - { return _M_ht.equal_range(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type erase(const _KT& __key) {return _M_ht.erase(__key); } - void erase(iterator __it) { _M_ht.erase(__it); } - void erase(iterator __f, iterator __l) { _M_ht.erase(__f, __l); } - void clear() { _M_ht.clear(); } - -public: - void resize(size_type __hint) { _M_ht.resize(__hint); } - size_type bucket_count() const { return _M_ht.bucket_count(); } - size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } - size_type elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } -}; - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER hash_set<_Value,_HashFcn,_EqualKey,_Alloc> - -#include - -#undef _STLP_TEMPLATE_CONTAINER -#define _STLP_TEMPLATE_CONTAINER hash_multiset<_Value,_HashFcn,_EqualKey,_Alloc> -#include - -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -// Specialization of insert_iterator so that it will work for hash_set -// and hash_multiset. - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# if !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux::_Ht> -{}; - -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux::_Ht> -{}; -# endif - -template -class insert_iterator > { -protected: - typedef hash_set<_Value, _HashFcn, _EqualKey, _Alloc> _Container; - _Container* container; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) : container(&__x) {} - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __val) { - container->insert(__val); - return *this; - } - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; - -template -class insert_iterator > { -protected: - typedef hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Container; - _Container* container; - typename _Container::iterator iter; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) : container(&__x) {} - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __val) { - container->insert(__val); - return *this; - } - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_HASH_SET_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_hashtable.c b/build/stlport/stlport/stl/_hashtable.c deleted file mode 100644 index b743156e4602..000000000000 --- a/build/stlport/stlport/stl/_hashtable.c +++ /dev/null @@ -1,553 +0,0 @@ -/* - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_HASHTABLE_C -#define _STLP_HASHTABLE_C - -#ifndef _STLP_INTERNAL_HASHTABLE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) - -_STLP_MOVE_TO_PRIV_NAMESPACE - -# define __PRIME_LIST_BODY { \ - 7ul, 23ul, \ - 53ul, 97ul, 193ul, 389ul, 769ul, \ - 1543ul, 3079ul, 6151ul, 12289ul, 24593ul, \ - 49157ul, 98317ul, 196613ul, 393241ul, 786433ul, \ - 1572869ul, 3145739ul, 6291469ul, 12582917ul, 25165843ul, \ - 50331653ul, 100663319ul, 201326611ul, 402653189ul, 805306457ul,\ - 1610612741ul, 3221225473ul, 4294967291ul \ -} - -template -const size_t* _STLP_CALL -_Stl_prime<_Dummy>::_S_primes(size_t &__size) { - static const size_t _list[] = __PRIME_LIST_BODY; -# ifndef __MWERKS__ - __size = sizeof(_list) / sizeof(_list[0]); -# else - __size = 30; -# endif - return _list; -} - -template -size_t _STLP_CALL -_Stl_prime<_Dummy>::_S_max_nb_buckets() { - size_t __size; - const size_t* __first = _S_primes(__size); - return *(__first + __size - 1); -} - -template -size_t _STLP_CALL -_Stl_prime<_Dummy>::_S_next_size(size_t __n) { - size_t __size; - const size_t* __first = _S_primes(__size); - const size_t* __last = __first + __size; - const size_t* pos = __lower_bound(__first, __last, __n, - __less((size_t*)0), __less((size_t*)0), (ptrdiff_t*)0); - return (pos == __last ? *(__last - 1) : *pos); -} - -template -void _STLP_CALL -_Stl_prime<_Dummy>::_S_prev_sizes(size_t __n, size_t const*&__begin, size_t const*&__pos) { - size_t __size; - __begin = _S_primes(__size); - const size_t* __last = __begin + __size; - __pos = __lower_bound(__begin, __last, __n, - __less((size_t*)0), __less((size_t*)0), (ptrdiff_t*)0); - - if (__pos== __last) - --__pos; - else if (*__pos == __n) { - if (__pos != __begin) - --__pos; - } -} - -# undef __PRIME_LIST_BODY - -_STLP_MOVE_TO_STD_NAMESPACE - -#endif - -#if defined (_STLP_DEBUG) -# define hashtable _STLP_NON_DBG_NAME(hashtable) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -// fbp: these defines are for outline methods definitions. -// needed to definitions to be portable. Should not be used in method bodies. - -#if defined ( _STLP_NESTED_TYPE_PARAM_BUG ) -# define __size_type__ size_t -# define size_type size_t -# define value_type _Val -# define key_type _Key -# define __reference__ _Val& - -# define __iterator__ _Ht_iterator<_Val, _STLP_HEADER_TYPENAME _Traits::_NonConstTraits, \ - _Key, _HF, _ExK, _EqK, _All> -# define __const_iterator__ _Ht_iterator<_Val, _STLP_HEADER_TYPENAME _Traits::_ConstTraits, \ - _Key, _HF, _ExK, _EqK, _All> -#else -# define __size_type__ _STLP_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::size_type -# define __reference__ _STLP_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::reference -# define __iterator__ _STLP_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::iterator -# define __const_iterator__ _STLP_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All>::const_iterator -#endif - -/* - * This method is too difficult to implement for hashtable that do not - * require a sorted operation on the stored type. -template -bool hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>::_M_equal( - const hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>& __ht1, - const hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>& __ht2) { - return __ht1._M_buckets == __ht2._M_buckets && - __ht1._M_elems == __ht2._M_elems; -} -*/ - -/* Returns the iterator before the first iterator of the bucket __n and set - * __n to the first previous bucket having the same first iterator as bucket - * __n. - */ -template -__iterator__ -hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_M_before_begin(size_type &__n) const { - return _S_before_begin(_M_elems, _M_buckets, __n); -} - -template -__iterator__ -hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_S_before_begin(const _ElemsCont& __elems, const _BucketVector& __buckets, - size_type &__n) { - _ElemsCont &__mutable_elems = __CONST_CAST(_ElemsCont&, __elems); - typename _BucketVector::const_iterator __bpos(__buckets.begin() + __n); - - _ElemsIte __pos(*__bpos); - if (__pos == __mutable_elems.begin()) { - __n = 0; - return __mutable_elems.before_begin(); - } - - typename _BucketVector::const_iterator __bcur(__bpos); - _BucketType *__pos_node = __pos._M_node; - for (--__bcur; __pos_node == *__bcur; --__bcur); - - __n = __bcur - __buckets.begin() + 1; - _ElemsIte __cur(*__bcur); - _ElemsIte __prev = __cur++; - for (; __cur != __pos; ++__prev, ++__cur); - return __prev; -} - - -template -__iterator__ -hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_M_insert_noresize(size_type __n, const value_type& __obj) { - //We always insert this element as 1st in the bucket to not break - //the elements order as equal elements must be kept next to each other. - size_type __prev = __n; - _ElemsIte __pos = _M_before_begin(__prev)._M_ite; - - fill(_M_buckets.begin() + __prev, _M_buckets.begin() + __n + 1, - _M_elems.insert_after(__pos, __obj)._M_node); - ++_M_num_elements; - return iterator(_ElemsIte(_M_buckets[__n])); -} - -template -pair<__iterator__, bool> -hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::insert_unique_noresize(const value_type& __obj) { - const size_type __n = _M_bkt_num(__obj); - _ElemsIte __cur(_M_buckets[__n]); - _ElemsIte __last(_M_buckets[__n + 1]); - - if (__cur != __last) { - for (; __cur != __last; ++__cur) { - if (_M_equals(_M_get_key(*__cur), _M_get_key(__obj))) { - //We check that equivalent keys have equals hash code as otherwise, on resize, - //equivalent value might not be in the same bucket - _STLP_ASSERT(_M_hash(_M_get_key(*__cur)) == _M_hash(_M_get_key(__obj))) - return pair(iterator(__cur), false); - } - } - /* Here we do not rely on the _M_insert_noresize method as we know - * that we cannot break element orders, elements are unique, and - * insertion after the first bucket element is faster than what is - * done in _M_insert_noresize. - */ - __cur = _M_elems.insert_after(_ElemsIte(_M_buckets[__n]), __obj); - ++_M_num_elements; - return pair(iterator(__cur), true); - } - - return pair(_M_insert_noresize(__n, __obj), true); -} - -template -__iterator__ -hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::insert_equal_noresize(const value_type& __obj) { - const size_type __n = _M_bkt_num(__obj); - { - _ElemsIte __cur(_M_buckets[__n]); - _ElemsIte __last(_M_buckets[__n + 1]); - - for (; __cur != __last; ++__cur) { - if (_M_equals(_M_get_key(*__cur), _M_get_key(__obj))) { - //We check that equivalent keys have equals hash code as otherwise, on resize, - //equivalent value might not be in the same bucket - _STLP_ASSERT(_M_hash(_M_get_key(*__cur)) == _M_hash(_M_get_key(__obj))) - ++_M_num_elements; - return _M_elems.insert_after(__cur, __obj); - } - } - } - - return _M_insert_noresize(__n, __obj); -} - -template -__reference__ -hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_M_insert(const value_type& __obj) { - _M_enlarge(_M_num_elements + 1); - return *insert_unique_noresize(__obj).first; -} - -template -__size_type__ -hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::erase(const key_type& __key) { - const size_type __n = _M_bkt_num_key(__key); - - _ElemsIte __cur(_M_buckets[__n]); - _ElemsIte __last(_M_buckets[__n + 1]); - if (__cur == __last) - return 0; - - size_type __erased = 0; - if (_M_equals(_M_get_key(*__cur), __key)) { - //We look for the pos before __cur: - size_type __prev_b = __n; - _ElemsIte __prev = _M_before_begin(__prev_b)._M_ite; - do { - __cur = _M_elems.erase_after(__prev); - ++__erased; - } while ((__cur != __last) && _M_equals(_M_get_key(*__cur), __key)); - fill(_M_buckets.begin() + __prev_b, _M_buckets.begin() + __n + 1, __cur._M_node); - } - else { - _ElemsIte __prev = __cur++; - for (; __cur != __last; ++__prev, ++__cur) { - if (_M_equals(_M_get_key(*__cur), __key)) { - do { - __cur = _M_elems.erase_after(__prev); - ++__erased; - } while ((__cur != __last) && _M_equals(_M_get_key(*__cur), __key)); - break; - } - } - } - - _M_num_elements -= __erased; - _M_reduce(); - return __erased; -} - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::erase(const_iterator __it) { - const size_type __n = _M_bkt_num(*__it); - _ElemsIte __cur(_M_buckets[__n]); - - size_type __erased = 0; - if (__cur == __it._M_ite) { - size_type __prev_b = __n; - _ElemsIte __prev = _M_before_begin(__prev_b)._M_ite; - fill(_M_buckets.begin() + __prev_b, _M_buckets.begin() + __n + 1, - _M_elems.erase_after(__prev)._M_node); - ++__erased; - } - else { - _ElemsIte __prev = __cur++; - _ElemsIte __last(_M_buckets[__n + 1]); - for (; __cur != __last; ++__prev, ++__cur) { - if (__cur == __it._M_ite) { - _M_elems.erase_after(__prev); - ++__erased; - break; - } - } - } - - _M_num_elements -= __erased; - _M_reduce(); -} - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::erase(const_iterator __first, const_iterator __last) { - if (__first == __last) - return; - size_type __f_bucket = _M_bkt_num(*__first); - size_type __l_bucket = __last != end() ? _M_bkt_num(*__last) : (_M_buckets.size() - 1); - - _ElemsIte __cur(_M_buckets[__f_bucket]); - _ElemsIte __prev; - if (__cur == __first._M_ite) { - __prev = _M_before_begin(__f_bucket)._M_ite; - } - else { - _ElemsIte __last(_M_buckets[++__f_bucket]); - __prev = __cur++; - for (; (__cur != __last) && (__cur != __first._M_ite); ++__prev, ++__cur); - } - size_type __erased = 0; - //We do not use the slist::erase_after method taking a range to count the - //number of erased elements: - while (__cur != __last._M_ite) { - __cur = _M_elems.erase_after(__prev); - ++__erased; - } - fill(_M_buckets.begin() + __f_bucket, _M_buckets.begin() + __l_bucket + 1, __cur._M_node); - _M_num_elements -= __erased; - _M_reduce(); -} - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::rehash(size_type __num_buckets_hint) { - if (bucket_count() >= __num_buckets_hint) { - // We are trying to reduce number of buckets, we have to validate it: - size_type __limit_num_buckets = (size_type)((float)size() / max_load_factor()); - if (__num_buckets_hint < __limit_num_buckets) { - // Targetted number of buckets __num_buckets_hint would break - // load_factor() <= max_load_factor() rule. - return; - } - } - - _M_rehash(__num_buckets_hint); -} - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_M_enlarge(size_type __to_size) { - size_type __num_buckets = bucket_count(); - size_type __num_buckets_hint = (size_type)((float)__to_size / max_load_factor()); - if (__num_buckets_hint <= __num_buckets) { - return; - } - __num_buckets = _STLP_PRIV _Stl_prime_type::_S_next_size(__num_buckets_hint); - - _M_rehash(__num_buckets); -} - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_M_reduce() { - size_type __num_buckets = bucket_count(); - // We only try to reduce the hashtable if the theorical load factor - // is lower than a fraction of the max load factor: - // 4 factor is coming from the fact that prime number list is almost a - // geometrical suite with reason 2, as we try to jump 2 levels is means - // a 4 factor. - if ((float)size() / (float)__num_buckets > max_load_factor() / 4.0f) - return; - - const size_type *__first; - const size_type *__prev; - _STLP_PRIV _Stl_prime_type::_S_prev_sizes(__num_buckets, __first, __prev); - - /* We are only going to reduce number of buckets if moving to yet the previous number - * of buckets in the prime numbers would respect the load rule. Otherwise algorithm - * successively removing and adding an element would each time perform an expensive - * rehash operation. */ - const size_type *__prev_prev = __prev; - if (__prev_prev != __first) { - --__prev_prev; - if ((float)size() / (float)*__prev_prev > max_load_factor()) - return; - } - else { - if (*__prev >= __num_buckets) - return; - } - - // Can we reduce further: - while (__prev_prev != __first) { - --__prev_prev; - if ((float)size() / (float)*__prev_prev > max_load_factor()) - // We cannot reduce further. - break; - --__prev; - } - - _M_rehash(*__prev); -} - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_M_resize() { - if (load_factor() > max_load_factor()) { - // We have to enlarge - _M_enlarge(size()); - } - else { - // We can try to reduce size: - _M_reduce(); - } -} - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_M_rehash(size_type __num_buckets) { -#if defined (_STLP_DEBUG) - _M_check(); -#endif - _ElemsCont __tmp_elems(_M_elems.get_allocator()); - _BucketVector __tmp(__num_buckets + 1, __STATIC_CAST(_BucketType*, 0), _M_buckets.get_allocator()); - _ElemsIte __cur, __last(_M_elems.end()); - while (!_M_elems.empty()) { - __cur = _M_elems.begin(); - size_type __new_bucket = _M_bkt_num(*__cur, __num_buckets); - _ElemsIte __ite(__cur), __before_ite(__cur); - for (++__ite; - __ite != __last && _M_equals(_M_get_key(*__cur), _M_get_key(*__ite)); - ++__ite, ++__before_ite); - size_type __prev_bucket = __new_bucket; - _ElemsIte __prev = _S_before_begin(__tmp_elems, __tmp, __prev_bucket)._M_ite; - __tmp_elems.splice_after(__prev, _M_elems, _M_elems.before_begin(), __before_ite); - fill(__tmp.begin() + __prev_bucket, __tmp.begin() + __new_bucket + 1, __cur._M_node); - } - _M_elems.swap(__tmp_elems); - _M_buckets.swap(__tmp); -} - -#if defined (_STLP_DEBUG) -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>::_M_check() const { - //We check that hash code of stored keys haven't change and also that equivalent - //relation hasn't been modified - size_t __num_buckets = bucket_count(); - for (size_t __b = 0; __b < __num_buckets; ++__b) { - _ElemsIte __cur(_M_buckets[__b]), __last(_M_buckets[__b + 1]); - _ElemsIte __fst(__cur), __snd(__cur); - for (; __cur != __last; ++__cur) { - _STLP_ASSERT( _M_bkt_num(*__cur, __num_buckets) == __b ) - _STLP_ASSERT( !_M_equals(_M_get_key(*__fst), _M_get_key(*__cur)) || _M_equals(_M_get_key(*__snd), _M_get_key(*__cur)) ) - if (__fst != __snd) - ++__fst; - if (__snd != __cur) - ++__snd; - } - } -} -#endif - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>::clear() { - _M_elems.clear(); - _M_buckets.assign(_M_buckets.size(), __STATIC_CAST(_BucketType*, 0)); - _M_num_elements = 0; -} - -template -void hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> - ::_M_copy_from(const hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All>& __ht) { - _M_elems.clear(); - _M_elems.insert(_M_elems.end(), __ht._M_elems.begin(), __ht._M_elems.end()); - _M_buckets.resize(__ht._M_buckets.size()); - _ElemsConstIte __src(__ht._M_elems.begin()), __src_end(__ht._M_elems.end()); - _ElemsIte __dst(_M_elems.begin()); - typename _BucketVector::const_iterator __src_b(__ht._M_buckets.begin()), - __src_end_b(__ht._M_buckets.end()); - typename _BucketVector::iterator __dst_b(_M_buckets.begin()), __dst_end_b(_M_buckets.end()); - for (; __src != __src_end; ++__src, ++__dst) { - for (; __src_b != __src_end_b; ++__src_b, ++__dst_b) { - if (*__src_b == __src._M_node) { - *__dst_b = __dst._M_node; - } - else - break; - } - } - fill(__dst_b, __dst_end_b, __STATIC_CAST(_BucketType*, 0)); - _M_num_elements = __ht._M_num_elements; - _M_max_load_factor = __ht._M_max_load_factor; -} - -#undef __iterator__ -#undef const_iterator -#undef __size_type__ -#undef __reference__ -#undef size_type -#undef value_type -#undef key_type -#undef __stl_num_primes - -#if defined (_STLP_DEBUG) -# undef hashtable -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_HASHTABLE_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_hashtable.h b/build/stlport/stlport/stl/_hashtable.h deleted file mode 100644 index 1c8e2f543415..000000000000 --- a/build/stlport/stlport/stl/_hashtable.h +++ /dev/null @@ -1,658 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_HASHTABLE_H -#define _STLP_INTERNAL_HASHTABLE_H - -#ifndef _STLP_INTERNAL_VECTOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_SLIST_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_HASH_FUN_H -# include -#endif - -/* - * Hashtable class, used to implement the hashed associative containers - * hash_set, hash_map, hash_multiset, hash_multimap, - * unordered_set, unordered_map, unordered_multiset, unordered_multimap. - */ - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -//Export of the classes used to represent buckets in the hashtable implementation. -# if !defined (_STLP_USE_PTR_SPECIALIZATIONS) -//If pointer specialization is enabled vector<_Slist_node_base*> will use the void* -//storage type for which internal classes have already been exported. -_STLP_EXPORT_TEMPLATE_CLASS allocator<_STLP_PRIV _Slist_node_base*>; - -_STLP_MOVE_TO_PRIV_NAMESPACE -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<_Slist_node_base**, _Slist_node_base*, - allocator<_Slist_node_base*> >; -_STLP_EXPORT_TEMPLATE_CLASS _Vector_base<_Slist_node_base*, - allocator<_Slist_node_base*> >; -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -# if defined (_STLP_DEBUG) -_STLP_MOVE_TO_PRIV_NAMESPACE -# define _STLP_NON_DBG_VECTOR _STLP_NON_DBG_NAME(vector) -_STLP_EXPORT_TEMPLATE_CLASS __construct_checker<_STLP_NON_DBG_VECTOR<_Slist_node_base*, allocator<_Slist_node_base*> > >; -_STLP_EXPORT_TEMPLATE_CLASS _STLP_NON_DBG_VECTOR<_Slist_node_base*, allocator<_Slist_node_base*> >; -# undef _STLP_NON_DBG_VECTOR -_STLP_MOVE_TO_STD_NAMESPACE -# endif - -_STLP_EXPORT_TEMPLATE_CLASS vector<_STLP_PRIV _Slist_node_base*, - allocator<_STLP_PRIV _Slist_node_base*> >; -#endif - -#if defined (_STLP_DEBUG) -# define hashtable _STLP_NON_DBG_NAME(hashtable) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -// some compilers require the names of template parameters to be the same -template -class hashtable; - -#if !defined (_STLP_DEBUG) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -template -struct _Ht_iterator { - typedef typename _Traits::_ConstTraits _ConstTraits; - typedef typename _Traits::_NonConstTraits _NonConstTraits; - - typedef _Ht_iterator<_BaseIte,_Traits> _Self; - - typedef typename _Traits::value_type value_type; - typedef typename _Traits::pointer pointer; - typedef typename _Traits::reference reference; - typedef forward_iterator_tag iterator_category; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - - typedef _Ht_iterator<_BaseIte, _NonConstTraits> iterator; - typedef _Ht_iterator<_BaseIte, _ConstTraits> const_iterator; - - _Ht_iterator() {} - //copy constructor for iterator and constructor from iterator for const_iterator - _Ht_iterator(const iterator& __it) : _M_ite(__it._M_ite) {} - _Ht_iterator(_BaseIte __it) : _M_ite(__it) {} - - reference operator*() const { - return *_M_ite; - } - _STLP_DEFINE_ARROW_OPERATOR - - _Self& operator++() { - ++_M_ite; - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - ++*this; - return __tmp; - } - - bool operator == (const_iterator __rhs) const { - return _M_ite == __rhs._M_ite; - } - bool operator != (const_iterator __rhs) const { - return _M_ite != __rhs._M_ite; - } - - _BaseIte _M_ite; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct __type_traits<_STLP_PRIV _Ht_iterator<_BaseIte, _Traits> > { - typedef __false_type has_trivial_default_constructor; - typedef __true_type has_trivial_copy_constructor; - typedef __true_type has_trivial_assignment_operator; - typedef __true_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -template -inline -# if defined (_STLP_NESTED_TYPE_PARAM_BUG) -_STLP_TYPENAME_ON_RETURN_TYPE _Traits::value_type * -# else -_STLP_TYPENAME_ON_RETURN_TYPE _STLP_PRIV _Ht_iterator<_BaseIte,_Traits>::value_type * -# endif -value_type(const _STLP_PRIV _Ht_iterator<_BaseIte,_Traits>&) { - typedef _STLP_TYPENAME _STLP_PRIV _Ht_iterator<_BaseIte,_Traits>::value_type _Val; - return (_Val*) 0; -} -template -inline forward_iterator_tag iterator_category(const _STLP_PRIV _Ht_iterator<_BaseIte,_Traits>&) -{ return forward_iterator_tag(); } -template -inline ptrdiff_t* distance_type(const _STLP_PRIV _Ht_iterator<_BaseIte,_Traits>&) -{ return (ptrdiff_t*) 0; } -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -class _Stl_prime { - // Returns begining of primes list and size by reference. - static const size_t* _S_primes(size_t&); -public: - //Returns the maximum number of buckets handled by the hashtable implementation - static size_t _STLP_CALL _S_max_nb_buckets(); - - //Returns the bucket size next to a required size - static size_t _STLP_CALL _S_next_size(size_t); - - // Returns the bucket range containing sorted list of prime numbers <= __hint. - static void _STLP_CALL _S_prev_sizes(size_t __hint, const size_t *&__begin, const size_t *&__end); -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS _Stl_prime; -#endif - -typedef _Stl_prime _Stl_prime_type; - -#if !defined (_STLP_DEBUG) -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -/* - * Hashtables handle allocators a bit differently than other containers - * do. If we're using standard-conforming allocators, then a hashtable - * unconditionally has a member variable to hold its allocator, even if - * it so happens that all instances of the allocator type are identical. - * This is because, for hashtables, this extra storage is negligible. - * Additionally, a base class wouldn't serve any other purposes; it - * wouldn't, for example, simplify the exception-handling code. - */ -template -class hashtable { - typedef hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All> _Self; - typedef typename _Traits::_NonConstTraits _NonConstTraits; - typedef typename _Traits::_ConstTraits _ConstTraits; - typedef typename _Traits::_NonConstLocalTraits _NonConstLocalTraits; - typedef typename _Traits::_ConstLocalTraits _ConstLocalTraits; - -public: - typedef _Key key_type; - typedef _Val value_type; - typedef _HF hasher; - typedef _EqK key_equal; - - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef typename _NonConstTraits::pointer pointer; - typedef const value_type* const_pointer; - typedef typename _NonConstTraits::reference reference; - typedef const value_type& const_reference; - typedef forward_iterator_tag _Iterator_category; - - hasher hash_funct() const { return _M_hash; } - key_equal key_eq() const { return _M_equals; } - -private: - _STLP_FORCE_ALLOCATORS(_Val, _All) -#if defined (_STLP_DEBUG) - typedef _STLP_PRIV _STLP_NON_DBG_NAME(slist) _ElemsCont; -#else - typedef slist _ElemsCont; -#endif - typedef typename _ElemsCont::iterator _ElemsIte; - typedef typename _ElemsCont::const_iterator _ElemsConstIte; - typedef _STLP_PRIV _Slist_node_base _BucketType; - typedef typename _Alloc_traits<_BucketType*, _All>::allocator_type _BucketAllocType; - /* - * We are going to use vector of _Slist_node_base pointers for 2 reasons: - * - limit code bloat, all hashtable instanciation use the same buckets representation. - * - avoid _STLP_DEBUG performance trouble: with a vector of iterator on slist the resize - * method would be too slow because the slist::splice_after method become linear on - * the number of iterators in the buckets rather than constant in time as the iterator - * has to be move from a slist to the other. - */ -#if defined (_STLP_DEBUG) - typedef _STLP_PRIV _STLP_NON_DBG_NAME(vector)<_BucketType*, _BucketAllocType> _BucketVector; -#else - typedef vector<_BucketType*, _BucketAllocType> _BucketVector; -#endif - - hasher _M_hash; - key_equal _M_equals; - _ElemsCont _M_elems; - _BucketVector _M_buckets; - size_type _M_num_elements; - float _M_max_load_factor; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - - static const key_type& _M_get_key(const value_type& __val) { - _ExK k; - return k(__val); - } -public: - typedef _STLP_PRIV _Ht_iterator<_ElemsIte, _NonConstTraits> iterator; - typedef _STLP_PRIV _Ht_iterator<_ElemsIte, _ConstTraits> const_iterator; - //TODO: Avoids this debug check and make the local_iterator different from - //iterator in debug mode too. -#if !defined (_STLP_DEBUG) - typedef _STLP_PRIV _Ht_iterator<_ElemsIte, _NonConstLocalTraits> local_iterator; - typedef _STLP_PRIV _Ht_iterator<_ElemsIte, _ConstLocalTraits> const_local_iterator; -#else - typedef iterator local_iterator; - typedef const_iterator const_local_iterator; -#endif - - typedef _All allocator_type; - allocator_type get_allocator() const { return _M_elems.get_allocator(); } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - hashtable(size_type __n, - const _HF& __hf, - const _EqK& __eql, - const allocator_type& __a = allocator_type()) -#else - hashtable(size_type __n, - const _HF& __hf, - const _EqK& __eql) - : _M_hash(__hf), - _M_equals(__eql), - _M_elems(allocator_type()), - _M_buckets(_STLP_CONVERT_ALLOCATOR(__a, _BucketType*)), - _M_num_elements(0), - _M_max_load_factor(1.0f) - { _M_initialize_buckets(__n); } - - hashtable(size_type __n, - const _HF& __hf, - const _EqK& __eql, - const allocator_type& __a) -#endif - : _M_hash(__hf), - _M_equals(__eql), - _M_elems(__a), - _M_buckets(_STLP_CONVERT_ALLOCATOR(__a, _BucketType*)), - _M_num_elements(0), - _M_max_load_factor(1.0f) - { _M_initialize_buckets(__n); } - - hashtable(const _Self& __ht) - : _M_hash(__ht._M_hash), - _M_equals(__ht._M_equals), - _M_elems(__ht.get_allocator()), - _M_buckets(_STLP_CONVERT_ALLOCATOR(__ht.get_allocator(), _BucketType*)), - _M_num_elements(0), - _M_max_load_factor(1.0f) - { _M_copy_from(__ht); } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - hashtable(__move_source<_Self> src) - : _M_hash(_STLP_PRIV _AsMoveSource(src.get()._M_hash)), - _M_equals(_STLP_PRIV _AsMoveSource(src.get()._M_equals)), - _M_elems(__move_source<_ElemsCont>(src.get()._M_elems)), - _M_buckets(__move_source<_BucketVector>(src.get()._M_buckets)), - _M_num_elements(src.get()._M_num_elements), - _M_max_load_factor(src.get()._M_max_load_factor) {} -#endif - - _Self& operator= (const _Self& __ht) { - if (&__ht != this) { - clear(); - _M_hash = __ht._M_hash; - _M_equals = __ht._M_equals; - _M_copy_from(__ht); - } - return *this; - } - - ~hashtable() { clear(); } - - size_type size() const { return _M_num_elements; } - size_type max_size() const { return size_type(-1); } - bool empty() const { return size() == 0; } - - void swap(_Self& __ht) { - _STLP_STD::swap(_M_hash, __ht._M_hash); - _STLP_STD::swap(_M_equals, __ht._M_equals); - _M_elems.swap(__ht._M_elems); - _M_buckets.swap(__ht._M_buckets); - _STLP_STD::swap(_M_num_elements, __ht._M_num_elements); - _STLP_STD::swap(_M_max_load_factor, __ht._M_max_load_factor); - } - - iterator begin() { return _M_elems.begin(); } - iterator end() { return _M_elems.end(); } - local_iterator begin(size_type __n) { return _ElemsIte(_M_buckets[__n]); } - local_iterator end(size_type __n) { return _ElemsIte(_M_buckets[__n + 1]); } - - const_iterator begin() const { return __CONST_CAST(_ElemsCont&, _M_elems).begin(); } - const_iterator end() const { return __CONST_CAST(_ElemsCont&, _M_elems).end(); } - const_local_iterator begin(size_type __n) const { return _ElemsIte(_M_buckets[__n]); } - const_local_iterator end(size_type __n) const { return _ElemsIte(_M_buckets[__n + 1]); } - - //static bool _STLP_CALL _M_equal (const _Self&, const _Self&); - -public: - //The number of buckets is size() - 1 because the last bucket always contains - //_M_elems.end() to make algo easier to implement. - size_type bucket_count() const { return _M_buckets.size() - 1; } - size_type max_bucket_count() const { return _STLP_PRIV _Stl_prime_type::_S_max_nb_buckets(); } - size_type elems_in_bucket(size_type __bucket) const - { return _STLP_STD::distance(_ElemsIte(_M_buckets[__bucket]), _ElemsIte(_M_buckets[__bucket + 1])); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type bucket(const _KT& __k) const { return _M_bkt_num_key(__k); } - - // hash policy - float load_factor() const { return (float)size() / (float)bucket_count(); } - float max_load_factor() const { return _M_max_load_factor; } - void max_load_factor(float __z) { - _M_max_load_factor = __z; - _M_resize(); - } - - pair insert_unique(const value_type& __obj) { - _M_enlarge(_M_num_elements + 1); - return insert_unique_noresize(__obj); - } - - iterator insert_equal(const value_type& __obj) { - _M_enlarge(_M_num_elements + 1); - return insert_equal_noresize(__obj); - } - -protected: - iterator _M_insert_noresize(size_type __n, const value_type& __obj); -public: - pair insert_unique_noresize(const value_type& __obj); - iterator insert_equal_noresize(const value_type& __obj); - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert_unique(_InputIterator __f, _InputIterator __l) - { insert_unique(__f, __l, _STLP_ITERATOR_CATEGORY(__f, _InputIterator)); } - - template - void insert_equal(_InputIterator __f, _InputIterator __l) - { insert_equal(__f, __l, _STLP_ITERATOR_CATEGORY(__f, _InputIterator)); } - - template - void insert_unique(_InputIterator __f, _InputIterator __l, - const input_iterator_tag &) { - for ( ; __f != __l; ++__f) - insert_unique(*__f); - } - - template - void insert_equal(_InputIterator __f, _InputIterator __l, - const input_iterator_tag &) { - for ( ; __f != __l; ++__f) - insert_equal(*__f); - } - - template - void insert_unique(_ForwardIterator __f, _ForwardIterator __l, - const forward_iterator_tag &) { - size_type __n = _STLP_STD::distance(__f, __l); - _M_enlarge(_M_num_elements + __n); - for ( ; __n > 0; --__n, ++__f) - insert_unique_noresize(*__f); - } - - template - void insert_equal(_ForwardIterator __f, _ForwardIterator __l, - const forward_iterator_tag &) { - size_type __n = _STLP_STD::distance(__f, __l); - _M_enlarge(_M_num_elements + __n); - for ( ; __n > 0; --__n, ++__f) - insert_equal_noresize(*__f); - } - -#else /* _STLP_MEMBER_TEMPLATES */ - void insert_unique(const value_type* __f, const value_type* __l) { - size_type __n = __l - __f; - _M_enlarge(_M_num_elements + __n); - for ( ; __n > 0; --__n, ++__f) - insert_unique_noresize(*__f); - } - - void insert_equal(const value_type* __f, const value_type* __l) { - size_type __n = __l - __f; - _M_enlarge(_M_num_elements + __n); - for ( ; __n > 0; --__n, ++__f) - insert_equal_noresize(*__f); - } - - void insert_unique(const_iterator __f, const_iterator __l) { - size_type __n = _STLP_STD::distance(__f, __l); - _M_enlarge(_M_num_elements + __n); - for ( ; __n > 0; --__n, ++__f) - insert_unique_noresize(*__f); - } - - void insert_equal(const_iterator __f, const_iterator __l) { - size_type __n = _STLP_STD::distance(__f, __l); - _M_enlarge(_M_num_elements + __n); - for ( ; __n > 0; --__n, ++__f) - insert_equal_noresize(*__f); - } -#endif /*_STLP_MEMBER_TEMPLATES */ - - //reference find_or_insert(const value_type& __obj); - -private: - _STLP_TEMPLATE_FOR_CONT_EXT - _ElemsIte _M_find(const _KT& __key) const { - size_type __n = _M_bkt_num_key(__key); - _ElemsIte __first(_M_buckets[__n]); - _ElemsIte __last(_M_buckets[__n + 1]); - for ( ; (__first != __last) && !_M_equals(_M_get_key(*__first), __key); ++__first); - if (__first != __last) - return __first; - else - return __CONST_CAST(_ElemsCont&, _M_elems).end(); - } - -public: - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_find(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { - const size_type __n = _M_bkt_num_key(__key); - - _ElemsIte __cur(_M_buckets[__n]); - _ElemsIte __last(_M_buckets[__n + 1]); - for (; __cur != __last; ++__cur) { - if (_M_equals(_M_get_key(*__cur), __key)) { - size_type __result = 1; - for (++__cur; - __cur != __last && _M_equals(_M_get_key(*__cur), __key); - ++__result, ++__cur); - return __result; - } - } - return 0; - } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) { - typedef pair _Pii; - const size_type __n = _M_bkt_num_key(__key); - - for (_ElemsIte __first(_M_buckets[__n]), __last(_M_buckets[__n + 1]); - __first != __last; ++__first) { - if (_M_equals(_M_get_key(*__first), __key)) { - _ElemsIte __cur(__first); - for (++__cur; (__cur != __last) && _M_equals(_M_get_key(*__cur), __key); ++__cur); - return _Pii(__first, __cur); - } - } - return _Pii(end(), end()); - } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const { - typedef pair _Pii; - const size_type __n = _M_bkt_num_key(__key); - - for (_ElemsIte __first(_M_buckets[__n]), __last(_M_buckets[__n + 1]); - __first != __last; ++__first) { - if (_M_equals(_M_get_key(*__first), __key)) { - _ElemsIte __cur(__first); - for (++__cur; (__cur != __last) && _M_equals(_M_get_key(*__cur), __key); ++__cur); - return _Pii(__first, __cur); - } - } - return _Pii(end(), end()); - } - - size_type erase(const key_type& __key); - void erase(const_iterator __it); - void erase(const_iterator __first, const_iterator __last); - -private: - void _M_enlarge(size_type __n); - void _M_reduce(); - void _M_resize(); - void _M_rehash(size_type __num_buckets); -#if defined (_STLP_DEBUG) - void _M_check() const; -#endif - -public: - void rehash(size_type __num_buckets_hint); - void resize(size_type __num_buckets_hint) - { rehash(__num_buckets_hint); } - void clear(); - - // this is for hash_map::operator[] - reference _M_insert(const value_type& __obj); - -private: - //__n is set to the first bucket that has to be modified if any - //erase/insert operation is done after the returned iterator. - iterator _M_before_begin(size_type &__n) const; - - static iterator _S_before_begin(const _ElemsCont& __elems, const _BucketVector& __buckets, - size_type &__n); - - void _M_initialize_buckets(size_type __n) { - const size_type __n_buckets = _STLP_PRIV _Stl_prime_type::_S_next_size(__n) + 1; - _M_buckets.reserve(__n_buckets); - _M_buckets.assign(__n_buckets, __STATIC_CAST(_BucketType*, 0)); - } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type _M_bkt_num_key(const _KT& __key) const - { return _M_bkt_num_key(__key, bucket_count()); } - - size_type _M_bkt_num(const value_type& __obj) const - { return _M_bkt_num_key(_M_get_key(__obj)); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type _M_bkt_num_key(const _KT& __key, size_type __n) const - { return _M_hash(__key) % __n; } - - size_type _M_bkt_num(const value_type& __obj, size_t __n) const - { return _M_bkt_num_key(_M_get_key(__obj), __n); } - - void _M_copy_from(const _Self& __ht); -}; - -#if defined (_STLP_DEBUG) -# undef hashtable -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#if defined (_STLP_DEBUG) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER hashtable<_Val,_Key,_HF,_Traits,_ExK,_EqK,_All> -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > { - //Hashtables are movable: - typedef __true_type implemented; - - //Completeness depends on many template parameters, for the moment we consider it not complete: - typedef __false_type complete; -}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_HASHTABLE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_heap.c b/build/stlport/stlport/stl/_heap.c deleted file mode 100644 index a4ab049fee90..000000000000 --- a/build/stlport/stlport/stl/_heap.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_HEAP_C -#define _STLP_HEAP_C - -#ifndef _STLP_INTERNAL_HEAP_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -_STLP_INLINE_LOOP -void -__push_heap(_RandomAccessIterator __first, - _Distance __holeIndex, _Distance __topIndex, _Tp __val) -{ - _Distance __parent = (__holeIndex - 1) / 2; - while (__holeIndex > __topIndex && *(__first + __parent) < __val) { - *(__first + __holeIndex) = *(__first + __parent); - __holeIndex = __parent; - __parent = (__holeIndex - 1) / 2; - } - *(__first + __holeIndex) = __val; -} - -template -inline void -__push_heap_aux(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Distance*, _Tp*) -{ - __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0), - _Tp(*(__last - 1))); -} - -template -void -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - __push_heap_aux(__first, __last, - _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator), _STLP_VALUE_TYPE(__first, _RandomAccessIterator)); -} - - -template -_STLP_INLINE_LOOP -void -__push_heap(_RandomAccessIterator __first, _Distance __holeIndex, - _Distance __topIndex, _Tp __val, _Compare __comp) -{ - _Distance __parent = (__holeIndex - 1) / 2; - while (__holeIndex > __topIndex && __comp(*(__first + __parent), __val)) { - _STLP_VERBOSE_ASSERT(!__comp(__val, *(__first + __parent)), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - *(__first + __holeIndex) = *(__first + __parent); - __holeIndex = __parent; - __parent = (__holeIndex - 1) / 2; - } - *(__first + __holeIndex) = __val; -} - -template -inline void -__push_heap_aux(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp, - _Distance*, _Tp*) -{ - __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0), - _Tp(*(__last - 1)), __comp); -} - -template -void -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _Compare __comp) -{ - __push_heap_aux(__first, __last, __comp, - _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator), _STLP_VALUE_TYPE(__first, _RandomAccessIterator)); -} - -template -void -__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - _Distance __len, _Tp __val) { - _Distance __topIndex = __holeIndex; - _Distance __secondChild = 2 * __holeIndex + 2; - while (__secondChild < __len) { - if (*(__first + __secondChild) < *(__first + (__secondChild - 1))) - __secondChild--; - *(__first + __holeIndex) = *(__first + __secondChild); - __holeIndex = __secondChild; - __secondChild = 2 * (__secondChild + 1); - } - if (__secondChild == __len) { - *(__first + __holeIndex) = *(__first + (__secondChild - 1)); - __holeIndex = __secondChild - 1; - } - __push_heap(__first, __holeIndex, __topIndex, __val); -} - - -template -inline void -__pop_heap_aux(_RandomAccessIterator __first, _RandomAccessIterator __last, _Tp*) { - __pop_heap(__first, __last - 1, __last - 1, - _Tp(*(__last - 1)), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator)); -} - -template -void pop_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last) { - __pop_heap_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIterator)); -} - -template -void -__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - _Distance __len, _Tp __val, _Compare __comp) -{ - _Distance __topIndex = __holeIndex; - _Distance __secondChild = 2 * __holeIndex + 2; - while (__secondChild < __len) { - if (__comp(*(__first + __secondChild), *(__first + (__secondChild - 1)))) { - _STLP_VERBOSE_ASSERT(!__comp(*(__first + (__secondChild - 1)), *(__first + __secondChild)), - _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __secondChild--; - } - *(__first + __holeIndex) = *(__first + __secondChild); - __holeIndex = __secondChild; - __secondChild = 2 * (__secondChild + 1); - } - if (__secondChild == __len) { - *(__first + __holeIndex) = *(__first + (__secondChild - 1)); - __holeIndex = __secondChild - 1; - } - __push_heap(__first, __holeIndex, __topIndex, __val, __comp); -} - - -template -inline void -__pop_heap_aux(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Tp*, _Compare __comp) -{ - __pop_heap(__first, __last - 1, __last - 1, _Tp(*(__last - 1)), __comp, - _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator)); -} - - -template -void -pop_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp) -{ - __pop_heap_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIterator), __comp); -} - -template -_STLP_INLINE_LOOP -void -__make_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Tp*, _Distance*) -{ - if (__last - __first < 2) return; - _Distance __len = __last - __first; - _Distance __parent = (__len - 2)/2; - - for (;;) { - __adjust_heap(__first, __parent, __len, _Tp(*(__first + __parent))); - if (__parent == 0) return; - __parent--; - } -} - -template -void -make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - __make_heap(__first, __last, - _STLP_VALUE_TYPE(__first, _RandomAccessIterator), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator)); -} - -template -_STLP_INLINE_LOOP -void -__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _Compare __comp, _Tp*, _Distance*) -{ - if (__last - __first < 2) return; - _Distance __len = __last - __first; - _Distance __parent = (__len - 2)/2; - - for (;;) { - __adjust_heap(__first, __parent, __len, _Tp(*(__first + __parent)), - __comp); - if (__parent == 0) return; - __parent--; - } -} - -template -void -make_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp) -{ - __make_heap(__first, __last, __comp, - _STLP_VALUE_TYPE(__first, _RandomAccessIterator), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator)); -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_HEAP_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_heap.h b/build/stlport/stlport/stl/_heap.h deleted file mode 100644 index 016dc490ee18..000000000000 --- a/build/stlport/stlport/stl/_heap.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Hewlett-Packard Company makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_HEAP_H -#define _STLP_INTERNAL_HEAP_H - -_STLP_BEGIN_NAMESPACE - -// Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap. - -template -void -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last); - - -template -void -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _Compare __comp); - -template -void -__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - _Distance __len, _Tp __val); - -template -inline void -__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _RandomAccessIterator __result, _Tp __val, _Distance*) -{ - *__result = *__first; - __adjust_heap(__first, _Distance(0), _Distance(__last - __first), __val); -} - -template -void pop_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last); - -template -void -__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex, - _Distance __len, _Tp __val, _Compare __comp); - -template -inline void -__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _RandomAccessIterator __result, _Tp __val, _Compare __comp, - _Distance*) -{ - *__result = *__first; - __adjust_heap(__first, _Distance(0), _Distance(__last - __first), - __val, __comp); -} - -template -void -pop_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp); - -template -void -make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last); - -template -void -make_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp); - -template -_STLP_INLINE_LOOP -void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) -{ - while (__last - __first > 1) - pop_heap(__first, __last--); -} - -template -_STLP_INLINE_LOOP -void -sort_heap(_RandomAccessIterator __first, - _RandomAccessIterator __last, _Compare __comp) -{ - while (__last - __first > 1) - pop_heap(__first, __last--, __comp); -} - -_STLP_END_NAMESPACE - -# if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -# endif - -#endif /* _STLP_INTERNAL_HEAP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_iomanip.h b/build/stlport/stlport/stl/_iomanip.h deleted file mode 100644 index a27d95164ca9..000000000000 --- a/build/stlport/stlport/stl/_iomanip.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_IOMANIP -#define _STLP_INTERNAL_IOMANIP - -#ifndef _STLP_INTERNAL_ISTREAM -# include // Includes and -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -//---------------------------------------------------------------------- -// Machinery for defining manipulators. - -// Class that calls one of ios_base's single-argument member functions. -template -struct _Ios_Manip_1 { - typedef _Arg (ios_base::*__f_ptr_type)(_Arg); - - _Ios_Manip_1(__f_ptr_type __f, const _Arg& __arg) - : _M_f(__f), _M_arg(__arg) {} - - void operator()(ios_base& __ios) const - { (__ios.*_M_f)(_M_arg); } - - __f_ptr_type _M_f; - _Arg _M_arg; -}; - -// Class that calls one of ios_base's two-argument member functions. -struct _Ios_Setf_Manip { - ios_base::fmtflags _M_flag; - ios_base::fmtflags _M_mask; - bool _M_two_args; - - _Ios_Setf_Manip(ios_base::fmtflags __f) - : _M_flag(__f), _M_mask(0), _M_two_args(false) {} - - _Ios_Setf_Manip(ios_base::fmtflags __f, ios_base::fmtflags __m) - : _M_flag(__f), _M_mask(__m), _M_two_args(true) {} - - void operator()(ios_base& __ios) const { - if (_M_two_args) - __ios.setf(_M_flag, _M_mask); - else - __ios.setf(_M_flag); - } -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __istr, - const _STLP_PRIV _Ios_Manip_1<_Arg>& __f) { - __f(__istr); - return __istr; -} - -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, - const _STLP_PRIV _Ios_Manip_1<_Arg>& __f) { - __f(__os); - return __os; -} - -template -inline basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __istr, - const _STLP_PRIV _Ios_Setf_Manip& __f) { - __f(__istr); - return __istr; -} - -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, - const _STLP_PRIV _Ios_Setf_Manip& __f) { - __f(__os); - return __os; -} - -//---------------------------------------------------------------------- -// The ios_base manipulators. -inline _STLP_PRIV _Ios_Setf_Manip _STLP_CALL resetiosflags(ios_base::fmtflags __mask) -{ return _STLP_PRIV _Ios_Setf_Manip(0, __mask); } - -inline _STLP_PRIV _Ios_Setf_Manip _STLP_CALL setiosflags(ios_base::fmtflags __flag) -{ return _STLP_PRIV _Ios_Setf_Manip(__flag); } - -inline _STLP_PRIV _Ios_Setf_Manip _STLP_CALL setbase(int __n) { - ios_base::fmtflags __base = __n == 8 ? ios_base::oct : - __n == 10 ? ios_base::dec : - __n == 16 ? ios_base::hex : - ios_base::fmtflags(0); - return _STLP_PRIV _Ios_Setf_Manip(__base, ios_base::basefield); -} - -inline _STLP_PRIV _Ios_Manip_1 _STLP_CALL -setprecision(int __n) { - _STLP_PRIV _Ios_Manip_1::__f_ptr_type __f = &ios_base::precision; - return _STLP_PRIV _Ios_Manip_1(__f, __n); -} - -inline _STLP_PRIV _Ios_Manip_1 _STLP_CALL -setw(int __n) { - _STLP_PRIV _Ios_Manip_1::__f_ptr_type __f = &ios_base::width; - return _STLP_PRIV _Ios_Manip_1(__f, __n); -} - -//---------------------------------------------------------------------- -// setfill, a manipulator that operates on basic_ios<> instead of ios_base. - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _Setfill_Manip { - _Setfill_Manip(_CharT __c) : _M_c(__c) {} - _CharT _M_c; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, - const _STLP_PRIV _Setfill_Manip<_CharT2>& __m) { - __os.fill(__m._M_c); - return __os; -} - -template -inline basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __is, - const _STLP_PRIV _Setfill_Manip<_CharT2>& __m) { - __is.fill(__m._M_c); - return __is; -} - -template -inline _STLP_PRIV _Setfill_Manip<_CharT> _STLP_CALL setfill(_CharT __c) -{ return _STLP_PRIV _Setfill_Manip<_CharT>(__c); } - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_IOMANIP */ diff --git a/build/stlport/stlport/stl/_ios.c b/build/stlport/stlport/stl/_ios.c deleted file mode 100644 index 7dec77f08d9d..000000000000 --- a/build/stlport/stlport/stl/_ios.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_IOS_C -#define _STLP_IOS_C - -#ifndef _STLP_INTERNAL_IOS_H -# include -#endif - -#ifndef _STLP_INTERNAL_STREAMBUF -# include -#endif - -#ifndef _STLP_INTERNAL_NUMPUNCT_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// basic_ios<>'s non-inline member functions - -// Public constructor, taking a streambuf. -template -basic_ios<_CharT, _Traits> - ::basic_ios(basic_streambuf<_CharT, _Traits>* __streambuf) - : ios_base(), _M_cached_ctype(0), - _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0) { - basic_ios<_CharT, _Traits>::init(__streambuf); -} - -template -basic_streambuf<_CharT, _Traits>* -basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __buf) { - basic_streambuf<_CharT, _Traits>* __tmp = _M_streambuf; - _M_streambuf = __buf; - this->clear(); - return __tmp; -} - -template -basic_ios<_CharT, _Traits>& -basic_ios<_CharT, _Traits>::copyfmt(const basic_ios<_CharT, _Traits>& __x) { - _M_invoke_callbacks(erase_event); - _M_copy_state(__x); // Inherited from ios_base. - _M_cached_ctype = __x._M_cached_ctype; - _M_fill = __x._M_fill; - _M_tied_ostream = __x._M_tied_ostream; - _M_invoke_callbacks(copyfmt_event); - this->_M_set_exception_mask(__x.exceptions()); - return *this; -} - -template -locale basic_ios<_CharT, _Traits>::imbue(const locale& __loc) { - locale __tmp = ios_base::imbue(__loc); - _STLP_TRY { - if (_M_streambuf) - _M_streambuf->pubimbue(__loc); - - // no throwing here - _M_cached_ctype = &use_facet >(__loc); - } - _STLP_CATCH_ALL { - __tmp = ios_base::imbue(__tmp); - _M_handle_exception(ios_base::failbit); - } - return __tmp; -} - -// Protected constructor and initialization functions. The default -// constructor creates an uninitialized basic_ios, and init() initializes -// all of the members to the values in Table 89 of the C++ standard. - -template -basic_ios<_CharT, _Traits>::basic_ios() - : ios_base(), - _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0) -{} - -template -void -basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) -{ - this->rdbuf(__sb); - this->imbue(locale()); - this->tie(0); - this->_M_set_exception_mask(ios_base::goodbit); - this->_M_clear_nothrow(__sb != 0 ? ios_base::goodbit : ios_base::badbit); - ios_base::flags(ios_base::skipws | ios_base::dec); - ios_base::width(0); - ios_base::precision(6); - this->fill(widen(' ')); - // We don't need to worry about any of the three arrays: they are - // initialized correctly in ios_base's constructor. -} - -// This is never called except from within a catch clause. -template -void basic_ios<_CharT, _Traits>::_M_handle_exception(ios_base::iostate __flag) -{ - this->_M_setstate_nothrow(__flag); - if (this->_M_get_exception_mask() & __flag) - _STLP_RETHROW; -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_IOS_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_ios.h b/build/stlport/stlport/stl/_ios.h deleted file mode 100644 index 20422f0eab6b..000000000000 --- a/build/stlport/stlport/stl/_ios.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_INTERNAL_IOS_H -#define _STLP_INTERNAL_IOS_H - - -#ifndef _STLP_IOS_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_CTYPE_H -# include -#endif - -#ifndef _STLP_INTERNAL_NUMPUNCT_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// ---------------------------------------------------------------------- - -// Class basic_ios, a subclass of ios_base. The only important difference -// between the two is that basic_ios is a class template, parameterized -// by the character type. ios_base exists to factor out all of the -// common properties that don't depend on the character type. - -// The second template parameter, _Traits, defaults to char_traits<_CharT>. -// The default is declared in header , and it isn't declared here -// because C++ language rules do not allow it to be declared twice. - -template -class basic_ios : public ios_base { - friend class ios_base; -public: // Synonyms for types. - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - -public: // Constructor, destructor. - explicit basic_ios(basic_streambuf<_CharT, _Traits>* __streambuf); - virtual ~basic_ios() {} - -public: // Members from clause 27.4.4.2 - basic_ostream<_CharT, _Traits>* tie() const { - return _M_tied_ostream; - } - basic_ostream<_CharT, _Traits>* - tie(basic_ostream* __new_tied_ostream) { - basic_ostream* __tmp = _M_tied_ostream; - _M_tied_ostream = __new_tied_ostream; - return __tmp; - } - - basic_streambuf<_CharT, _Traits>* rdbuf() const - { return _M_streambuf; } - - basic_streambuf<_CharT, _Traits>* - rdbuf(basic_streambuf*); - - // Copies __x's state to *this. - basic_ios<_CharT, _Traits>& copyfmt(const basic_ios<_CharT, _Traits>& __x); - - char_type fill() const { return _M_fill; } - char_type fill(char_type __fill) { - char_type __tmp(_M_fill); - _M_fill = __fill; - return __tmp; - } - -public: // Members from 27.4.4.3. These four functions - // can almost be defined in ios_base. - - void clear(iostate __state = goodbit) { - _M_clear_nothrow(this->rdbuf() ? __state : iostate(__state|ios_base::badbit)); - _M_check_exception_mask(); - } - void setstate(iostate __state) { this->clear(rdstate() | __state); } - - iostate exceptions() const { return this->_M_get_exception_mask(); } - void exceptions(iostate __mask) { - this->_M_set_exception_mask(__mask); - this->clear(this->rdstate()); - } - -public: // Locale-related member functions. - locale imbue(const locale&); - - inline char narrow(_CharT, char) const ; - inline _CharT widen(char) const; - - // Helper function that makes testing for EOF more convenient. - static bool _STLP_CALL _S_eof(int_type __c) { - const int_type __eof = _Traits::eof(); - return _Traits::eq_int_type(__c, __eof); - } - -protected: - // Cached copy of the curent locale's ctype facet. Set by init() and imbue(). - const ctype* _M_cached_ctype; - -public: - // Equivalent to &use_facet< Facet >(getloc()), but faster. - const ctype* _M_ctype_facet() const { return _M_cached_ctype; } - -protected: - basic_ios(); - - void init(basic_streambuf<_CharT, _Traits>* __streambuf); - -public: - - // Helper function used in istream and ostream. It is called only from - // a catch clause. - void _M_handle_exception(ios_base::iostate __flag); - -private: // Data members - char_type _M_fill; // The fill character, used for padding. - - basic_streambuf<_CharT, _Traits>* _M_streambuf; - basic_ostream<_CharT, _Traits>* _M_tied_ostream; - -}; - - -template -inline char -basic_ios<_CharT, _Traits>::narrow(_CharT __c, char __default) const -{ return _M_ctype_facet()->narrow(__c, __default); } - -template -inline _CharT -basic_ios<_CharT, _Traits>::widen(char __c) const -{ return _M_ctype_facet()->widen(__c); } - -# if !defined (_STLP_NO_METHOD_SPECIALIZATION) -_STLP_TEMPLATE_NULL -inline char -basic_ios >::narrow(char __c, char) const -{ - return __c; -} - -_STLP_TEMPLATE_NULL -inline char -basic_ios >::widen(char __c) const -{ - return __c; -} -# endif /* _STLP_NO_METHOD_SPECIALIZATION */ - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_ios >; -# if ! defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_ios >; -# endif -# endif /* _STLP_USE_TEMPLATE_EXPORT */ - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_IOS */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_ios_base.h b/build/stlport/stlport/stl/_ios_base.h deleted file mode 100644 index 8c7a65bb2483..000000000000 --- a/build/stlport/stlport/stl/_ios_base.h +++ /dev/null @@ -1,347 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_IOS_BASE_H -#define _STLP_IOS_BASE_H - -#ifndef _STLP_INTERNAL_STDEXCEPT_BASE -# include -#endif - -#ifndef _STLP_INTERNAL_PAIR_H -# include -#endif - -#ifndef _STLP_INTERNAL_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// ---------------------------------------------------------------------- - -// Class ios_base. This is the base class of the ios hierarchy, which -// includes basic_istream and basic_ostream. Classes in the ios -// hierarchy are actually quite simple: they are just glorified -// wrapper classes. They delegate buffering and physical character -// manipulation to the streambuf classes, and they delegate most -// formatting tasks to a locale. - -class _STLP_CLASS_DECLSPEC ios_base { -public: - -# ifdef _STLP_USE_EXCEPTIONS - class _STLP_CLASS_DECLSPEC failure : public __Named_exception { - public: - explicit failure(const string&); - virtual ~failure() _STLP_NOTHROW_INHERENTLY; - }; -#endif - - typedef int fmtflags; - typedef int iostate; - typedef int openmode; - typedef int seekdir; - -# ifndef _STLP_NO_ANACHRONISMS - typedef fmtflags fmt_flags; -# endif - - // Formatting flags. - _STLP_STATIC_CONSTANT(int, left = 0x0001); - _STLP_STATIC_CONSTANT(int, right = 0x0002); - _STLP_STATIC_CONSTANT(int, internal = 0x0004); - _STLP_STATIC_CONSTANT(int, dec = 0x0008); - _STLP_STATIC_CONSTANT(int, hex = 0x0010); - _STLP_STATIC_CONSTANT(int, oct = 0x0020); - _STLP_STATIC_CONSTANT(int, fixed = 0x0040); - _STLP_STATIC_CONSTANT(int, scientific = 0x0080); - _STLP_STATIC_CONSTANT(int, boolalpha = 0x0100); - _STLP_STATIC_CONSTANT(int, showbase = 0x0200); - _STLP_STATIC_CONSTANT(int, showpoint = 0x0400); - _STLP_STATIC_CONSTANT(int, showpos = 0x0800); - _STLP_STATIC_CONSTANT(int, skipws = 0x1000); - _STLP_STATIC_CONSTANT(int, unitbuf = 0x2000); - _STLP_STATIC_CONSTANT(int, uppercase = 0x4000); - _STLP_STATIC_CONSTANT(int, adjustfield = left | right | internal); - _STLP_STATIC_CONSTANT(int, basefield = dec | hex | oct); - _STLP_STATIC_CONSTANT(int, floatfield = scientific | fixed); - - // State flags. - _STLP_STATIC_CONSTANT(int, goodbit = 0x00); - _STLP_STATIC_CONSTANT(int, badbit = 0x01); - _STLP_STATIC_CONSTANT(int, eofbit = 0x02); - _STLP_STATIC_CONSTANT(int, failbit = 0x04); - - // Openmode flags. - _STLP_STATIC_CONSTANT(int, __default_mode = 0x0); /* implementation detail */ - _STLP_STATIC_CONSTANT(int, app = 0x01); - _STLP_STATIC_CONSTANT(int, ate = 0x02); - _STLP_STATIC_CONSTANT(int, binary = 0x04); - _STLP_STATIC_CONSTANT(int, in = 0x08); - _STLP_STATIC_CONSTANT(int, out = 0x10); - _STLP_STATIC_CONSTANT(int, trunc = 0x20); - - // Seekdir flags - _STLP_STATIC_CONSTANT(int, beg = 0x01); - _STLP_STATIC_CONSTANT(int, cur = 0x02); - _STLP_STATIC_CONSTANT(int, end = 0x04); - -public: // Flag-manipulation functions. - fmtflags flags() const { return _M_fmtflags; } - fmtflags flags(fmtflags __flags) { - fmtflags __tmp = _M_fmtflags; - _M_fmtflags = __flags; - return __tmp; - } - - fmtflags setf(fmtflags __flag) { - fmtflags __tmp = _M_fmtflags; - _M_fmtflags |= __flag; - return __tmp; - } - fmtflags setf(fmtflags __flag, fmtflags __mask) { - fmtflags __tmp = _M_fmtflags; - _M_fmtflags &= ~__mask; - _M_fmtflags |= __flag & __mask; - return __tmp; - } - void unsetf(fmtflags __mask) { _M_fmtflags &= ~__mask; } - - streamsize precision() const { return _M_precision; } - streamsize precision(streamsize __newprecision) { - streamsize __tmp = _M_precision; - _M_precision = __newprecision; - return __tmp; - } - - streamsize width() const { return _M_width; } - streamsize width(streamsize __newwidth) { - streamsize __tmp = _M_width; - _M_width = __newwidth; - return __tmp; - } - -public: // Locales - locale imbue(const locale&); - locale getloc() const { return _M_locale; } - -public: // Auxiliary storage. - static int _STLP_CALL xalloc(); - long& iword(int __index); - void*& pword(int __index); - -public: // Destructor. - virtual ~ios_base(); - -public: // Callbacks. - enum event { erase_event, imbue_event, copyfmt_event }; - typedef void (*event_callback)(event, ios_base&, int __index); - void register_callback(event_callback __fn, int __index); - -public: // This member function affects only - // the eight predefined ios objects: - // cin, cout, etc. - static bool _STLP_CALL sync_with_stdio(bool __sync = true); - -public: // The C++ standard requires only that these - // member functions be defined in basic_ios. - // We define them in the non-template - // base class to avoid code duplication. - operator void*() const { return !fail() ? (void*) __CONST_CAST(ios_base*,this) : (void*) 0; } - bool operator!() const { return fail(); } - - iostate rdstate() const { return _M_iostate; } - - bool good() const { return _M_iostate == 0; } - bool eof() const { return (_M_iostate & eofbit) != 0; } - bool fail() const { return (_M_iostate & (failbit | badbit)) != 0; } - bool bad() const { return (_M_iostate & badbit) != 0; } - -protected: // The functional protected interface. - - // Copies the state of __x to *this. This member function makes it - // possible to implement basic_ios::copyfmt without having to expose - // ios_base's private data members. Does not copy _M_exception_mask - // or _M_iostate. - void _M_copy_state(const ios_base& __x); - - void _M_setstate_nothrow(iostate __state) { _M_iostate |= __state; } - void _M_clear_nothrow(iostate __state) { _M_iostate = __state; } - iostate _M_get_exception_mask() const { return _M_exception_mask; } - void _M_set_exception_mask(iostate __mask) { _M_exception_mask = __mask; } - void _M_check_exception_mask() { - if (_M_iostate & _M_exception_mask) - _M_throw_failure(); - } - - void _M_invoke_callbacks(event); - void _STLP_FUNCTION_THROWS _M_throw_failure(); - - ios_base(); // Default constructor. - -protected: // Initialization of the I/O system - static void _STLP_CALL _S_initialize(); - static void _STLP_CALL _S_uninitialize(); - static bool _S_is_synced; - -private: // Invalidate the copy constructor and - // assignment operator. - ios_base(const ios_base&); - void operator=(const ios_base&); - -private: // Data members. - - fmtflags _M_fmtflags; // Flags - iostate _M_iostate; - openmode _M_openmode; - seekdir _M_seekdir; - iostate _M_exception_mask; - - streamsize _M_precision; - streamsize _M_width; - - locale _M_locale; - - pair* _M_callbacks; - size_t _M_num_callbacks; // Size of the callback array. - size_t _M_callback_index; // Index of the next available callback; - // initially zero. - - long* _M_iwords; // Auxiliary storage. The count is zero - size_t _M_num_iwords; // if and only if the pointer is null. - - void** _M_pwords; - size_t _M_num_pwords; - -public: - // ---------------------------------------------------------------------- - // Nested initializer class. This is an implementation detail, but it's - // prescribed by the standard. The static initializer object (on - // implementations where such a thing is required) is declared in - // - class _STLP_CLASS_DECLSPEC Init - { - public: - Init(); - ~Init(); - private: - static long _S_count; - friend class ios_base; - }; - - friend class Init; - -public: -# ifndef _STLP_NO_ANACHRONISMS - // 31.6 Old iostreams members [depr.ios.members] - typedef iostate io_state; - typedef openmode open_mode; - typedef seekdir seek_dir; - typedef _STLP_STD::streamoff streamoff; - typedef _STLP_STD::streampos streampos; -# endif -}; - -// ---------------------------------------------------------------------- -// ios_base manipulator functions, from section 27.4.5 of the C++ standard. -// All of them are trivial one-line wrapper functions. - -// fmtflag manipulators, section 27.4.5.1 -inline ios_base& _STLP_CALL boolalpha(ios_base& __s) - { __s.setf(ios_base::boolalpha); return __s;} - -inline ios_base& _STLP_CALL noboolalpha(ios_base& __s) - { __s.unsetf(ios_base::boolalpha); return __s;} - -inline ios_base& _STLP_CALL showbase(ios_base& __s) - { __s.setf(ios_base::showbase); return __s;} - -inline ios_base& _STLP_CALL noshowbase(ios_base& __s) - { __s.unsetf(ios_base::showbase); return __s;} - -inline ios_base& _STLP_CALL showpoint(ios_base& __s) - { __s.setf(ios_base::showpoint); return __s;} - -inline ios_base& _STLP_CALL noshowpoint(ios_base& __s) - { __s.unsetf(ios_base::showpoint); return __s;} - -inline ios_base& _STLP_CALL showpos(ios_base& __s) - { __s.setf(ios_base::showpos); return __s;} - -inline ios_base& _STLP_CALL noshowpos(ios_base& __s) - { __s.unsetf(ios_base::showpos); return __s;} - -inline ios_base& _STLP_CALL skipws(ios_base& __s) - { __s.setf(ios_base::skipws); return __s;} - -inline ios_base& _STLP_CALL noskipws(ios_base& __s) - { __s.unsetf(ios_base::skipws); return __s;} - -inline ios_base& _STLP_CALL uppercase(ios_base& __s) - { __s.setf(ios_base::uppercase); return __s;} - -inline ios_base& _STLP_CALL nouppercase(ios_base& __s) - { __s.unsetf(ios_base::uppercase); return __s;} - -inline ios_base& _STLP_CALL unitbuf(ios_base& __s) - { __s.setf(ios_base::unitbuf); return __s;} - -inline ios_base& _STLP_CALL nounitbuf(ios_base& __s) - { __s.unsetf(ios_base::unitbuf); return __s;} - - -// adjustfield manipulators, section 27.4.5.2 -inline ios_base& _STLP_CALL internal(ios_base& __s) - { __s.setf(ios_base::internal, ios_base::adjustfield); return __s; } - -inline ios_base& _STLP_CALL left(ios_base& __s) - { __s.setf(ios_base::left, ios_base::adjustfield); return __s; } - -inline ios_base& _STLP_CALL right(ios_base& __s) - { __s.setf(ios_base::right, ios_base::adjustfield); return __s; } - -// basefield manipulators, section 27.4.5.3 -inline ios_base& _STLP_CALL dec(ios_base& __s) - { __s.setf(ios_base::dec, ios_base::basefield); return __s; } - -inline ios_base& _STLP_CALL hex(ios_base& __s) - { __s.setf(ios_base::hex, ios_base::basefield); return __s; } - -inline ios_base& _STLP_CALL oct(ios_base& __s) - { __s.setf(ios_base::oct, ios_base::basefield); return __s; } - - -// floatfield manipulators, section 27.4.5.3 -inline ios_base& _STLP_CALL fixed(ios_base& __s) - { __s.setf(ios_base::fixed, ios_base::floatfield); return __s; } - -inline ios_base& _STLP_CALL scientific(ios_base& __s) - { __s.setf(ios_base::scientific, ios_base::floatfield); return __s; } - -_STLP_END_NAMESPACE - -#endif /* _STLP_IOS_BASE */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_ioserr.h b/build/stlport/stlport/stl/_ioserr.h deleted file mode 100644 index 83ba8775b642..000000000000 --- a/build/stlport/stlport/stl/_ioserr.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - * This file is included in every header that needs the STLport library to be - * built; the header files mostly are the iostreams-headers. The file checks for - * _STLP_USE_NO_IOSTREAMS or _STLP_NO_IOSTREAMS being not defined, so that the - * iostreams part of STLport cannot be used when the symbols were defined - * accidentally. - */ -#if defined (_STLP_NO_IOSTREAMS) -# error STLport iostreams header cannot be used; you chose not to use iostreams in the STLport configuration file (stlport/stl/config/user_config.h). -#elif defined (_STLP_USE_NO_IOSTREAMS ) -# error STLport iostreams header cannot be used; your compiler do not support it. -#endif diff --git a/build/stlport/stlport/stl/_iosfwd.h b/build/stlport/stlport/stl/_iosfwd.h deleted file mode 100644 index e31db319c888..000000000000 --- a/build/stlport/stlport/stl/_iosfwd.h +++ /dev/null @@ -1,159 +0,0 @@ -#ifndef _STLP_INTERNAL_IOSFWD -#define _STLP_INTERNAL_IOSFWD - -#if defined (__sgi) && !defined (__GNUC__) && !defined (_STANDARD_C_PLUS_PLUS) -# error This header file requires the -LANG:std option -#endif - -// This file provides forward declarations of the most important I/O -// classes. Note that almost all of those classes are class templates, -// with default template arguments. According to the C++ standard, -// if a class template is declared more than once in the same scope -// then only one of those declarations may have default arguments. - -// contains the same declarations as other headers, and including -// both and (say) is permitted. This means that only -// one header may contain those default template arguments. - -// In this implementation, the declarations in contain default -// template arguments. All of the other I/O headers include . - -#ifndef _STLP_CHAR_TRAITS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -class ios_base; - -template ) > -class basic_ios; - -template ) > -class basic_streambuf; - -template ) > -class basic_istream; - -template ) > -class basic_ostream; - -template ) > -class basic_iostream; - -template ), - _STLP_DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) > -class basic_stringbuf; - -template ), - _STLP_DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) > -class basic_istringstream; - -template ), - _STLP_DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) > -class basic_ostringstream; - -template ), - _STLP_DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) > -class basic_stringstream; - -template ) > -class basic_filebuf; - -template ) > -class basic_ifstream; - -template ) > -class basic_ofstream; - -template ) > -class basic_fstream; - -template ) > -class istreambuf_iterator; - -template ) > -class ostreambuf_iterator; - -typedef basic_ios > ios; - -#if !defined (_STLP_NO_WCHAR_T) -typedef basic_ios > wios; -#endif - -// Forward declaration of class locale, and of the most important facets. -class locale; -template -#if defined (_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS) -struct _Use_facet { - const locale& __loc; - _Use_facet(const locale& __p_loc) : __loc(__p_loc) {} - inline const _Facet& operator *() const; -}; -# define use_facet *_Use_facet -#else -inline const _Facet& use_facet(const locale&); -#endif - -template class ctype; -template class ctype_byname; -template class collate; -template class collate_byname; - -_STLP_TEMPLATE_NULL class ctype; -_STLP_TEMPLATE_NULL class ctype_byname; -_STLP_TEMPLATE_NULL class collate; -_STLP_TEMPLATE_NULL class collate_byname; - -#if !defined (_STLP_NO_WCHAR_T) -_STLP_TEMPLATE_NULL class ctype; -_STLP_TEMPLATE_NULL class ctype_byname; -_STLP_TEMPLATE_NULL class collate; -_STLP_TEMPLATE_NULL class collate_byname; -#endif - -#if !(defined (__SUNPRO_CC) && __SUNPRO_CC < 0x500 ) -// Typedefs for ordinary (narrow-character) streams. -//_STLP_TEMPLATE_NULL class basic_streambuf >; -#endif - -typedef basic_istream > istream; -typedef basic_ostream > ostream; -typedef basic_iostream > iostream; -typedef basic_streambuf > streambuf; - -typedef basic_stringbuf, allocator > stringbuf; -typedef basic_istringstream, allocator > istringstream; -typedef basic_ostringstream, allocator > ostringstream; -typedef basic_stringstream, allocator > stringstream; - -typedef basic_filebuf > filebuf; -typedef basic_ifstream > ifstream; -typedef basic_ofstream > ofstream; -typedef basic_fstream > fstream; - -#if !defined (_STLP_NO_WCHAR_T) -// Typedefs for wide-character streams. -typedef basic_streambuf > wstreambuf; -typedef basic_istream > wistream; -typedef basic_ostream > wostream; -typedef basic_iostream > wiostream; - -typedef basic_stringbuf, allocator > wstringbuf; -typedef basic_istringstream, allocator > wistringstream; -typedef basic_ostringstream, allocator > wostringstream; -typedef basic_stringstream, allocator > wstringstream; - -typedef basic_filebuf > wfilebuf; -typedef basic_ifstream > wifstream; -typedef basic_ofstream > wofstream; -typedef basic_fstream > wfstream; -#endif - -_STLP_END_NAMESPACE - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_iostream_string.h b/build/stlport/stlport/stl/_iostream_string.h deleted file mode 100644 index 87656a4ce592..000000000000 --- a/build/stlport/stlport/stl/_iostream_string.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2004 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - - /* - * This is an internal string for the STLport own iostream implementation. - * The only diference rely on the allocator used to instanciate the basic_string. - * Its goals is to improve performance limitating the number of dynamic allocation - * that could occur when requesting a big float ouput for instance. This allocator - * is not standard conformant as it has an internal state (the static buffer) - */ - - -#ifndef _STLP_INTERNAL_IOSTREAM_STRING_H -#define _STLP_INTERNAL_IOSTREAM_STRING_H - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif /* _STLP_INTERNAL_ALLOC_H */ - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif /* _STLP_INTERNAL_STRING_H */ - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -class __iostring_allocator : public allocator<_CharT> { -public: - enum { _STR_SIZE = 256 }; - -private: - enum { _BUF_SIZE = _STR_SIZE + 1 }; - typedef allocator<_CharT> _Base; - _CharT _M_static_buf[_BUF_SIZE]; - -public: - typedef typename _Base::size_type size_type; - typedef typename _Base::pointer pointer; -#if defined (_STLP_MEMBER_TEMPLATE_CLASSES) - template struct rebind { -# if !defined (_STLP_MSVC) || (_STLP_MSVC >= 1300) - typedef __iostring_allocator<_Tp1> other; -# else - typedef _STLP_PRIV __iostring_allocator<_Tp1> other; -# endif - }; -#endif - - _CharT* allocate(size_type __n, const void* __ptr = 0) { - if (__n > _BUF_SIZE) { - return _Base::allocate(__n, __ptr); - } - return _M_static_buf; - } - void deallocate(pointer __p, size_type __n) { - if (__p != _M_static_buf) _Base::deallocate(__p, __n); - } -}; - -#if defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) || !defined (_STLP_MEMBER_TEMPLATES) -/* - * As the __iostring_allocator allocator will only be used in the basic_string implementation - * we known that it is never going to be bound to another type that the one used to instantiate - * the basic_string. This is why the associated __stl_alloc_rebind has only one template - * parameter. - */ -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline _STLP_PRIV __iostring_allocator<_Tp>& _STLP_CALL -__stl_alloc_rebind(_STLP_PRIV __iostring_allocator<_Tp>& __a, const _Tp*) -{ return __a; } -template -inline _STLP_PRIV __iostring_allocator<_Tp> _STLP_CALL -__stl_alloc_create(const _STLP_PRIV __iostring_allocator<_Tp>&, const _Tp*) -{ return _STLP_PRIV __iostring_allocator<_Tp>(); } - -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif /* _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE */ - -#if !defined (_STLP_DEBUG) -template -struct __basic_iostring : public basic_string<_CharT, char_traits<_CharT>, __iostring_allocator<_CharT> > { - /* - * A consequence of the non standard conformant allocator is that a string using it - * must always be presized to the allocator static buffer size because the basic_string implementation - * do not manage an allocator returning always the same memory adress as long as the - * requested memory block size is under a certain value. - */ - typedef __basic_iostring<_CharT> _Self; - typedef basic_string<_CharT, char_traits<_CharT>, __iostring_allocator<_CharT> > _Base; - typedef typename _Base::_Reserve_t _Reserve_t; - - __basic_iostring() : _Base(_Reserve_t(), __iostring_allocator<_CharT>::_STR_SIZE) - {} - - _Self& operator=(const _CharT* __s) { - _Base::operator=(__s); - return *this; - } -}; - -typedef __basic_iostring __iostring; - -# if !defined (_STLP_NO_WCHAR_T) -typedef __basic_iostring __iowstring; -# endif - -# define _STLP_BASIC_IOSTRING(_CharT) _STLP_PRIV __basic_iostring<_CharT> - -#else - -typedef string __iostring; -# if !defined (_STLP_NO_WCHAR_T) -typedef wstring __iowstring; -# endif - -# define _STLP_BASIC_IOSTRING(_CharT) basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > - -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_IOSTREAM_STRING_H */ diff --git a/build/stlport/stlport/stl/_istream.c b/build/stlport/stlport/stl/_istream.c deleted file mode 100644 index 724ad24b7386..000000000000 --- a/build/stlport/stlport/stl/_istream.c +++ /dev/null @@ -1,1428 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_ISTREAM_C -#define _STLP_ISTREAM_C - -#ifndef _STLP_INTERNAL_ISTREAM -# include -#endif - -#ifndef _STLP_INTERNAL_LIMITS -# include -#endif - -#ifndef _STLP_INTERNAL_NUM_GET_H -# include -#endif - -#if defined ( _STLP_NESTED_TYPE_PARAM_BUG ) -// no wchar_t is supported for this mode -# define __BIS_int_type__ int -# define __BIS_pos_type__ streampos -# define __BIS_off_type__ streamoff -#else -# define __BIS_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::int_type -# define __BIS_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::pos_type -# define __BIS_off_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::off_type -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// Function object structs used by some member functions. - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _Is_not_wspace { - typedef typename _Traits::char_type argument_type; - typedef bool result_type; - - const ctype* _M_ctype; - - _Is_not_wspace(const ctype* __c_type) : _M_ctype(__c_type) {} - bool operator()(argument_type __c) const - { return !_M_ctype->is(ctype_base::space, __c); } -}; - -template -struct _Is_wspace_null { - typedef typename _Traits::char_type argument_type; - typedef bool result_type; - - const ctype* _M_ctype; - - _Is_wspace_null(const ctype* __c_type) : _M_ctype(__c_type) {} - bool operator()(argument_type __c) const { - return _Traits::eq(__c, argument_type()) || - _M_ctype->is(ctype_base::space, __c); - } -}; - -template -struct _Scan_for_wspace { - typedef typename _Traits::char_type char_type; - typedef char_type* first_argument_type; - typedef char_type* second_argument_type; - typedef char_type* result_type; - - const ctype* _M_ctype; - - _Scan_for_wspace(const ctype* __ctype) : _M_ctype(__ctype) {} - const char_type* - operator()(const char_type* __first, const char_type* __last) const { - return _M_ctype->scan_is(ctype_base::space, __first, __last); - } -}; - -template -struct _Scan_wspace_null { - typedef typename _Traits::char_type char_type; - typedef char_type* first_argument_type; - typedef char_type* second_argument_type; - typedef char_type* result_type; - - const ctype* _M_ctype; - - _Scan_wspace_null(const ctype* __c_type) : _M_ctype(__c_type) {} - const char_type* - operator()(const char_type* __first, const char_type* __last) const { - __last = find_if(__first, __last, - _Eq_char_bound<_Traits>(char_type())); - return _M_ctype->scan_is(ctype_base::space, __first, __last); - } -}; - -template -struct _Scan_for_not_wspace { - typedef typename _Traits::char_type char_type; - typedef char_type* first_argument_type; - typedef char_type* second_argument_type; - typedef char_type* result_type; - - const ctype* _M_ctype; - - _Scan_for_not_wspace(const ctype* __c_type) : _M_ctype(__c_type) {} - const char_type* - operator()(const char_type* __first, const char_type* __last) const { - return _M_ctype->scan_not(ctype_base::space, __first, __last); - } -}; - -template -struct _Scan_for_char_val { - typedef typename _Traits::char_type char_type; - typedef char_type* first_argument_type; - typedef char_type* second_argument_type; - typedef char_type* result_type; - - char_type _M_val; - - _Scan_for_char_val(char_type __val) : _M_val(__val) {} - - const char_type* - operator()(const char_type* __first, const char_type* __last) const { - return find_if(__first, __last, _Eq_char_bound<_Traits>(_M_val)); - } -}; - -template -struct _Scan_for_int_val { - typedef typename _Traits::char_type char_type; - typedef typename _Traits::int_type int_type; - typedef char_type* first_argument_type; - typedef char_type* second_argument_type; - typedef char_type* result_type; - - int_type _M_val; - - _Scan_for_int_val(int_type __val) : _M_val(__val) {} - - const char_type* - operator()(const char_type* __first, const char_type* __last) const { - return find_if(__first, __last, - _Eq_int_bound<_Traits>(_M_val)); - } -}; - -// Helper function: try to push back a character to a streambuf, -// return true if the pushback succeeded. Does not throw. - -template -bool _STLP_CALL -__pushback(basic_streambuf<_CharT, _Traits>* __buf, _CharT __c) { - bool ret; - _STLP_TRY { - const typename _Traits::int_type __eof = _Traits::eof(); - ret = !_Traits::eq_int_type(__buf->sputbackc(__c), __eof); - } - _STLP_CATCH_ALL { - ret = false; - } - return ret; -} - -//---------------------------------------------------------------------- -// Definitions of basic_istream<>'s noninline member functions. - -// Helper function for formatted input of numbers. -template -ios_base::iostate _STLP_CALL -__get_num(basic_istream<_CharT, _Traits>& __that, _Number& __val) { - typedef typename basic_istream<_CharT, _Traits>::sentry _Sentry; - ios_base::iostate __err = 0; - _Sentry __sentry( __that ); // Skip whitespace. - if (__sentry) { - typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > _Num_get; - _STLP_TRY { - // Do not remove additional parenthesis around use_facet instanciation, some compilers (VC6) - // require it when building the library. - (use_facet<_Num_get>(__that.getloc())).get(istreambuf_iterator<_CharT, _Traits>(__that.rdbuf()), - 0, __that, __err, __val); - } - _STLP_CATCH_ALL { - __that._M_handle_exception(ios_base::badbit); - } - if (__err) __that.setstate(__err); - } - return __err; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (short& __val) { - long __lval; - _STLP_PRIV __get_num(*this, __lval); - if ( this->fail() ) { - return *this; - } - short __tmp = __STATIC_CAST(short, __lval); - unsigned short __uval = __STATIC_CAST(unsigned short, __lval); - // check if we lose digits - // if ((__val != __lval) && ((unsigned short)__val != __lval)) - if ((__tmp != __lval) && ((long)__uval != __lval)) - this->setstate(ios_base::failbit); - else - __val = __tmp; - return *this; -} - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (int& __val) { - long __lval; - _STLP_PRIV __get_num(*this, __lval); - if ( this->fail() ) { - return *this; - } - int __tmp = __lval; - unsigned int __uval = __lval; - // check if we lose digits - // if ((__val != __lval) && ((unsigned int)__val != __lval)) - if ((__tmp != __lval) && ((long)__uval != __lval)) - this->setstate(ios_base::failbit); - else - __val = __tmp; - return *this; -} - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (unsigned short& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (unsigned int& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (long& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (unsigned long& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} - -#if defined (_STLP_LONG_LONG) -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (_STLP_LONG_LONG& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (unsigned _STLP_LONG_LONG& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} -#endif -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (float& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (double& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} -#if !defined (_STLP_NO_LONG_DOUBLE) -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (long double& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} -#endif -#if !defined (_STLP_NO_BOOL) -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (bool& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} -#endif - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::operator>> (void*& __val) { - _STLP_PRIV __get_num(*this, __val); - return *this; -} - -// Unformatted input - -template -__BIS_int_type__ -basic_istream<_CharT, _Traits>::peek() { - typename _Traits::int_type __tmp = _Traits::eof(); - - this->_M_gcount = 0; - sentry __sentry(*this, _No_Skip_WS()); - - if (__sentry) { - _STLP_TRY { - __tmp = this->rdbuf()->sgetc(); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - if (this->_S_eof(__tmp)) - this->setstate(ios_base::eofbit); - } - - return __tmp; -} - - -template -__BIS_int_type__ -basic_istream<_CharT, _Traits>::get() { - typename _Traits::int_type __tmp = _Traits::eof(); - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry) { - _STLP_TRY { - __tmp = this->rdbuf()->sbumpc(); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - - if (!this->_S_eof(__tmp)) - this->_M_gcount = 1; - } - - if (_M_gcount == 0) - this->setstate(ios_base::eofbit | ios_base::failbit); - - return __tmp; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::get(_CharT& __c) { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry) { - typename _Traits::int_type __tmp = _Traits::eof(); - _STLP_TRY { - __tmp = this->rdbuf()->sbumpc(); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - - if (!this->_S_eof(__tmp)) { - this->_M_gcount = 1; - __c = _Traits::to_char_type(__tmp); - } - } - - if (this->_M_gcount == 0) - this->setstate(ios_base::eofbit | ios_base::failbit); - - return *this; -} - - -// Read characters and discard them. The standard specifies a single -// function with two arguments, each with a default. We instead use -// three overloded functions, because it's possible to implement the -// first two more efficiently than the fully general third version. -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::ignore() { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry) { - int_type __c; - _STLP_TRY { - __c = this->rdbuf()->sbumpc(); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - return *this; - } - - if (!this->_S_eof(__c)) - this->_M_gcount = 1; - else - this->setstate(ios_base::eofbit); - } - - return *this; -} - -// Putback - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::putback(_CharT __c) { - this->_M_gcount = 0; - sentry __sentry(*this, _No_Skip_WS()); - - if (__sentry) { - typename _Traits::int_type __tmp = _Traits::eof(); - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); -// if (!__buf || this->_S_eof(__buf->sputbackc(__c))) - if (__buf) { - _STLP_TRY { - __tmp = __buf->sputbackc(__c); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - } - if (this->_S_eof(__tmp)) - this->setstate(ios_base::badbit); - } - else - this->setstate(ios_base::failbit); - - return *this; -} - -template -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::unget() { - this->_M_gcount = 0; - - sentry __sentry(*this, _No_Skip_WS()); - - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - // if (!__buf || _Traits::eq_int_type(__buf->sungetc(), _Traits::eof())) - if (__buf) { - _STLP_TRY { - if (this->_S_eof(__buf->sungetc())) - this->setstate(ios_base::badbit); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - } else - this->setstate(ios_base::badbit); - } - else - this->setstate(ios_base::failbit); - - return *this; -} - -// Positioning and buffer control. - -template -int basic_istream<_CharT, _Traits>::sync() { - sentry __sentry(*this, _No_Skip_WS()); - - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - if (__buf) { - if (__buf->pubsync() == -1) { - this->setstate(ios_base::badbit); - return -1; - } - else - return 0; - } - else - return -1; -} - -template -__BIS_pos_type__ -basic_istream<_CharT, _Traits>::tellg() { - sentry __sentry(*this, _No_Skip_WS()); - - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - return (__buf && !this->fail()) ? __buf->pubseekoff(0, ios_base::cur, ios_base::in) - : pos_type(-1); -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::seekg(pos_type __pos) { - sentry __sentry(*this, _No_Skip_WS()); - - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - if (!this->fail() && __buf) { - if (__buf->pubseekpos(__pos, ios_base::in) == pos_type(-1)) { - this->setstate(ios_base::failbit); - } - } - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::seekg(off_type __off, ios_base::seekdir __dir) { - sentry __sentry(*this, _No_Skip_WS()); - - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - if (!this->fail() && __buf) - __buf->pubseekoff(__off, __dir, ios_base::in); - return *this; -} - -// Formatted input of characters and character arrays. - -template -void basic_istream<_CharT, _Traits>::_M_formatted_get(_CharT& __c) { -// typename _Traits::int_type __tmp = _Traits::eof(); - - sentry __sentry(*this); // Skip whitespace. - - if (__sentry) { - typename _Traits::int_type __tmp;// = _Traits::eof(); - - _STLP_TRY { - __tmp = this->rdbuf()->sbumpc(); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - return; - } - - if (!this->_S_eof(__tmp)) - __c = _Traits::to_char_type(__tmp); - else - this->setstate(ios_base::eofbit | ios_base::failbit); - } -} - - -//--------------------------------------------------------------------------- -// istream's helper functions. - -// A generic function for unbuffered input. We stop when we reach EOF, -// or when we have extracted _Num characters, or when the function object -// __is_delim return true. In the last case, it extracts the character -// for which __is_delim is true, if and only if __extract_delim is true. -// It appends a null character to the end of the string; this means that -// it may store up to _Num + 1 characters. -// -// __is_getline governs two corner cases: reading _Num characters without -// encountering delim or eof (in which case failbit is set if __is_getline -// is true); and reading _Num characters where the _Num+1'st character is -// eof (in which case eofbit is set if __is_getline is true). -// -// It is assumed that __is_delim never throws. -// -// Return value is the number of characters extracted, including the -// delimiter if it is extracted. Note that the number of characaters -// extracted isn't necessarily the same as the number stored. - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template < class _CharT, class _Traits, class _Is_Delim> -streamsize _STLP_CALL -__read_unbuffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __buf, - streamsize _Num, _CharT* __s, - _Is_Delim __is_delim, - bool __extract_delim, bool __append_null, - bool __is_getline) -{ - streamsize __n = 0; - ios_base::iostate __status = 0; - - typedef typename basic_istream<_CharT, _Traits>::int_type int_type; - // The operations that can potentially throw are sbumpc, snextc, and sgetc. - _STLP_TRY { - for (;;) { - if (__n == _Num) { - if (__is_getline) // didn't find delimiter as one of the _Num chars - __status |= ios_base::failbit; - break; - } - int_type __c = __buf->sbumpc(); // sschwarz - - if (__that->_S_eof(__c)) { - if (__n < _Num || __is_getline) - __status |= ios_base::eofbit; - break; - } else if (__is_delim(_Traits::to_char_type(__c))) { - if (__extract_delim) { // Extract and discard current character. - ++__n; - } else if ( !__pushback(__buf, _Traits::to_char_type(__c)) ) { // leave delimiter - __status |= ios_base::failbit; - } - break; - } - // regular character - *__s++ = _Traits::to_char_type(__c); - ++__n; - } - } - _STLP_CATCH_ALL { - __that->_M_handle_exception(ios_base::badbit); - *__s = _STLP_DEFAULT_CONSTRUCTED(_CharT); - return __n; - } - - if (__append_null) - *__s = _STLP_DEFAULT_CONSTRUCTED(_CharT); - if (__status) - __that->setstate(__status); // This might throw. - return __n; -} - -// Much like __read_unbuffered, but with one additional function object: -// __scan_delim(first, last) returns the first pointer p in [first, last) -// such that __is_delim(p) is true. - -template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim> -streamsize _STLP_CALL -__read_buffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __buf, - streamsize _Num, _CharT* __s, - _Is_Delim __is_delim, _Scan_Delim __scan_delim, - bool __extract_delim, bool __append_null, - bool __is_getline) { - streamsize __n = 0; - ios_base::iostate __status = 0; - bool __done = false; - - _STLP_TRY { - while (__buf->_M_egptr() != __buf->_M_gptr() && !__done) { - const _CharT* __first = __buf->_M_gptr(); - const _CharT* __last = __buf->_M_egptr(); - //casting numeric_limits::max to streamsize only works is ptrdiff_t is signed or streamsize representation - //is larger than ptrdiff_t one. - _STLP_STATIC_ASSERT((sizeof(streamsize) > sizeof(ptrdiff_t)) || - ((sizeof(streamsize) == sizeof(ptrdiff_t)) && numeric_limits::is_signed)) - ptrdiff_t __request = __STATIC_CAST(ptrdiff_t, (min) (__STATIC_CAST(streamsize, (numeric_limits::max)()), _Num - __n)); - - const _CharT* __p = __scan_delim(__first, __last); - ptrdiff_t __chunk = (min) (ptrdiff_t(__p - __first), __request); - _Traits::copy(__s, __first, __chunk); - __s += __chunk; - __n += __chunk; - __buf->_M_gbump((int)__chunk); - - // We terminated by finding delim. - if (__p != __last && __p - __first <= __request) { - if (__extract_delim) { - __n += 1; - __buf->_M_gbump(1); - } - __done = true; - } - - // We terminated by reading all the characters we were asked for. - else if (__n == _Num) { - - // Find out if we have reached eof. This matters for getline. - if (__is_getline) { - if (__chunk == __last - __first) { - if (__that->_S_eof(__buf->sgetc())) - __status |= ios_base::eofbit; - } - else - __status |= ios_base::failbit; - } - __done = true; - } - - // The buffer contained fewer than _Num - __n characters. Either we're - // at eof, or we should refill the buffer and try again. - else { - if (__that->_S_eof(__buf->sgetc())) { - __status |= ios_base::eofbit; - __done = true; - } - } - } // Close the while loop. - } - _STLP_CATCH_ALL { - __that->_M_handle_exception(ios_base::badbit); - __done = true; - } - - if (__done) { - if (__append_null) - *__s = _STLP_DEFAULT_CONSTRUCTED(_CharT); - if (__status != 0) - __that->setstate(__status); // This might throw. - return __n; - } - - // If execution has reached this point, then we have an empty buffer but - // we have not reached eof. What that means is that the streambuf has - // decided to switch from buffered to unbuffered input. We switch to - // to __read_unbuffered. - - return __n + __read_unbuffered(__that, __buf, _Num - __n, __s, __is_delim, - __extract_delim,__append_null,__is_getline); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::get(_CharT* __s, streamsize __n, - _CharT __delim) { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry) { - if (__n > 0) { - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - - if (__buf->egptr() != __buf->gptr()) - this->_M_gcount = - _STLP_PRIV __read_buffered(this, __buf, __n - 1, __s, - _STLP_PRIV _Eq_char_bound<_Traits>(__delim), - _STLP_PRIV _Scan_for_char_val<_Traits>(__delim), - false, true, false); - else - this->_M_gcount = - _STLP_PRIV __read_unbuffered(this, __buf, __n - 1, __s, - _STLP_PRIV _Eq_char_bound<_Traits>(__delim), - false, true, false); - } - } - - if (this->_M_gcount == 0) - this->setstate(ios_base::failbit); - - return *this; -} - -// Getline is essentially identical to get, except that it extracts -// the delimiter. -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::getline(_CharT* __s, streamsize __n, - _CharT __delim) { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry) { - if (__n > 0) { - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - this->_M_gcount = __buf->egptr() != __buf->gptr() - ? _STLP_PRIV __read_buffered(this, __buf, __n - 1, __s, - _STLP_PRIV _Eq_char_bound<_Traits>(__delim), - _STLP_PRIV _Scan_for_char_val<_Traits>(__delim), - true, true, true) - : _STLP_PRIV __read_unbuffered(this, __buf, __n - 1, __s, - _STLP_PRIV _Eq_char_bound<_Traits>(__delim), - true, true, true); - } - } - - if (this->_M_gcount == 0) - this->setstate(ios_base::failbit); - - return *this; -} - -// Read n characters. We don't look for any delimiter, and we don't -// put in a terminating null character. -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::read(char_type* __s, streamsize __n) { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry && !this->eof()) { - basic_streambuf<_CharT, _Traits>*__buf = this->rdbuf(); - if (__buf->gptr() != __buf->egptr()) - _M_gcount - = _STLP_PRIV __read_buffered(this, __buf, __n, __s, - _STLP_PRIV _Constant_unary_fun(false), - _STLP_PRIV _Project2nd(), - false, false, false); - else - _M_gcount - = _STLP_PRIV __read_unbuffered(this, __buf, __n, __s, - _STLP_PRIV _Constant_unary_fun(false), - false, false, false); - } - else - this->setstate(ios_base::failbit); - - if (this->eof()) - this->setstate(ios_base::eofbit | ios_base::failbit); - - return *this; -} - - -// Read n or fewer characters. We don't look for any delimiter, and -// we don't put in a terminating null character. -template -streamsize -basic_istream<_CharT, _Traits>::readsome(char_type* __s, streamsize __nmax) { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry && !this->eof() && __nmax >= 0) { - - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - streamsize __avail = __buf->in_avail(); - - // fbp : isn't full-blown setstate required here ? - if (__avail == -1) - this->_M_setstate_nothrow(ios_base::eofbit); - - else if (__avail != 0) { - - if (__buf->gptr() != __buf->egptr()) - _M_gcount - = _STLP_PRIV __read_buffered(this, __buf, (min) (__avail, __nmax), __s, - _STLP_PRIV _Constant_unary_fun(false), - _STLP_PRIV _Project2nd(), - false, false, false); - else - _M_gcount - = _STLP_PRIV __read_unbuffered(this, __buf, (min) (__avail, __nmax), __s, - _STLP_PRIV _Constant_unary_fun(false), - false, false, false); - } - } - else { - // fbp : changed so that failbit is set only there, to pass Dietmar's test - if (this->eof()) - this->setstate(ios_base::eofbit | ios_base::failbit); - else - this->setstate(ios_base::failbit); - } - - // if (this->eof()) - // this->setstate(ios_base::eofbit | ios_base::failbit); - - return _M_gcount; -} - -template -void basic_istream<_CharT, _Traits>::_M_formatted_get(_CharT* __s) { - sentry __sentry(*this); // Skip whitespace. - - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - streamsize __nmax = this->width() > 0 - ? this->width() - 1 - : ((numeric_limits::max)() / sizeof(_CharT)) - 1; - - streamsize __n = __buf->gptr() != __buf->egptr() - ? _STLP_PRIV __read_buffered(this, __buf, __nmax, __s, - _STLP_PRIV _Is_wspace_null<_Traits>(this->_M_ctype_facet()), - _STLP_PRIV _Scan_wspace_null<_Traits>(this->_M_ctype_facet()), - false, true, false) - : _STLP_PRIV __read_unbuffered(this, __buf, __nmax, __s, - _STLP_PRIV _Is_wspace_null<_Traits>(this->_M_ctype_facet()), - false, true, false); - if (__n == 0) - this->setstate(ios_base::failbit); - } - this->width(0); -} - -// A generic unbuffered function for ignoring characters. We stop -// when we reach EOF, or when the function object __is_delim returns -// true. In the last case, it extracts the character for which -// __is_delim is true, if and only if __extract_delim is true. - -template < class _CharT, class _Traits, class _Is_Delim> -void _STLP_CALL -_M_ignore_unbuffered(basic_istream<_CharT, _Traits>* __that, - basic_streambuf<_CharT, _Traits>* __buf, - _Is_Delim __is_delim, - bool __extract_delim, bool __set_failbit) { - bool __done = false; - ios_base::iostate __status = 0; - typedef typename basic_istream<_CharT, _Traits>::int_type int_type; - - _STLP_TRY { - while (!__done) { - int_type __c = __buf->sbumpc(); - - if (__that->_S_eof(__c)) { - __done = true; - __status |= __set_failbit ? ios_base::eofbit | ios_base::failbit - : ios_base::eofbit; - } - - else if (__is_delim(_Traits::to_char_type(__c))) { - __done = true; - if (!__extract_delim) - if (__that->_S_eof(__buf->sputbackc(_Traits::to_char_type(__c)))) - __status |= ios_base::failbit; - } - } - } - _STLP_CATCH_ALL { - __that->_M_handle_exception(ios_base::badbit); - } - - __that->setstate(__status); -} - -// A generic buffered function for ignoring characters. Much like -// _M_ignore_unbuffered, but with one additional function object: -// __scan_delim(first, last) returns the first pointer p in [first, -// last) such that __is_delim(p) is true. - -template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim> -void _STLP_CALL -_M_ignore_buffered(basic_istream<_CharT, _Traits>* __that, - basic_streambuf<_CharT, _Traits>* __buf, - _Is_Delim __is_delim, _Scan_Delim __scan_delim, - bool __extract_delim, bool __set_failbit) { - bool __at_eof = false; - bool __found_delim = false; - - _STLP_TRY { - while (__buf->_M_egptr() != __buf->_M_gptr() && !__at_eof && !__found_delim) { - const _CharT* __p = __scan_delim(__buf->_M_gptr(), __buf->_M_egptr()); - __buf->_M_gbump((int)(__p - __buf->_M_gptr())); - - if (__p != __buf->_M_egptr()) { // We found delim, so we're done. - if (__extract_delim) - __buf->_M_gbump(1); - __found_delim = true; - } - - else // No delim. Try to refil the buffer. - __at_eof = __that->_S_eof(__buf->sgetc()); - } // Close the while loop. - } - _STLP_CATCH_ALL { - __that->_M_handle_exception(ios_base::badbit); - return; - } - - if (__at_eof) { - __that->setstate(__set_failbit ? ios_base::eofbit | ios_base::failbit - : ios_base::eofbit); - return; - } - if (__found_delim) - return; - - // If execution has reached this point, then we have an empty buffer but - // we have not reached eof. What that means is that the streambuf has - // decided to switch from a buffered to an unbuffered mode. We switch - // to _M_ignore_unbuffered. - _M_ignore_unbuffered(__that, __buf, __is_delim, __extract_delim, __set_failbit); -} - -// Overloaded versions of _M_ignore_unbuffered and _M_ignore_unbuffered -// with an explicit count _Num. Return value is the number of -// characters extracted. -// -// The function object __max_chars takes two arguments, _Num and __n -// (the latter being the number of characters we have already read), -// and returns the maximum number of characters to read from the buffer. -// We parameterize _M_ignore_buffered so that we can use it for both -// bounded and unbounded input; for the former the function object should -// be minus<>, and for the latter it should return a constant maximum value. - -template < class _CharT, class _Traits, class _Max_Chars, class _Is_Delim> -streamsize _STLP_CALL -_M_ignore_unbuffered(basic_istream<_CharT, _Traits>* __that, - basic_streambuf<_CharT, _Traits>* __buf, - streamsize _Num, _Max_Chars __max_chars, - _Is_Delim __is_delim, - bool __extract_delim, bool __set_failbit) { - streamsize __n = 0; - ios_base::iostate __status = 0; - typedef typename basic_istream<_CharT, _Traits>::int_type int_type; - - _STLP_TRY { - while (__max_chars(_Num, __n) > 0) { - int_type __c = __buf->sbumpc(); - - if (__that->_S_eof(__c)) { - __status |= __set_failbit ? ios_base::eofbit | ios_base::failbit - : ios_base::eofbit; - break; - } - - else if (__is_delim(_Traits::to_char_type(__c))) { - if (__extract_delim) - ++__n; - else if (__that->_S_eof(__buf->sputbackc(_Traits::to_char_type(__c)))) - __status |= ios_base::failbit; - - break; - } - // fbp : added counter increment to pass Dietmar's test - ++__n; - } - } - _STLP_CATCH_ALL { - __that->_M_handle_exception(ios_base::badbit); - } - - if (__status) - __that->setstate(__status); // This might throw. - return __n; -} - -template < class _CharT, class _Traits, class _Max_Chars, class _Is_Delim, class _Scan_Delim> -streamsize _STLP_CALL -_M_ignore_buffered(basic_istream<_CharT, _Traits>* __that, - basic_streambuf<_CharT, _Traits>* __buf, - streamsize _Num, - _Max_Chars __max_chars, - _Is_Delim __is_delim, _Scan_Delim __scan_delim, - bool __extract_delim, bool __set_failbit) { - streamsize __n = 0; - bool __at_eof = false; - bool __done = false; - - _STLP_TRY { - while (__buf->_M_egptr() != __buf->_M_gptr() && !__done) { - ptrdiff_t __avail = __buf->_M_egptr() - __buf->_M_gptr(); - streamsize __m = __max_chars(_Num, __n); - - if (__avail >= __m) { // We have more characters than we need. - const _CharT* __last = __buf->_M_gptr() + __STATIC_CAST(ptrdiff_t, __m); - const _CharT* __p = __scan_delim(__buf->_M_gptr(), __last); - ptrdiff_t __chunk = __p - __buf->_M_gptr(); - __n += __chunk; - __buf->_M_gbump((int)__chunk); - - if (__extract_delim && __p != __last) { - __n += 1; - __buf->_M_gbump(1); - } - - __done = true; - } - - else { - const _CharT* __p = __scan_delim(__buf->_M_gptr(), __buf->_M_egptr()); - ptrdiff_t __chunk = __p - __buf->_M_gptr(); - __n += __chunk; - __buf->_M_gbump((int)__chunk); - - if (__p != __buf->_M_egptr()) { // We found delim. - if (__extract_delim) { - __n += 1; - __buf->_M_gbump(1); - } - - __done = true; - } - - // We didn't find delim. Try to refill the buffer. - else if (__that->_S_eof(__buf->sgetc())) { - __done = true; - __at_eof = true; - } - } - } // Close the while loop. - } - _STLP_CATCH_ALL { - __that->_M_handle_exception(ios_base::badbit); - return __n; - } - - if (__at_eof) - __that->setstate(__set_failbit ? ios_base::eofbit | ios_base::failbit - : ios_base::eofbit); - - if (__done) - return __n; - - // If execution has reached this point, then we have an empty buffer but - // we have not reached eof. What that means is that the streambuf has - // decided to switch from buffered to unbuffered input. We switch to - // to _M_ignore_unbuffered. - - return __n + _M_ignore_unbuffered(__that, __buf, _Num, __max_chars, - __is_delim, __extract_delim, __set_failbit); -} - - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::ignore(streamsize __n) { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - typedef _STLP_PRIV _Constant_unary_fun _Const_bool; - typedef _STLP_PRIV _Constant_binary_fun _Const_streamsize; - const streamsize __maxss = (numeric_limits::max)(); - - if (__n == (numeric_limits::max)()) { - if (__buf->gptr() != __buf->egptr()) - _M_gcount = _M_ignore_buffered(this, __buf, - __maxss, _Const_streamsize(__maxss), - _Const_bool(false), - _STLP_PRIV _Project2nd(), - false, false); - else - _M_gcount = _M_ignore_unbuffered(this, __buf, - __maxss, _Const_streamsize(__maxss), - _Const_bool(false), false, false); - } - else { - if (__buf->gptr() != __buf->egptr()) - _M_gcount = _M_ignore_buffered(this, __buf, - __n, minus(), - _Const_bool(false), - _STLP_PRIV _Project2nd(), - false, false); - else - _M_gcount = _M_ignore_unbuffered(this, __buf, __n, minus(), - _Const_bool(false), false, false); - } - } - - return *this; -} - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits>::ignore(streamsize __n, int_type __delim) { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - typedef _STLP_PRIV _Constant_binary_fun - _Const_streamsize; - const streamsize __maxss = (numeric_limits::max)(); - - if (__n == (numeric_limits::max)()) { - if (__buf->gptr() != __buf->egptr()) - _M_gcount = _M_ignore_buffered(this, __buf, - __maxss, _Const_streamsize(__maxss), - _STLP_PRIV _Eq_int_bound<_Traits>(__delim), - _STLP_PRIV _Scan_for_int_val<_Traits>(__delim), - true, false); - else - _M_gcount = _M_ignore_unbuffered(this, __buf, - __maxss, _Const_streamsize(__maxss), - _STLP_PRIV _Eq_int_bound<_Traits>(__delim), - true, false); - } - else { - if (__buf->gptr() != __buf->egptr()) - _M_gcount = _M_ignore_buffered(this, __buf, - __n, minus(), - _STLP_PRIV _Eq_int_bound<_Traits>(__delim), - _STLP_PRIV _Scan_for_int_val<_Traits>(__delim), - true, false); - else - _M_gcount = _M_ignore_unbuffered(this, __buf, __n, minus(), - _STLP_PRIV _Eq_int_bound<_Traits>(__delim), - true, false); - } - } - - return *this; -} - -// This member function does not construct a sentry object, because -// it is called from sentry's constructor. -template -void basic_istream<_CharT, _Traits>::_M_skip_whitespace(bool __set_failbit) { - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - if (!__buf) - this->setstate(ios_base::badbit); - else if (__buf->gptr() != __buf->egptr()) - _M_ignore_buffered(this, __buf, - _STLP_PRIV _Is_not_wspace<_Traits>(this->_M_ctype_facet()), - _STLP_PRIV _Scan_for_not_wspace<_Traits>(this->_M_ctype_facet()), - false, __set_failbit); - else - _M_ignore_unbuffered(this, __buf, - _STLP_PRIV _Is_not_wspace<_Traits>(this->_M_ctype_facet()), - false, __set_failbit); -} - - -// This is a very simple loop that reads characters from __src and puts -// them into __dest. It looks complicated because of the (standard- -// mandated) exception handling policy. -// -// We stop when we get an exception, when we fail to insert into the -// output streambuf, or when __is_delim is true. - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template < class _CharT, class _Traits, class _Is_Delim> -streamsize _STLP_CALL -__copy_unbuffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __src, - basic_streambuf<_CharT, _Traits>* __dest, - _Is_Delim __is_delim, - bool __extract_delim, bool __rethrow) { - streamsize __extracted = 0; - ios_base::iostate __status = 0; - typedef typename basic_istream<_CharT, _Traits>::int_type int_type; - int_type __c; - - _STLP_TRY { - for (;;) { - // Get a character. If there's an exception, catch and (maybe) rethrow it. - __c = __src->sbumpc(); - - // If we failed to get a character, then quit. - if (__that->_S_eof(__c)) { - __status |= ios_base::eofbit; - break; - } - // If it's the delimiter, then quit. - else if (__is_delim(_Traits::to_char_type(__c))) { - if (!__extract_delim && !__pushback(__src, _Traits::to_char_type(__c))) - __status |= ios_base::failbit; - break; - } - else { - // Try to put the character in the output streambuf. - bool __failed = false; - _STLP_TRY { - if (!__that->_S_eof(__dest->sputc(_Traits::to_char_type(__c)))) - ++__extracted; - else - __failed = true; - } - _STLP_CATCH_ALL { - __failed = true; - } - - // If we failed to put the character in the output streambuf, then - // try to push it back to the input streambuf. - if (__failed && !__pushback(__src, _Traits::to_char_type(__c))) - __status |= ios_base::failbit; - - // fbp : avoiding infinite loop in io-27-6-1-2-3.exp - if (__failed) - break; - } - - } /* for (;;) */ - - } - // fbp : this try/catch moved here in reasonable assumption - // __is_delim never throw (__pushback is guaranteed not to) - _STLP_CATCH_ALL { - // See 27.6.1.2.3, paragraph 13. - if (__rethrow && __extracted == 0) - __that->_M_handle_exception(ios_base::failbit); - } - __that->setstate(__status); - return __extracted; -} - -// Buffered copying from one streambuf to another. We copy the characters -// in chunks, rather than one at a time. We still have to worry about all -// of the error conditions we checked in __copy_unbuffered, plus one more: -// the streambuf might decide to switch from a buffered to an unbuffered mode. - -template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim> -streamsize _STLP_CALL -__copy_buffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __src, - basic_streambuf<_CharT, _Traits>* __dest, - _Scan_Delim __scan_delim, _Is_Delim __is_delim, - bool __extract_delim, bool __rethrow) { - streamsize __extracted = 0; - ios_base::iostate __status = 0; - typedef typename basic_istream<_CharT, _Traits>::int_type int_type; - //Borland compiler generates a warning if assignment because value is never used: - int_type __c /*= _Traits::eof()*/; - _CharT* __first = __src->_M_gptr(); - ptrdiff_t __avail = __src->_M_egptr() - __first; - // fbp : introduced to move catch/try blocks out of the loop - bool __do_handle_exceptions = false; - - _STLP_TRY { - for (;;) { - const _CharT* __last = __scan_delim(__first, __src->_M_egptr()); - - // Try to copy the entire input buffer to the output buffer. - streamsize __n = __dest->sputn(__first, __extract_delim && __last != __src->_M_egptr() - ? (__last - __first) + 1 - : (__last - __first)); - __src->_M_gbump((int)__n); - __extracted += __n; - - // from this on, catch() will call _M_handle_exceptions() - __do_handle_exceptions = true; - - if (__n < __avail) // We found the delimiter, or else failed to - break; // copy some characters. - - __c = __src->sgetc(); - - // Three possibilities: we succeeded in refilling the buffer, or - // we got EOF, or the streambuf has switched to unbuffered mode. - __first = __src->_M_gptr(); - __avail = __src->_M_egptr() - __first; - - if (__avail > 0) - {} // dwa 1/16/00 -- suppress a Metrowerks warning - else if (__that->_S_eof(__c)) { - __status |= ios_base::eofbit; - break; - } - else { - return __extracted + __copy_unbuffered(__that, __src, __dest, __is_delim, - __extract_delim, __rethrow); - } - - __do_handle_exceptions = false; - } - } - - _STLP_CATCH_ALL { - // See 27.6.1.2.3, paragraph 13. - if (__rethrow && __do_handle_exceptions && __extracted == 0) - __that->_M_handle_exception(ios_base::failbit); - } - - if (__status) - __that->setstate(__status); // This might throw. - return __extracted; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits> - ::get(basic_streambuf<_CharT, _Traits>& __dest, _CharT __delim) { - sentry __sentry(*this, _No_Skip_WS()); - this->_M_gcount = 0; - - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __src = this->rdbuf(); - - if (__src) - this->_M_gcount = __src->egptr() != __src->gptr() - ? _STLP_PRIV __copy_buffered(this, __src, &__dest, - _STLP_PRIV _Scan_for_char_val<_Traits>(__delim), - _STLP_PRIV _Eq_char_bound<_Traits>(__delim), - false, false) - : _STLP_PRIV __copy_unbuffered(this, __src, &__dest, - _STLP_PRIV _Eq_char_bound<_Traits>(__delim), - false, false); - } - - if (this->_M_gcount == 0) - this->setstate(ios_base::failbit); - - return *this; -} - -// Copying characters into a streambuf. -template -basic_istream<_CharT, _Traits>& -basic_istream<_CharT, _Traits> - ::operator>>(basic_streambuf<_CharT, _Traits>* __dest) { - streamsize __n = 0; - typedef typename basic_istream<_CharT, _Traits>::sentry _Sentry; - _Sentry __sentry(*this); - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __src = this->rdbuf(); - if (__src && __dest) - __n = __src->egptr() != __src->gptr() - ? _STLP_PRIV __copy_buffered(this, __src, __dest, - _STLP_PRIV _Project2nd(), - _STLP_PRIV _Constant_unary_fun(false), - false, true) - : _STLP_PRIV __copy_unbuffered(this, __src, __dest, - _STLP_PRIV _Constant_unary_fun(false), - false, true); - } - - if (__n == 0) - this->setstate(ios_base::failbit); - - return *this; -} - -// ---------------------------------------------------------------- -// basic_iostream<> class -// ---------------------------------------------------------------- - -template -basic_iostream<_CharT, _Traits> - ::basic_iostream(basic_streambuf<_CharT, _Traits>* __buf) - : basic_ios<_CharT, _Traits>(), - basic_istream<_CharT, _Traits>(__buf), - basic_ostream<_CharT, _Traits>(__buf) { - this->init(__buf); -} - -template -basic_iostream<_CharT, _Traits>::~basic_iostream() -{} - -_STLP_END_NAMESPACE - -#undef __BIS_int_type__ -#undef __BIS_pos_type__ -#undef __BIS_off_type__ - -#endif /* _STLP_ISTREAM_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_istream.h b/build/stlport/stlport/stl/_istream.h deleted file mode 100644 index 6b38d03c7787..000000000000 --- a/build/stlport/stlport/stl/_istream.h +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_INTERNAL_ISTREAM -#define _STLP_INTERNAL_ISTREAM - -// this block is included by _ostream.h, we include it here to lower #include level -#if defined (_STLP_HAS_WCHAR_T) && !defined (_STLP_INTERNAL_CWCHAR) -# include -#endif - -#ifndef _STLP_INTERNAL_IOS_H -# include // For basic_ios<>. Includes . -#endif - -#ifndef _STLP_INTERNAL_OSTREAM_H -# include // Needed as a base class of basic_iostream. -#endif - -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H -# include -#endif - -#include // Helper functions that allow char traits - // to be used as function objects. -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -template -class _Isentry; -#endif - -struct _No_Skip_WS {}; // Dummy class used by sentry. - -template -bool _M_init_skip(basic_istream<_CharT, _Traits>& __istr); -template -bool _M_init_noskip(basic_istream<_CharT, _Traits>& __istr); - -//---------------------------------------------------------------------- -// Class basic_istream, a class that performs formatted input through -// a stream buffer. - -// The second template parameter, _Traits, defaults to char_traits<_CharT>. -// The default is declared in header , and it isn't declared here -// because C++ language rules do not allow it to be declared twice. - -template -class basic_istream : virtual public basic_ios<_CharT, _Traits> { - typedef basic_istream<_CharT, _Traits> _Self; - -#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) - //explicitely defined as private to avoid warnings: - basic_istream(_Self const&); - _Self& operator = (_Self const&); -#endif - -public: - // Types - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - typedef basic_ios<_CharT, _Traits> _Basic_ios; - - typedef basic_ios<_CharT, _Traits>& (_STLP_CALL *__ios_fn)(basic_ios<_CharT, _Traits>&); - typedef ios_base& (_STLP_CALL *__ios_base_fn)(ios_base&); - typedef _Self& (_STLP_CALL *__istream_fn)(_Self&); - -public: // Constructor and destructor. - explicit basic_istream(basic_streambuf<_CharT, _Traits>* __buf) : - basic_ios<_CharT, _Traits>(), _M_gcount(0) { - this->init(__buf); - } - ~basic_istream() {}; - -public: // Nested sentry class. - -public: // Hooks for manipulators. The arguments are - // function pointers. - _Self& operator>> (__istream_fn __f) { return __f(*this); } - _Self& operator>> (__ios_fn __f) { __f(*this); return *this; } - _Self& operator>> (__ios_base_fn __f) { __f(*this); return *this; } - -public: // Formatted input of numbers. - _Self& operator>> (short& __val); - _Self& operator>> (int& __val); - _Self& operator>> (unsigned short& __val); - _Self& operator>> (unsigned int& __val); - _Self& operator>> (long& __val); - _Self& operator>> (unsigned long& __val); -#ifdef _STLP_LONG_LONG - _Self& operator>> (_STLP_LONG_LONG& __val); - _Self& operator>> (unsigned _STLP_LONG_LONG& __val); -#endif - _Self& operator>> (float& __val); - _Self& operator>> (double& __val); -# ifndef _STLP_NO_LONG_DOUBLE - _Self& operator>> (long double& __val); -# endif -# ifndef _STLP_NO_BOOL - _Self& operator>> (bool& __val); -# endif - _Self& operator>> (void*& __val); - -public: // Copying characters into a streambuf. - _Self& operator>>(basic_streambuf<_CharT, _Traits>*); - -public: // Unformatted input. - streamsize gcount() const { return _M_gcount; } - int_type peek(); - -public: // get() for single characters - int_type get(); - _Self& get(char_type& __c); - -public: // get() for character arrays. - _Self& get(char_type* __s, streamsize __n, char_type __delim); - _Self& get(char_type* __s, streamsize __n) - { return get(__s, __n, this->widen('\n')); } - -public: // get() for streambufs - _Self& get(basic_streambuf<_CharT, _Traits>& __buf, - char_type __delim); - _Self& get(basic_streambuf<_CharT, _Traits>& __buf) - { return get(__buf, this->widen('\n')); } - -public: // getline() - _Self& getline(char_type* __s, streamsize __n, char_type delim); - _Self& getline(char_type* __s, streamsize __n) - { return getline(__s, __n, this->widen('\n')); } - -public: // read(), readsome(), ignore() - _Self& ignore(); - _Self& ignore(streamsize __n); - _Self& ignore(streamsize __n, int_type __delim); - - _Self& read(char_type* __s, streamsize __n); - streamsize readsome(char_type* __s, streamsize __n); - -public: // putback - _Self& putback(char_type __c); - _Self& unget(); - -public: // Positioning and buffer control. - int sync(); - - pos_type tellg(); - _Self& seekg(pos_type __pos); - _Self& seekg(off_type, ios_base::seekdir); - -public: // Helper functions for non-member extractors. - void _M_formatted_get(_CharT& __c); - void _M_formatted_get(_CharT* __s); - void _M_skip_whitespace(bool __set_failbit); - -private: // Number of characters extracted by the - streamsize _M_gcount; // most recent unformatted input function. - -public: - -#if defined (_STLP_USE_TEMPLATE_EXPORT) - // If we are using DLL specs, we have not to use inner classes - // end class declaration here - typedef _Isentry<_CharT, _Traits> sentry; -}; -# define sentry _Isentry -template -class _Isentry { - typedef _Isentry<_CharT, _Traits> _Self; -# else - class sentry { - typedef sentry _Self; -#endif - - private: - const bool _M_ok; - // basic_streambuf<_CharT, _Traits>* _M_buf; - - public: - typedef _Traits traits_type; - - explicit sentry(basic_istream<_CharT, _Traits>& __istr, - bool __noskipws = false) : - _M_ok((__noskipws || !(__istr.flags() & ios_base::skipws)) ? _M_init_noskip(__istr) : _M_init_skip(__istr) ) - /* , _M_buf(__istr.rdbuf()) */ - {} - - // Calling this constructor is the same as calling the previous one with - // __noskipws = true, except that it doesn't require a runtime test. - sentry(basic_istream<_CharT, _Traits>& __istr, _No_Skip_WS) : /* _M_buf(__istr.rdbuf()), */ - _M_ok(_M_init_noskip(__istr)) {} - - ~sentry() {} - - operator bool() const { return _M_ok; } - - private: // Disable assignment and copy constructor. - //Implementation is here only to avoid warning with some compilers. - sentry(const _Self&) : _M_ok(false) {} - _Self& operator=(const _Self&) { return *this; } - }; - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -# undef sentry -# else - // close basic_istream class definition here -}; -# endif - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS _Isentry >; -_STLP_EXPORT_TEMPLATE_CLASS basic_istream >; -# if ! defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS _Isentry >; -_STLP_EXPORT_TEMPLATE_CLASS basic_istream >; -# endif -# endif /* _STLP_USE_TEMPLATE_EXPORT */ - -// Non-member character and string extractor functions. -template -inline basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __in_str, _CharT& __c) { - __in_str._M_formatted_get(__c); - return __in_str; -} - -template -inline basic_istream& _STLP_CALL -operator>>(basic_istream& __in_str, unsigned char& __c) { - __in_str._M_formatted_get(__REINTERPRET_CAST(char&,__c)); - return __in_str; -} - -template -inline basic_istream& _STLP_CALL -operator>>(basic_istream& __in_str, signed char& __c) { - __in_str._M_formatted_get(__REINTERPRET_CAST(char&,__c)); - return __in_str; -} - -template -inline basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __in_str, _CharT* __s) { - __in_str._M_formatted_get(__s); - return __in_str; -} - -template -inline basic_istream& _STLP_CALL -operator>>(basic_istream& __in_str, unsigned char* __s) { - __in_str._M_formatted_get(__REINTERPRET_CAST(char*,__s)); - return __in_str; -} - -template -inline basic_istream& _STLP_CALL -operator>>(basic_istream& __in_str, signed char* __s) { - __in_str._M_formatted_get(__REINTERPRET_CAST(char*,__s)); - return __in_str; -} - -//---------------------------------------------------------------------- -// istream manipulator. -template -basic_istream<_CharT, _Traits>& _STLP_CALL -ws(basic_istream<_CharT, _Traits>& __istr) { - if (!__istr.eof()) { - typedef typename basic_istream<_CharT, _Traits>::sentry _Sentry; - _Sentry __sentry(__istr, _No_Skip_WS()); // Don't skip whitespace. - if (__sentry) - __istr._M_skip_whitespace(false); - } - return __istr; -} - -// Helper functions for istream<>::sentry constructor. -template -inline bool _M_init_skip(basic_istream<_CharT, _Traits>& __istr) { - if (__istr.good()) { - if (__istr.tie()) - __istr.tie()->flush(); - - __istr._M_skip_whitespace(true); - } - - if (!__istr.good()) { - __istr.setstate(ios_base::failbit); - return false; - } else - return true; -} - -template -inline bool _M_init_noskip(basic_istream<_CharT, _Traits>& __istr) { - if (__istr.good()) { - if (__istr.tie()) - __istr.tie()->flush(); - - if (!__istr.rdbuf()) - __istr.setstate(ios_base::badbit); - } - else - __istr.setstate(ios_base::failbit); - return __istr.good(); -} - -//---------------------------------------------------------------------- -// Class iostream. -template -class basic_iostream - : public basic_istream<_CharT, _Traits>, - public basic_ostream<_CharT, _Traits> -{ -public: - typedef basic_ios<_CharT, _Traits> _Basic_ios; - - explicit basic_iostream(basic_streambuf<_CharT, _Traits>* __buf); - virtual ~basic_iostream(); -}; - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_iostream >; - -# if ! defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_iostream >; -# endif -# endif /* _STLP_USE_TEMPLATE_EXPORT */ - -template -basic_streambuf<_CharT, _Traits>* _STLP_CALL _M_get_istreambuf(basic_istream<_CharT, _Traits>& __istr) -{ return __istr.rdbuf(); } - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_ISTREAM */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_istreambuf_iterator.h b/build/stlport/stlport/stl/_istreambuf_iterator.h deleted file mode 100644 index 9f340cb51708..000000000000 --- a/build/stlport/stlport/stl/_istreambuf_iterator.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H -#define _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_STREAMBUF -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// defined in _istream.h -template -extern basic_streambuf<_CharT, _Traits>* _STLP_CALL _M_get_istreambuf(basic_istream<_CharT, _Traits>& ) ; - -// We do not read any characters until operator* is called. operator* calls sgetc -// unless the iterator is unchanged from the last call in which case a cached value is -// used. Calls to operator++ use sbumpc. - -template -class istreambuf_iterator : - public iterator -{ -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename _Traits::int_type int_type; - typedef basic_streambuf<_CharT, _Traits> streambuf_type; - typedef basic_istream<_CharT, _Traits> istream_type; - - typedef input_iterator_tag iterator_category; - typedef _CharT value_type; - typedef typename _Traits::off_type difference_type; - typedef const _CharT* pointer; - typedef const _CharT& reference; - -public: - istreambuf_iterator(streambuf_type* __p = 0) { this->_M_init(__p); } - // istreambuf_iterator(basic_istream<_CharT, _Traits>& __is) { this->_M_init(_M_get_istreambuf(__is)); } - inline istreambuf_iterator(basic_istream<_CharT, _Traits>& __is); - - char_type operator*() const { this->_M_getc(); return _M_c; } - istreambuf_iterator<_CharT, _Traits>& operator++() { - _M_buf->sbumpc(); - _M_have_c = false; - return *this; - } - istreambuf_iterator<_CharT, _Traits> operator++(int); - - bool equal(const istreambuf_iterator<_CharT, _Traits>& __i) const { - if (this->_M_buf) - this->_M_getc(); - if (__i._M_buf) - __i._M_getc(); - return this->_M_eof == __i._M_eof; - } - -private: - void _M_init(streambuf_type* __p) { - _M_buf = __p; - _M_eof = (__p == 0); - _M_have_c = false; - } - - void _M_getc() const { - if (_M_have_c) - return; - int_type __c = _M_buf->sgetc(); - _STLP_MUTABLE(_Self, _M_c) = traits_type::to_char_type(__c); - _STLP_MUTABLE(_Self, _M_eof) = traits_type::eq_int_type(__c, traits_type::eof()); - _STLP_MUTABLE(_Self, _M_have_c) = true; - } - -private: - streambuf_type* _M_buf; - mutable _CharT _M_c; - mutable bool _M_eof; - mutable bool _M_have_c; -}; - -template -inline istreambuf_iterator<_CharT, _Traits>::istreambuf_iterator(basic_istream<_CharT, _Traits>& __is) -{ this->_M_init(_M_get_istreambuf(__is)); } - -template -inline bool _STLP_CALL operator==(const istreambuf_iterator<_CharT, _Traits>& __x, - const istreambuf_iterator<_CharT, _Traits>& __y) { - return __x.equal(__y); -} - -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE - -template -inline bool _STLP_CALL operator!=(const istreambuf_iterator<_CharT, _Traits>& __x, - const istreambuf_iterator<_CharT, _Traits>& __y) { - return !__x.equal(__y); -} - -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS istreambuf_iterator >; -# if defined (INSTANTIATE_WIDE_STREAMS) -_STLP_EXPORT_TEMPLATE_CLASS istreambuf_iterator >; -# endif -# endif /* _STLP_USE_TEMPLATE_EXPORT */ - -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES -template -inline input_iterator_tag _STLP_CALL iterator_category(const istreambuf_iterator<_CharT, _Traits>&) { return input_iterator_tag(); } -template -inline streamoff* _STLP_CALL -distance_type(const istreambuf_iterator<_CharT, _Traits>&) { return (streamoff*)0; } -template -inline _CharT* _STLP_CALL value_type(const istreambuf_iterator<_CharT, _Traits>&) { return (_CharT*)0; } -# endif - -template -istreambuf_iterator<_CharT, _Traits> -istreambuf_iterator<_CharT, _Traits>::operator++(int) { - _M_getc(); // __tmp should avoid any future actions under - // underlined buffer---during call of operator *() - // (due to buffer for *this and __tmp are the same). - istreambuf_iterator<_CharT, _Traits> __tmp = *this; - _M_buf->sbumpc(); - _M_have_c = false; - return __tmp; -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_iterator.h b/build/stlport/stlport/stl/_iterator.h deleted file mode 100644 index 8e3b7b032a4f..000000000000 --- a/build/stlport/stlport/stl/_iterator.h +++ /dev/null @@ -1,265 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_ITERATOR_H -#define _STLP_INTERNAL_ITERATOR_H - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -// This is the new version of reverse_iterator, as defined in the -// draft C++ standard. It relies on the iterator_traits template, -// which in turn relies on partial specialization. The class -// reverse_bidirectional_iterator is no longer part of the draft -// standard, but it is retained for backward compatibility. - -template -class reverse_iterator : - public iterator::iterator_category, - typename iterator_traits<_Iterator>::value_type, - typename iterator_traits<_Iterator>::difference_type, - typename iterator_traits<_Iterator>::pointer, - typename iterator_traits<_Iterator>::reference> { -protected: - _Iterator current; - typedef reverse_iterator<_Iterator> _Self; -public: - typedef typename iterator_traits<_Iterator>::difference_type difference_type; - // pointer type required for arrow operator hidden behind _STLP_DEFINE_ARROW_OPERATOR: - typedef typename iterator_traits<_Iterator>::pointer pointer; - typedef typename iterator_traits<_Iterator>::reference reference; - typedef _Iterator iterator_type; -public: - reverse_iterator() {} - explicit reverse_iterator(iterator_type __x) : current(__x) {} - reverse_iterator(const _Self& __x) : current(__x.current) {} - _Self& operator = (const _Self& __x) { current = __x.base(); return *this; } -# if defined (_STLP_MEMBER_TEMPLATES) - template - reverse_iterator(const reverse_iterator<_Iter>& __x) : current(__x.base()) {} - template - _Self& operator = (const reverse_iterator<_Iter>& __x) { current = __x.base(); return *this; } -# endif /* _STLP_MEMBER_TEMPLATES */ - - iterator_type base() const { return current; } - reference operator*() const { - _Iterator __tmp = current; - return *--__tmp; - } - _STLP_DEFINE_ARROW_OPERATOR - _Self& operator++() { - --current; - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - --current; - return __tmp; - } - _Self& operator--() { - ++current; - return *this; - } - _Self operator--(int) { - _Self __tmp = *this; - ++current; - return __tmp; - } - - _Self operator+(difference_type __n) const { return _Self(current - __n); } - _Self& operator+=(difference_type __n) { - current -= __n; - return *this; - } - _Self operator-(difference_type __n) const { return _Self(current + __n); } - _Self& operator-=(difference_type __n) { - current += __n; - return *this; - } - reference operator[](difference_type __n) const { return *(*this + __n); } -}; - -template -inline bool _STLP_CALL operator==(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) -{ return __x.base() == __y.base(); } - -template -inline bool _STLP_CALL operator<(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) -{ return __y.base() < __x.base(); } - -# if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) -template -inline bool _STLP_CALL operator!=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) -{ return !(__x == __y); } - -template -inline bool _STLP_CALL operator>(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) -{ return __y < __x; } - -template -inline bool _STLP_CALL operator<=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) -{ return !(__y < __x); } - -template -inline bool _STLP_CALL operator>=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) -{ return !(__x < __y); } -# endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -template -# if defined (__SUNPRO_CC) -inline ptrdiff_t _STLP_CALL -# else -inline typename reverse_iterator<_Iterator>::difference_type _STLP_CALL -# endif -operator-(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) -{ return __y.base() - __x.base(); } - -template -inline reverse_iterator<_Iterator> _STLP_CALL -operator+(_DifferenceType n,const reverse_iterator<_Iterator>& x) -{ return x.operator+(n); } -#endif - -template -class back_insert_iterator - : public iterator { - typedef back_insert_iterator<_Container> _Self; -protected: - //c is a Standard name (24.4.2.1), do no make it STLport naming convention compliant. - _Container *container; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - - explicit back_insert_iterator(_Container& __x) : container(&__x) {} - - _Self& operator=(const _Self& __other) { - container = __other.container; - return *this; - } - _Self& operator=(const typename _Container::value_type& __val) { - container->push_back(__val); - return *this; - } - _Self& operator*() { return *this; } - _Self& operator++() { return *this; } - _Self operator++(int) { return *this; } -}; - -template -inline back_insert_iterator<_Container> _STLP_CALL back_inserter(_Container& __x) -{ return back_insert_iterator<_Container>(__x); } - -template -class front_insert_iterator - : public iterator { - typedef front_insert_iterator<_Container> _Self; -protected: - //c is a Standard name (24.4.2.3), do no make it STLport naming convention compliant. - _Container *container; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - explicit front_insert_iterator(_Container& __x) : container(&__x) {} - - _Self& operator=(const _Self& __other) { - container = __other.container; - return *this; - } - _Self& operator=(const typename _Container::value_type& __val) { - container->push_front(__val); - return *this; - } - _Self& operator*() { return *this; } - _Self& operator++() { return *this; } - _Self operator++(int) { return *this; } -}; - -template -inline front_insert_iterator<_Container> _STLP_CALL front_inserter(_Container& __x) -{ return front_insert_iterator<_Container>(__x); } - -template -class insert_iterator - : public iterator { - typedef insert_iterator<_Container> _Self; -protected: - //container is a Standard name (24.4.2.5), do no make it STLport naming convention compliant. - _Container *container; - typename _Container::iterator _M_iter; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - insert_iterator(_Container& __x, typename _Container::iterator __i) - : container(&__x), _M_iter(__i) {} - - _Self& operator=(_Self const& __other) { - container = __other.container; - _M_iter = __other._M_iter; - return *this; - } - _Self& operator=(const typename _Container::value_type& __val) { - _M_iter = container->insert(_M_iter, __val); - ++_M_iter; - return *this; - } - _Self& operator*() { return *this; } - _Self& operator++() { return *this; } - _Self& operator++(int) { return *this; } -}; - -template -inline insert_iterator<_Container> _STLP_CALL -inserter(_Container& __x, _Iterator __i) { - typedef typename _Container::iterator __iter; - return insert_iterator<_Container>(__x, __iter(__i)); -} - -_STLP_END_NAMESPACE - -#if ! defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -# include -#endif - -#endif /* _STLP_INTERNAL_ITERATOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_iterator_base.h b/build/stlport/stlport/stl/_iterator_base.h deleted file mode 100644 index ef590486dffa..000000000000 --- a/build/stlport/stlport/stl/_iterator_base.h +++ /dev/null @@ -1,525 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -#define _STLP_INTERNAL_ITERATOR_BASE_H - -#ifndef _STLP_INTERNAL_CSTDDEF -# include -#endif - -//# if defined (_STLP_IMPORT_VENDOR_CSTD) && ! defined (_STLP_VENDOR_GLOBAL_CSTD) -//_STLP_BEGIN_NAMESPACE -//using namespace _STLP_VENDOR_CSTD; -//_STLP_END_NAMESPACE -//#endif /* _STLP_IMPORT_VENDOR_CSTD */ - -#if !defined(_STLP_USE_OLD_HP_ITERATOR_QUERIES) && !defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) -# ifndef _STLP_TYPE_TRAITS_H -# include -# endif -#endif - -_STLP_BEGIN_NAMESPACE - -struct input_iterator_tag {}; -struct output_iterator_tag {}; -struct forward_iterator_tag : public input_iterator_tag {}; -struct bidirectional_iterator_tag : public forward_iterator_tag {}; -struct random_access_iterator_tag : public bidirectional_iterator_tag {}; - -template -struct iterator { - typedef _Category iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; - typedef _Pointer pointer; - typedef _Reference reference; -}; -_STLP_TEMPLATE_NULL -struct iterator { - typedef output_iterator_tag iterator_category; -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; -#endif -}; - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -# define _STLP_ITERATOR_CATEGORY(_It, _Tp) _STLP_STD::iterator_category(_It) -# define _STLP_DISTANCE_TYPE(_It, _Tp) _STLP_STD::distance_type(_It) -# define _STLP_VALUE_TYPE(_It, _Tp) _STLP_STD::value_type(_It) -//Old HP iterator queries do not give information about the iterator -//associated reference type so we consider that it is not a real reference. -# define _STLP_IS_REF_TYPE_REAL_REF(_It, _Tp) __false_type() -#else -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# define _STLP_VALUE_TYPE(_It, _Tp) (_STLP_TYPENAME _STLP_STD::iterator_traits< _Tp >::value_type*)0 -# define _STLP_DISTANCE_TYPE(_It, _Tp) (_STLP_TYPENAME _STLP_STD::iterator_traits< _Tp >::difference_type*)0 -# if defined (__BORLANDC__) || defined (__SUNPRO_CC) || ( defined (__MWERKS__) && (__MWERKS__ <= 0x2303)) || \ - (defined (__sgi) && defined (_COMPILER_VERSION)) || defined (__DMC__) -# define _STLP_ITERATOR_CATEGORY(_It, _Tp) _STLP_STD::iterator_traits< _Tp >::iterator_category() -# else -# define _STLP_ITERATOR_CATEGORY(_It, _Tp) _STLP_TYPENAME _STLP_STD::iterator_traits< _Tp >::iterator_category() -# endif -# define _STLP_IS_REF_TYPE_REAL_REF(_It, _Tp) _STLP_STD::_IsRefType< _STLP_TYPENAME _STLP_STD::iterator_traits< _Tp >::reference >::_Ret() -# else -# define _STLP_ITERATOR_CATEGORY(_It, _Tp) _STLP_STD::__iterator_category(_It, _STLP_STD::_IsPtrType<_Tp>::_Ret()) -# define _STLP_DISTANCE_TYPE(_It, _Tp) _STLP_STD::__distance_type(_It, _STLP_STD::_IsPtrType<_Tp>::_Ret()) -# define _STLP_VALUE_TYPE(_It, _Tp) _STLP_STD::__value_type(_It, _STLP_STD::_IsPtrType<_Tp>::_Ret()) -# define _STLP_IS_REF_TYPE_REAL_REF(_It, _Tp) __false_type() -# endif -#endif - -#if defined (_STLP_DONT_REDEFINE_STD) && defined (_STLP_WHOLE_NATIVE_STD) -/* In this mode we will see both STLport implementation and native - * one. To allow some interaction between both implementations through - * iterators we have to map std iterator categories to stlport ones. This - * way we will be able to initialize STLport containers with native - * iterators, the other side won't work except when STLport iterators are - * simple pointers. */ - -_STLP_END_NAMESPACE - -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(iterator) -# endif - -_STLP_BEGIN_NAMESPACE - -template -struct _CategoryMapping -{ typedef _IteCat _Tag; }; - -_STLP_TEMPLATE_NULL -struct _CategoryMapping<::std::input_iterator_tag> -{ typedef input_iterator_tag _Tag; }; -_STLP_TEMPLATE_NULL -struct _CategoryMapping<::std::output_iterator_tag> -{ typedef output_iterator_tag _Tag; }; -_STLP_TEMPLATE_NULL -struct _CategoryMapping<::std::forward_iterator_tag> -{ typedef forward_iterator_tag _Tag; }; -_STLP_TEMPLATE_NULL -struct _CategoryMapping<::std::bidirectional_iterator_tag> -{ typedef bidirectional_iterator_tag _Tag; }; -_STLP_TEMPLATE_NULL -struct _CategoryMapping<::std::random_access_iterator_tag> -{ typedef random_access_iterator_tag _Tag; }; - -template -struct iterator_traits { - typedef typename _Iterator::iterator_category _OriginalTag; - typedef typename _CategoryMapping<_OriginalTag>::_Tag iterator_category; -#else -template -struct iterator_traits { - typedef typename _Iterator::iterator_category iterator_category; -#endif - typedef typename _Iterator::value_type value_type; - typedef typename _Iterator::difference_type difference_type; - typedef typename _Iterator::pointer pointer; - typedef typename _Iterator::reference reference; -}; - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (__SUNPRO_CC) -# define _STLP_DIFFERENCE_TYPE(_Iterator) typename iterator_traits<_Iterator>::difference_type -#else -# define _STLP_DIFFERENCE_TYPE(_Iterator) ptrdiff_t -#endif - -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION - -// fbp : this order keeps gcc happy -template -struct iterator_traits { - typedef random_access_iterator_tag iterator_category; - typedef _Tp value_type; - typedef ptrdiff_t difference_type; - typedef const _Tp* pointer; - typedef const _Tp& reference; -}; - -template -struct iterator_traits<_Tp*> { - typedef random_access_iterator_tag iterator_category; - typedef _Tp value_type; - typedef ptrdiff_t difference_type; - typedef _Tp* pointer; - typedef _Tp& reference; -}; - -# if defined (__BORLANDC__) -template -struct iterator_traits<_Tp* const> { - typedef random_access_iterator_tag iterator_category; - typedef _Tp value_type; - typedef ptrdiff_t difference_type; - typedef const _Tp* pointer; - typedef const _Tp& reference; -}; -# endif - -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -_STLP_END_NAMESPACE -#include -_STLP_BEGIN_NAMESPACE - -#ifndef _STLP_USE_OLD_HP_ITERATOR_QUERIES -// The overloaded functions iterator_category, distance_type, and -// value_type are not part of the C++ standard. (They have been -// replaced by struct iterator_traits.) They are included for -// backward compatibility with the HP STL. -// We introduce internal names for these functions. - -# ifndef _STLP_CLASS_PARTIAL_SPECIALIZATION - -template -inline _STLP_STD::random_access_iterator_tag -__iterator_category(const _Tp*, const __true_type&) -{ return _STLP_STD::random_access_iterator_tag(); } - -template -inline _STLP_TYPENAME_ON_RETURN_TYPE _STLP_STD::iterator_traits<_Iter>::iterator_category -__iterator_category(const _Iter&, const __false_type&) { - typedef _STLP_TYPENAME _STLP_STD::iterator_traits<_Iter>::iterator_category _Category; - return _Category(); -} - -template -inline ptrdiff_t* -__distance_type(const _Tp*, const __true_type&) -{ return __STATIC_CAST(ptrdiff_t*, 0); } - -template -inline _STLP_TYPENAME_ON_RETURN_TYPE _STLP_STD::iterator_traits<_Iter>::difference_type* -__distance_type(const _Iter&, const __false_type&) { - typedef _STLP_TYPENAME _STLP_STD::iterator_traits<_Iter>::difference_type _diff_type; - return __STATIC_CAST(_diff_type*,0); -} - -template -inline _Tp* -__value_type(const _Tp*, const __true_type&) -{ return __STATIC_CAST(_Tp*, 0); } - -template -inline _STLP_TYPENAME_ON_RETURN_TYPE _STLP_STD::iterator_traits<_Iter>::value_type* -__value_type(const _Iter&, const __false_type&) { - typedef _STLP_TYPENAME _STLP_STD::iterator_traits<_Iter>::value_type _value_type; - return __STATIC_CAST(_value_type*,0); -} - -# endif - -#else /* _STLP_USE_OLD_HP_ITERATOR_QUERIES */ -template -inline _Category _STLP_CALL iterator_category(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return _Category(); } -template -inline _Tp* _STLP_CALL value_type(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return __STATIC_CAST(_Tp*, 0); } -template -inline _Distance* _STLP_CALL distance_type(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return __STATIC_CAST(_Distance*, 0); } -template -inline random_access_iterator_tag _STLP_CALL iterator_category(const _Tp*) { return random_access_iterator_tag(); } -template -inline _Tp* _STLP_CALL value_type(const _Tp*) { return __STATIC_CAST(_Tp*, 0); } -template -inline ptrdiff_t* _STLP_CALL distance_type(const _Tp*) { return __STATIC_CAST(ptrdiff_t*, 0); } -#endif /* _STLP_USE_OLD_HP_ITERATOR_QUERIES */ - -#if !defined (_STLP_NO_ANACHRONISMS) -// The base classes input_iterator, output_iterator, forward_iterator, -// bidirectional_iterator, and random_access_iterator are not part of -// the C++ standard. (They have been replaced by struct iterator.) -// They are included for backward compatibility with the HP STL. -template struct input_iterator : - public iterator {}; -struct output_iterator : public iterator {}; -template struct forward_iterator : - public iterator {}; -template struct bidirectional_iterator : - public iterator {}; -template struct random_access_iterator : - public iterator {}; - -# if defined (_STLP_BASE_MATCH_BUG) && defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -template -inline input_iterator_tag _STLP_CALL -iterator_category(const input_iterator<_Tp, _Distance>&) { return input_iterator_tag(); } -inline output_iterator_tag _STLP_CALL -iterator_category(const output_iterator&) { return output_iterator_tag(); } -template -inline forward_iterator_tag _STLP_CALL -iterator_category(const forward_iterator<_Tp, _Distance>&) { return forward_iterator_tag(); } -template -inline bidirectional_iterator_tag _STLP_CALL -iterator_category(const bidirectional_iterator<_Tp, _Distance>&) { return bidirectional_iterator_tag(); } -template -inline random_access_iterator_tag _STLP_CALL -iterator_category(const random_access_iterator<_Tp, _Distance>&) { return random_access_iterator_tag(); } -template -inline _Tp* _STLP_CALL value_type(const input_iterator<_Tp, _Distance>&) { return __STATIC_CAST(_Tp*, 0); } -template -inline _Tp* _STLP_CALL value_type(const forward_iterator<_Tp, _Distance>&) { return __STATIC_CAST(_Tp*, 0); } -template -inline _Tp* _STLP_CALL value_type(const bidirectional_iterator<_Tp, _Distance>&) { return __STATIC_CAST(_Tp*, 0); } -template -inline _Tp* _STLP_CALL value_type(const random_access_iterator<_Tp, _Distance>&) { return __STATIC_CAST(_Tp*, 0); } -template -inline _Distance* _STLP_CALL distance_type(const input_iterator<_Tp, _Distance>&) { return __STATIC_CAST(_Distance*, 0); } -template -inline _Distance* _STLP_CALL distance_type(const forward_iterator<_Tp, _Distance>&) { return __STATIC_CAST(_Distance*, 0); } -template -inline _Distance* _STLP_CALL distance_type(const bidirectional_iterator<_Tp, _Distance>&) { return __STATIC_CAST(_Distance*, 0);} -template -inline _Distance* _STLP_CALL distance_type(const random_access_iterator<_Tp, _Distance>&) { return __STATIC_CAST(_Distance*, 0); } -# endif -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline _STLP_DIFFERENCE_TYPE(_InputIterator) _STLP_CALL -__distance(const _InputIterator& __first, const _InputIterator& __last, - const input_iterator_tag &) { - _STLP_DIFFERENCE_TYPE(_InputIterator) __n = 0; - _InputIterator __it(__first); - while (__it != __last) { - ++__it; ++__n; - } - return __n; -} - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline _STLP_DIFFERENCE_TYPE(_ForwardIterator) _STLP_CALL -__distance(const _ForwardIterator& __first, const _ForwardIterator& __last, - const forward_iterator_tag &) { - _STLP_DIFFERENCE_TYPE(_ForwardIterator) __n = 0; - _ForwardIterator __it(__first); - while (__it != __last) { - ++__it; ++__n; - } - return __n; -} - -template -_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_BidirectionalIterator) _STLP_CALL -__distance(const _BidirectionalIterator& __first, const _BidirectionalIterator& __last, - const bidirectional_iterator_tag &) { - _STLP_DIFFERENCE_TYPE(_BidirectionalIterator) __n = 0; - _BidirectionalIterator __it(__first); - while (__it != __last) { - ++__it; ++__n; - } - return __n; -} -#endif - -template -inline _STLP_DIFFERENCE_TYPE(_RandomAccessIterator) _STLP_CALL -__distance(const _RandomAccessIterator& __first, const _RandomAccessIterator& __last, - const random_access_iterator_tag &) -{ return __last - __first; } - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline _STLP_DIFFERENCE_TYPE(_InputIterator) _STLP_CALL -distance(_InputIterator __first, _InputIterator __last) -{ return _STLP_PRIV __distance(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator)); } - -#if !defined (_STLP_NO_ANACHRONISMS) -template -inline void _STLP_CALL distance(const _InputIterator& __first, - const _InputIterator& __last, _Distance& __n) -{ __n += _STLP_STD::distance(__first, __last); } - -# if defined (_STLP_MSVC) -// MSVC specific -template -inline void _STLP_CALL _Distance(_InputIterator __first, - _InputIterator __last, _Dist& __n) -{ __n += _STLP_STD::distance(__first, __last); } -# endif -#endif - -// fbp: those are being used for iterator/const_iterator definitions everywhere -template -struct _Nonconst_traits; - -template -struct _Const_traits { - typedef _Tp value_type; - typedef const _Tp& reference; - typedef const _Tp* pointer; - typedef _Const_traits<_Tp> _ConstTraits; - typedef _Nonconst_traits<_Tp> _NonConstTraits; -}; - -template -struct _Nonconst_traits { - typedef _Tp value_type; - typedef _Tp& reference; - typedef _Tp* pointer; - typedef _Const_traits<_Tp> _ConstTraits; - typedef _Nonconst_traits<_Tp> _NonConstTraits; -}; - -/* - * dums: A special iterator/const_iterator traits for set and multiset for which even - * the iterator is not mutable - */ -template -struct _Nonconst_Const_traits; - -template -struct _Const_Const_traits { - typedef _Tp value_type; - typedef const _Tp& reference; - typedef const _Tp* pointer; - typedef _Const_Const_traits<_Tp> _ConstTraits; - typedef _Nonconst_Const_traits<_Tp> _NonConstTraits; -}; - -template -struct _Nonconst_Const_traits { - typedef _Tp value_type; - typedef const _Tp& reference; - typedef const _Tp* pointer; - typedef _Const_Const_traits<_Tp> _ConstTraits; - typedef _Nonconst_Const_traits<_Tp> _NonConstTraits; -}; - -/* - * A macro to generate a new iterator traits from one of the - * previous one. Changing the iterator traits type make iterators - * from different containers not comparable. - */ -#define _STLP_CREATE_ITERATOR_TRAITS_BASE(Motif, Traits) \ -template \ -struct _##Motif; \ -template \ -struct _Const##Motif : public _STLP_STD::_Const_##Traits<_Tp> { \ - typedef _Const##Motif<_Tp> _ConstTraits; \ - typedef _##Motif<_Tp> _NonConstTraits; \ -}; \ -template \ -struct _##Motif : public _STLP_STD::_Nonconst_##Traits<_Tp> { \ - typedef _Const##Motif<_Tp> _ConstTraits; \ - typedef _##Motif<_Tp> _NonConstTraits; \ -}; - -#define _STLP_CREATE_ITERATOR_TRAITS(Motif, Traits) \ -_STLP_MOVE_TO_PRIV_NAMESPACE \ -_STLP_CREATE_ITERATOR_TRAITS_BASE(Motif, Traits) \ -_STLP_MOVE_TO_STD_NAMESPACE - -#define _STLP_CREATE_HASH_ITERATOR_TRAITS(Motif, Traits) \ -_STLP_MOVE_TO_PRIV_NAMESPACE \ -_STLP_CREATE_ITERATOR_TRAITS_BASE(NonLocal##Motif, Traits) \ -_STLP_CREATE_ITERATOR_TRAITS_BASE(Local##Motif, Traits) \ -template \ -struct _##Motif { \ - typedef _ConstNonLocal##Motif<_Tp> _ConstTraits; \ - typedef _NonLocal##Motif<_Tp> _NonConstTraits; \ - typedef _ConstLocal##Motif<_Tp> _ConstLocalTraits; \ - typedef _Local##Motif<_Tp> _NonConstLocalTraits; \ -}; \ -_STLP_MOVE_TO_STD_NAMESPACE - -/* -# if defined (_STLP_BASE_TYPEDEF_BUG) -// this workaround is needed for SunPro 4.0.1 -template -struct __cnst_traits_aux : private _Traits { - typedef typename _Traits::value_type value_type; -}; -# define __TRAITS_VALUE_TYPE(_Traits) __cnst_traits_aux<_Traits>::value_type -# else -# define __TRAITS_VALUE_TYPE(_Traits) _Traits::value_type -# endif -*/ - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP void _STLP_CALL -__advance(_InputIter& __i, _Distance __n, const input_iterator_tag &) -{ while (__n--) ++__i; } - -// fbp : added output iterator tag variant -template -_STLP_INLINE_LOOP void _STLP_CALL -__advance(_InputIter& __i, _Distance __n, const output_iterator_tag &) -{ while (__n--) ++__i; } - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -_STLP_INLINE_LOOP void _STLP_CALL -__advance(_ForwardIterator& i, _Distance n, const forward_iterator_tag &) -{ while (n--) ++i; } -#endif - -template -_STLP_INLINE_LOOP void _STLP_CALL -__advance(_BidirectionalIterator& __i, _Distance __n, - const bidirectional_iterator_tag &) { - if (__n > 0) - while (__n--) ++__i; - else - while (__n++) --__i; -} - -template -inline void _STLP_CALL -__advance(_RandomAccessIterator& __i, _Distance __n, - const random_access_iterator_tag &) -{ __i += __n; } - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline void _STLP_CALL advance(_InputIterator& __i, _Distance __n) -{ _STLP_PRIV __advance(__i, __n, _STLP_ITERATOR_CATEGORY(__i, _InputIterator)); } - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_ITERATOR_BASE_H */ - - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_iterator_old.h b/build/stlport/stlport/stl/_iterator_old.h deleted file mode 100644 index 144b9ab388df..000000000000 --- a/build/stlport/stlport/stl/_iterator_old.h +++ /dev/null @@ -1,334 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_ITERATOR_OLD_H -#define _STLP_INTERNAL_ITERATOR_OLD_H - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES - -template -inline output_iterator_tag _STLP_CALL -iterator_category(const back_insert_iterator<_Container>&) { return output_iterator_tag(); } -template -inline output_iterator_tag _STLP_CALL -iterator_category(const front_insert_iterator<_Container>&) { return output_iterator_tag(); } -template -inline output_iterator_tag _STLP_CALL -iterator_category(const insert_iterator<_Container>&) { return output_iterator_tag(); } - -#endif - -template -class reverse_bidirectional_iterator { - typedef reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, - Reference__, _Distance> _Self; - // friend inline bool operator== _STLP_NULL_TMPL_ARGS (const _Self& x, const _Self& y); -protected: - _BidirectionalIterator current; -public: - typedef bidirectional_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; -# if defined (_STLP_MSVC50_COMPATIBILITY) - typedef _Pointer pointer; -# else - typedef _Tp* pointer; -# endif - typedef _Reference reference; - - reverse_bidirectional_iterator() {} - explicit reverse_bidirectional_iterator(_BidirectionalIterator __x) - : current(__x) {} - _BidirectionalIterator base() const { return current; } - _Reference operator*() const { - _BidirectionalIterator __tmp = current; - return *(--__tmp); - } - - _STLP_DEFINE_ARROW_OPERATOR - - _Self& operator++() { - --current; - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - --current; - return __tmp; - } - _Self& operator--() { - ++current; - return *this; - } - _Self operator--(int) { - _Self __tmp = *this; - ++current; - return __tmp; - } -}; - -#ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES -template -inline bidirectional_iterator_tag _STLP_CALL -iterator_category(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&) -{ return bidirectional_iterator_tag(); } -template -inline _Tp* _STLP_CALL -value_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&) -{ return (_Tp*) 0; } -template -inline _Distance* _STLP_CALL -distance_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&) -{ return (_Distance*) 0; } -#endif - -template -inline bool _STLP_CALL operator==( - const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, - Reference__, _Distance>& __x, - const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, - Reference__, _Distance>& __y) -{ return __x.base() == __y.base(); } - -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE - -template -inline bool _STLP_CALL operator!=( - const reverse_bidirectional_iterator<_BiIter, _Tp, Reference__, _Distance>& __x, - const reverse_bidirectional_iterator<_BiIter, _Tp, Reference__, _Distance>& __y) -{ return !(__x == __y); } - -#endif - -#if !defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) - -// This is the old version of reverse_iterator, as found in the original -// HP STL. It does not use partial specialization. - -template -class reverse_iterator { - typedef reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance> _Self; -protected: - _RandomAccessIterator __current; -public: - typedef random_access_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Distance difference_type; -# if defined (_STLP_MSVC50_COMPATIBILITY) - typedef _Pointer pointer; -# else - typedef _Tp* pointer; -# endif - typedef _Reference reference; - - reverse_iterator() {} - reverse_iterator(const _Self& __x) : __current(__x.base()) {} - explicit reverse_iterator(_RandomAccessIterator __x) : __current(__x) {} - _Self& operator=(const _Self& __x) {__current = __x.base(); return *this; } - - _RandomAccessIterator base() const { return __current; } - _Reference operator*() const { return *(__current - (difference_type)1); } - - _STLP_DEFINE_ARROW_OPERATOR - - _Self& operator++() { - --__current; - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - --__current; - return __tmp; - } - _Self& operator--() { - ++__current; - return *this; - } - _Self operator--(int) { - _Self __tmp = *this; - ++__current; - return __tmp; - } - _Self operator+(_Distance __n) const { - return _Self(__current - __n); - } - _Self& operator+=(_Distance __n) { - __current -= __n; - return *this; - } - _Self operator-(_Distance __n) const { - return _Self(__current + __n); - } - _Self& operator-=(_Distance __n) { - __current += __n; - return *this; - } - _Reference operator[](_Distance __n) const { return *(*this + __n); } -}; - -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES -template -inline random_access_iterator_tag _STLP_CALL -iterator_category(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&) -{ return random_access_iterator_tag(); } -template -inline _Tp* _STLP_CALL value_type(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&) -{ return (_Tp*) 0; } -template -inline _Distance* _STLP_CALL -distance_type(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&) -{ return (_Distance*) 0; } -# endif - -template -inline bool _STLP_CALL -operator==(const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __x, - const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __y) -{ - return __x.base() == __y.base(); -} - -template -inline bool _STLP_CALL -operator<(const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __x, - const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __y) -{ - return __y.base() < __x.base(); -} - -# ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE - -template -inline bool _STLP_CALL -operator!=(const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __x, - const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __y) { - return !(__x == __y); -} - -template -inline bool _STLP_CALL -operator>(const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __x, - const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __y) { - return __y < __x; -} - -template -inline bool _STLP_CALL -operator<=(const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __x, - const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __y) { - return !(__y < __x); -} - -template -inline bool _STLP_CALL -operator>=(const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __x, - const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __y) { - return !(__x < __y); -} - -# endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -template -inline _Distance _STLP_CALL -operator-(const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __x, - const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __y) -{ - return __y.base() - __x.base(); -} - -template -inline reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance> _STLP_CALL -operator+(_Distance __n, - const reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>& __x) -{ - return reverse_iterator<_RandomAccessIterator, _Tp, - Reference__, _Distance>(__x.base() - __n); -} - -#endif /* ! defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_ITERATOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_limits.c b/build/stlport/stlport/stl/_limits.c deleted file mode 100644 index 39380249ebbd..000000000000 --- a/build/stlport/stlport/stl/_limits.c +++ /dev/null @@ -1,405 +0,0 @@ -/* - * Copyright (c) 1998,1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_LIMITS_C -#define _STLP_LIMITS_C - -#ifndef _STLP_INTERNAL_LIMITS -# include -#endif - -//========================================================== -// numeric_limits static members -//========================================================== - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -#if !defined (_STLP_STATIC_CONST_INIT_BUG) && !defined (_STLP_NO_STATIC_CONST_DEFINITION) - -# define __declare_numeric_base_member(__type, __mem) \ -template \ - const __type _Numeric_limits_base<__number>:: __mem - -__declare_numeric_base_member(bool, is_specialized); -__declare_numeric_base_member(int, digits); -__declare_numeric_base_member(int, digits10); -__declare_numeric_base_member(bool, is_signed); -__declare_numeric_base_member(bool, is_integer); -__declare_numeric_base_member(bool, is_exact); -__declare_numeric_base_member(int, radix); -__declare_numeric_base_member(int, min_exponent); -__declare_numeric_base_member(int, max_exponent); -__declare_numeric_base_member(int, min_exponent10); -__declare_numeric_base_member(int, max_exponent10); -__declare_numeric_base_member(bool, has_infinity); -__declare_numeric_base_member(bool, has_quiet_NaN); -__declare_numeric_base_member(bool, has_signaling_NaN); -__declare_numeric_base_member(float_denorm_style, has_denorm); -__declare_numeric_base_member(bool, has_denorm_loss); -__declare_numeric_base_member(bool, is_iec559); -__declare_numeric_base_member(bool, is_bounded); -__declare_numeric_base_member(bool, is_modulo); -__declare_numeric_base_member(bool, traps); -__declare_numeric_base_member(bool, tinyness_before); -__declare_numeric_base_member(float_round_style, round_style); - -# undef __declare_numeric_base_member - -# define __declare_integer_limits_member(__type, __mem) \ -template \ - const __type _Integer_limits<_Int, __imin, __imax, __idigits, __ismod>:: __mem - -__declare_integer_limits_member(bool, is_specialized); -__declare_integer_limits_member(int, digits); -__declare_integer_limits_member(int, digits10); -__declare_integer_limits_member(bool, is_signed); -__declare_integer_limits_member(bool, is_integer); -__declare_integer_limits_member(bool, is_exact); -__declare_integer_limits_member(int, radix); -__declare_integer_limits_member(bool, is_bounded); -__declare_integer_limits_member(bool, is_modulo); -# undef __declare_integer_limits_member - -# if defined (__GNUC__) && (__GNUC__ != 2 || __GNUC_MINOR__ > 96) && (__GNUC__ != 3 || __GNUC_MINOR__ == 0) && (__GNUC__ <= 3) -_STLP_MOVE_TO_STD_NAMESPACE - -# define __declare_numeric_limits_member(__integer) \ - _STLP_TEMPLATE_NULL const int numeric_limits<__integer>::digits; \ - _STLP_TEMPLATE_NULL const int numeric_limits<__integer>::digits10; \ - _STLP_TEMPLATE_NULL const int numeric_limits<__integer>::radix; \ - _STLP_TEMPLATE_NULL const bool numeric_limits<__integer>::is_specialized; \ - _STLP_TEMPLATE_NULL const bool numeric_limits<__integer>::is_signed; \ - _STLP_TEMPLATE_NULL const bool numeric_limits<__integer>::is_integer; \ - _STLP_TEMPLATE_NULL const bool numeric_limits<__integer>::is_exact; \ - _STLP_TEMPLATE_NULL const bool numeric_limits<__integer>::is_bounded; \ - _STLP_TEMPLATE_NULL const bool numeric_limits<__integer>::is_modulo - -__declare_numeric_limits_member(_STLP_LONG_LONG); -__declare_numeric_limits_member(unsigned _STLP_LONG_LONG); - -# undef __declare_numeric_limits_member - -_STLP_MOVE_TO_PRIV_NAMESPACE -# endif - -# define __declare_float_limits_member(__type, __mem) \ -template \ -const __type _Floating_limits< __number, __Digits, __Digits10, \ - __MinExp, __MaxExp, __MinExp10, __MaxExp10, \ - __IsIEC559, __DenormStyle, __RoundStyle>::\ - __mem - -__declare_float_limits_member(bool, is_specialized); -__declare_float_limits_member(int, digits); -__declare_float_limits_member(int, digits10); -__declare_float_limits_member(bool, is_signed); -__declare_float_limits_member(int, radix); -__declare_float_limits_member(int, min_exponent); -__declare_float_limits_member(int, max_exponent); -__declare_float_limits_member(int, min_exponent10); -__declare_float_limits_member(int, max_exponent10); -__declare_float_limits_member(bool, has_infinity); -__declare_float_limits_member(bool, has_quiet_NaN); -__declare_float_limits_member(bool, has_signaling_NaN); -__declare_float_limits_member(float_denorm_style, has_denorm); -__declare_float_limits_member(bool, has_denorm_loss); -__declare_float_limits_member(bool, is_iec559); -__declare_float_limits_member(bool, is_bounded); -__declare_float_limits_member(bool, traps); -__declare_float_limits_member(bool, tinyness_before); -__declare_float_limits_member(float_round_style, round_style); -# undef __declare_float_limits_member - -#endif - - -#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) - -# if defined (__GNUC__) || defined (__BORLANDC__) -# define _STLP_ADDITIONAL_OPEN_BRACKET { -# define _STLP_ADDITIONAL_CLOSE_BRACKET } -# else -# define _STLP_ADDITIONAL_OPEN_BRACKET -# define _STLP_ADDITIONAL_CLOSE_BRACKET -# endif - -/* The following code has been extracted from the boost libraries (www.boost.org) and - * adapted with the STLport portability macros. Advantage on previous technique is that - * computation of infinity and NaN values is only based on big/little endianess, compiler - * float, double or long double representation is taken into account thanks to the sizeof - * operator. */ -template -struct float_helper { - union _WordsNumber { - unsigned short _Words[8]; - _Number _num; - }; - static _Number get_word_higher() _STLP_NOTHROW { - _WordsNumber __tmp = { _STLP_ADDITIONAL_OPEN_BRACKET _Word, 0, 0, 0, 0, 0, 0, 0 _STLP_ADDITIONAL_CLOSE_BRACKET }; - return __tmp._num; - } - static _Number get_word_lower() _STLP_NOTHROW { - _WordsNumber __tmp = { _STLP_ADDITIONAL_OPEN_BRACKET 0, 0, 0, 0, 0, 0, 0, 0 _STLP_ADDITIONAL_CLOSE_BRACKET }; - __tmp._Words[(sizeof(_Number) >= 12 ? 10 : sizeof(_Number)) / sizeof(unsigned short) - 1] = _Word; - return __tmp._num; - } - static _Number get_from_last_word() _STLP_NOTHROW { -# if defined (_STLP_BIG_ENDIAN) - return get_word_higher(); -# else /* _STLP_LITTLE_ENDIAN */ - return get_word_lower(); -# endif - } - static _Number get_from_first_word() _STLP_NOTHROW { -# if defined (_STLP_BIG_ENDIAN) - return get_word_lower(); -# else /* _STLP_LITTLE_ENDIAN */ - return get_word_higher(); -# endif - } -}; - -# if !defined (_STLP_NO_LONG_DOUBLE) && !defined (_STLP_BIG_ENDIAN) -template -struct float_helper2 { - union _WordsNumber { - unsigned short _Words[8]; - _Number _num; - }; - //static _Number get_word_higher() _STLP_NOTHROW { - // _WordsNumber __tmp = { _STLP_ADDITIONAL_OPEN_BRACKET _Word1, _Word2, 0, 0, 0, 0, 0, 0 _STLP_ADDITIONAL_CLOSE_BRACKET }; - // return __tmp._num; - //} - static _Number get_word_lower() _STLP_NOTHROW { - _WordsNumber __tmp = { _STLP_ADDITIONAL_OPEN_BRACKET 0, 0, 0, 0, 0, 0, 0, 0 _STLP_ADDITIONAL_CLOSE_BRACKET }; - __tmp._Words[(sizeof(_Number) >= 12 ? 10 : sizeof(_Number)) / sizeof(unsigned short) - 2] = _Word1; - __tmp._Words[(sizeof(_Number) >= 12 ? 10 : sizeof(_Number)) / sizeof(unsigned short) - 1] = _Word2; - return __tmp._num; - } - static _Number get_from_last_word() _STLP_NOTHROW { -//# if defined (_STLP_BIG_ENDIAN) -// return get_word_higher(); -//# else /* _STLP_LITTLE_ENDIAN */ - return get_word_lower(); -//# endif - } -}; -# endif - -/* Former values kept in case moving to boost code has introduce a regression on - * some platform. */ -#if 0 -# if defined (_STLP_BIG_ENDIAN) -# if defined (__OS400__) -# define _STLP_FLOAT_INF_REP { 0x7f80, 0 } -# define _STLP_FLOAT_QNAN_REP { 0xffc0, 0 } -# define _STLP_FLOAT_SNAN_REP { 0xff80, 0 } -# define _STLP_DOUBLE_INF_REP { 0x7ff0, 0, 0, 0 } -# define _STLP_DOUBLE_QNAN_REP { 0xfff8, 0, 0, 0 } -# define _STLP_DOUBLE_SNAN_REP { 0xfff0, 0, 0, 0 } -# define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 } -# define _STLP_LDOUBLE_QNAN_REP { 0xfff8, 0, 0, 0, 0, 0, 0, 0 } -# define _STLP_LDOUBLE_SNAN_REP { 0xfff0, 0, 0, 0, 0, 0, 0, 0 } -# else /* __OS400__ */ -# define _STLP_FLOAT_INF_REP { 0x7f80, 0 } -# define _STLP_FLOAT_QNAN_REP { 0x7fc1, 0 } -# define _STLP_FLOAT_SNAN_REP { 0x7f81, 0 } -# define _STLP_DOUBLE_INF_REP { 0x7ff0, 0, 0, 0 } -# define _STLP_DOUBLE_QNAN_REP { 0x7ff9, 0, 0, 0 } -# define _STLP_DOUBLE_SNAN_REP { 0x7ff1, 0, 0, 0 } -# define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 } -# define _STLP_LDOUBLE_QNAN_REP { 0x7ff1, 0, 0, 0, 0, 0, 0, 0 } -# define _STLP_LDOUBLE_SNAN_REP { 0x7ff9, 0, 0, 0, 0, 0, 0, 0 } -# endif /* __OS400__ */ -# else /* _STLP_LITTLE_ENDIAN */ -# if defined(__DECCXX) -# define _STLP_FLOAT_INF_REP { 0, 0x7f80 } -# define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 } -# define _STLP_FLOAT_SNAN_REP { 0x5555, 0x7f85 } -# define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 } -# define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 } -# define _STLP_DOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x7ff5 } -# define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0, 0, 0, 0, 0x7fff } -# define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0, 0, 0, 0x8000, 0xffff } -# define _STLP_LDOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x7fff} -# else -# define _STLP_FLOAT_INF_REP { 0, 0x7f80 } -# define _STLP_FLOAT_QNAN_REP { 0, 0x7fc0 } -# define _STLP_FLOAT_SNAN_REP { 0, 0x7fa0 } -# define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 } -# define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0x7ff8 } -# define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0x7ff4 } -# if defined (_STLP_MSVC) || defined (__ICL) -# define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } -# define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } -# define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF8, 0 } -# elif defined (__BORLANDC__) -# define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff } -# define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xc000, 0x7fff } -# define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xa000, 0x7fff } -# else -# define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff, 0 } -# define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xa000, 0x7fff, 0 } -# define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xc000, 0x7fff, 0 } -# endif -# endif -# endif - -union _F_rep { - unsigned short rep[2]; - float val; -}; -union _D_rep { - unsigned short rep[4]; - double val; -}; - -# ifndef _STLP_NO_LONG_DOUBLE -union _LD_rep { - unsigned short rep[8]; - long double val; -}; -# endif -#endif - -template -float _STLP_CALL _LimG<__dummy>::get_F_inf() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_last_word(); -} -template -float _STLP_CALL _LimG<__dummy>::get_F_qNaN() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_last_word(); -} -template -float _STLP_CALL _LimG<__dummy>::get_F_sNaN() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_last_word(); -} -template -float _STLP_CALL _LimG<__dummy>::get_F_denormMin() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_first_word(); -} - -template -class _NumericLimitsAccess; - -_STLP_TEMPLATE_NULL -class _NumericLimitsAccess<1> { -public: - static double get_inf() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_last_word(); - } - static double get_qNaN() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_last_word(); - } - static double get_sNaN() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_last_word(); - } -}; - -template -double _STLP_CALL _LimG<__dummy>::get_D_inf() -{ return _NumericLimitsAccess<1>::get_inf(); } -template -double _STLP_CALL _LimG<__dummy>::get_D_qNaN() -{ return _NumericLimitsAccess<1>::get_qNaN(); } -template -double _STLP_CALL _LimG<__dummy>::get_D_sNaN() -{ return _NumericLimitsAccess<1>::get_sNaN(); } -template -double _STLP_CALL _LimG<__dummy>::get_D_denormMin() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_first_word(); -} - -# if !defined (_STLP_NO_LONG_DOUBLE) -_STLP_TEMPLATE_NULL -class _NumericLimitsAccess<0> { -public: - static long double get_inf() { -# if defined (_STLP_BIG_ENDIAN) - typedef float_helper _FloatHelper; -# else - typedef float_helper2 _FloatHelper; -# endif - return _FloatHelper::get_from_last_word(); - } - static long double get_qNaN() { -# if defined (_STLP_BIG_ENDIAN) - typedef float_helper _FloatHelper; -# else - typedef float_helper2 _FloatHelper; -# endif - return _FloatHelper::get_from_last_word(); - } - static long double get_sNaN() { -# if defined (_STLP_BIG_ENDIAN) - typedef float_helper _FloatHelper; -# else - typedef float_helper2 _FloatHelper; -# endif - return _FloatHelper::get_from_last_word(); - } -}; - -template -long double _STLP_CALL _LimG<__dummy>::get_LD_inf() { - const int __use_double_limits = sizeof(double) == sizeof(long double) ? 1 : 0; - return _NumericLimitsAccess<__use_double_limits>::get_inf(); -} -template -long double _STLP_CALL _LimG<__dummy>::get_LD_qNaN() { - const int __use_double_limits = sizeof(double) == sizeof(long double) ? 1 : 0; - return _NumericLimitsAccess<__use_double_limits>::get_qNaN(); -} -template -long double _STLP_CALL _LimG<__dummy>::get_LD_sNaN() { - const int __use_double_limits = sizeof(double) == sizeof(long double) ? 1 : 0; - return _NumericLimitsAccess<__use_double_limits>::get_sNaN(); -} -template -long double _STLP_CALL _LimG<__dummy>::get_LD_denormMin() { - typedef float_helper _FloatHelper; - return _FloatHelper::get_from_first_word(); -} -# endif - -#endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */ - -#undef _STLP_LIMITS_MIN_TYPE -#undef _STLP_LIMITS_MAX_TYPE - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_LIMITS_C_INCLUDED */ diff --git a/build/stlport/stlport/stl/_limits.h b/build/stlport/stlport/stl/_limits.h deleted file mode 100644 index c0091f6aa9c1..000000000000 --- a/build/stlport/stlport/stl/_limits.h +++ /dev/null @@ -1,519 +0,0 @@ -/* - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This may be not portable code. Parts of numeric_limits<> are - * inherently machine-dependent. At present this file is suitable - * for the MIPS, SPARC, Alpha and ia32 architectures. - */ - -#ifndef _STLP_INTERNAL_LIMITS -#define _STLP_INTERNAL_LIMITS - -#ifndef _STLP_CLIMITS -# include -#endif - -#ifndef _STLP_CFLOAT -# include -#endif - -#if defined (_STLP_HAS_WCHAR_T) && !defined (_STLP_INTERNAL_CWCHAR) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -enum float_round_style { - round_indeterminate = -1, - round_toward_zero = 0, - round_to_nearest = 1, - round_toward_infinity = 2, - round_toward_neg_infinity = 3 -}; - -enum float_denorm_style { - denorm_indeterminate = -1, - denorm_absent = 0, - denorm_present = 1 -}; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Base class for all specializations of numeric_limits. -template -class _Numeric_limits_base { -public: - - static __number (_STLP_CALL min)() _STLP_NOTHROW { return __number(); } - static __number (_STLP_CALL max)() _STLP_NOTHROW { return __number(); } - - _STLP_STATIC_CONSTANT(int, digits = 0); - _STLP_STATIC_CONSTANT(int, digits10 = 0); - _STLP_STATIC_CONSTANT(int, radix = 0); - _STLP_STATIC_CONSTANT(int, min_exponent = 0); - _STLP_STATIC_CONSTANT(int, min_exponent10 = 0); - _STLP_STATIC_CONSTANT(int, max_exponent = 0); - _STLP_STATIC_CONSTANT(int, max_exponent10 = 0); - - _STLP_STATIC_CONSTANT(float_denorm_style, has_denorm = denorm_absent); - _STLP_STATIC_CONSTANT(float_round_style, round_style = round_toward_zero); - - _STLP_STATIC_CONSTANT(bool, is_specialized = false); - _STLP_STATIC_CONSTANT(bool, is_signed = false); - _STLP_STATIC_CONSTANT(bool, is_integer = false); - _STLP_STATIC_CONSTANT(bool, is_exact = false); - _STLP_STATIC_CONSTANT(bool, has_infinity = false); - _STLP_STATIC_CONSTANT(bool, has_quiet_NaN = false); - _STLP_STATIC_CONSTANT(bool, has_signaling_NaN = false); - _STLP_STATIC_CONSTANT(bool, has_denorm_loss = false); - _STLP_STATIC_CONSTANT(bool, is_iec559 = false); - _STLP_STATIC_CONSTANT(bool, is_bounded = false); - _STLP_STATIC_CONSTANT(bool, is_modulo = false); - _STLP_STATIC_CONSTANT(bool, traps = false); - _STLP_STATIC_CONSTANT(bool, tinyness_before = false); - - static __number _STLP_CALL epsilon() _STLP_NOTHROW { return __number(); } - static __number _STLP_CALL round_error() _STLP_NOTHROW { return __number(); } - - static __number _STLP_CALL infinity() _STLP_NOTHROW { return __number(); } - static __number _STLP_CALL quiet_NaN() _STLP_NOTHROW { return __number(); } - static __number _STLP_CALL signaling_NaN() _STLP_NOTHROW { return __number(); } - static __number _STLP_CALL denorm_min() _STLP_NOTHROW { return __number(); } -}; - -// Base class for integers. - -#ifdef _STLP_LIMITED_DEFAULT_TEMPLATES -# ifdef _STLP_LONG_LONG -# define _STLP_LIMITS_MIN_TYPE _STLP_LONG_LONG -# define _STLP_LIMITS_MAX_TYPE unsigned _STLP_LONG_LONG -# else -# define _STLP_LIMITS_MIN_TYPE long -# define _STLP_LIMITS_MAX_TYPE unsigned long -# endif -#else -# define _STLP_LIMITS_MIN_TYPE _Int -# define _STLP_LIMITS_MAX_TYPE _Int -#endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */ - -template -class _Integer_limits : public _Numeric_limits_base<_Int> { -public: - - static _Int (_STLP_CALL min) () _STLP_NOTHROW { return (_Int)__imin; } - static _Int (_STLP_CALL max) () _STLP_NOTHROW { return (_Int)__imax; } - - _STLP_STATIC_CONSTANT(int, digits = (__idigits < 0) ? ((int)((sizeof(_Int) * (CHAR_BIT))) - ((__imin == 0) ? 0 : 1)) : (__idigits)); - _STLP_STATIC_CONSTANT(int, digits10 = (digits * 301UL) / 1000); - _STLP_STATIC_CONSTANT(int, radix = 2); - _STLP_STATIC_CONSTANT(bool, is_specialized = true); - _STLP_STATIC_CONSTANT(bool, is_signed = (__imin != 0)); - _STLP_STATIC_CONSTANT(bool, is_integer = true); - _STLP_STATIC_CONSTANT(bool, is_exact = true); - _STLP_STATIC_CONSTANT(bool, is_bounded = true); - _STLP_STATIC_CONSTANT(bool, is_modulo = __ismod); -}; - -// Base class for floating-point numbers. -template -class _Floating_limits : public _Numeric_limits_base<__number> { -public: - - _STLP_STATIC_CONSTANT(int, digits = __Digits); - _STLP_STATIC_CONSTANT(int, digits10 = __Digits10); - _STLP_STATIC_CONSTANT(int, radix = FLT_RADIX); - _STLP_STATIC_CONSTANT(int, min_exponent = __MinExp); - _STLP_STATIC_CONSTANT(int, max_exponent = __MaxExp); - _STLP_STATIC_CONSTANT(int, min_exponent10 = __MinExp10); - _STLP_STATIC_CONSTANT(int, max_exponent10 = __MaxExp10); - - _STLP_STATIC_CONSTANT(float_denorm_style, has_denorm = __DenormStyle); - _STLP_STATIC_CONSTANT(float_round_style, round_style = __RoundStyle); - - _STLP_STATIC_CONSTANT(bool, is_specialized = true); - _STLP_STATIC_CONSTANT(bool, is_signed = true); - - _STLP_STATIC_CONSTANT(bool, has_infinity = true); -#if (!defined (_STLP_MSVC) || (_STLP_MSVC > 1300)) && \ - (!defined (__BORLANDC__) || (__BORLANDC__ >= 0x590)) && \ - (!defined (_CRAY) || defined (_CRAYIEEE)) - _STLP_STATIC_CONSTANT(bool, has_quiet_NaN = true); - _STLP_STATIC_CONSTANT(bool, has_signaling_NaN = true); -#else - _STLP_STATIC_CONSTANT(bool, has_quiet_NaN = false); - _STLP_STATIC_CONSTANT(bool, has_signaling_NaN = false); -#endif - - _STLP_STATIC_CONSTANT(bool, is_iec559 = __IsIEC559 && has_infinity && has_quiet_NaN && has_signaling_NaN && (has_denorm == denorm_present)); - _STLP_STATIC_CONSTANT(bool, has_denorm_loss = false); - _STLP_STATIC_CONSTANT(bool, is_bounded = true); - _STLP_STATIC_CONSTANT(bool, traps = true); - _STLP_STATIC_CONSTANT(bool, tinyness_before = false); -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -// Class numeric_limits - -// The unspecialized class. - -template -class numeric_limits : public _STLP_PRIV _Numeric_limits_base<_Tp> {}; - -// Specializations for all built-in integral types. - -#if !defined (_STLP_NO_BOOL) -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; -#endif /* _STLP_NO_BOOL */ - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -#if !defined (_STLP_NO_SIGNED_BUILTINS) -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; -#endif - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -#if !(defined (_STLP_NO_WCHAR_T) || defined (_STLP_WCHAR_T_IS_USHORT)) - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -#endif - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -#if defined (__xlC__) && (__xlC__ == 0x500) -# undef INT_MIN -# define INT_MIN -2147483648 -#endif - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; - -#if defined (_STLP_LONG_LONG) - -# if defined (_STLP_MSVC) || defined (__BORLANDC__) -# define LONGLONG_MAX 0x7fffffffffffffffi64 -# define LONGLONG_MIN (-LONGLONG_MAX-1i64) -# define ULONGLONG_MAX 0xffffffffffffffffUi64 -# else -# ifndef LONGLONG_MAX -# define LONGLONG_MAX 0x7fffffffffffffffLL -# endif -# ifndef LONGLONG_MIN -# define LONGLONG_MIN (-LONGLONG_MAX-1LL) -# endif -# ifndef ULONGLONG_MAX -# define ULONGLONG_MAX 0xffffffffffffffffULL -# endif -# endif - -# if !defined (__GNUC__) || (__GNUC__ == 2 && __GNUC_MINOR__ <= 96) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 3) - -_STLP_TEMPLATE_NULL -class numeric_limits<_STLP_LONG_LONG> - : public _STLP_PRIV _Integer_limits<_STLP_LONG_LONG, LONGLONG_MIN, LONGLONG_MAX, -1, true> -{}; - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Integer_limits -{}; -# else /* gcc 2.97 (after 2000-11-01), 2.98, 3.0 */ -/* - newest gcc has new mangling scheme, that has problem - with generating name [instantiated] of template specialization like - _Integer_limits<_STLP_LONG_LONG, LONGLONG_MIN, LONGLONG_MAX, -1, true> - ~~~~~~~~~~~~ ~~~~~~~~~~~~ - Below is code that solve this problem. - - ptr - */ -_STLP_TEMPLATE_NULL -class numeric_limits<_STLP_LONG_LONG> - : public _STLP_PRIV _Numeric_limits_base<_STLP_LONG_LONG> { -public: - - static _STLP_LONG_LONG (_STLP_CALL min) () _STLP_NOTHROW { return LONGLONG_MIN; } - static _STLP_LONG_LONG (_STLP_CALL max) () _STLP_NOTHROW { return LONGLONG_MAX; } - - _STLP_STATIC_CONSTANT(int, digits = ((int)((sizeof(_STLP_LONG_LONG) * (CHAR_BIT))) - 1)); - _STLP_STATIC_CONSTANT(int, digits10 = (digits * 301UL) / 1000); - _STLP_STATIC_CONSTANT(int, radix = 2); - _STLP_STATIC_CONSTANT(bool, is_specialized = true); - _STLP_STATIC_CONSTANT(bool, is_signed = true); - _STLP_STATIC_CONSTANT(bool, is_integer = true); - _STLP_STATIC_CONSTANT(bool, is_exact = true); - _STLP_STATIC_CONSTANT(bool, is_bounded = true); - _STLP_STATIC_CONSTANT(bool, is_modulo = true); -}; - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Numeric_limits_base { -public: - - static unsigned _STLP_LONG_LONG (_STLP_CALL min) () _STLP_NOTHROW { return 0ULL; } - static unsigned _STLP_LONG_LONG (_STLP_CALL max) () _STLP_NOTHROW { return ULONGLONG_MAX; } - - _STLP_STATIC_CONSTANT(int, digits = ((int)((sizeof(unsigned _STLP_LONG_LONG) * (CHAR_BIT))))); - _STLP_STATIC_CONSTANT(int, digits10 = (digits * 301UL) / 1000); - _STLP_STATIC_CONSTANT(int, radix = 2); - _STLP_STATIC_CONSTANT(bool, is_specialized = true); - _STLP_STATIC_CONSTANT(bool, is_signed = false); - _STLP_STATIC_CONSTANT(bool, is_integer = true); - _STLP_STATIC_CONSTANT(bool, is_exact = true); - _STLP_STATIC_CONSTANT(bool, is_bounded = true); - _STLP_STATIC_CONSTANT(bool, is_modulo = true); -}; - -# endif /* __GNUC__ > 2000-11-01 */ - -#endif /* _STLP_LONG_LONG */ - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Specializations for all built-in floating-point types. -template -class _LimG { -public: - static float _STLP_CALL get_F_inf(); - static float _STLP_CALL get_F_qNaN(); - static float _STLP_CALL get_F_sNaN(); - static float _STLP_CALL get_F_denormMin(); - static double _STLP_CALL get_D_inf(); - static double _STLP_CALL get_D_qNaN(); - static double _STLP_CALL get_D_sNaN(); - static double _STLP_CALL get_D_denormMin(); - -#if !defined (_STLP_NO_LONG_DOUBLE) - static long double _STLP_CALL get_LD_inf(); - static long double _STLP_CALL get_LD_qNaN(); - static long double _STLP_CALL get_LD_sNaN(); - static long double _STLP_CALL get_LD_denormMin(); -#endif -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS _LimG; -#endif - -#if defined (__GNUC__) -# if defined (__FLT_DENORM_MIN__) -# define _STLP_FLT_DENORM_MIN __FLT_DENORM_MIN__ -# else -# define _STLP_FLT_DENORM_STYLE denorm_absent -# endif -# if defined (__DBL_DENORM_MIN__) -# define _STLP_DBL_DENORM_MIN __DBL_DENORM_MIN__ -# else -# define _STLP_DBL_DENORM_STYLE denorm_absent -# endif -# if defined (__LDBL_DENORM_MIN__) -# define _STLP_LDBL_DENORM_MIN __LDBL_DENORM_MIN__ -# else -# define _STLP_LDBL_DENORM_STYLE denorm_absent -# endif -#endif - -/* If compiler do not expose thanks to some macro its status regarding - * denormalized floating point numbers, we consider that denormalization - * is present. Unit tests will tell us if compiler do not support them. */ -#if !defined (_STLP_FLT_DENORM_STYLE) -# define _STLP_FLT_DENORM_STYLE denorm_present -#endif - -#if !defined (_STLP_DBL_DENORM_STYLE) -# define _STLP_DBL_DENORM_STYLE denorm_present -#endif - -#if !defined (_STLP_LDBL_DENORM_STYLE) -# define _STLP_LDBL_DENORM_STYLE denorm_present -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Floating_limits { -public: - static float (_STLP_CALL min) () _STLP_NOTHROW { return FLT_MIN; } - static float _STLP_CALL denorm_min() _STLP_NOTHROW -#if defined (_STLP_FLT_DENORM_MIN) - { return _STLP_FLT_DENORM_MIN; } -#else - { return _STLP_FLT_DENORM_STYLE ? _STLP_PRIV _LimG::get_F_denormMin() : FLT_MIN; } -#endif - static float (_STLP_CALL max) () _STLP_NOTHROW { return FLT_MAX; } - static float _STLP_CALL epsilon() _STLP_NOTHROW { return FLT_EPSILON; } - static float _STLP_CALL round_error() _STLP_NOTHROW { return 0.5f; } // Units: ulps. - static float _STLP_CALL infinity() _STLP_NOTHROW { return _STLP_PRIV _LimG::get_F_inf(); } - static float _STLP_CALL quiet_NaN() _STLP_NOTHROW { return _STLP_PRIV _LimG::get_F_qNaN(); } - static float _STLP_CALL signaling_NaN() _STLP_NOTHROW { return _STLP_PRIV _LimG::get_F_sNaN(); } -}; - -#undef _STLP_FLT_DENORM_MIN -#undef _STLP_FLT_DNORM_STYLE - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Floating_limits { -public: - static double (_STLP_CALL min)() _STLP_NOTHROW { return DBL_MIN; } - static double _STLP_CALL denorm_min() _STLP_NOTHROW -#if defined (_STLP_DBL_DENORM_MIN) - { return _STLP_DBL_DENORM_MIN; } -#else - { return _STLP_DBL_DENORM_STYLE ? _STLP_PRIV _LimG::get_D_denormMin() : DBL_MIN; } -#endif - static double (_STLP_CALL max)() _STLP_NOTHROW { return DBL_MAX; } - static double _STLP_CALL epsilon() _STLP_NOTHROW { return DBL_EPSILON; } - static double _STLP_CALL round_error() _STLP_NOTHROW { return 0.5; } // Units: ulps. - static double _STLP_CALL infinity() _STLP_NOTHROW { return _STLP_PRIV _LimG::get_D_inf(); } - static double _STLP_CALL quiet_NaN() _STLP_NOTHROW { return _STLP_PRIV _LimG::get_D_qNaN(); } - static double _STLP_CALL signaling_NaN() _STLP_NOTHROW { return _STLP_PRIV _LimG::get_D_sNaN(); } -}; - -#if !defined (_STLP_NO_LONG_DOUBLE) - -_STLP_TEMPLATE_NULL -class numeric_limits - : public _STLP_PRIV _Floating_limits { -public: - static long double (_STLP_CALL min) () _STLP_NOTHROW { return LDBL_MIN; } - static long double _STLP_CALL denorm_min() _STLP_NOTHROW -#if defined (_STLP_LDBL_DENORM_MIN) - { return _STLP_LDBL_DENORM_MIN; } -#else - { return _STLP_LDBL_DENORM_STYLE ? _STLP_PRIV _LimG::get_LD_denormMin() : LDBL_MIN; } -#endif - _STLP_STATIC_CONSTANT(bool, is_iec559 = false); - static long double (_STLP_CALL max) () _STLP_NOTHROW { return LDBL_MAX; } - static long double _STLP_CALL epsilon() _STLP_NOTHROW { return LDBL_EPSILON; } - static long double _STLP_CALL round_error() _STLP_NOTHROW { return 0.5l; } - static long double _STLP_CALL infinity() _STLP_NOTHROW - //For MSVC, long double is nothing more than an alias for double. -#if !defined (_STLP_MSVC) - { return _STLP_PRIV _LimG::get_LD_inf(); } -#else - { return _STLP_PRIV _LimG::get_D_inf(); } -#endif - static long double _STLP_CALL quiet_NaN() _STLP_NOTHROW -#if !defined (_STLP_MSVC) - { return _STLP_PRIV _LimG::get_LD_qNaN(); } -#else - { return _STLP_PRIV _LimG::get_D_qNaN(); } -#endif - static long double _STLP_CALL signaling_NaN() _STLP_NOTHROW -#if !defined (_STLP_MSVC) - { return _STLP_PRIV _LimG::get_LD_sNaN(); } -#else - { return _STLP_PRIV _LimG::get_D_sNaN(); } -#endif -}; - -#endif - -// We write special values (Inf and NaN) as bit patterns and -// cast the the appropriate floating-point types. -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_list.c b/build/stlport/stlport/stl/_list.c deleted file mode 100644 index 86e420b72dd6..000000000000 --- a/build/stlport/stlport/stl/_list.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_LIST_C -#define _STLP_LIST_C - -#ifndef _STLP_INTERNAL_LIST_H -# include -#endif - -#ifndef _STLP_CARRAY_H -# include -#endif - -#ifndef _STLP_RANGE_ERRORS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) -template -void _STLP_CALL -_List_global<_Dummy>::_Transfer(_List_node_base* __position, - _List_node_base* __first, _List_node_base* __last) { - if (__position != __last) { - // Remove [first, last) from its old position. - __last->_M_prev->_M_next = __position; - __first->_M_prev->_M_next = __last; - __position->_M_prev->_M_next = __first; - - // Splice [first, last) into its new position. - _Node_base* __tmp = __position->_M_prev; - __position->_M_prev = __last->_M_prev; - __last->_M_prev = __first->_M_prev; - __first->_M_prev = __tmp; - } -} -#endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */ - -template -void _List_base<_Tp,_Alloc>::clear() { - _Node* __cur = __STATIC_CAST(_Node*, _M_node._M_data._M_next); - while ( -#if defined (__BORLANDC__) // runtime error - __cur && -#endif - __cur != &(_M_node._M_data)) { - _Node* __tmp = __cur; - __cur = __STATIC_CAST(_Node*, __cur->_M_next); - _STLP_STD::_Destroy(&__tmp->_M_data); - this->_M_node.deallocate(__tmp, 1); - } - _M_node._M_data._M_next = &_M_node._M_data; - _M_node._M_data._M_prev = &_M_node._M_data; -} - -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -# define size_type size_t -#endif - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define list _STLP_PTR_IMPL_NAME(list) -#elif defined (_STLP_DEBUG) -# define list _STLP_NON_DBG_NAME(list) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template -void list<_Tp, _Alloc>::resize(size_type __new_size, const _Tp& __x) { - iterator __i = begin(); - size_type __len = 0; - for ( ; __i != end() && __len < __new_size; ++__i, ++__len); - - if (__len == __new_size) - erase(__i, end()); - else // __i == end() - insert(end(), __new_size - __len, __x); -} - -template -list<_Tp, _Alloc>& list<_Tp, _Alloc>::operator=(const list<_Tp, _Alloc>& __x) { - if (this != &__x) { - iterator __first1 = begin(); - iterator __last1 = end(); - const_iterator __first2 = __x.begin(); - const_iterator __last2 = __x.end(); - while (__first1 != __last1 && __first2 != __last2) - *__first1++ = *__first2++; - if (__first2 == __last2) - erase(__first1, __last1); - else - insert(__last1, __first2, __last2); - } - return *this; -} - -template -void list<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val) { - iterator __i = begin(); - for ( ; __i != end() && __n > 0; ++__i, --__n) - *__i = __val; - if (__n > 0) - insert(end(), __n, __val); - else - erase(__i, end()); -} - -#if !defined (list) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -template -void _S_remove_if(list<_Tp, _Alloc>& __that, _Predicate __pred) { - typedef typename list<_Tp, _Alloc>::iterator _Literator; - _Literator __first = __that.begin(); - _Literator __last = __that.end(); - while (__first != __last) { - _Literator __next = __first; - ++__next; - if (__pred(*__first)) __that.erase(__first); - __first = __next; - } -} - -template -void _S_unique(list<_Tp, _Alloc>& __that, _BinaryPredicate __binary_pred) { - typedef typename list<_Tp, _Alloc>::iterator _Literator; - _Literator __first = __that.begin(); - _Literator __last = __that.end(); - if (__first == __last) return; - _Literator __next = __first; - while (++__next != __last) { - if (__binary_pred(*__first, *__next)) - __that.erase(__next); - else - __first = __next; - __next = __first; - } -} - -template -void _S_merge(list<_Tp, _Alloc>& __that, list<_Tp, _Alloc>& __x, - _StrictWeakOrdering __comp) { - typedef typename list<_Tp, _Alloc>::iterator _Literator; - _Literator __first1 = __that.begin(); - _Literator __last1 = __that.end(); - _Literator __first2 = __x.begin(); - _Literator __last2 = __x.end(); - if (__that.get_allocator() == __x.get_allocator()) { - while (__first1 != __last1 && __first2 != __last2) { - if (__comp(*__first2, *__first1)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first1, *__first2), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - _Literator __next = __first2; - _List_global_inst::_Transfer(__first1._M_node, __first2._M_node, (++__next)._M_node); - __first2 = __next; - } - else - ++__first1; - } - if (__first2 != __last2) - _List_global_inst::_Transfer(__last1._M_node, __first2._M_node, __last2._M_node); - } - else { - while (__first1 != __last1 && __first2 != __last2) { - if (__comp(*__first2, *__first1)) { - _STLP_VERBOSE_ASSERT(!__comp(*__first1, *__first2), _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __first1 = __that.insert(__first1, *__first2); - } - else - ++__first1; - } - if (__first2 != __last2) { - __that.insert(__first1, __first2, __last2); - } - __x.clear(); - } -} - -template -void _S_sort(list<_Tp, _Alloc>& __that, _StrictWeakOrdering __comp) { - // Do nothing if the list has length 0 or 1. - if (__that._M_node._M_data._M_next == &__that._M_node._M_data || - __that._M_node._M_data._M_next->_M_next == &__that._M_node._M_data) - return; - - list<_Tp, _Alloc> __carry(__that.get_allocator()); - const int NB = 64; - _STLP_PRIV _CArray, NB> __counter(__carry); - int __fill = 0; - while (!__that.empty()) { - __carry.splice(__carry.begin(), __that, __that.begin()); - int __i = 0; - while (__i < __fill && !__counter[__i].empty()) { - _S_merge(__counter[__i], __carry, __comp); - __carry.swap(__counter[__i++]); - } - __carry.swap(__counter[__i]); - if (__i == __fill) { - ++__fill; - if (__fill >= NB) { - //Looks like the list has too many elements to be sorted with this algorithm: - __stl_throw_overflow_error("list::sort"); - } - } - } - - for (int __i = 1; __i < __fill; ++__i) - _S_merge(__counter[__i], __counter[__i - 1], __comp); - __that.swap(__counter[__fill - 1]); -} - -#if defined (list) -# undef list -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_LIST_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_list.h b/build/stlport/stlport/stl/_list.h deleted file mode 100644 index 6cd3f2b1a141..000000000000 --- a/build/stlport/stlport/stl/_list.h +++ /dev/null @@ -1,742 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_LIST_IMPL_H -#define _STLP_INTERNAL_LIST_IMPL_H - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_CONSTRUCT_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -struct _List_node_base { - _List_node_base* _M_next; - _List_node_base* _M_prev; -}; - -template -class _List_global { -public: - typedef _List_node_base _Node_base; - static void _STLP_CALL _Transfer(_Node_base* __pos, - _Node_base* __first, _Node_base* __last); -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS _List_global; -#endif -typedef _List_global _List_global_inst; - -template -class _List_node : public _List_node_base { -public: - _Tp _M_data; - __TRIVIAL_STUFF(_List_node) -}; - -struct _List_iterator_base { - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef bidirectional_iterator_tag iterator_category; - - _List_node_base* _M_node; - - _List_iterator_base(_List_node_base* __x) : _M_node(__x) {} - - void _M_incr() { _M_node = _M_node->_M_next; } - void _M_decr() { _M_node = _M_node->_M_prev; } -}; - - -template -struct _List_iterator : public _List_iterator_base { - typedef _Tp value_type; - typedef typename _Traits::pointer pointer; - typedef typename _Traits::reference reference; - - typedef _List_iterator<_Tp, _Traits> _Self; - typedef typename _Traits::_NonConstTraits _NonConstTraits; - typedef _List_iterator<_Tp, _NonConstTraits> iterator; - typedef typename _Traits::_ConstTraits _ConstTraits; - typedef _List_iterator<_Tp, _ConstTraits> const_iterator; - - typedef bidirectional_iterator_tag iterator_category; - typedef _List_node<_Tp> _Node; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - - explicit _List_iterator(_List_node_base* __x) : _List_iterator_base(__x) {} - _List_iterator() : _List_iterator_base(0) {} - //copy constructor for iterator and constructor from iterator for const_iterator - _List_iterator(const iterator& __x) : _List_iterator_base(__x._M_node) {} - - reference operator*() const { return __STATIC_CAST(_Node*, this->_M_node)->_M_data; } - - _STLP_DEFINE_ARROW_OPERATOR - - _Self& operator++() { - this->_M_incr(); - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - this->_M_incr(); - return __tmp; - } - _Self& operator--() { - this->_M_decr(); - return *this; - } - _Self operator--(int) { - _Self __tmp = *this; - this->_M_decr(); - return __tmp; - } - bool operator==(const_iterator __y ) const { - return this->_M_node == __y._M_node; - } - bool operator!=(const_iterator __y ) const { - return this->_M_node != __y._M_node; - } -}; - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -_STLP_MOVE_TO_STD_NAMESPACE -template -struct __type_traits<_STLP_PRIV _List_iterator<_Tp, _Traits> > { - typedef __false_type has_trivial_default_constructor; - typedef __true_type has_trivial_copy_constructor; - typedef __true_type has_trivial_assignment_operator; - typedef __true_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -_STLP_MOVE_TO_STD_NAMESPACE -template -inline _Tp* value_type(const _STLP_PRIV _List_iterator<_Tp, _Traits>&) { return 0; } -inline bidirectional_iterator_tag iterator_category(const _STLP_PRIV _List_iterator_base&) { return bidirectional_iterator_tag();} -inline ptrdiff_t* distance_type(const _STLP_PRIV _List_iterator_base&) { return 0; } -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -// Base class that encapsulates details of allocators and helps -// to simplify EH - -template -class _List_base { -protected: - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef _List_node_base _Node_base; - typedef _List_node<_Tp> _Node; - typedef _List_base<_Tp, _Alloc> _Self; - typedef typename _Alloc_traits<_Node, _Alloc>::allocator_type _Node_allocator_type; -public: - typedef _STLP_alloc_proxy<_Node_base, _Node, _Node_allocator_type> _AllocProxy; - typedef _Alloc allocator_type; - - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR((const _Node_allocator_type&)_M_node, _Tp); } - - _List_base(const allocator_type& __a) : _M_node(_STLP_CONVERT_ALLOCATOR(__a, _Node), _Node_base()) - { _M_empty_initialize(); } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _List_base(__move_source<_Self> src) : - _M_node(__move_source<_AllocProxy>(src.get()._M_node)) { - if (src.get().empty()) - //We force this to empty. - _M_empty_initialize(); - else { - src.get()._M_empty_initialize(); - _M_node._M_data._M_prev->_M_next = _M_node._M_data._M_next->_M_prev = &_M_node._M_data; - } - } -#endif - - ~_List_base() - { clear(); } - - void clear(); - bool empty() const { return _M_node._M_data._M_next == &_M_node._M_data; } - - void _M_empty_initialize() { - _M_node._M_data._M_next = &_M_node._M_data; - _M_node._M_data._M_prev = _M_node._M_data._M_next; - } - -public: - _AllocProxy _M_node; -}; - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define list _STLP_PTR_IMPL_NAME(list) -#elif defined (_STLP_DEBUG) -# define list _STLP_NON_DBG_NAME(list) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template ) > -class list; - -#if !defined (list) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -// helper functions to reduce code duplication -template -void _S_remove_if(list<_Tp, _Alloc>& __that, _Predicate __pred); - -template -void _S_unique(list<_Tp, _Alloc>& __that, _BinaryPredicate __binary_pred); - -template -void _S_merge(list<_Tp, _Alloc>& __that, list<_Tp, _Alloc>& __x, - _StrictWeakOrdering __comp); - -template -void _S_sort(list<_Tp, _Alloc>& __that, _StrictWeakOrdering __comp); - -#if !defined (list) -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template -class list : public _STLP_PRIV _List_base<_Tp, _Alloc> -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (list) - , public __stlport_class > -#endif -{ - typedef _STLP_PRIV _List_base<_Tp, _Alloc> _Base; - typedef list<_Tp, _Alloc> _Self; - typedef _STLP_PRIV _List_node<_Tp> _Node; - typedef _STLP_PRIV _List_node_base _Node_base; -public: - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef typename _Base::allocator_type allocator_type; - typedef bidirectional_iterator_tag _Iterator_category; - -public: - typedef _STLP_PRIV _List_iterator<_Tp, _Nonconst_traits<_Tp> > iterator; - typedef _STLP_PRIV _List_iterator<_Tp, _Const_traits<_Tp> > const_iterator; - _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS; - -protected: -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - _Node_base* _M_create_node(const_reference __x = value_type()) { -#else - _Node_base* _M_create_node(const_reference __x) { -#endif - _Node* __p = this->_M_node.allocate(1); - _STLP_TRY { - _Copy_Construct(&__p->_M_data, __x); - } - _STLP_UNWIND(this->_M_node.deallocate(__p, 1)) - return __p; - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - _Node_base* _M_create_node() { - _Node* __p = this->_M_node.allocate(1); - _STLP_TRY { - _STLP_STD::_Construct(&__p->_M_data); - } - _STLP_UNWIND(this->_M_node.deallocate(__p, 1)) - return __p; - } -#endif - -public: -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit list(size_type __n, const_reference __val = _STLP_DEFAULT_CONSTRUCTED(value_type), - const allocator_type& __a = allocator_type()) -#else - explicit list(size_type __n) - : _STLP_PRIV _List_base<_Tp, _Alloc>(allocator_type()) - { this->insert(begin(), __n, _STLP_DEFAULT_CONSTRUCTED(value_type)); } - list(size_type __n, const_reference __val) - : _STLP_PRIV _List_base<_Tp, _Alloc>(allocator_type()) - { this->insert(begin(), __n, __val); } - list(size_type __n, const_reference __val, const allocator_type& __a) -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - : _STLP_PRIV _List_base<_Tp, _Alloc>(__a) - { this->insert(begin(), __n, __val); } - -#if defined (_STLP_MEMBER_TEMPLATES) - // We don't need any dispatching tricks here, because insert does all of - // that anyway. - template - list(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _STLP_PRIV _List_base<_Tp, _Alloc>(__a) - { _M_insert(begin(), __first, __last); } - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - list(_InputIterator __first, _InputIterator __last) - : _STLP_PRIV _List_base<_Tp, _Alloc>(allocator_type()) - { _M_insert(begin(), __first, __last); } -# endif -#else /* _STLP_MEMBER_TEMPLATES */ - list(const value_type* __first, const value_type* __last, - const allocator_type& __a = allocator_type()) - : _STLP_PRIV _List_base<_Tp, _Alloc>(__a) - { _M_insert(begin(), __first, __last); } - list(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type()) - : _STLP_PRIV _List_base<_Tp, _Alloc>(__a) - { _M_insert(begin(), __first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit list(const allocator_type& __a = allocator_type()) -#else - list() - : _STLP_PRIV _List_base<_Tp, _Alloc>(allocator_type()) {} - list(const allocator_type& __a) -#endif - : _STLP_PRIV _List_base<_Tp, _Alloc>(__a) {} - - list(const _Self& __x) : _STLP_PRIV _List_base<_Tp, _Alloc>(__x.get_allocator()) - { _M_insert(begin(), __x.begin(), __x.end()); } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - list(__move_source<_Self> src) - : _STLP_PRIV _List_base<_Tp, _Alloc>(__move_source<_Base>(src.get())) {} -#endif - - ~list() {} - - _Self& operator = (const _Self& __x); - - iterator begin() { return iterator(this->_M_node._M_data._M_next); } - const_iterator begin() const { return const_iterator(this->_M_node._M_data._M_next); } - - iterator end() { return iterator(&this->_M_node._M_data); } - const_iterator end() const { return const_iterator(__CONST_CAST(_Node_base*, &this->_M_node._M_data)); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - size_type size() const { - size_type __result = _STLP_STD::distance(begin(), end()); - return __result; - } - size_type max_size() const { return size_type(-1); } - - reference front() { return *begin(); } - const_reference front() const { return *begin(); } - reference back() { return *(--end()); } - const_reference back() const { return *(--end()); } - -private: - void _M_swap_aux(_Self& __x) { - __x._M_node._M_swap_alloc(this->_M_node); - __x._M_node._M_data._M_next = this->_M_node._M_data._M_next; - __x._M_node._M_data._M_next->_M_prev = &__x._M_node._M_data; - __x._M_node._M_data._M_prev = this->_M_node._M_data._M_prev; - __x._M_node._M_data._M_prev->_M_next = &__x._M_node._M_data; - this->_M_empty_initialize(); - } - -public: - void swap(_Self& __x) { - if (__x.empty()) { - if (this->empty()) { - return; - } - this->_M_swap_aux(__x); - } else if (this->empty()) { - __x._M_swap_aux(*this); - } else { - this->_M_node.swap(__x._M_node); - _STLP_STD::swap(this->_M_node._M_data._M_prev->_M_next, __x._M_node._M_data._M_prev->_M_next); - _STLP_STD::swap(this->_M_node._M_data._M_next->_M_prev, __x._M_node._M_data._M_next->_M_prev); - } - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos, const_reference __x = value_type()) -#else - iterator insert(iterator __pos, const_reference __x) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - { - _Node_base* __tmp = _M_create_node(__x); - _Node_base* __n = __pos._M_node; - _Node_base* __p = __n->_M_prev; - __tmp->_M_next = __n; - __tmp->_M_prev = __p; - __p->_M_next = __tmp; - __n->_M_prev = __tmp; - return iterator(__tmp); - } - -private: -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_insert(iterator __pos, _InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_insert_dispatch(__pos, __first, __last, _Integral()); - } - - // Check whether it's an integral type. If so, it's not an iterator. - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - const __true_type& /*_IsIntegral*/) { - _M_fill_insert(__pos, __n, __x); - } - template - void _M_insert_dispatch(iterator __pos, - _InputIter __first, _InputIter __last, - const __false_type& /*_IsIntegral*/) { -#else /* _STLP_MEMBER_TEMPLATES */ - void _M_insert(iterator __pos, const value_type* __first, const value_type* __last) { - for (; __first != __last; ++__first) - insert(__pos, *__first); - } - void _M_insert(iterator __pos, const_iterator __first, const_iterator __last) { -#endif /* _STLP_MEMBER_TEMPLATES */ - //We use a temporary list to avoid the auto reference troubles (infinite loop) - for (; __first != __last; ++__first) - insert(__pos, *__first); - } - -public: -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_splice_insert_dispatch(__pos, __first, __last, _Integral()); - } - -private: - // Check whether it's an integral type. If so, it's not an iterator. - template - void _M_splice_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - const __true_type& /*_IsIntegral*/) { - _M_fill_insert(__pos, __n, __x); - } - template - void _M_splice_insert_dispatch(iterator __pos, - _InputIter __first, _InputIter __last, - const __false_type& /*_IsIntegral*/) { -#else /* _STLP_MEMBER_TEMPLATES */ - void insert(iterator __pos, const value_type* __first, const value_type* __last) { - _Self __tmp(__first, __last, this->get_allocator()); - _STLP_ASSERT(__tmp.get_allocator() == this->get_allocator()) - splice(__pos, __tmp); - } - void insert(iterator __pos, const_iterator __first, const_iterator __last) { -#endif /* _STLP_MEMBER_TEMPLATES */ - //We use a temporary list to avoid the auto reference troubles (infinite loop) - _Self __tmp(__first, __last, this->get_allocator()); - splice(__pos, __tmp); - } - -public: - void insert(iterator __pos, size_type __n, const_reference __x) - { _M_fill_insert(__pos, __n, __x); } - -private: - void _M_fill_insert(iterator __pos, size_type __n, const_reference __x) { - for ( ; __n > 0; --__n) - insert(__pos, __x); - } - -public: - void push_front(const_reference __x) { insert(begin(), __x); } - void push_back (const_reference __x) { insert(end(), __x); } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos) - { return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(value_type)); } - void push_front() {insert(begin());} - void push_back() {insert(end());} -# endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - iterator erase(iterator __pos) { - _Node_base* __next_node = __pos._M_node->_M_next; - _Node_base* __prev_node = __pos._M_node->_M_prev; - _Node* __n = __STATIC_CAST(_Node*, __pos._M_node); - __prev_node->_M_next = __next_node; - __next_node->_M_prev = __prev_node; - _STLP_STD::_Destroy(&__n->_M_data); - this->_M_node.deallocate(__n, 1); - return iterator(__next_node); - } - - iterator erase(iterator __first, iterator __last) { - while (__first != __last) - erase(__first++); - return __last; - } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const_reference __x = value_type()); -#else - void resize(size_type __new_size, const_reference __x); - void resize(size_type __new_size) - { this->resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(value_type)); } -#endif /*!_STLP_DONT_SUP_DFLT_PARAM*/ - - void pop_front() { erase(begin()); } - void pop_back() { - iterator __tmp = end(); - erase(--__tmp); - } - -public: - // assign(), a generalized assignment member function. Two - // versions: one that takes a count, and one that takes a range. - // The range version is a member template, so we dispatch on whether - // or not the type is an integer. - - void assign(size_type __n, const_reference __val) { _M_fill_assign(__n, __val); } - - void _M_fill_assign(size_type __n, const_reference __val); - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - - template - void _M_assign_dispatch(_Integer __n, _Integer __val, - const __true_type& /*_IsIntegral*/) { - _M_fill_assign(__n, __val); - } - - template - void _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2, - const __false_type& /*_IsIntegral*/) { -#else - void assign(const value_type *__first2, const value_type *__last2) { - iterator __first1 = begin(); - iterator __last1 = end(); - for ( ; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) - *__first1 = *__first2; - if (__first2 == __last2) - erase(__first1, __last1); - else - insert(__last1, __first2, __last2); - } - void assign(const_iterator __first2, const_iterator __last2) { -#endif /* _STLP_MEMBER_TEMPLATES */ - iterator __first1 = begin(); - iterator __last1 = end(); - for ( ; __first1 != __last1 && __first2 != __last2; ++__first1, ++__first2) - *__first1 = *__first2; - if (__first2 == __last2) - erase(__first1, __last1); - else - insert(__last1, __first2, __last2); - } - -public: - void splice(iterator __pos, _Self& __x) { - if (!__x.empty()) { - if (this->get_allocator() == __x.get_allocator()) { - _STLP_PRIV _List_global_inst::_Transfer(__pos._M_node, __x.begin()._M_node, __x.end()._M_node); - } - else { - insert(__pos, __x.begin(), __x.end()); - __x.clear(); - } - } - } - void splice(iterator __pos, _Self& __x, iterator __i) { - iterator __j = __i; - ++__j; - if (__pos == __i || __pos == __j) return; - if (this->get_allocator() == __x.get_allocator()) { - _STLP_PRIV _List_global_inst::_Transfer(__pos._M_node, __i._M_node, __j._M_node); - } - else { - insert(__pos, *__i); - __x.erase(__i); - } - } - void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) { - if (__first != __last) { - if (this->get_allocator() == __x.get_allocator()) { - _STLP_PRIV _List_global_inst::_Transfer(__pos._M_node, __first._M_node, __last._M_node); - } - else { - insert(__pos, __first, __last); - __x.erase(__first, __last); - } - } - } - - void remove(const_reference __val) { - iterator __first = begin(); - iterator __last = end(); - while (__first != __last) { - iterator __next = __first; - ++__next; - if (__val == *__first) erase(__first); - __first = __next; - } - } - - void unique() - { _STLP_PRIV _S_unique(*this, equal_to()); } - - void merge(_Self& __x) - { _STLP_PRIV _S_merge(*this, __x, less()); } - - void reverse() { - _Node_base* __p = &this->_M_node._M_data; - _Node_base* __tmp = __p; - do { - _STLP_STD::swap(__tmp->_M_next, __tmp->_M_prev); - __tmp = __tmp->_M_prev; // Old next node is now prev. - } while (__tmp != __p); - } - - void sort() - { _STLP_PRIV _S_sort(*this, less()); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void remove_if(_Predicate __pred) - { _STLP_PRIV _S_remove_if(*this, __pred); } - template - void unique(_BinaryPredicate __binary_pred) - { _STLP_PRIV _S_unique(*this, __binary_pred); } - - template - void merge(_Self& __x, - _StrictWeakOrdering __comp) { - _STLP_PRIV _S_merge(*this, __x, __comp); - } - - template - void sort(_StrictWeakOrdering __comp) - { _STLP_PRIV _S_sort(*this, __comp); } -#endif /* _STLP_MEMBER_TEMPLATES */ -}; - -#if defined (list) -# undef list -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# include -#endif - -#if defined (_STLP_DEBUG) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -_STLP_INLINE_LOOP bool _STLP_CALL -operator==(const list<_Tp,_Alloc>& __x, const list<_Tp,_Alloc>& __y) { - typedef typename list<_Tp,_Alloc>::const_iterator const_iterator; - const_iterator __end1 = __x.end(); - const_iterator __end2 = __y.end(); - - const_iterator __i1 = __x.begin(); - const_iterator __i2 = __y.begin(); - while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2) { - ++__i1; - ++__i2; - } - return __i1 == __end1 && __i2 == __end2; -} - -#define _STLP_EQUAL_OPERATOR_SPECIALIZED -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER list<_Tp, _Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER -#undef _STLP_EQUAL_OPERATOR_SPECIALIZED - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > { - typedef __true_type implemented; - typedef typename __move_traits<_Alloc>::complete complete; -}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_LIST_IMPL_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_locale.h b/build/stlport/stlport/stl/_locale.h deleted file mode 100644 index 93faed934f00..000000000000 --- a/build/stlport/stlport/stl/_locale.h +++ /dev/null @@ -1,366 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_LOCALE_H -#define _STLP_INTERNAL_LOCALE_H - -#ifndef _STLP_INTERNAL_CSTDLIB -# include -#endif - -#ifndef _STLP_INTERNAL_CWCHAR -# include -#endif - -#ifndef _STLP_INTERNAL_THREADS_H -# include -#endif - -#ifndef _STLP_STRING_FWD_H -# include -#endif - -#include - -#include - -_STLP_BEGIN_NAMESPACE - -class _Locale_impl; // Forward declaration of opaque type. -class locale; - -template -bool __locale_do_operator_call(const locale& __loc, - const basic_string<_CharT, _Traits, _Alloc>& __x, - const basic_string<_CharT, _Traits, _Alloc>& __y); - -_STLP_DECLSPEC _Locale_impl * _STLP_CALL _get_Locale_impl( _Locale_impl *locimpl ); -_STLP_DECLSPEC _Locale_impl * _STLP_CALL _copy_Nameless_Locale_impl( _Locale_impl *locimpl ); - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -bool _HasFacet(const locale& __loc, const _Facet* __facet) _STLP_NOTHROW; - -template -_Facet* _UseFacet(const locale& __loc, const _Facet* __facet); - -template -void _InsertFacet(locale& __loc, _Facet* __facet); - -_STLP_MOVE_TO_STD_NAMESPACE - -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) || \ - defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) || defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) -# define locale _STLP_NO_MEM_T_NAME(loc) -#endif - -class _STLP_CLASS_DECLSPEC locale { -public: - // types: - class _STLP_CLASS_DECLSPEC facet : protected _Refcount_Base { - protected: - /* Here we filter __init_count user value to 0 or 1 because __init_count is a - * size_t instance and _Refcount_Base use __stl_atomic_t instances that might - * have lower sizeof and generate roll issues. 1 is enough to keep the facet - * alive when required. */ - explicit facet(size_t __init_count = 0) : _Refcount_Base( __init_count == 0 ? 0 : 1 ) {} - virtual ~facet(); - friend class locale; - friend class _Locale_impl; - friend facet * _STLP_CALL _get_facet( facet * ); - friend void _STLP_CALL _release_facet( facet *& ); - - private: // Invalidate assignment and copying. - facet(const facet& ) /* : _Refcount_Base(1) {} */; - void operator=(const facet&); - }; - -#if defined (__MVS__) || defined (__OS400__) - struct -#else - class -#endif - _STLP_CLASS_DECLSPEC id { - public: - size_t _M_index; - static size_t _S_max; - }; - - typedef int category; - _STLP_STATIC_CONSTANT(category, none = 0x000); - _STLP_STATIC_CONSTANT(category, collate = 0x010); - _STLP_STATIC_CONSTANT(category, ctype = 0x020); - _STLP_STATIC_CONSTANT(category, monetary = 0x040); - _STLP_STATIC_CONSTANT(category, numeric = 0x100); - _STLP_STATIC_CONSTANT(category, time = 0x200); - _STLP_STATIC_CONSTANT(category, messages = 0x400); - _STLP_STATIC_CONSTANT(category, all = collate | ctype | monetary | numeric | time | messages); - - // construct/copy/destroy: - locale() _STLP_NOTHROW; - locale(const locale&) _STLP_NOTHROW; - explicit locale(const char *); - locale(const locale&, const char*, category); - -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - template - locale(const locale& __loc, _Facet* __f) { - if ( __f != 0 ) { - this->_M_impl = _get_Locale_impl( _copy_Nameless_Locale_impl( __loc._M_impl ) ); - _STLP_PRIV _InsertFacet(*this, __f); - } else { - this->_M_impl = _get_Locale_impl( __loc._M_impl ); - } - } -#endif - -protected: - // those are for internal use - locale(_Locale_impl*); - -public: - locale(const locale&, const locale&, category); - const locale& operator=(const locale&) _STLP_NOTHROW; - -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -protected: -#endif - ~locale() _STLP_NOTHROW; - -public: -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS) && \ - !defined(_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - template - locale combine(const locale& __loc) const { - _Facet *__facet = 0; - if (!_STLP_PRIV _HasFacet(__loc, __facet)) - _M_throw_on_combine_error(__loc.name()); - - return locale(*this, _STLP_PRIV _UseFacet(__loc, __facet)); - } -#endif - - // locale operations: - string name() const; - - bool operator==(const locale&) const; - bool operator!=(const locale&) const; - -#if !defined (_STLP_MEMBER_TEMPLATES) || defined (_STLP_INLINE_MEMBER_TEMPLATES) || (defined(__MWERKS__) && __MWERKS__ <= 0x2301) - bool operator()(const string& __x, const string& __y) const; -# ifndef _STLP_NO_WCHAR_T - bool operator()(const wstring& __x, const wstring& __y) const; -# endif -#elif !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - template - bool operator()(const basic_string<_CharT, _Traits, _Alloc>& __x, - const basic_string<_CharT, _Traits, _Alloc>& __y) const - { return __locale_do_operator_call(*this, __x, __y); } -#endif - - // global locale objects: -#if !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - static locale _STLP_CALL global(const locale&); -#else - static _Locale_impl* _STLP_CALL global(const locale&); -#endif - static const locale& _STLP_CALL classic(); - -//protected: // Helper functions for locale globals. - facet* _M_get_facet(const id&) const; - // same, but throws - facet* _M_use_facet(const id&) const; - static void _STLP_FUNCTION_THROWS _STLP_CALL _M_throw_on_combine_error(const string& name); - static void _STLP_FUNCTION_THROWS _STLP_CALL _M_throw_on_null_name(); - static void _STLP_FUNCTION_THROWS _STLP_CALL _M_throw_on_creation_failure(int __err_code, - const char* name, const char* facet); - -//protected: // More helper functions. - void _M_insert(facet* __f, id& __id); - - // friends: - friend class _Locale_impl; - -protected: // Data members - _Locale_impl* _M_impl; - _Locale_impl* _M_get_impl() const { return _M_impl; } -}; - -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) || \ - defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) || defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) -# undef locale -# define _Locale _STLP_NO_MEM_T_NAME(loc) - -class locale : public _Locale { -public: - - // construct/copy/destroy: - locale() _STLP_NOTHROW { -#if defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) - _STLP_CHECK_RUNTIME_COMPATIBILITY(); -#endif - } - locale(const locale& __loc) _STLP_NOTHROW : _Locale(__loc) {} - explicit locale(const char *__str) : _Locale(__str) {} - locale(const locale& __loc, const char* __str, category __cat) - : _Locale(__loc, __str, __cat) {} - - template - locale(const locale& __loc, _Facet* __f) - : _Locale(__f != 0 ? _copy_Nameless_Locale_impl(__loc._M_impl) : __loc._M_impl) { - if ( __f != 0 ) { - _STLP_PRIV _InsertFacet(*this, __f); - } - } - -private: - // those are for internal use - locale(_Locale_impl* __impl) : _Locale(__impl) {} - locale(const _Locale& __loc) : _Locale(__loc) {} - -public: - - locale(const locale& __loc1, const locale& __loc2, category __cat) - : _Locale(__loc1, __loc2, __cat) {} - - const locale& operator=(const locale& __loc) _STLP_NOTHROW { - _Locale::operator=(__loc); - return *this; - } - - template - locale combine(const locale& __loc) const { - _Facet *__facet = 0; - if (!_STLP_PRIV _HasFacet(__loc, __facet)) - _M_throw_on_combine_error(__loc.name()); - - return locale(*this, _STLP_PRIV _UseFacet(__loc, __facet)); - } - - // locale operations: - bool operator==(const locale& __loc) const { return _Locale::operator==(__loc); } - bool operator!=(const locale& __loc) const { return _Locale::operator!=(__loc); } - - template - bool operator()(const basic_string<_CharT, _Traits, _Alloc>& __x, - const basic_string<_CharT, _Traits, _Alloc>& __y) const - { return __locale_do_operator_call(*this, __x, __y); } - - // global locale objects: - static locale _STLP_CALL global(const locale& __loc) { - return _Locale::global(__loc); - } - static const locale& _STLP_CALL classic() { - return __STATIC_CAST(const locale&, _Locale::classic()); - } - - // friends: - friend class _Locale_impl; -}; - -# undef _Locale -#endif - -//---------------------------------------------------------------------- -// locale globals - -template -inline const _Facet& -#ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS -_Use_facet<_Facet>::operator *() const -#else -use_facet(const locale& __loc) -#endif -{ - _Facet *__facet = 0; - return *(_STLP_PRIV _UseFacet(__loc, __facet)); -} - -template -#ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS -struct has_facet { - const locale& __loc; - has_facet(const locale& __p_loc) : __loc(__p_loc) {} - operator bool() const _STLP_NOTHROW -#else -inline bool has_facet(const locale& __loc) _STLP_NOTHROW -#endif -{ - _Facet *__facet = 0; - return _STLP_PRIV _HasFacet(__loc, __facet); -} - -#ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS -}; // close class definition -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -/* _GetFacetId is a helper function that allow delaying access to - * facet id static instance in the library source code to avoid - * the other static instances that many compilers are generating - * in all dynamic library or executable when instanciating facet - * template class. - */ -template -inline locale::id& _GetFacetId(const _Facet*) -{ return _Facet::id; } - -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const money_get > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const money_put > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const num_get > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const num_put > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const time_get > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const time_put > >*); - -#ifndef _STLP_NO_WCHAR_T -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const money_get > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const money_put > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const num_get > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const num_put > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const time_get > >*); -_STLP_DECLSPEC locale::id& _STLP_CALL _GetFacetId(const time_put > >*); -#endif - -template -inline bool _HasFacet(const locale& __loc, const _Facet* __facet) _STLP_NOTHROW -{ return (__loc._M_get_facet(_GetFacetId(__facet)) != 0); } - -template -inline _Facet* _UseFacet(const locale& __loc, const _Facet* __facet) -{ return __STATIC_CAST(_Facet*, __loc._M_use_facet(_GetFacetId(__facet))); } - -template -inline void _InsertFacet(locale& __loc, _Facet* __facet) -{ __loc._M_insert(__facet, _GetFacetId(__facet)); } - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_LOCALE_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_map.h b/build/stlport/stlport/stl/_map.h deleted file mode 100644 index bf46a5ddd72a..000000000000 --- a/build/stlport/stlport/stl/_map.h +++ /dev/null @@ -1,435 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_MAP_H -#define _STLP_INTERNAL_MAP_H - -#ifndef _STLP_INTERNAL_TREE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//Specific iterator traits creation -_STLP_CREATE_ITERATOR_TRAITS(MapTraitsT, traits) - -template ), - _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_STLP_CONST _Key, _Tp) > -class map -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef map<_Key, _Tp, _Compare, _Alloc> _Self; -public: - -// typedefs: - - typedef _Key key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef pair<_STLP_CONST _Key, _Tp> value_type; - typedef _Compare key_compare; - - class value_compare - : public binary_function { - friend class map<_Key,_Tp,_Compare,_Alloc>; - protected : - //c is a Standard name (23.3.1), do no make it STLport naming convention compliant. - _Compare comp; - value_compare(_Compare __c) : comp(__c) {} - public: - bool operator()(const value_type& __x, const value_type& __y) const - { return comp(__x.first, __y.first); } - }; - -protected: - typedef _STLP_PRIV _MapTraitsT _MapTraits; - -public: - //Following typedef have to be public for __move_traits specialization. - typedef _STLP_PRIV _Rb_tree _Rep_type; - - typedef typename _Rep_type::pointer pointer; - typedef typename _Rep_type::const_pointer const_pointer; - typedef typename _Rep_type::reference reference; - typedef typename _Rep_type::const_reference const_reference; - typedef typename _Rep_type::iterator iterator; - typedef typename _Rep_type::const_iterator const_iterator; - typedef typename _Rep_type::reverse_iterator reverse_iterator; - typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; - typedef typename _Rep_type::size_type size_type; - typedef typename _Rep_type::difference_type difference_type; - typedef typename _Rep_type::allocator_type allocator_type; - -private: - _Rep_type _M_t; // red-black tree representing map - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - // allocation/deallocation - map() : _M_t(_Compare(), allocator_type()) {} -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit map(const _Compare& __comp, - const allocator_type& __a = allocator_type()) -#else - explicit map(const _Compare& __comp) - : _M_t(__comp, allocator_type()) {} - explicit map(const _Compare& __comp, const allocator_type& __a) -#endif - : _M_t(__comp, __a) {} - -#if defined (_STLP_MEMBER_TEMPLATES) - template - map(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_unique(__first, __last); } - - template - map(_InputIterator __first, _InputIterator __last, const _Compare& __comp, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); } - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - map(_InputIterator __first, _InputIterator __last, const _Compare& __comp) - : _M_t(__comp, allocator_type()) { _M_t.insert_unique(__first, __last); } -# endif - -#else - map(const value_type* __first, const value_type* __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_unique(__first, __last); } - - map(const value_type* __first, - const value_type* __last, const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); } - - map(const_iterator __first, const_iterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_unique(__first, __last); } - - map(const_iterator __first, const_iterator __last, const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - map(const _Self& __x) : _M_t(__x._M_t) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - map(__move_source<_Self> src) - : _M_t(__move_source<_Rep_type>(src.get()._M_t)) {} -#endif - - _Self& operator=(const _Self& __x) { - _M_t = __x._M_t; - return *this; - } - - // accessors: - key_compare key_comp() const { return _M_t.key_comp(); } - value_compare value_comp() const { return value_compare(_M_t.key_comp()); } - allocator_type get_allocator() const { return _M_t.get_allocator(); } - - iterator begin() { return _M_t.begin(); } - const_iterator begin() const { return _M_t.begin(); } - iterator end() { return _M_t.end(); } - const_iterator end() const { return _M_t.end(); } - reverse_iterator rbegin() { return _M_t.rbegin(); } - const_reverse_iterator rbegin() const { return _M_t.rbegin(); } - reverse_iterator rend() { return _M_t.rend(); } - const_reverse_iterator rend() const { return _M_t.rend(); } - bool empty() const { return _M_t.empty(); } - size_type size() const { return _M_t.size(); } - size_type max_size() const { return _M_t.max_size(); } - _STLP_TEMPLATE_FOR_CONT_EXT - _Tp& operator[](const _KT& __k) { - iterator __i = lower_bound(__k); - // __i->first is greater than or equivalent to __k. - if (__i == end() || key_comp()(__k, (*__i).first)) - __i = insert(__i, value_type(__k, _STLP_DEFAULT_CONSTRUCTED(_Tp))); - return (*__i).second; - } - void swap(_Self& __x) { _M_t.swap(__x._M_t); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - // insert/erase - pair insert(const value_type& __x) - { return _M_t.insert_unique(__x); } - iterator insert(iterator __pos, const value_type& __x) - { return _M_t.insert_unique(__pos, __x); } -#ifdef _STLP_MEMBER_TEMPLATES - template - void insert(_InputIterator __first, _InputIterator __last) - { _M_t.insert_unique(__first, __last); } -#else - void insert(const value_type* __first, const value_type* __last) - { _M_t.insert_unique(__first, __last); } - void insert(const_iterator __first, const_iterator __last) - { _M_t.insert_unique(__first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - void erase(iterator __pos) { _M_t.erase(__pos); } - size_type erase(const key_type& __x) { return _M_t.erase_unique(__x); } - void erase(iterator __first, iterator __last) { _M_t.erase(__first, __last); } - void clear() { _M_t.clear(); } - - // map operations: - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __x) { return _M_t.find(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __x) const { return _M_t.find(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __x) const { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator lower_bound(const _KT& __x) { return _M_t.lower_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator lower_bound(const _KT& __x) const { return _M_t.lower_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator upper_bound(const _KT& __x) { return _M_t.upper_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator upper_bound(const _KT& __x) const { return _M_t.upper_bound(__x); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) - { return _M_t.equal_range_unique(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) const - { return _M_t.equal_range_unique(__x); } -}; - -//Specific iterator traits creation -_STLP_CREATE_ITERATOR_TRAITS(MultimapTraitsT, traits) - -template ), - _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_STLP_CONST _Key, _Tp) > -class multimap -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef multimap<_Key, _Tp, _Compare, _Alloc> _Self; -public: - -// typedefs: - - typedef _Key key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef pair<_STLP_CONST _Key, _Tp> value_type; - typedef _Compare key_compare; - - class value_compare : public binary_function { - friend class multimap<_Key,_Tp,_Compare,_Alloc>; - protected: - //comp is a Standard name (23.3.2), do no make it STLport naming convention compliant. - _Compare comp; - value_compare(_Compare __c) : comp(__c) {} - public: - bool operator()(const value_type& __x, const value_type& __y) const - { return comp(__x.first, __y.first); } - }; - -protected: - //Specific iterator traits creation - typedef _STLP_PRIV _MultimapTraitsT _MultimapTraits; - -public: - //Following typedef have to be public for __move_traits specialization. - typedef _STLP_PRIV _Rb_tree _Rep_type; - - typedef typename _Rep_type::pointer pointer; - typedef typename _Rep_type::const_pointer const_pointer; - typedef typename _Rep_type::reference reference; - typedef typename _Rep_type::const_reference const_reference; - typedef typename _Rep_type::iterator iterator; - typedef typename _Rep_type::const_iterator const_iterator; - typedef typename _Rep_type::reverse_iterator reverse_iterator; - typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; - typedef typename _Rep_type::size_type size_type; - typedef typename _Rep_type::difference_type difference_type; - typedef typename _Rep_type::allocator_type allocator_type; - -private: - _Rep_type _M_t; // red-black tree representing multimap - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - // allocation/deallocation - multimap() : _M_t(_Compare(), allocator_type()) { } - explicit multimap(const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { } - -#ifdef _STLP_MEMBER_TEMPLATES - template - multimap(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_equal(__first, __last); } -# ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS - template - multimap(_InputIterator __first, _InputIterator __last, - const _Compare& __comp) - : _M_t(__comp, allocator_type()) { _M_t.insert_equal(__first, __last); } -# endif - template - multimap(_InputIterator __first, _InputIterator __last, - const _Compare& __comp, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); } -#else - multimap(const value_type* __first, const value_type* __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_equal(__first, __last); } - multimap(const value_type* __first, const value_type* __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); } - - multimap(const_iterator __first, const_iterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_equal(__first, __last); } - multimap(const_iterator __first, const_iterator __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - multimap(const _Self& __x) : _M_t(__x._M_t) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - multimap(__move_source<_Self> src) - : _M_t(__move_source<_Rep_type>(src.get()._M_t)) {} -#endif - - _Self& operator=(const _Self& __x) { - _M_t = __x._M_t; - return *this; - } - - // accessors: - - key_compare key_comp() const { return _M_t.key_comp(); } - value_compare value_comp() const { return value_compare(_M_t.key_comp()); } - allocator_type get_allocator() const { return _M_t.get_allocator(); } - - iterator begin() { return _M_t.begin(); } - const_iterator begin() const { return _M_t.begin(); } - iterator end() { return _M_t.end(); } - const_iterator end() const { return _M_t.end(); } - reverse_iterator rbegin() { return _M_t.rbegin(); } - const_reverse_iterator rbegin() const { return _M_t.rbegin(); } - reverse_iterator rend() { return _M_t.rend(); } - const_reverse_iterator rend() const { return _M_t.rend(); } - bool empty() const { return _M_t.empty(); } - size_type size() const { return _M_t.size(); } - size_type max_size() const { return _M_t.max_size(); } - void swap(_Self& __x) { _M_t.swap(__x._M_t); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - // insert/erase - iterator insert(const value_type& __x) { return _M_t.insert_equal(__x); } - iterator insert(iterator __pos, const value_type& __x) { return _M_t.insert_equal(__pos, __x); } -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __first, _InputIterator __last) - { _M_t.insert_equal(__first, __last); } -#else - void insert(const value_type* __first, const value_type* __last) - { _M_t.insert_equal(__first, __last); } - void insert(const_iterator __first, const_iterator __last) - { _M_t.insert_equal(__first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - void erase(iterator __pos) { _M_t.erase(__pos); } - size_type erase(const key_type& __x) { return _M_t.erase(__x); } - void erase(iterator __first, iterator __last) { _M_t.erase(__first, __last); } - void clear() { _M_t.clear(); } - - // multimap operations: - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __x) { return _M_t.find(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __x) const { return _M_t.find(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __x) const { return _M_t.count(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator lower_bound(const _KT& __x) { return _M_t.lower_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator lower_bound(const _KT& __x) const { return _M_t.lower_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator upper_bound(const _KT& __x) { return _M_t.upper_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator upper_bound(const _KT& __x) const { return _M_t.upper_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) - { return _M_t.equal_range(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) const - { return _M_t.equal_range(__x); } -}; - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER map<_Key,_Tp,_Compare,_Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#define _STLP_TEMPLATE_CONTAINER multimap<_Key,_Tp,_Compare,_Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux::_Rep_type> -{}; - -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux::_Rep_type> -{}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_MAP_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_mbstate_t.h b/build/stlport/stlport/stl/_mbstate_t.h deleted file mode 100644 index 83f085e8d62d..000000000000 --- a/build/stlport/stlport/stl/_mbstate_t.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_MBSTATE_T -#define _STLP_INTERNAL_MBSTATE_T - -#if (defined (__OpenBSD__) || defined (__FreeBSD__) || defined (__hpux)) && defined (__GNUC__) && !defined (_GLIBCPP_HAVE_MBSTATE_T) -# define _STLP_CPP_MBSTATE_T /* mbstate_t defined in native , so not defined in C! */ -#endif - -#if defined (_STLP_NO_NATIVE_MBSTATE_T) || defined (_STLP_CPP_MBSTATE_T) && !defined (_MBSTATE_T) -# define _STLP_USE_OWN_MBSTATE_T -# define _MBSTATE_T -#endif - -#if defined (_STLP_USE_OWN_MBSTATE_T) -# if !defined (_STLP_CPP_MBSTATE_T) || !defined (__cplusplus) || !defined (_STLP_USE_NEW_C_HEADERS) -# if !defined (__ANDROID__) /* mbstate_t conflicts with Android's definition */ -typedef int mbstate_t; -# endif -# endif - -# if !defined (_STLP_CPP_MBSTATE_T) && defined (__cplusplus) && defined (_STLP_USE_NAMESPACES) -_STLP_BEGIN_NAMESPACE -using ::mbstate_t; -_STLP_END_NAMESPACE -# endif - -#endif /* _STLP_USE_OWN_MBSTATE_T */ - -#endif /* _STLP_INTERNAL_MBSTATE_T */ diff --git a/build/stlport/stlport/stl/_messages_facets.h b/build/stlport/stlport/stl/_messages_facets.h deleted file mode 100644 index aca559657412..000000000000 --- a/build/stlport/stlport/stl/_messages_facets.h +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_MESSAGES_H -#define _STLP_INTERNAL_MESSAGES_H - -#ifndef _STLP_IOS_BASE_H -# include -#endif - -#ifndef _STLP_C_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// messages facets - -class messages_base { - public: - typedef int catalog; -}; - -template class messages {}; - -_STLP_MOVE_TO_PRIV_NAMESPACE -class _Messages; -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC messages : public locale::facet, public messages_base { -public: - typedef messages_base::catalog catalog; - typedef char char_type; - typedef string string_type; - - explicit messages(size_t __refs = 0); - - catalog open(const string& __fn, const locale& __loc) const - { return do_open(__fn, __loc); } - string_type get(catalog __c, int __set, int __msgid, - const string_type& __dfault) const - { return do_get(__c, __set, __msgid, __dfault); } - inline void close(catalog __c) const - { do_close(__c); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~messages() {} - - virtual catalog do_open(const string& __fn, const locale& __loc) const - { return -1; } - virtual string_type do_get(catalog __c, int __set, int __msgid, - const string_type& __dfault) const - { return __dfault; } - virtual void do_close(catalog __c) const - {} -}; - -#if !defined (_STLP_NO_WCHAR_T) - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC messages : public locale::facet, public messages_base { -public: - typedef messages_base::catalog catalog; - typedef wchar_t char_type; - typedef wstring string_type; - - explicit messages(size_t __refs = 0); - - inline catalog open(const string& __fn, const locale& __loc) const - { return do_open(__fn, __loc); } - inline string_type get(catalog __c, int __set, int __msgid, - const string_type& __dfault) const - { return do_get(__c, __set, __msgid, __dfault); } - inline void close(catalog __c) const - { do_close(__c); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~messages() {} - - virtual catalog do_open(const string& __fn, const locale& __loc) const - { return -1; } - virtual string_type do_get(catalog __c, int __set, int __msgid, - const string_type& __dfault) const - { return __dfault; } - virtual void do_close(catalog __c) const - {} -}; - -#endif - -template class messages_byname {}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC messages_byname : public messages { - friend class _Locale_impl; -public: - typedef messages_base::catalog catalog; - typedef string string_type; - - explicit messages_byname(const char* __name, size_t __refs = 0); - -protected: - ~messages_byname(); - - virtual catalog do_open(const string& __fn, const locale& __loc) const; - virtual string_type do_get(catalog __c, int __set, int __msgid, - const string_type& __dfault) const; - virtual void do_close(catalog __c) const; - -private: - messages_byname(_Locale_messages*); - typedef messages_byname _Self; - //explicitely defined as private to avoid warnings: - messages_byname(_Self const&); - _Self& operator = (_Self const&); - - _STLP_PRIV _Messages* _M_impl; -}; - -#if !defined (_STLP_NO_WCHAR_T) -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC messages_byname : public messages { - friend class _Locale_impl; -public: - typedef messages_base::catalog catalog; - typedef wstring string_type; - - explicit messages_byname(const char* __name, size_t __refs = 0); - -protected: - ~messages_byname(); - - virtual catalog do_open(const string& __fn, const locale& __loc) const; - virtual string_type do_get(catalog __c, int __set, int __msgid, - const string_type& __dfault) const; - virtual void do_close(catalog __c) const; - -private: - messages_byname(_Locale_messages*); - typedef messages_byname _Self; - //explicitely defined as private to avoid warnings: - messages_byname(_Self const&); - _Self& operator = (_Self const&); - - _STLP_PRIV _Messages* _M_impl; -}; -#endif /* WCHAR_T */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_MESSAGES_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_monetary.c b/build/stlport/stlport/stl/_monetary.c deleted file mode 100644 index 3de937cbc1ea..000000000000 --- a/build/stlport/stlport/stl/_monetary.c +++ /dev/null @@ -1,527 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_MONETARY_C -#define _STLP_MONETARY_C - -# ifndef _STLP_INTERNAL_MONETARY_H -# include -# endif - -#ifndef _STLP_INTERNAL_IOS_H -# include -#endif - -#ifndef _STLP_INTERNAL_NUM_PUT_H -# include -#endif - -#ifndef _STLP_INTERNAL_NUM_GET_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -locale::id money_get<_CharT, _InputIterator>::id; - -template -locale::id money_put<_CharT, _OutputIterator>::id; - -// money_get facets - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// helper functions for do_get -template -pair<_InIt1, bool> __get_string( _InIt1 __first, _InIt1 __last, - _InIt2 __str_first, _InIt2 __str_last) { - while ( __first != __last && __str_first != __str_last && *__first == *__str_first ) { - ++__first; - ++__str_first; - } - return make_pair(__first, __str_first == __str_last); -} - -template -bool -__get_monetary_value(_InIt& __first, _InIt __last, _OuIt __out_ite, - const ctype<_CharT>& _c_type, - _CharT __point, int __frac_digits, _CharT __sep, - const string& __grouping, bool &__syntax_ok) { - if (__first == __last || !_c_type.is(ctype_base::digit, *__first)) - return false; - - char __group_sizes[128]; - char* __group_sizes_end = __grouping.empty()? 0 : __group_sizes; - char __current_group_size = 0; - - while (__first != __last) { - if (_c_type.is(ctype_base::digit, *__first)) { - ++__current_group_size; - *__out_ite++ = *__first++; - } - else if (__group_sizes_end) { - if (*__first == __sep) { - *__group_sizes_end++ = __current_group_size; - __current_group_size = 0; - ++__first; - } - else break; - } - else - break; - } - - if (__grouping.empty()) - __syntax_ok = true; - else { - if (__group_sizes_end != __group_sizes) - *__group_sizes_end++ = __current_group_size; - - __syntax_ok = __valid_grouping(__group_sizes, __group_sizes_end, - __grouping.data(), __grouping.data()+ __grouping.size()); - - if (__first == __last || *__first != __point) { - for (int __digits = 0; __digits != __frac_digits; ++__digits) - *__out_ite++ = _CharT('0'); - return true; // OK not to have decimal point - } - } - - ++__first; - - int __digits = 0; - - while (__first != __last && _c_type.is(ctype_base::digit, *__first)) { - *__out_ite++ = *__first++; - ++__digits; - } - - __syntax_ok = __syntax_ok && (__digits == __frac_digits); - - return true; -} - - -template -_InputIter __money_do_get(_InputIter __s, _InputIter __end, bool __intl, - ios_base& __str, ios_base::iostate& __err, - _StrType& __digits, bool &__is_positive, _CharT* /*__dummy*/) { - if (__s == __end) { - __err |= ios_base::eofbit; - return __s; - } - - typedef _CharT char_type; - typedef _StrType string_type; - typedef _InputIter iter_type; - typedef moneypunct _Punct; - typedef moneypunct _Punct_intl; - typedef ctype _Ctype; - - locale __loc = __str.getloc(); - const _Punct& __punct = use_facet<_Punct>(__loc) ; - const _Punct_intl& __punct_intl = use_facet<_Punct_intl>(__loc) ; - const _Ctype& __c_type = use_facet<_Ctype>(__loc) ; - - money_base::pattern __format = __intl ? __punct_intl.neg_format() - : __punct.neg_format(); - string_type __ns = __intl ? __punct_intl.negative_sign() - : __punct.negative_sign(); - string_type __ps = __intl ? __punct_intl.positive_sign() - : __punct.positive_sign(); - int __i; - bool __symbol_required = (__str.flags() & ios_base::showbase) != 0; - string_type __buf; - back_insert_iterator __out_ite(__buf); - - for (__i = 0; __i < 4; ++__i) { - switch (__format.field[__i]) { - case money_base::space: - if (!__c_type.is(ctype_base::space, *__s)) { - __err = ios_base::failbit; - return __s; - } - ++__s; - case money_base::none: - while (__s != __end && __c_type.is(ctype_base::space, *__s)) - ++__s; - break; - case money_base::symbol: { - string_type __curs = __intl ? __punct_intl.curr_symbol() - : __punct.curr_symbol(); - pair - __result = __get_string(__s, __end, __curs.begin(), __curs.end()); - if (!__result.second && __symbol_required) - __err = ios_base::failbit; - __s = __result.first; - break; - } - case money_base::sign: { - if (__s == __end) { - if (__ps.empty()) - break; - if (__ns.empty()) { - __is_positive = false; - break; - } - __err = ios_base::failbit; - return __s; - } - else { - if (__ps.empty()) { - if (__ns.empty()) - break; - if (*__s == __ns[0]) { - ++__s; - __is_positive = false; - } - break; - } - else { - if (*__s == __ps[0]) { - ++__s; - break; - } - if (__ns.empty()) - break; - if (*__s == __ns[0]) { - ++__s; - __is_positive = false; - break; - } - __err = ios_base::failbit; - } - } - return __s; - } - case money_base::value: { - char_type __point = __intl ? __punct_intl.decimal_point() - : __punct.decimal_point(); - int __frac_digits = __intl ? __punct_intl.frac_digits() - : __punct.frac_digits(); - string __grouping = __intl ? __punct_intl.grouping() - : __punct.grouping(); - bool __syntax_ok = true; - - bool __result; - - char_type __sep = __grouping.empty() ? char_type() : - __intl ? __punct_intl.thousands_sep() : __punct.thousands_sep(); - - __result = __get_monetary_value(__s, __end, __out_ite, __c_type, - __point, __frac_digits, - __sep, - __grouping, __syntax_ok); - - if (!__syntax_ok) - __err |= ios_base::failbit; - if (!__result) { - __err = ios_base::failbit; - return __s; - } - break; - - } // Close money_base::value case - } // Close switch statement - } // Close for loop - - if (__is_positive) { - if (__ps.size() > 1) { - pair<_InputIter, bool> - __result = __get_string(__s, __end, __ps.begin() + 1, __ps.end()); - __s = __result.first; - if (!__result.second) - __err |= ios::failbit; - } - if (!(__err & ios_base::failbit)) - __digits = __buf; - } - else { - if (__ns.size() > 1) { - pair<_InputIter, bool> - __result = __get_string(__s, __end, __ns.begin() + 1, __ns.end()); - __s = __result.first; - if (!__result.second) - __err |= ios::failbit; - } - if (!(__err & ios::failbit)) { - __digits = __c_type.widen('-'); - __digits += __buf; - } - } - if (__s == __end) - __err |= ios::eofbit; - - return __s; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -//===== methods ====== -template -_InputIter -money_get<_CharT, _InputIter>::do_get(_InputIter __s, _InputIter __end, bool __intl, - ios_base& __str, ios_base::iostate& __err, - _STLP_LONGEST_FLOAT_TYPE& __units) const { - string_type __buf; - bool __is_positive = true; - __s = _STLP_PRIV __money_do_get(__s, __end, __intl, __str, __err, __buf, __is_positive, (_CharT*)0); - - if (__err == ios_base::goodbit || __err == ios_base::eofbit) { - typename string_type::iterator __b = __buf.begin(), __e = __buf.end(); - - if (!__is_positive) ++__b; - // Can't use atold, since it might be wchar_t. Don't get confused by name below : - // it's perfectly capable of reading long double. - _STLP_PRIV __get_decimal_integer(__b, __e, __units, (_CharT*)0); - - if (!__is_positive) { - __units = -__units; - } - } - - return __s; -} - -template -_InputIter -money_get<_CharT, _InputIter>::do_get(iter_type __s, iter_type __end, bool __intl, - ios_base& __str, ios_base::iostate& __err, - string_type& __digits) const { - bool __is_positive = true; - return _STLP_PRIV __money_do_get(__s, __end, __intl, __str, __err, __digits, __is_positive, (_CharT*)0); -} - -// money_put facets - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_OutputIter __money_do_put(_OutputIter __s, bool __intl, ios_base& __str, - _CharT __fill, const _Str& __digits, bool __check_digits, - _Str_Type * /*__dummy*/) { - typedef _CharT char_type; - typedef _Str_Type string_type; - typedef ctype _Ctype; - typedef moneypunct _Punct; - typedef moneypunct _Punct_intl; - - locale __loc = __str.getloc(); - const _Ctype& __c_type = use_facet<_Ctype>(__loc) ; - const _Punct& __punct = use_facet<_Punct>(__loc) ; - const _Punct_intl& __punct_intl = use_facet<_Punct_intl>(__loc) ; - - // some special characters - char_type __minus = __c_type.widen('-'); - char_type __plus = __c_type.widen('+'); - char_type __space = __c_type.widen(' '); - char_type __zero = __c_type.widen('0'); - char_type __point = __intl ? __punct_intl.decimal_point() - : __punct.decimal_point(); - - char_type __sep = __intl ? __punct_intl.thousands_sep() - : __punct.thousands_sep(); - - string __grouping = __intl ? __punct_intl.grouping() - : __punct.grouping(); - - int __frac_digits = __intl ? __punct_intl.frac_digits() - : __punct.frac_digits(); - - string_type __curr_sym = __intl ? __punct_intl.curr_symbol() - : __punct.curr_symbol(); - - // if there are no digits we are going to return __s. If there - // are digits, but not enough to fill the frac_digits, we are - // going to add zeros. I don't know whether this is right or - // not. - if (__digits.empty()) - return __s; - - typename string_type::const_iterator __digits_first = __digits.begin(); - typename string_type::const_iterator __digits_last = __digits.end(); - - bool __is_negative = *__digits_first == __minus; - if (__is_negative) - ++__digits_first; - -#if !defined (__BORLANDC__) - string_type __sign = __intl ? __is_negative ? __punct_intl.negative_sign() - : __punct_intl.positive_sign() - : __is_negative ? __punct.negative_sign() - : __punct.positive_sign(); -#else - string_type __sign; - if (__intl) { - if (__is_negative) - __sign = __punct_intl.negative_sign(); - else - __sign = __punct_intl.positive_sign(); - } - else { - if (__is_negative) - __sign = __punct.negative_sign(); - else - __sign = __punct.positive_sign(); - } -#endif - - if (__check_digits) { - typename string_type::const_iterator __cp = __digits_first; - while (__cp != __digits_last && __c_type.is(ctype_base::digit, *__cp)) - ++__cp; - if (__cp == __digits_first) - return __s; - __digits_last = __cp; - } - - // If grouping is required, we make a copy of __digits and - // insert the grouping. - _STLP_BASIC_IOSTRING(char_type) __new_digits; - if (!__grouping.empty()) { - __new_digits.assign(__digits_first, __digits_last); - __insert_grouping(__new_digits, - __new_digits.size() - __frac_digits, - __grouping, - __sep, __plus, __minus, 0); - __digits_first = __new_digits.begin(); // <<-- - __digits_last = __new_digits.end(); // <<-- - } - - // Determine the amount of padding required, if any. - streamsize __width = __str.width(); - -#if defined (_STLP_DEBUG) && (defined(__HP_aCC) && (__HP_aCC <= 1)) - size_t __value_length = operator -(__digits_last, __digits_first); -#else - size_t __value_length = __digits_last - __digits_first; -#endif - - size_t __length = __value_length + __sign.size(); - - if (__frac_digits != 0) - ++__length; - - bool __generate_curr = (__str.flags() & ios_base::showbase) !=0; - if (__generate_curr) - __length += __curr_sym.size(); - money_base::pattern __format = __intl ? (__is_negative ? __punct_intl.neg_format() - : __punct_intl.pos_format()) - : (__is_negative ? __punct.neg_format() - : __punct.pos_format()); - { - //For the moment the following is commented for decoding reason. - //No reason to add a space last if the money symbol do not have to be display - //if (__format.field[3] == (char) money_base::symbol && !__generate_curr) { - // if (__format.field[2] == (char) money_base::space) { - // __format.field[2] = (char) money_base::none; - // } - //} - //space can only be second or third and only once (22.2.6.3-1): - if ((__format.field[1] == (char) money_base::space) || - (__format.field[2] == (char) money_base::space)) - ++__length; - } - - const bool __need_fill = (((sizeof(streamsize) > sizeof(size_t)) && (__STATIC_CAST(streamsize, __length) < __width)) || - ((sizeof(streamsize) <= sizeof(size_t)) && (__length < __STATIC_CAST(size_t, __width)))); - streamsize __fill_amt = __need_fill ? __width - __length : 0; - - ios_base::fmtflags __fill_pos = __str.flags() & ios_base::adjustfield; - - if (__fill_amt != 0 && - !(__fill_pos & (ios_base::left | ios_base::internal))) - __s = _STLP_PRIV __fill_n(__s, __fill_amt, __fill); - - for (int __i = 0; __i < 4; ++__i) { - char __ffield = __format.field[__i]; - switch (__ffield) { - case money_base::space: - *__s++ = __space; - case money_base::none: - if (__fill_amt != 0 && __fill_pos == ios_base::internal) - __s = _STLP_PRIV __fill_n(__s, __fill_amt, __fill); - break; - case money_base::symbol: - if (__generate_curr) - __s = _STLP_STD::copy(__curr_sym.begin(), __curr_sym.end(), __s); - break; - case money_base::sign: - if (!__sign.empty()) - *__s++ = __sign[0]; - break; - case money_base::value: - if (__frac_digits == 0) { - __s = _STLP_STD::copy(__digits_first, __digits_last, __s); - } else { - if ((int)__value_length <= __frac_digits) { - // if we see '9' here, we should out 0.09 - *__s++ = __zero; // integer part is zero - *__s++ = __point; // decimal point - __s = _STLP_PRIV __fill_n(__s, __frac_digits - __value_length, __zero); // zeros - __s = _STLP_STD::copy(__digits_first, __digits_last, __s); // digits - } else { - __s = _STLP_STD::copy(__digits_first, __digits_last - __frac_digits, __s); - if (__frac_digits != 0) { - *__s++ = __point; - __s = _STLP_STD::copy(__digits_last - __frac_digits, __digits_last, __s); - } - } - } - break; - } //Close for switch - } // Close for loop - - // Ouput rest of sign if necessary. - if (__sign.size() > 1) - __s = _STLP_STD::copy(__sign.begin() + 1, __sign.end(), __s); - if (__fill_amt != 0 && - !(__fill_pos & (ios_base::right | ios_base::internal))) - __s = _STLP_PRIV __fill_n(__s, __fill_amt, __fill); - - return __s; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_OutputIter -money_put<_CharT, _OutputIter> - ::do_put(_OutputIter __s, bool __intl, ios_base& __str, - char_type __fill, _STLP_LONGEST_FLOAT_TYPE __units) const { - _STLP_BASIC_IOSTRING(char_type) __digits; - _STLP_PRIV __get_money_digits(__digits, __str, __units); - return _STLP_PRIV __money_do_put(__s, __intl, __str, __fill, __digits, false, __STATIC_CAST(string_type*, 0)); -} - -template -_OutputIter -money_put<_CharT, _OutputIter> - ::do_put(_OutputIter __s, bool __intl, ios_base& __str, - char_type __fill, const string_type& __digits) const { - return _STLP_PRIV __money_do_put(__s, __intl, __str, __fill, __digits, true, __STATIC_CAST(string_type*, 0)); -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_MONETARY_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_monetary.h b/build/stlport/stlport/stl/_monetary.h deleted file mode 100644 index 7b9301076dcc..000000000000 --- a/build/stlport/stlport/stl/_monetary.h +++ /dev/null @@ -1,435 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_MONETARY_H -#define _STLP_INTERNAL_MONETARY_H - -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H -# include -#endif - -#ifndef _STLP_FACETS_FWD_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -class money_base { -public: - enum part {none, space, symbol, sign, value}; - struct pattern { - char field[4]; - }; -}; - -// moneypunct facets: forward declaration -template class moneypunct {}; - -// money_get facets - -template -class money_get : public locale::facet { -public: - typedef _CharT char_type; - typedef _InputIter iter_type; - typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type; - - explicit money_get(size_t __refs = 0) : locale::facet(__refs) {} - iter_type get(iter_type __s, iter_type __end, bool __intl, - ios_base& __str, ios_base::iostate& __err, - _STLP_LONGEST_FLOAT_TYPE& __units) const - { return do_get(__s, __end, __intl, __str, __err, __units); } - iter_type get(iter_type __s, iter_type __end, bool __intl, - ios_base& __str, ios_base::iostate& __err, - string_type& __digits) const - { return do_get(__s, __end, __intl, __str, __err, __digits); } - - static locale::id id; - -protected: - ~money_get() {} - virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl, - ios_base& __str, ios_base::iostate& __err, - _STLP_LONGEST_FLOAT_TYPE& __units) const; - virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl, - ios_base& __str, ios_base::iostate& __err, - string_type& __digits) const; -}; - - -// moneypunct facets: definition of specializations - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC moneypunct : public locale::facet, public money_base { -public: - typedef char char_type; - typedef string string_type; - explicit moneypunct _STLP_PSPEC2(char, true) (size_t __refs = 0); - - char decimal_point() const { return do_decimal_point(); } - char thousands_sep() const { return do_thousands_sep(); } - string grouping() const { return do_grouping(); } - string_type curr_symbol() const { return do_curr_symbol(); } - string_type positive_sign() const { return do_positive_sign(); } - string_type negative_sign() const { return do_negative_sign(); } - int frac_digits() const { return do_frac_digits(); } - pattern pos_format() const { return do_pos_format(); } - pattern neg_format() const { return do_neg_format(); } - - static _STLP_STATIC_DECLSPEC locale::id id; - _STLP_STATIC_CONSTANT(bool, intl = true); - -protected: - pattern _M_pos_format; - pattern _M_neg_format; - - ~moneypunct _STLP_PSPEC2(char, true) (); - - virtual char do_decimal_point() const; - virtual char do_thousands_sep() const; - virtual string do_grouping() const; - - virtual string do_curr_symbol() const; - - virtual string do_positive_sign() const; - virtual string do_negative_sign() const; - virtual int do_frac_digits() const; - virtual pattern do_pos_format() const; - virtual pattern do_neg_format() const; -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC moneypunct : public locale::facet, public money_base { -public: - typedef char char_type; - typedef string string_type; - - explicit moneypunct _STLP_PSPEC2(char, false) (size_t __refs = 0); - - char decimal_point() const { return do_decimal_point(); } - char thousands_sep() const { return do_thousands_sep(); } - string grouping() const { return do_grouping(); } - string_type curr_symbol() const { return do_curr_symbol(); } - string_type positive_sign() const { return do_positive_sign(); } - string_type negative_sign() const { return do_negative_sign(); } - int frac_digits() const { return do_frac_digits(); } - pattern pos_format() const { return do_pos_format(); } - pattern neg_format() const { return do_neg_format(); } - - static _STLP_STATIC_DECLSPEC locale::id id; - _STLP_STATIC_CONSTANT(bool, intl = false); - -protected: - pattern _M_pos_format; - pattern _M_neg_format; - - ~moneypunct _STLP_PSPEC2(char, false) (); - - virtual char do_decimal_point() const; - virtual char do_thousands_sep() const; - virtual string do_grouping() const; - - virtual string do_curr_symbol() const; - - virtual string do_positive_sign() const; - virtual string do_negative_sign() const; - virtual int do_frac_digits() const; - virtual pattern do_pos_format() const; - virtual pattern do_neg_format() const; -}; - - -#ifndef _STLP_NO_WCHAR_T - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC moneypunct : public locale::facet, public money_base { -public: - typedef wchar_t char_type; - typedef wstring string_type; - explicit moneypunct _STLP_PSPEC2(wchar_t, true) (size_t __refs = 0); - wchar_t decimal_point() const { return do_decimal_point(); } - wchar_t thousands_sep() const { return do_thousands_sep(); } - string grouping() const { return do_grouping(); } - string_type curr_symbol() const { return do_curr_symbol(); } - string_type positive_sign() const { return do_positive_sign(); } - string_type negative_sign() const { return do_negative_sign(); } - int frac_digits() const { return do_frac_digits(); } - pattern pos_format() const { return do_pos_format(); } - pattern neg_format() const { return do_neg_format(); } - - static _STLP_STATIC_DECLSPEC locale::id id; - _STLP_STATIC_CONSTANT(bool, intl = true); - -protected: - pattern _M_pos_format; - pattern _M_neg_format; - - ~moneypunct _STLP_PSPEC2(wchar_t, true) (); - - virtual wchar_t do_decimal_point() const; - virtual wchar_t do_thousands_sep() const; - virtual string do_grouping() const; - - virtual string_type do_curr_symbol() const; - - virtual string_type do_positive_sign() const; - virtual string_type do_negative_sign() const; - virtual int do_frac_digits() const; - virtual pattern do_pos_format() const; - virtual pattern do_neg_format() const; -}; - - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC moneypunct : public locale::facet, public money_base { -public: - typedef wchar_t char_type; - typedef wstring string_type; - explicit moneypunct _STLP_PSPEC2(wchar_t, false) (size_t __refs = 0); - wchar_t decimal_point() const { return do_decimal_point(); } - wchar_t thousands_sep() const { return do_thousands_sep(); } - string grouping() const { return do_grouping(); } - string_type curr_symbol() const { return do_curr_symbol(); } - string_type positive_sign() const { return do_positive_sign(); } - string_type negative_sign() const { return do_negative_sign(); } - int frac_digits() const { return do_frac_digits(); } - pattern pos_format() const { return do_pos_format(); } - pattern neg_format() const { return do_neg_format(); } - - static _STLP_STATIC_DECLSPEC locale::id id; - _STLP_STATIC_CONSTANT(bool, intl = false); - -protected: - pattern _M_pos_format; - pattern _M_neg_format; - - ~moneypunct _STLP_PSPEC2(wchar_t, false) (); - - virtual wchar_t do_decimal_point() const; - virtual wchar_t do_thousands_sep() const; - virtual string do_grouping() const; - - virtual string_type do_curr_symbol() const; - - virtual string_type do_positive_sign() const; - virtual string_type do_negative_sign() const; - virtual int do_frac_digits() const; - virtual pattern do_pos_format() const; - virtual pattern do_neg_format() const; -}; - -# endif - -template class moneypunct_byname {}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC moneypunct_byname : public moneypunct { - friend class _Locale_impl; -public: - typedef money_base::pattern pattern; - typedef char char_type; - typedef string string_type; - - explicit moneypunct_byname _STLP_PSPEC2(char, true) (const char * __name, size_t __refs = 0); - -protected: - ~moneypunct_byname _STLP_PSPEC2(char, true) (); - virtual char do_decimal_point() const; - virtual char do_thousands_sep() const; - virtual string do_grouping() const; - - virtual string_type do_curr_symbol() const; - - virtual string_type do_positive_sign() const; - virtual string_type do_negative_sign() const; - virtual int do_frac_digits() const; - -private: - moneypunct_byname _STLP_PSPEC2(char, true) (_Locale_monetary *__monetary); - - typedef moneypunct_byname _Self; - //explicitely defined as private to avoid warnings: - moneypunct_byname(_Self const&); - _Self& operator = (_Self const&); - - _Locale_monetary* _M_monetary; -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC moneypunct_byname : public moneypunct { - friend class _Locale_impl; -public: - typedef money_base::pattern pattern; - typedef char char_type; - typedef string string_type; - - explicit moneypunct_byname _STLP_PSPEC2(char, false) (const char * __name, size_t __refs = 0); - -protected: - ~moneypunct_byname _STLP_PSPEC2(char, false) (); - virtual char do_decimal_point() const; - virtual char do_thousands_sep() const; - virtual string do_grouping() const; - - virtual string_type do_curr_symbol() const; - - virtual string_type do_positive_sign() const; - virtual string_type do_negative_sign() const; - virtual int do_frac_digits() const; - -private: - moneypunct_byname _STLP_PSPEC2(char, false) (_Locale_monetary *__monetary); - - typedef moneypunct_byname _Self; - //explicitely defined as private to avoid warnings: - moneypunct_byname(_Self const&); - _Self& operator = (_Self const&); - - _Locale_monetary* _M_monetary; -}; - -#if !defined (_STLP_NO_WCHAR_T) -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC moneypunct_byname : public moneypunct { - friend class _Locale_impl; -public: - typedef money_base::pattern pattern; - typedef wchar_t char_type; - typedef wstring string_type; - - explicit moneypunct_byname _STLP_PSPEC2(wchar_t, true) (const char * __name, size_t __refs = 0); - -protected: - ~moneypunct_byname _STLP_PSPEC2(wchar_t, true) (); - virtual wchar_t do_decimal_point() const; - virtual wchar_t do_thousands_sep() const; - virtual string do_grouping() const; - - virtual string_type do_curr_symbol() const; - - virtual string_type do_positive_sign() const; - virtual string_type do_negative_sign() const; - virtual int do_frac_digits() const; - -private: - moneypunct_byname _STLP_PSPEC2(wchar_t, true) (_Locale_monetary *__monetary); - - typedef moneypunct_byname _Self; - //explicitely defined as private to avoid warnings: - moneypunct_byname(_Self const&); - _Self& operator = (_Self const&); - - _Locale_monetary* _M_monetary; -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC moneypunct_byname : public moneypunct { - friend class _Locale_impl; -public: - typedef money_base::pattern pattern; - typedef wchar_t char_type; - typedef wstring string_type; - - explicit moneypunct_byname _STLP_PSPEC2(wchar_t, false) (const char * __name, size_t __refs = 0); - -protected: - ~moneypunct_byname _STLP_PSPEC2(wchar_t, false) (); - virtual wchar_t do_decimal_point() const; - virtual wchar_t do_thousands_sep() const; - virtual string do_grouping() const; - - virtual string_type do_curr_symbol() const; - - virtual string_type do_positive_sign() const; - virtual string_type do_negative_sign() const; - virtual int do_frac_digits() const; - -private: - moneypunct_byname _STLP_PSPEC2(wchar_t, false) (_Locale_monetary *__monetary); - - typedef moneypunct_byname _Self; - //explicitely defined as private to avoid warnings: - moneypunct_byname(_Self const&); - _Self& operator = (_Self const&); - - _Locale_monetary* _M_monetary; -}; -#endif - -//===== methods ====== - - -// money_put facets - -template -class money_put : public locale::facet { -public: - typedef _CharT char_type; - typedef _OutputIter iter_type; - typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type; - - explicit money_put(size_t __refs = 0) : locale::facet(__refs) {} - iter_type put(iter_type __s, bool __intl, ios_base& __str, - char_type __fill, _STLP_LONGEST_FLOAT_TYPE __units) const - { return do_put(__s, __intl, __str, __fill, __units); } - iter_type put(iter_type __s, bool __intl, ios_base& __str, - char_type __fill, - const string_type& __digits) const - { return do_put(__s, __intl, __str, __fill, __digits); } - - static locale::id id; - -protected: - ~money_put() {} - virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __str, - char_type __fill, _STLP_LONGEST_FLOAT_TYPE __units) const; - virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __str, - char_type __fill, - const string_type& __digits) const; -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS money_get > >; -_STLP_EXPORT_TEMPLATE_CLASS money_put > >; -# if ! defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS money_get > >; -_STLP_EXPORT_TEMPLATE_CLASS money_put > >; -# endif -#endif - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_MONETARY_H */ - -// Local Variables: -// mode:C++ -// End: - - diff --git a/build/stlport/stlport/stl/_move_construct_fwk.h b/build/stlport/stlport/stl/_move_construct_fwk.h deleted file mode 100644 index 4a85fe32de5f..000000000000 --- a/build/stlport/stlport/stl/_move_construct_fwk.h +++ /dev/null @@ -1,159 +0,0 @@ -/* - * - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_MOVE_CONSTRUCT_FWK_H -#define _STLP_MOVE_CONSTRUCT_FWK_H - -#ifndef _STLP_TYPE_TRAITS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -/************************************************************* - * Move constructor framework - *************************************************************/ - -/************************************************************* - *Partial move: - *The source HAS to be a valid instance after the move! - *************************************************************/ -template -class __move_source { -public: - explicit __move_source (_Tp &_src) : _M_data(_src) - {} - - _Tp& get() const - { return _M_data; } -private: - _Tp &_M_data; - - //We explicitely forbid assignment to avoid warning: - typedef __move_source<_Tp> _Self; - _Self& operator = (_Self const&); -}; - -//Class used to signal move constructor support, implementation and type. -template -struct __move_traits { - /* - * implemented tells if a the special move constructor has to be called or the classic - * copy constructor is just fine. Most of the time the copy constructor is fine only - * if the following info is true. - */ -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && \ - !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && \ - !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename _IsSTLportClass<_Tp>::_Ret implemented; -#else - typedef __false_type implemented; -#endif - /* - * complete tells if the move is complete or partial, that is to say, does the source - * needs to be destroyed once it has been moved. - */ -# if defined (__BORLANDC__) && (__BORLANDC__ >= 0x564) - typedef __type_traits<_Tp>::has_trivial_destructor _TpMoveComplete; - typedef typename __bool2type<__type2bool<_TpMoveComplete>::_Ret>::_Ret complete; -# else - typedef typename __type_traits<_Tp>::has_trivial_destructor complete; -# endif -}; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -/* - * This struct should never be used if the user has not explicitely stipulated - * that its class support the full move concept. To check that the return type - * in such a case will be __invalid_source<_Tp> to generate a compile error - * revealing the configuration problem. - */ -template -struct _MoveSourceTraits { - typedef typename __move_traits<_Tp>::implemented _MvImpRet; -#if defined (__BORLANDC__) - typedef typename __selectT<_MvImpRet, -#else - enum {_MvImp = __type2bool<_MvImpRet>::_Ret}; - typedef typename __select<_MvImp, -#endif - __move_source<_Tp>, - _Tp const&>::_Ret _Type; -}; - -//The helper function -template -inline _STLP_TYPENAME_ON_RETURN_TYPE _MoveSourceTraits<_Tp>::_Type -_AsMoveSource (_Tp &src) { - typedef typename _MoveSourceTraits<_Tp>::_Type _SrcType; - return _SrcType(src); -} - -//Helper structs used for many class. -template -struct __move_traits_aux { - typedef typename __move_traits<_Tp>::implemented implemented; - typedef typename __move_traits<_Tp>::complete complete; -}; - -template -struct __move_traits_aux2 { - typedef __move_traits<_Tp1> _MoveTraits1; - typedef __move_traits<_Tp2> _MoveTraits2; - - typedef typename _Lor2::_Ret implemented; - typedef typename _Land2::_Ret complete; -}; - -/* - * Most of the time a class implement a move constructor but its use depends - * on a third party, this is what the following struct are for. - */ -template -struct __move_traits_help { - typedef __true_type implemented; - typedef typename __move_traits<_Tp>::complete complete; -}; - -template -struct __move_traits_help1 { - typedef __move_traits<_Tp1> _MoveTraits1; - typedef __move_traits<_Tp2> _MoveTraits2; - - typedef typename _Lor2::_Ret implemented; - typedef typename _Land2::_Ret complete; -}; - -template -struct __move_traits_help2 { - typedef __move_traits<_Tp1> _MoveTraits1; - typedef __move_traits<_Tp2> _MoveTraits2; - - typedef __true_type implemented; - typedef typename _Land2::_Ret complete; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_MOVE_CONSTRUCT_FWK_H */ diff --git a/build/stlport/stlport/stl/_new.h b/build/stlport/stlport/stl/_new.h deleted file mode 100644 index ffa25f4e297c..000000000000 --- a/build/stlport/stlport/stl/_new.h +++ /dev/null @@ -1,145 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_NEW -#define _STLP_INTERNAL_NEW - -#ifndef _STLP_INTERNAL_CSTDDEF -// size_t -# include -#endif - -#if defined (__BORLANDC__) && (__BORLANDC__ < 0x570) -// new.h uses ::malloc ;( -# include _STLP_NATIVE_CPP_C_HEADER(cstdlib) -using _STLP_VENDOR_CSTD::malloc; -#endif - -#if !defined (_STLP_NO_NEW_NEW_HEADER) -// eMbedded Visual C++ .NET unfortunately uses _INC_NEW for both and -// we undefine the symbol to get the stuff in the SDK's -# if defined (_STLP_WCE_NET) && defined (_INC_NEW) -# undef _INC_NEW -# endif - -# if defined (new) -/* STLport cannot replace native Std library new header if new is a macro, - * please define new macro after header inclusion. - */ -# error Cannot include native new header as new is a macro. -# endif - -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(new) -# endif -#else -# include -#endif - -#if defined (_STLP_NO_BAD_ALLOC) && !defined (_STLP_NEW_DONT_THROW_BAD_ALLOC) -# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 -#endif - -#if defined (_STLP_USE_EXCEPTIONS) && defined (_STLP_NEW_DONT_THROW_BAD_ALLOC) - -# ifndef _STLP_INTERNAL_EXCEPTION -# include -# endif - -_STLP_BEGIN_NAMESPACE - -# if defined (_STLP_NO_BAD_ALLOC) -struct nothrow_t {}; -# define nothrow nothrow_t() -# endif - -/* - * STLport own bad_alloc exception to be used if the native C++ library - * do not define it or when the new operator do not throw it to avoid - * a useless library dependency. - */ -class bad_alloc : public exception { -public: - bad_alloc () _STLP_NOTHROW_INHERENTLY { } - bad_alloc(const bad_alloc&) _STLP_NOTHROW_INHERENTLY { } - bad_alloc& operator=(const bad_alloc&) _STLP_NOTHROW_INHERENTLY {return *this;} - ~bad_alloc () _STLP_NOTHROW_INHERENTLY { } - const char* what() const _STLP_NOTHROW_INHERENTLY { return "bad alloc"; } -}; - -_STLP_END_NAMESPACE - -#endif /* _STLP_USE_EXCEPTIONS && (_STLP_NO_BAD_ALLOC || _STLP_NEW_DONT_THROW_BAD_ALLOC) */ - -#if defined (_STLP_USE_OWN_NAMESPACE) - -_STLP_BEGIN_NAMESPACE - -# if !defined (_STLP_NEW_DONT_THROW_BAD_ALLOC) -using _STLP_VENDOR_EXCEPT_STD::bad_alloc; -# endif - -# if !defined (_STLP_NO_BAD_ALLOC) -using _STLP_VENDOR_EXCEPT_STD::nothrow_t; -using _STLP_VENDOR_EXCEPT_STD::nothrow; -# if defined (_STLP_GLOBAL_NEW_HANDLER) -using ::new_handler; -using ::set_new_handler; -# else -using _STLP_VENDOR_EXCEPT_STD::new_handler; -using _STLP_VENDOR_EXCEPT_STD::set_new_handler; -# endif -# endif /* !_STLP_NO_BAD_ALLOC */ - -_STLP_END_NAMESPACE -#endif /* _STLP_USE_OWN_NAMESPACE */ - -#ifndef _STLP_THROW_BAD_ALLOC -# if !defined (_STLP_USE_EXCEPTIONS) -# ifndef _STLP_INTERNAL_CSTDIO -# include -# endif -# define _STLP_THROW_BAD_ALLOC puts("out of memory\n"); abort() -# else -# define _STLP_THROW_BAD_ALLOC _STLP_THROW(_STLP_STD::bad_alloc()) -# endif -#endif - -#if defined (_STLP_NO_NEW_NEW_HEADER) || defined (_STLP_NEW_DONT_THROW_BAD_ALLOC) -# define _STLP_CHECK_NULL_ALLOC(__x) void* __y = __x; if (__y == 0) { _STLP_THROW_BAD_ALLOC; } return __y -#else -# define _STLP_CHECK_NULL_ALLOC(__x) return __x -#endif - -_STLP_BEGIN_NAMESPACE - -#if ((defined (__IBMCPP__) || defined (__OS400__) || defined (__xlC__) || defined (qTidyHeap)) && defined (_STLP_DEBUG_ALLOC)) -inline void* _STLP_CALL __stl_new(size_t __n) { _STLP_CHECK_NULL_ALLOC(::operator new(__n, __FILE__, __LINE__)); } -inline void _STLP_CALL __stl_delete(void* __p) { ::operator delete(__p, __FILE__, __LINE__); } -#else -inline void* _STLP_CALL __stl_new(size_t __n) { _STLP_CHECK_NULL_ALLOC(::operator new(__n)); } -inline void _STLP_CALL __stl_delete(void* __p) { ::operator delete(__p); } -#endif -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_NEW */ - -/* - * Local Variables: - * mode:C++ - * End: - */ diff --git a/build/stlport/stlport/stl/_num_get.c b/build/stlport/stlport/stl/_num_get.c deleted file mode 100644 index 1e7d23487e52..000000000000 --- a/build/stlport/stlport/stl/_num_get.c +++ /dev/null @@ -1,623 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_NUM_GET_C -#define _STLP_NUM_GET_C - -#ifndef _STLP_INTERNAL_NUM_GET_H -# include -#endif - -#ifndef _STLP_INTERNAL_LIMITS -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_DECLSPEC unsigned char _STLP_CALL __digit_val_table(unsigned); -_STLP_DECLSPEC const char* _STLP_CALL __narrow_atoms(); - -// __do_get_integer, __do_get_float and its helper functions. - -inline bool _STLP_CALL __get_fdigit(char __c, const char*) -{ return __c >= '0' && __c <= '9'; } - -inline bool _STLP_CALL __get_fdigit_or_sep(char& __c, char __sep, const char *__digits) { - if (__c == __sep) { - __c = ',' ; - return true ; - } - else - return __get_fdigit(__c, __digits); -} - -inline int _STLP_CALL -__get_digit_from_table(unsigned __index) -{ return (__index > 127 ? 0xFF : __digit_val_table(__index)); } - -template -int -__get_base_or_zero(_InputIter& __in_ite, _InputIter& __end, - ios_base::fmtflags __flags, const ctype<_CharT>& __c_type) { - _CharT __atoms[5]; - __c_type.widen(__narrow_atoms(), __narrow_atoms() + 5, __atoms); - - bool __negative = false; - _CharT __c = *__in_ite; - - if (__c == __atoms[1] /* __xminus_char */ ) { - __negative = true; - ++__in_ite; - } - else if (__c == __atoms[0] /* __xplus_char */ ) - ++__in_ite; - - int __base; - int __valid_zero = 0; - - ios_base::fmtflags __basefield = __flags & ios_base::basefield; - - switch (__basefield) { - case ios_base::oct: - __base = 8; - break; - case ios_base::dec: - __base = 10; - break; - case ios_base::hex: - __base = 16; - if (__in_ite != __end && *__in_ite == __atoms[2] /* __zero_char */ ) { - ++__in_ite; - if (__in_ite != __end && - (*__in_ite == __atoms[3] /* __x_char */ || *__in_ite == __atoms[4] /* __X_char */ )) - ++__in_ite; - else - __valid_zero = 1; // That zero is valid by itself. - } - break; - default: - if (__in_ite != __end && *__in_ite == __atoms[2] /* __zero_char */ ) { - ++__in_ite; - if (__in_ite != __end && - (*__in_ite == __atoms[3] /* __x_char */ || *__in_ite == __atoms[4] /* __X_char */ )) { - ++__in_ite; - __base = 16; - } - else - { - __base = 8; - __valid_zero = 1; // That zero is still valid by itself. - } - } - else - __base = 10; - break; - } - return (__base << 2) | ((int)__negative << 1) | __valid_zero; -} - - -template -bool _STLP_CALL -__get_integer(_InputIter& __first, _InputIter& __last, - int __base, _Integer& __val, - int __got, bool __is_negative, _CharT __separator, const string& __grouping, const __true_type& /*_IsSigned*/) { - bool __ovflow = false; - _Integer __result = 0; - bool __is_group = !__grouping.empty(); - char __group_sizes[64]; - char __current_group_size = 0; - char* __group_sizes_end = __group_sizes; - - _Integer __over_base = (numeric_limits<_Integer>::min)() / __STATIC_CAST(_Integer, __base); - - for ( ; __first != __last ; ++__first) { - - const _CharT __c = *__first; - - if (__is_group && __c == __separator) { - *__group_sizes_end++ = __current_group_size; - __current_group_size = 0; - continue; - } - - int __n = __get_digit_from_table(__c); - - if (__n >= __base) - break; - - ++__got; - ++__current_group_size; - - if (__result < __over_base) - __ovflow = true; // don't need to keep accumulating - else { - _Integer __next = __STATIC_CAST(_Integer, __base * __result - __n); - if (__result != 0) - __ovflow = __ovflow || __next >= __result; - __result = __next; - } - } - - if (__is_group && __group_sizes_end != __group_sizes) { - *__group_sizes_end++ = __current_group_size; - } - - // fbp : added to not modify value if nothing was read - if (__got > 0) { - __val = __ovflow ? __is_negative ? (numeric_limits<_Integer>::min)() - : (numeric_limits<_Integer>::max)() - : __is_negative ? __result - : __STATIC_CAST(_Integer, -__result); - } - // overflow is being treated as failure - return ((__got > 0) && !__ovflow) && - (__is_group == 0 || - __valid_grouping(__group_sizes, __group_sizes_end, - __grouping.data(), __grouping.data()+ __grouping.size())); -} - -template -bool _STLP_CALL -__get_integer(_InputIter& __first, _InputIter& __last, - int __base, _Integer& __val, - int __got, bool __is_negative, _CharT __separator, const string& __grouping, const __false_type& /*_IsSigned*/) { - bool __ovflow = false; - _Integer __result = 0; - bool __is_group = !__grouping.empty(); - char __group_sizes[64]; - char __current_group_size = 0; - char* __group_sizes_end = __group_sizes; - - _Integer __over_base = (numeric_limits<_Integer>::max)() / __STATIC_CAST(_Integer, __base); - - for ( ; __first != __last ; ++__first) { - - const _CharT __c = *__first; - - if (__is_group && __c == __separator) { - *__group_sizes_end++ = __current_group_size; - __current_group_size = 0; - continue; - } - - int __n = __get_digit_from_table(__c); - - if (__n >= __base) - break; - - ++__got; - ++__current_group_size; - - if (__result > __over_base) - __ovflow = true; //don't need to keep accumulating - else { - _Integer __next = __STATIC_CAST(_Integer, __base * __result + __n); - if (__result != 0) - __ovflow = __ovflow || __next <= __result; - __result = __next; - } - } - - if (__is_group && __group_sizes_end != __group_sizes) { - *__group_sizes_end++ = __current_group_size; - } - - // fbp : added to not modify value if nothing was read - if (__got > 0) { - __val = __ovflow ? (numeric_limits<_Integer>::max)() - : (__is_negative ? __STATIC_CAST(_Integer, -__result) - : __result); - } - - // overflow is being treated as failure - return ((__got > 0) && !__ovflow) && - (__is_group == 0 || - __valid_grouping(__group_sizes, __group_sizes_end, - __grouping.data(), __grouping.data()+ __grouping.size())); -} - - -template -bool _STLP_CALL -__get_decimal_integer(_InputIter& __first, _InputIter& __last, _Integer& __val, _CharT* /*dummy*/) { - string __grp; - //Here there is no grouping so separator is not important, we just pass the default character. - return __get_integer(__first, __last, 10, __val, 0, false, _CharT() /*separator*/, __grp, __false_type()); -} - -template -_InputIter _STLP_CALL -__do_get_integer(_InputIter& __in_ite, _InputIter& __end, ios_base& __str, - ios_base::iostate& __err, _Integer& __val, _CharT* /*__pc*/) { - locale __loc = __str.getloc(); - const ctype<_CharT>& __ctype = use_facet >(__loc); - -#if defined (__HP_aCC) && (__HP_aCC == 1) - bool _IsSigned = !((_Integer)(-1) > 0); -#else - typedef typename __bool2type::is_signed>::_Ret _IsSigned; -#endif - - const int __base_or_zero = __get_base_or_zero(__in_ite, __end, __str.flags(), __ctype); - int __got = __base_or_zero & 1; - - bool __result; - - if (__in_ite == __end) { // We may have already read a 0. If so, - - if (__got > 0) { // the result is 0 even if we're at eof. - __val = 0; - __result = true; - } - else - __result = false; - } - else { - const numpunct<_CharT>& __np = use_facet >(__loc); - const bool __negative = (__base_or_zero & 2) != 0; - const int __base = __base_or_zero >> 2; - -#if defined (__HP_aCC) && (__HP_aCC == 1) - if (_IsSigned) - __result = __get_integer(__in_ite, __end, __base, __val, __got, __negative, __np.thousands_sep(), __np.grouping(), __true_type() ); - else - __result = __get_integer(__in_ite, __end, __base, __val, __got, __negative, __np.thousands_sep(), __np.grouping(), __false_type() ); -#else - __result = __get_integer(__in_ite, __end, __base, __val, __got, __negative, __np.thousands_sep(), __np.grouping(), _IsSigned()); -# endif - } - - __err = __STATIC_CAST(ios_base::iostate, __result ? ios_base::goodbit : ios_base::failbit); - - if (__in_ite == __end) - __err |= ios_base::eofbit; - return __in_ite; -} - -// __read_float and its helper functions. -template -_InputIter _STLP_CALL -__copy_sign(_InputIter __first, _InputIter __last, __iostring& __v, - _CharT __xplus, _CharT __xminus) { - if (__first != __last) { - _CharT __c = *__first; - if (__c == __xplus) - ++__first; - else if (__c == __xminus) { - __v.push_back('-'); - ++__first; - } - } - return __first; -} - - -template -bool _STLP_CALL -__copy_digits(_InputIter& __first, _InputIter __last, - __iostring& __v, const _CharT* __digits) { - bool __ok = false; - - for ( ; __first != __last; ++__first) { - _CharT __c = *__first; - if (__get_fdigit(__c, __digits)) { - __v.push_back((char)__c); - __ok = true; - } - else - break; - } - return __ok; -} - -template -bool _STLP_CALL -__copy_grouped_digits(_InputIter& __first, _InputIter __last, - __iostring& __v, const _CharT * __digits, - _CharT __sep, const string& __grouping, - bool& __grouping_ok) { - bool __ok = false; - char __group_sizes[64]; - char*__group_sizes_end = __group_sizes; - char __current_group_size = 0; - - for ( ; __first != __last; ++__first) { - _CharT __c = *__first; - bool __tmp = __get_fdigit_or_sep(__c, __sep, __digits); - if (__tmp) { - if (__c == ',') { - *__group_sizes_end++ = __current_group_size; - __current_group_size = 0; - } - else { - __ok = true; - __v.push_back((char)__c); - ++__current_group_size; - } - } - else - break; - } - - if (__group_sizes_end != __group_sizes) - *__group_sizes_end++ = __current_group_size; - __grouping_ok = __valid_grouping(__group_sizes, __group_sizes_end, __grouping.data(), __grouping.data() + __grouping.size()); - return __ok; -} - - -template -bool _STLP_CALL -__read_float(__iostring& __buf, _InputIter& __in_ite, _InputIter& __end, - const ctype<_CharT> &__ct, const numpunct<_CharT> &__numpunct) { - // Create a string, copying characters of the form - // [+-]? [0-9]* .? [0-9]* ([eE] [+-]? [0-9]+)? - - string __grouping = __numpunct.grouping(); - bool __digits_before_dot /* = false */; - bool __digits_after_dot = false; - bool __ok; - - bool __grouping_ok = true; - - _CharT __dot = __numpunct.decimal_point(); - _CharT __sep = __numpunct.thousands_sep(); - - _CharT __digits[10]; - _CharT __xplus; - _CharT __xminus; - - _CharT __pow_e; - _CharT __pow_E; - - _Initialize_get_float(__ct, __xplus, __xminus, __pow_e, __pow_E, __digits); - - // Get an optional sign - __in_ite = __copy_sign(__in_ite, __end, __buf, __xplus, __xminus); - - // Get an optional string of digits. - if (!__grouping.empty()) - __digits_before_dot = __copy_grouped_digits(__in_ite, __end, __buf, __digits, - __sep, __grouping, __grouping_ok); - else - __digits_before_dot = __copy_digits(__in_ite, __end, __buf, __digits); - - // Get an optional decimal point, and an optional string of digits. - if (__in_ite != __end && *__in_ite == __dot) { - __buf.push_back('.'); - ++__in_ite; - __digits_after_dot = __copy_digits(__in_ite, __end, __buf, __digits); - } - - // There have to be some digits, somewhere. - __ok = __digits_before_dot || __digits_after_dot; - - // Get an optional exponent. - if (__ok && __in_ite != __end && (*__in_ite == __pow_e || *__in_ite == __pow_E)) { - __buf.push_back('e'); - ++__in_ite; - __in_ite = __copy_sign(__in_ite, __end, __buf, __xplus, __xminus); - __ok = __copy_digits(__in_ite, __end, __buf, __digits); - // If we have an exponent then the sign - // is optional but the digits aren't. - } - - return __ok; -} - -template -_InputIter _STLP_CALL -__do_get_float(_InputIter& __in_ite, _InputIter& __end, ios_base& __str, - ios_base::iostate& __err, _Float& __val, _CharT* /*__pc*/) { - locale __loc = __str.getloc(); - const ctype<_CharT> &__ctype = use_facet >(__loc); - const numpunct<_CharT> &__numpunct = use_facet >(__loc); - - __iostring __buf ; - bool __ok = __read_float(__buf, __in_ite, __end, __ctype, __numpunct); - if (__ok) { - __string_to_float(__buf, __val); - __err = ios_base::goodbit; - } - else { - __err = ios_base::failbit; - } - if (__in_ite == __end) - __err |= ios_base::eofbit; - return __in_ite; -} - -template -_InputIter _STLP_CALL -__do_get_alphabool(_InputIter& __in_ite, _InputIter& __end, ios_base& __str, - ios_base::iostate& __err, bool& __x, _CharT* /*__pc*/) { - const numpunct<_CharT>& __np = use_facet >(__str.getloc()); - const basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > __truename = __np.truename(); - const basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > __falsename = __np.falsename(); - bool __true_ok = true; - bool __false_ok = true; - - size_t __n = 0; - for ( ; __in_ite != __end; ++__in_ite) { - _CharT __c = *__in_ite; - __true_ok = __true_ok && (__c == __truename[__n]); - __false_ok = __false_ok && (__c == __falsename[__n]); - ++__n; - - if ((!__true_ok && !__false_ok) || - (__true_ok && __n >= __truename.size()) || - (__false_ok && __n >= __falsename.size())) { - ++__in_ite; - break; - } - } - if (__true_ok && __n < __truename.size()) __true_ok = false; - if (__false_ok && __n < __falsename.size()) __false_ok = false; - - if (__true_ok || __false_ok) { - __err = ios_base::goodbit; - __x = __true_ok; - } - else - __err = ios_base::failbit; - - if (__in_ite == __end) - __err |= ios_base::eofbit; - - return __in_ite; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -// -// num_get<>, num_put<> -// - -template -locale::id num_get<_CharT, _InputIterator>::id; - -#if !defined (_STLP_NO_BOOL) -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, - ios_base& __s, ios_base::iostate& __err, bool& __x) const { - if (__s.flags() & ios_base::boolalpha) { - return _STLP_PRIV __do_get_alphabool(__in_ite, __end, __s, __err, __x, (_CharT*)0); - } - else { - long __lx; - _InputIter __tmp = _STLP_PRIV __do_get_integer(__in_ite, __end, __s, __err, __lx, (_CharT*)0 ); - if (!(__err & ios_base::failbit)) { - if (__lx == 0) - __x = false; - else if (__lx == 1) - __x = true; - else - __err |= ios_base::failbit; - } - return __tmp; - } -} -#endif - -#if defined (_STLP_FIX_LIBRARY_ISSUES) -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, short& __val) const -{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, int& __val) const -{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -#endif - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, long& __val) const -{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - unsigned short& __val) const -{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - unsigned int& __val) const -{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - unsigned long& __val) const -{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - float& __val) const -{ return _STLP_PRIV __do_get_float(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - double& __val) const -{ return _STLP_PRIV __do_get_float(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - long double& __val) const -{ return _STLP_PRIV __do_get_float(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } -#endif - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - void*& __p) const { -#if defined (_STLP_LONG_LONG) && !defined (__MRC__) //*ty 12/07/2001 - MrCpp can not cast from long long to void* - unsigned _STLP_LONG_LONG __val; -#else - unsigned long __val; -#endif - iter_type __tmp = _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); - if (!(__err & ios_base::failbit)) - __p = __REINTERPRET_CAST(void*, __val); - return __tmp; -} - -#if defined (_STLP_LONG_LONG) -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - _STLP_LONG_LONG& __val) const -{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } - -template -_InputIter -num_get<_CharT, _InputIter>::do_get(_InputIter __in_ite, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, - unsigned _STLP_LONG_LONG& __val) const -{ return _STLP_PRIV __do_get_integer(__in_ite, __end, __str, __err, __val, (_CharT*)0 ); } -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_NUMERIC_FACETS_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_num_get.h b/build/stlport/stlport/stl/_num_get.h deleted file mode 100644 index 95f7935f93a1..000000000000 --- a/build/stlport/stlport/stl/_num_get.h +++ /dev/null @@ -1,237 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_NUM_GET_H -#define _STLP_INTERNAL_NUM_GET_H - -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H -# include -#endif - -#ifndef _STLP_C_LOCALE_H -# include -#endif - -#ifndef _STLP_INTERNAL_NUMPUNCT_H -# include -#endif - -#ifndef _STLP_INTERNAL_CTYPE_H -# include -#endif - -#ifndef _STLP_INTERNAL_IOSTREAM_STRING_H -# include -#endif - -#ifndef _STLP_FACETS_FWD_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// num_get facets - -template -class num_get: public locale::facet { -public: - typedef _CharT char_type; - typedef _InputIter iter_type; - - explicit num_get(size_t __refs = 0): locale::facet(__refs) {} - -#if !defined (_STLP_NO_BOOL) - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, bool& __val) const - { return do_get(__ii, __end, __str, __err, __val); } -#endif - -#if defined (_STLP_FIX_LIBRARY_ISSUES) - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, short& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, int& __val) const - { return do_get(__ii, __end, __str, __err, __val); } -#endif - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, long& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, unsigned short& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, unsigned int& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, unsigned long& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - -#if defined (_STLP_LONG_LONG) - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, _STLP_LONG_LONG& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, unsigned _STLP_LONG_LONG& __val) const - { return do_get(__ii, __end, __str, __err, __val); } -#endif /* _STLP_LONG_LONG */ - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, float& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, double& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - -#if !defined (_STLP_NO_LONG_DOUBLE) - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, long double& __val) const - { return do_get(__ii, __end, __str, __err, __val); } -# endif - - _InputIter get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, void*& __val) const - { return do_get(__ii, __end, __str, __err, __val); } - - static locale::id id; - -protected: - ~num_get() {} - - typedef string string_type; - typedef ctype<_CharT> _Ctype; - typedef numpunct<_CharT> _Numpunct; - -#if !defined (_STLP_NO_BOOL) - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, bool& __val) const; -#endif - - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, long& __val) const; - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, unsigned short& __val) const; - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, unsigned int& __val) const; - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, unsigned long& __val) const; - -#if defined (_STLP_FIX_LIBRARY_ISSUES) - // issue 118 : those are actually not supposed to be here - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, short& __val) const; - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, int& __val) const; -#endif - - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, float& __val) const; - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, double& __val) const; - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, void*& __p) const; - -#if !defined (_STLP_NO_LONG_DOUBLE) - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, long double& __val) const; -#endif - -#if defined (_STLP_LONG_LONG) - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, _STLP_LONG_LONG& __val) const; - virtual _InputIter do_get(_InputIter __ii, _InputIter __end, ios_base& __str, - ios_base::iostate& __err, unsigned _STLP_LONG_LONG& __val) const; -#endif - -}; - - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS num_get > >; -// _STLP_EXPORT_TEMPLATE_CLASS num_get; -# if !defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS num_get > >; -// _STLP_EXPORT_TEMPLATE_CLASS num_get; -# endif -#endif - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) - -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_DECLSPEC bool _STLP_CALL __valid_grouping(const char*, const char*, const char*, const char*); - -template -bool _STLP_CALL -__get_decimal_integer(_InputIter& __first, _InputIter& __last, _Integer& __val, _CharT*); - -# if !defined (_STLP_NO_WCHAR_T) -bool _STLP_DECLSPEC _STLP_CALL __get_fdigit(wchar_t&, const wchar_t*); -bool _STLP_DECLSPEC _STLP_CALL __get_fdigit_or_sep(wchar_t&, wchar_t, const wchar_t*); -# endif - -inline void _STLP_CALL -_Initialize_get_float(const ctype&, - char& Plus, char& Minus, - char& pow_e, char& pow_E, - char*) { - Plus = '+'; - Minus = '-'; - pow_e = 'e'; - pow_E = 'E'; -} - -# if !defined (_STLP_NO_WCHAR_T) -void _STLP_DECLSPEC _STLP_CALL _Initialize_get_float(const ctype&, - wchar_t&, wchar_t&, wchar_t&, wchar_t&, wchar_t*); -# endif -void _STLP_DECLSPEC _STLP_CALL __string_to_float(const __iostring&, float&); -void _STLP_DECLSPEC _STLP_CALL __string_to_float(const __iostring&, double&); -# if !defined (_STLP_NO_LONG_DOUBLE) -void _STLP_DECLSPEC _STLP_CALL __string_to_float(const __iostring&, long double&); -# endif - -_STLP_MOVE_TO_STD_NAMESPACE - -#endif /* _STLP_EXPOSE_STREAM_IMPLEMENTATION */ - - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_NUM_GET_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_num_put.c b/build/stlport/stlport/stl/_num_put.c deleted file mode 100644 index 0c07838212f6..000000000000 --- a/build/stlport/stlport/stl/_num_put.c +++ /dev/null @@ -1,522 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_NUM_PUT_C -#define _STLP_NUM_PUT_C - -#ifndef _STLP_INTERNAL_NUM_PUT_H -# include -#endif - -#ifndef _STLP_INTERNAL_LIMITS -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// __do_put_float and its helper functions. Strategy: write the output -// to a buffer of char, transform the buffer to _CharT, and then copy -// it to the output. - -//---------------------------------------------------------------------- -// num_put facet - -template -_OutputIter _STLP_CALL -__copy_float_and_fill(const _CharT* __first, const _CharT* __last, - _OutputIter __oi, - ios_base::fmtflags __flags, - streamsize __width, _CharT __fill, - _CharT __xplus, _CharT __xminus) { - if (__width <= __last - __first) - return _STLP_STD::copy(__first, __last, __oi); - else { - streamsize __pad = __width - (__last - __first); - ios_base::fmtflags __dir = __flags & ios_base::adjustfield; - - if (__dir == ios_base::left) { - __oi = _STLP_STD::copy(__first, __last, __oi); - return _STLP_PRIV __fill_n(__oi, __pad, __fill); - } - else if (__dir == ios_base::internal && __first != __last && - (*__first == __xplus || *__first == __xminus)) { - *__oi++ = *__first++; - __oi = _STLP_PRIV __fill_n(__oi, __pad, __fill); - return _STLP_STD::copy(__first, __last, __oi); - } - else { - __oi = _STLP_PRIV __fill_n(__oi, __pad, __fill); - return _STLP_STD::copy(__first, __last, __oi); - } - } -} - -#if !defined (_STLP_NO_WCHAR_T) -// Helper routine for wchar_t -template -_OutputIter _STLP_CALL -__put_float(__iostring &__str, _OutputIter __oi, - ios_base& __f, wchar_t __fill, - wchar_t __decimal_point, wchar_t __sep, - size_t __group_pos, const string& __grouping) { - const ctype& __ct = use_facet >(__f.getloc()); - - __iowstring __wbuf; - __convert_float_buffer(__str, __wbuf, __ct, __decimal_point); - - if (!__grouping.empty()) { - __insert_grouping(__wbuf, __group_pos, __grouping, - __sep, __ct.widen('+'), __ct.widen('-'), 0); - } - - return __copy_float_and_fill(__wbuf.data(), __wbuf.data() + __wbuf.size(), __oi, - __f.flags(), __f.width(0), __fill, __ct.widen('+'), __ct.widen('-')); -} -#endif /* WCHAR_T */ - -// Helper routine for char -template -_OutputIter _STLP_CALL -__put_float(__iostring &__str, _OutputIter __oi, - ios_base& __f, char __fill, - char __decimal_point, char __sep, - size_t __group_pos, const string& __grouping) { - if ((__group_pos < __str.size()) && (__str[__group_pos] == '.')) { - __str[__group_pos] = __decimal_point; - } - - if (!__grouping.empty()) { - __insert_grouping(__str, __group_pos, - __grouping, __sep, '+', '-', 0); - } - - return __copy_float_and_fill(__str.data(), __str.data() + __str.size(), __oi, - __f.flags(), __f.width(0), __fill, '+', '-'); -} - -template -_OutputIter _STLP_CALL -__do_put_float(_OutputIter __s, ios_base& __f, - _CharT __fill, _Float __x) { - __iostring __buf; - - size_t __group_pos = __write_float(__buf, __f.flags(), (int)__f.precision(), __x); - - const numpunct<_CharT>& __np = use_facet >(__f.getloc()); - return __put_float(__buf, __s, __f, __fill, - __np.decimal_point(), __np.thousands_sep(), - __group_pos, __np.grouping()); -} - -inline void __get_money_digits_aux (__iostring &__buf, ios_base &, _STLP_LONGEST_FLOAT_TYPE __x) -{ __get_floor_digits(__buf, __x); } - -#if !defined (_STLP_NO_WCHAR_T) -inline void __get_money_digits_aux (__iowstring &__wbuf, ios_base &__f, _STLP_LONGEST_FLOAT_TYPE __x) { - __iostring __buf; - __get_floor_digits(__buf, __x); - - const ctype& __ct = use_facet >(__f.getloc()); - __convert_float_buffer(__buf, __wbuf, __ct, wchar_t(0), false); -} -#endif - -template -void _STLP_CALL __get_money_digits(_STLP_BASIC_IOSTRING(_CharT) &__buf, ios_base& __f, _STLP_LONGEST_FLOAT_TYPE __x) -{ __get_money_digits_aux(__buf, __f, __x); } - -// _M_do_put_integer and its helper functions. - -template -_OutputIter _STLP_CALL -__copy_integer_and_fill(const _CharT* __buf, ptrdiff_t __len, - _OutputIter __oi, - ios_base::fmtflags __flg, streamsize __wid, _CharT __fill, - _CharT __xplus, _CharT __xminus) { - if (__len >= __wid) - return _STLP_STD::copy(__buf, __buf + __len, __oi); - else { - //casting numeric_limits::max to streamsize only works is ptrdiff_t is signed or streamsize representation - //is larger than ptrdiff_t one. - _STLP_STATIC_ASSERT((sizeof(streamsize) > sizeof(ptrdiff_t)) || - ((sizeof(streamsize) == sizeof(ptrdiff_t)) && numeric_limits::is_signed)) - ptrdiff_t __pad = __STATIC_CAST(ptrdiff_t, (min) (__STATIC_CAST(streamsize, (numeric_limits::max)()), - __STATIC_CAST(streamsize, __wid - __len))); - ios_base::fmtflags __dir = __flg & ios_base::adjustfield; - - if (__dir == ios_base::left) { - __oi = _STLP_STD::copy(__buf, __buf + __len, __oi); - return _STLP_PRIV __fill_n(__oi, __pad, __fill); - } - else if (__dir == ios_base::internal && __len != 0 && - (__buf[0] == __xplus || __buf[0] == __xminus)) { - *__oi++ = __buf[0]; - __oi = __fill_n(__oi, __pad, __fill); - return _STLP_STD::copy(__buf + 1, __buf + __len, __oi); - } - else if (__dir == ios_base::internal && __len >= 2 && - (__flg & ios_base::showbase) && - (__flg & ios_base::basefield) == ios_base::hex) { - *__oi++ = __buf[0]; - *__oi++ = __buf[1]; - __oi = __fill_n(__oi, __pad, __fill); - return _STLP_STD::copy(__buf + 2, __buf + __len, __oi); - } - else { - __oi = __fill_n(__oi, __pad, __fill); - return _STLP_STD::copy(__buf, __buf + __len, __oi); - } - } -} - -#if !defined (_STLP_NO_WCHAR_T) -// Helper function for wchar_t -template -_OutputIter _STLP_CALL -__put_integer(char* __buf, char* __iend, _OutputIter __s, - ios_base& __f, - ios_base::fmtflags __flags, wchar_t __fill) { - locale __loc = __f.getloc(); - const ctype& __ct = use_facet >(__loc); - - wchar_t __xplus = __ct.widen('+'); - wchar_t __xminus = __ct.widen('-'); - - wchar_t __wbuf[64]; - __ct.widen(__buf, __iend, __wbuf); - ptrdiff_t __len = __iend - __buf; - wchar_t* __eend = __wbuf + __len; - - const numpunct& __np = use_facet >(__loc); - const string& __grouping = __np.grouping(); - - if (!__grouping.empty()) { - int __basechars; - if (__flags & ios_base::showbase) - switch (__flags & ios_base::basefield) { - case ios_base::hex: __basechars = 2; break; - case ios_base::oct: __basechars = 1; break; - default: __basechars = 0; - } - else - __basechars = 0; - - __len = __insert_grouping(__wbuf, __eend, __grouping, __np.thousands_sep(), - __xplus, __xminus, __basechars); - } - - return __copy_integer_and_fill((wchar_t*)__wbuf, __len, __s, - __flags, __f.width(0), __fill, __xplus, __xminus); -} -#endif - -// Helper function for char -template -_OutputIter _STLP_CALL -__put_integer(char* __buf, char* __iend, _OutputIter __s, - ios_base& __f, ios_base::fmtflags __flags, char __fill) { - char __grpbuf[64]; - ptrdiff_t __len = __iend - __buf; - - const numpunct& __np = use_facet >(__f.getloc()); - const string& __grouping = __np.grouping(); - - if (!__grouping.empty()) { - int __basechars; - if (__flags & ios_base::showbase) - switch (__flags & ios_base::basefield) { - case ios_base::hex: __basechars = 2; break; - case ios_base::oct: __basechars = 1; break; - default: __basechars = 0; - } - else - __basechars = 0; - - // make sure there is room at the end of the buffer - // we pass to __insert_grouping - _STLP_STD::copy(__buf, __iend, (char *) __grpbuf); - __buf = __grpbuf; - __iend = __grpbuf + __len; - __len = __insert_grouping(__buf, __iend, __grouping, __np.thousands_sep(), - '+', '-', __basechars); - } - - return __copy_integer_and_fill(__buf, __len, __s, __flags, __f.width(0), __fill, '+', '-'); -} - -#if defined (_STLP_LONG_LONG) -typedef _STLP_LONG_LONG __max_int_t; -typedef unsigned _STLP_LONG_LONG __umax_int_t; -#else -typedef long __max_int_t; -typedef unsigned long __umax_int_t; -#endif - -_STLP_DECLSPEC const char* _STLP_CALL __hex_char_table_lo(); -_STLP_DECLSPEC const char* _STLP_CALL __hex_char_table_hi(); - -template -inline char* _STLP_CALL -__write_decimal_backward(char* __ptr, _Integer __x, ios_base::fmtflags __flags, const __true_type& /* is_signed */) { - const bool __negative = __x < 0 ; - __max_int_t __temp = __x; - __umax_int_t __utemp = __negative?-__temp:__temp; - - for (; __utemp != 0; __utemp /= 10) - *--__ptr = (char)((int)(__utemp % 10) + '0'); - // put sign if needed or requested - if (__negative) - *--__ptr = '-'; - else if (__flags & ios_base::showpos) - *--__ptr = '+'; - return __ptr; -} - -template -inline char* _STLP_CALL -__write_decimal_backward(char* __ptr, _Integer __x, ios_base::fmtflags __flags, const __false_type& /* is_signed */) { - for (; __x != 0; __x /= 10) - *--__ptr = (char)((int)(__x % 10) + '0'); - // put sign if requested - if (__flags & ios_base::showpos) - *--__ptr = '+'; - return __ptr; -} - -template -char* _STLP_CALL -__write_integer_backward(char* __buf, ios_base::fmtflags __flags, _Integer __x) { - char* __ptr = __buf; - - if (__x == 0) { - *--__ptr = '0'; - if ((__flags & ios_base::showpos) && ((__flags & (ios_base::oct | ios_base::hex)) == 0)) - *--__ptr = '+'; - // oct or hex base shall not be added to the 0 value (see '#' flag in C formating strings) - } - else { - switch (__flags & ios_base::basefield) { - case ios_base::oct: - { - __umax_int_t __temp = __x; - // if the size of integer is less than 8, clear upper part - if ( sizeof(__x) < 8 && sizeof(__umax_int_t) >= 8 ) - __temp &= 0xFFFFFFFF; - - for (; __temp != 0; __temp >>=3) - *--__ptr = (char)((((unsigned)__temp)& 0x7) + '0'); - - // put leading '0' if showbase is set - if (__flags & ios_base::showbase) - *--__ptr = '0'; - } - break; - case ios_base::hex: - { - const char* __table_ptr = (__flags & ios_base::uppercase) ? - __hex_char_table_hi() : __hex_char_table_lo(); - __umax_int_t __temp = __x; - // if the size of integer is less than 8, clear upper part - if ( sizeof(__x) < 8 && sizeof(__umax_int_t) >= 8 ) - __temp &= 0xFFFFFFFF; - - for (; __temp != 0; __temp >>=4) - *--__ptr = __table_ptr[((unsigned)__temp & 0xF)]; - - if (__flags & ios_base::showbase) { - *--__ptr = __table_ptr[16]; - *--__ptr = '0'; - } - } - break; - //case ios_base::dec: - default: - { -#if defined(__HP_aCC) && (__HP_aCC == 1) - bool _IsSigned = !((_Integer)-1 > 0); - if (_IsSigned) - __ptr = __write_decimal_backward(__ptr, __x, __flags, __true_type() ); - else - __ptr = __write_decimal_backward(__ptr, __x, __flags, __false_type() ); -#else - typedef typename __bool2type::is_signed>::_Ret _IsSigned; - __ptr = __write_decimal_backward(__ptr, __x, __flags, _IsSigned()); -#endif - } - break; - } - } - - // return pointer to beginning of the string - return __ptr; -} - -template -_OutputIter _STLP_CALL -__do_put_integer(_OutputIter __s, ios_base& __f, _CharT __fill, _Integer __x) { - // buffer size = number of bytes * number of digit necessary in the smallest Standard base (base 8, 3 digits/byte) - // plus the longest base representation '0x' - // Do not use __buf_size to define __buf static buffer, some compilers (HP aCC) do not accept const variable as - // the specification of a static buffer size. - char __buf[sizeof(_Integer) * 3 + 2]; - const ptrdiff_t __buf_size = sizeof(__buf) / sizeof(char); - ios_base::fmtflags __flags = __f.flags(); - char* __ibeg = __write_integer_backward((char*)__buf + __buf_size, __flags, __x); - return __put_integer(__ibeg, (char*)__buf + __buf_size, __s, __f, __flags, __fill); -} - -template -_OutputIter _STLP_CALL -__do_put_bool(_OutputIter __s, ios_base& __f, _CharT __fill, bool __x) { - const numpunct<_CharT>& __np = use_facet >(__f.getloc()); - - basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > __str = __x ? __np.truename() : __np.falsename(); - - streamsize __wid = __f.width(0); - if (__str.size() >= __STATIC_CAST(size_t, __wid)) - return _STLP_STD::copy(__str.begin(), __str.end(), __s); - else { - streamsize __pad = __wid - __str.size(); - ios_base::fmtflags __dir = __f.flags() & ios_base::adjustfield; - - if (__dir == ios_base::left) { - __s = _STLP_STD::copy(__str.begin(), __str.end(), __s); - return __fill_n(__s, __pad, __fill); - } - else /* covers right and internal padding */ { - __s = __fill_n(__s, __pad, __fill); - return _STLP_STD::copy(__str.begin(), __str.end(), __s); - } - } -} -_STLP_MOVE_TO_STD_NAMESPACE - -// -// num_put<> -// - -template -locale::id num_put<_CharT, _OutputIterator>::id; - -#if !defined (_STLP_NO_BOOL) -template -_OutputIter -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill, - bool __val) const { - if (!(__f.flags() & ios_base::boolalpha)) - // 22.2.2.2.2.23: shall return do_put for int and not directly __do_put_integer. - return do_put(__s, __f, __fill, __STATIC_CAST(long, __val)); - - return _STLP_PRIV __do_put_bool(__s, __f, __fill, __val); -} -#endif - -template -_OutputIter -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill, - long __val) const -{ return _STLP_PRIV __do_put_integer(__s, __f, __fill, __val); } - -template -_OutputIter -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill, - unsigned long __val) const -{ return _STLP_PRIV __do_put_integer(__s, __f, __fill, __val); } - -template -_OutputIter -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill, - double __val) const -{ return _STLP_PRIV __do_put_float(__s, __f, __fill, __val); } - -#if !defined (_STLP_NO_LONG_DOUBLE) -template -_OutputIter -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill, - long double __val) const -{ return _STLP_PRIV __do_put_float(__s, __f, __fill, __val); } -#endif - -#if defined (_STLP_LONG_LONG) -template -_OutputIter -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill, - _STLP_LONG_LONG __val) const -{ return _STLP_PRIV __do_put_integer(__s, __f, __fill, __val); } - -template -_OutputIter -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill, - unsigned _STLP_LONG_LONG __val) const -{ return _STLP_PRIV __do_put_integer(__s, __f, __fill, __val); } -#endif /* _STLP_LONG_LONG */ - - -// 22.2.2.2.2 Stage 1: "For conversion from void* the specifier is %p." -// This is not clear and I'm really don't follow this (below). -template -_OutputIter -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT /*__fill*/, - const void* __val) const { - const ctype<_CharT>& __c_type = use_facet >(__f.getloc()); - ios_base::fmtflags __save_flags = __f.flags(); - - __f.setf(ios_base::hex, ios_base::basefield); - __f.setf(ios_base::showbase); - __f.setf(ios_base::internal, ios_base::adjustfield); - __f.width((sizeof(void*) * 2) + 2); // digits in pointer type plus '0x' prefix - if ( __val == 0 ) { - // base ('0x') not shown for null, but I really want to type it - // for pointer. Print it first in this case. - const char* __table_ptr = (__save_flags & ios_base::uppercase) ? - _STLP_PRIV __hex_char_table_hi() : _STLP_PRIV __hex_char_table_lo(); - __s++ = __c_type.widen( '0' ); - __s++ = __c_type.widen( __table_ptr[16] ); - __f.width((sizeof(void*) * 2)); // digits in pointer type - } else { - __f.width((sizeof(void*) * 2) + 2); // digits in pointer type plus '0x' prefix - } -#if defined (_STLP_MSVC) -# pragma warning (push) -# pragma warning (disable : 4311) //pointer truncation from 'const void*' to 'unsigned long' -#endif - _OutputIter result = -#ifdef _STLP_LONG_LONG - ( sizeof(void*) == sizeof(unsigned long) ) ? -#endif - _STLP_PRIV __do_put_integer(__s, __f, __c_type.widen('0'), __REINTERPRET_CAST(unsigned long,__val)) -#ifdef _STLP_LONG_LONG - : /* ( sizeof(void*) == sizeof(unsigned _STLP_LONG_LONG) ) ? */ - _STLP_PRIV __do_put_integer(__s, __f, __c_type.widen('0'), __REINTERPRET_CAST(unsigned _STLP_LONG_LONG,__val)) -#endif - ; -#if defined (_STLP_MSVC) -# pragma warning (pop) -#endif - __f.flags(__save_flags); - return result; -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_NUM_PUT_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_num_put.h b/build/stlport/stlport/stl/_num_put.h deleted file mode 100644 index 29bfc01cb535..000000000000 --- a/build/stlport/stlport/stl/_num_put.h +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_NUM_PUT_H -#define _STLP_INTERNAL_NUM_PUT_H - -#ifndef _STLP_INTERNAL_NUMPUNCT_H -# include -#endif - -#ifndef _STLP_INTERNAL_CTYPE_H -# include -#endif - -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_IOSTREAM_STRING_H -# include -#endif - -#ifndef _STLP_FACETS_FWD_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// num_put facet - -template -class num_put: public locale::facet { -public: - typedef _CharT char_type; - typedef _OutputIter iter_type; - - explicit num_put(size_t __refs = 0) : locale::facet(__refs) {} - -#if !defined (_STLP_NO_BOOL) - iter_type put(iter_type __s, ios_base& __f, char_type __fill, - bool __val) const { - return do_put(__s, __f, __fill, __val); - } -#endif - iter_type put(iter_type __s, ios_base& __f, char_type __fill, - long __val) const { - return do_put(__s, __f, __fill, __val); - } - - iter_type put(iter_type __s, ios_base& __f, char_type __fill, - unsigned long __val) const { - return do_put(__s, __f, __fill, __val); - } - -#if defined (_STLP_LONG_LONG) - iter_type put(iter_type __s, ios_base& __f, char_type __fill, - _STLP_LONG_LONG __val) const { - return do_put(__s, __f, __fill, __val); - } - - iter_type put(iter_type __s, ios_base& __f, char_type __fill, - unsigned _STLP_LONG_LONG __val) const { - return do_put(__s, __f, __fill, __val); - } -#endif - - iter_type put(iter_type __s, ios_base& __f, char_type __fill, - double __val) const { - return do_put(__s, __f, __fill, (double)__val); - } - -#if !defined (_STLP_NO_LONG_DOUBLE) - iter_type put(iter_type __s, ios_base& __f, char_type __fill, - long double __val) const { - return do_put(__s, __f, __fill, __val); - } -#endif - - iter_type put(iter_type __s, ios_base& __f, char_type __fill, - const void * __val) const { - return do_put(__s, __f, __fill, __val); - } - - static locale::id id; - -protected: - ~num_put() {} -#if !defined (_STLP_NO_BOOL) - virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, bool __val) const; -#endif - virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, long __val) const; - virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, unsigned long __val) const; - virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, double __val) const; -#if !defined (_STLP_NO_LONG_DOUBLE) - virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, long double __val) const; -#endif - -#if defined (_STLP_LONG_LONG) - virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, _STLP_LONG_LONG __val) const; - virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, - unsigned _STLP_LONG_LONG __val) const ; -#endif - virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, const void* __val) const; -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS num_put > >; -# if !defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS num_put > >; -# endif -#endif - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -char* _STLP_CALL -__write_integer_backward(char* __buf, ios_base::fmtflags __flags, _Integer __x); - -/* - * Returns the position on the right of the digits that has to be considered - * for the application of the grouping policy. - */ -extern size_t _STLP_CALL __write_float(__iostring&, ios_base::fmtflags, int, double); -# if !defined (_STLP_NO_LONG_DOUBLE) -extern size_t _STLP_CALL __write_float(__iostring&, ios_base::fmtflags, int, long double); -# endif - -/* - * Gets the digits of the integer part. - */ -void _STLP_CALL __get_floor_digits(__iostring&, _STLP_LONGEST_FLOAT_TYPE); - -template -void _STLP_CALL __get_money_digits(_STLP_BASIC_IOSTRING(_CharT)&, ios_base&, _STLP_LONGEST_FLOAT_TYPE); - -# if !defined (_STLP_NO_WCHAR_T) -extern void _STLP_CALL __convert_float_buffer(__iostring const&, __iowstring&, const ctype&, wchar_t, bool = true); -# endif -extern void _STLP_CALL __adjust_float_buffer(__iostring&, char); - -extern char* _STLP_CALL -__write_integer(char* buf, ios_base::fmtflags flags, long x); - -extern ptrdiff_t _STLP_CALL __insert_grouping(char* first, char* last, const string&, char, char, char, int); -extern void _STLP_CALL __insert_grouping(__iostring&, size_t, const string&, char, char, char, int); -# if !defined (_STLP_NO_WCHAR_T) -extern ptrdiff_t _STLP_CALL __insert_grouping(wchar_t*, wchar_t*, const string&, wchar_t, wchar_t, wchar_t, int); -extern void _STLP_CALL __insert_grouping(__iowstring&, size_t, const string&, wchar_t, wchar_t, wchar_t, int); -# endif - -_STLP_MOVE_TO_STD_NAMESPACE - -#endif /* _STLP_EXPOSE_STREAM_IMPLEMENTATION */ - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_NUMERIC_FACETS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_numeric.c b/build/stlport/stlport/stl/_numeric.c deleted file mode 100644 index 6bd07ff121b6..000000000000 --- a/build/stlport/stlport/stl/_numeric.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_NUMERIC_C -#define _STLP_NUMERIC_C - -#ifndef _STLP_INTERNAL_NUMERIC_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_OutputIterator -__partial_sum(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _Tp*, _BinaryOperation __binary_op) { - _STLP_DEBUG_CHECK(__check_range(__first, __last)) - if (__first == __last) return __result; - *__result = *__first; - - _Tp __val = *__first; - while (++__first != __last) { - __val = __binary_op(__val, *__first); - *++__result = __val; - } - return ++__result; -} - -template -_OutputIterator -__adjacent_difference(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _Tp*, - _BinaryOperation __binary_op) { - _STLP_DEBUG_CHECK(__check_range(__first, __last)) - if (__first == __last) return __result; - *__result = *__first; - _Tp __val = *__first; - while (++__first != __last) { - _Tp __tmp = *__first; - *++__result = __binary_op(__tmp, __val); - __val = __tmp; - } - return ++__result; -} - - -template -_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr) { - _STLP_MPWFIX_TRY - if (__n == 0) - return __identity_element(__opr); - else { - while ((__n & 1) == 0) { - __n >>= 1; - __x = __opr(__x, __x); - } - _Tp __result = __x; - _STLP_MPWFIX_TRY - __n >>= 1; - while (__n != 0) { - __x = __opr(__x, __x); - if ((__n & 1) != 0) - __result = __opr(__result, __x); - __n >>= 1; - } - return __result; - _STLP_MPWFIX_CATCH - } - _STLP_MPWFIX_CATCH_ACTION(__x = _Tp()) -} - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_NUMERIC_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_numeric.h b/build/stlport/stlport/stl/_numeric.h deleted file mode 100644 index 4844da165af0..000000000000 --- a/build/stlport/stlport/stl/_numeric.h +++ /dev/null @@ -1,191 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_NUMERIC_H -#define _STLP_INTERNAL_NUMERIC_H - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -_STLP_INLINE_LOOP -_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp _Init) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) - _Init = _Init + *__first; - return _Init; -} - -template -_STLP_INLINE_LOOP -_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp _Init, - _BinaryOperation __binary_op) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - for ( ; __first != __last; ++__first) - _Init = __binary_op(_Init, *__first); - return _Init; -} - -template -_STLP_INLINE_LOOP -_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _Tp _Init) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - for ( ; __first1 != __last1; ++__first1, ++__first2) - _Init = _Init + (*__first1 * *__first2); - return _Init; -} - -template -_STLP_INLINE_LOOP -_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1, - _InputIterator2 __first2, _Tp _Init, - _BinaryOperation1 __binary_op1, - _BinaryOperation2 __binary_op2) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first1, __last1)) - for ( ; __first1 != __last1; ++__first1, ++__first2) - _Init = __binary_op1(_Init, __binary_op2(*__first1, *__first2)); - return _Init; -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_OutputIterator -__partial_sum(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _Tp*, _BinaryOperation __binary_op); - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline _OutputIterator -partial_sum(_InputIterator __first, _InputIterator __last, - _OutputIterator __result) { - return _STLP_PRIV __partial_sum(__first, __last, __result, _STLP_VALUE_TYPE(__first, _InputIterator), - _STLP_PRIV __plus(_STLP_VALUE_TYPE(__first, _InputIterator))); -} - -template -inline _OutputIterator -partial_sum(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _BinaryOperation __binary_op) { - return _STLP_PRIV __partial_sum(__first, __last, __result, _STLP_VALUE_TYPE(__first, _InputIterator), - __binary_op); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_OutputIterator -__adjacent_difference(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _Tp*, - _BinaryOperation __binary_op); - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline _OutputIterator -adjacent_difference(_InputIterator __first, - _InputIterator __last, _OutputIterator __result) { - return _STLP_PRIV __adjacent_difference(__first, __last, __result, - _STLP_VALUE_TYPE(__first, _InputIterator), - _STLP_PRIV __minus(_STLP_VALUE_TYPE(__first, _InputIterator))); -} - -template -_OutputIterator -adjacent_difference(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, _BinaryOperation __binary_op) { - return _STLP_PRIV __adjacent_difference(__first, __last, __result, - _STLP_VALUE_TYPE(__first, _InputIterator), - __binary_op); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr); - -_STLP_MOVE_TO_STD_NAMESPACE - -#if !defined (_STLP_NO_EXTENSIONS) - -// Returns __x ** __n, where __n >= 0. _Note that "multiplication" -// is required to be associative, but not necessarily commutative. - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline _Tp __power(_Tp __x, _Integer __n) { - return __power(__x, __n, multiplies<_Tp>()); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -// Alias for the internal name __power. Note that power is an extension, -// not part of the C++ standard. -template -inline _Tp power(_Tp __x, _Integer __n, _MonoidOperation __opr) { - return _STLP_PRIV __power(__x, __n, __opr); -} - -template -inline _Tp power(_Tp __x, _Integer __n) { - return _STLP_PRIV __power(__x, __n, multiplies<_Tp>()); -} - -// iota is not part of the C++ standard. It is an extension. - -template -_STLP_INLINE_LOOP -void iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __val) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - while (__first != __last) - *__first++ = __val++; -} -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_NUMERIC_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_numpunct.h b/build/stlport/stlport/stl/_numpunct.h deleted file mode 100644 index c0d0ff4d58ad..000000000000 --- a/build/stlport/stlport/stl/_numpunct.h +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_NUMPUNCT_H -#define _STLP_INTERNAL_NUMPUNCT_H - -#ifndef _STLP_IOS_BASE_H -# include -#endif - -# ifndef _STLP_C_LOCALE_H -# include -# endif - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// numpunct facets - -template class numpunct {}; -template class numpunct_byname {}; -template class num_get; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC numpunct : public locale::facet { -public: - typedef char char_type; - typedef string string_type; - - explicit numpunct(size_t __refs = 0) - : locale::facet(__refs) {} - - char decimal_point() const { return do_decimal_point(); } - char thousands_sep() const { return do_thousands_sep(); } - string grouping() const { return do_grouping(); } - string truename() const { return do_truename(); } - string falsename() const { return do_falsename(); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~numpunct(); - - virtual char do_decimal_point() const; - virtual char do_thousands_sep() const; - virtual string do_grouping() const; - virtual string do_truename() const; - virtual string do_falsename() const; -}; - -# if ! defined (_STLP_NO_WCHAR_T) - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC numpunct : public locale::facet { -public: - typedef wchar_t char_type; - typedef wstring string_type; - - explicit numpunct(size_t __refs = 0) - : locale::facet(__refs) {} - - wchar_t decimal_point() const { return do_decimal_point(); } - wchar_t thousands_sep() const { return do_thousands_sep(); } - string grouping() const { return do_grouping(); } - wstring truename() const { return do_truename(); } - wstring falsename() const { return do_falsename(); } - - static _STLP_STATIC_DECLSPEC locale::id id; - -protected: - ~numpunct(); - - virtual wchar_t do_decimal_point() const; - virtual wchar_t do_thousands_sep() const; - virtual string do_grouping() const; - virtual wstring do_truename() const; - virtual wstring do_falsename() const; -}; - -# endif /* WCHAR_T */ - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC numpunct_byname : public numpunct { - friend class _Locale_impl; -public: - typedef char char_type; - typedef string string_type; - - explicit numpunct_byname(const char* __name, size_t __refs = 0); - -protected: - - ~numpunct_byname(); - - virtual char do_decimal_point() const; - virtual char do_thousands_sep() const; - virtual string do_grouping() const; - virtual string do_truename() const; - virtual string do_falsename() const; - -private: - numpunct_byname(_Locale_numeric *__numeric) - : _M_numeric(__numeric) {} - - //explicitely defined as private to avoid warnings: - typedef numpunct_byname _Self; - numpunct_byname(_Self const&); - _Self& operator = (_Self const&); - - _Locale_numeric* _M_numeric; -}; - -# ifndef _STLP_NO_WCHAR_T -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC numpunct_byname: public numpunct { - friend class _Locale_impl; -public: - typedef wchar_t char_type; - typedef wstring string_type; - - explicit numpunct_byname(const char* __name, size_t __refs = 0); - -protected: - ~numpunct_byname(); - - virtual wchar_t do_decimal_point() const; - virtual wchar_t do_thousands_sep() const; - virtual string do_grouping() const; - virtual wstring do_truename() const; - virtual wstring do_falsename() const; - -private: - numpunct_byname(_Locale_numeric *__numeric) - : _M_numeric(__numeric) {} - - //explicitely defined as private to avoid warnings: - typedef numpunct_byname _Self; - numpunct_byname(_Self const&); - _Self& operator = (_Self const&); - - _Locale_numeric* _M_numeric; -}; - -# endif /* WCHAR_T */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_NUMPUNCT_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_ostream.c b/build/stlport/stlport/stl/_ostream.c deleted file mode 100644 index faba6c272a76..000000000000 --- a/build/stlport/stlport/stl/_ostream.c +++ /dev/null @@ -1,455 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_OSTREAM_C -#define _STLP_OSTREAM_C - -#ifndef _STLP_INTERNAL_OSTREAM_H -# include -#endif - -#if !defined (_STLP_INTERNAL_NUM_PUT_H) -# include // For basic_streambuf and iterators -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// Definitions of non-inline member functions. - -// Constructor, destructor - -template -basic_ostream<_CharT, _Traits>::basic_ostream(basic_streambuf<_CharT, _Traits>* __buf) - : basic_ios<_CharT, _Traits>() { - this->init(__buf); -} - -template -basic_ostream<_CharT, _Traits>::~basic_ostream() -{} - -// Output directly from a streambuf. -template -basic_ostream<_CharT, _Traits>& -basic_ostream<_CharT, _Traits>::operator<<(basic_streambuf<_CharT, _Traits>* __from) { - sentry __sentry(*this); - if (__sentry) { - if (__from) { - bool __any_inserted = __from->gptr() != __from->egptr() - ? this->_M_copy_buffered(__from, this->rdbuf()) - : this->_M_copy_unbuffered(__from, this->rdbuf()); - if (!__any_inserted) - this->setstate(ios_base::failbit); - } - else - this->setstate(ios_base::badbit); - } - - return *this; -} - -// Helper functions for the streambuf version of operator<<. The -// exception-handling code is complicated because exceptions thrown -// while extracting characters are treated differently than exceptions -// thrown while inserting characters. - -template -bool basic_ostream<_CharT, _Traits> - ::_M_copy_buffered(basic_streambuf<_CharT, _Traits>* __from, - basic_streambuf<_CharT, _Traits>* __to) { - bool __any_inserted = false; - - while (__from->egptr() != __from->gptr()) { - const ptrdiff_t __avail = __from->egptr() - __from->gptr(); - - streamsize __nwritten; - _STLP_TRY { - __nwritten = __to->sputn(__from->gptr(), __avail); - __from->gbump((int)__nwritten); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - return __any_inserted; - } - - if (__nwritten == __avail) { - _STLP_TRY { - if (this->_S_eof(__from->sgetc())) - return true; - else - __any_inserted = true; - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::failbit); - return false; - } - } - else if (__nwritten != 0) - return true; - else - return __any_inserted; - } - - // No characters are in the buffer, but we aren't at EOF. Switch to - // unbuffered mode. - return __any_inserted || this->_M_copy_unbuffered(__from, __to); -} - -/* - * Helper struct (guard) to put back a character in a streambuf - * whenever an exception or an eof occur. - */ -template -struct _SPutBackC { - typedef basic_streambuf<_CharT, _Traits> _StreamBuf; - typedef typename _StreamBuf::int_type int_type; - _SPutBackC(_StreamBuf *pfrom) - : __pfrom(pfrom), __c(0), __do_guard(false) {} - ~_SPutBackC() { - if (__do_guard) { - __pfrom->sputbackc(_Traits::to_char_type(__c)); - } - } - - void guard(int_type c) { - __c = c; - __do_guard = true; - } - void release() { - __do_guard = false; - } - -private: - _StreamBuf *__pfrom; - int_type __c; - bool __do_guard; -}; - -template -bool basic_ostream<_CharT, _Traits> - ::_M_copy_unbuffered(basic_streambuf<_CharT, _Traits>* __from, - basic_streambuf<_CharT, _Traits>* __to) { - typedef _SPutBackC<_CharT, _Traits> _SPutBackCGuard; - bool __any_inserted = false; - int_type __c; - - _STLP_TRY { - _SPutBackCGuard __cguard(__from); - for (;;) { - _STLP_TRY { - __c = __from->sbumpc(); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::failbit); - break; - } - - if (this->_S_eof(__c)) - break; - - __cguard.guard(__c); -#if defined (__DMC__) - _STLP_TRY { -#endif - if (this->_S_eof(__to->sputc(_Traits::to_char_type(__c)))) - break; - -#if defined (__DMC__) - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - break; - } -#endif - __cguard.release(); - __any_inserted = true; - } - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - return __any_inserted; -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Helper function for numeric output. -template -basic_ostream<_CharT, _Traits>& _STLP_CALL -__put_num(basic_ostream<_CharT, _Traits>& __os, _Number __x) { - typedef typename basic_ostream<_CharT, _Traits>::sentry _Sentry; - _Sentry __sentry(__os); - bool __failed = true; - - if (__sentry) { - _STLP_TRY { - typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > _NumPut; - __failed = (use_facet<_NumPut>(__os.getloc())).put(ostreambuf_iterator<_CharT, _Traits>(__os.rdbuf()), - __os, __os.fill(), - __x).failed(); - } - _STLP_CATCH_ALL { - __os._M_handle_exception(ios_base::badbit); - } - } - if (__failed) - __os.setstate(ios_base::badbit); - return __os; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -/* - * In the following operators we try to limit code bloat by limiting the - * number of __put_num instanciations. - */ -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(short __x) { - _STLP_STATIC_ASSERT( sizeof(short) <= sizeof(long) ) - long __tmp = ((this->flags() & _Basic_ios::basefield) != ios_base::dec) ? - __STATIC_CAST(long, __STATIC_CAST(unsigned short, __x)): __x; - return _STLP_PRIV __put_num(*this, __tmp); -} - -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(unsigned short __x) { - _STLP_STATIC_ASSERT( sizeof(unsigned short) <= sizeof(unsigned long) ) - return _STLP_PRIV __put_num(*this, __STATIC_CAST(unsigned long,__x)); -} - -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(int __x) { - _STLP_STATIC_ASSERT( sizeof(int) <= sizeof(long) ) - long __tmp = ((this->flags() & _Basic_ios::basefield) != ios_base::dec) ? - __STATIC_CAST(long, __STATIC_CAST(unsigned int, __x)): __x; - return _STLP_PRIV __put_num(*this, __tmp); -} - -template -#if defined (_WIN64) || !defined (_STLP_MSVC) || (_STLP_MSVC < 1300) -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(unsigned int __x) { - _STLP_STATIC_ASSERT( sizeof(unsigned int) <= sizeof(unsigned long) ) -#else -/* We define this operator with size_t rather than unsigned int to avoid - * 64 bits warning. - */ -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(size_t __x) { - _STLP_STATIC_ASSERT( sizeof(size_t) <= sizeof(unsigned long) ) -#endif - return _STLP_PRIV __put_num(*this, __STATIC_CAST(unsigned long,__x)); -} - -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(long __x) -{ return _STLP_PRIV __put_num(*this, __x); } - -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(unsigned long __x) -{ return _STLP_PRIV __put_num(*this, __x); } - -#ifdef _STLP_LONG_LONG -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<< (_STLP_LONG_LONG __x) -{ return _STLP_PRIV __put_num(*this, __x); } - -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<< (unsigned _STLP_LONG_LONG __x) -{ return _STLP_PRIV __put_num(*this, __x); } -#endif - -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(float __x) -{ return _STLP_PRIV __put_num(*this, __STATIC_CAST(double,__x)); } - -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(double __x) -{ return _STLP_PRIV __put_num(*this, __x); } - -#ifndef _STLP_NO_LONG_DOUBLE -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(long double __x) -{ return _STLP_PRIV __put_num(*this, __x); } -#endif - -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(const void* __x) -{ return _STLP_PRIV __put_num(*this, __x); } - -#ifndef _STLP_NO_BOOL -template -basic_ostream<_CharT, _Traits>& basic_ostream<_CharT, _Traits>::operator<<(bool __x) -{ return _STLP_PRIV __put_num(*this, __x); } -#endif - -template -void basic_ostream<_CharT, _Traits>::_M_put_char(_CharT __c) { - sentry __sentry(*this); - if (__sentry) { - bool __failed = true; - _STLP_TRY { - streamsize __npad = this->width() > 0 ? this->width() - 1 : 0; - // if (__npad <= 1) - if (__npad == 0) - __failed = this->_S_eof(this->rdbuf()->sputc(__c)); - else if ((this->flags() & ios_base::adjustfield) == ios_base::left) { - __failed = this->_S_eof(this->rdbuf()->sputc(__c)); - __failed = __failed || - this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad; - } - else { - __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad; - __failed = __failed || this->_S_eof(this->rdbuf()->sputc(__c)); - } - - this->width(0); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - - if (__failed) - this->setstate(ios_base::badbit); - } -} - -template -void basic_ostream<_CharT, _Traits>::_M_put_nowiden(const _CharT* __s) { - sentry __sentry(*this); - if (__sentry) { - bool __failed = true; - streamsize __n = _Traits::length(__s); - streamsize __npad = this->width() > __n ? this->width() - __n : 0; - - _STLP_TRY { - if (__npad == 0) - __failed = this->rdbuf()->sputn(__s, __n) != __n; - else if ((this->flags() & ios_base::adjustfield) == ios_base::left) { - __failed = this->rdbuf()->sputn(__s, __n) != __n; - __failed = __failed || - this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad; - } - else { - __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad; - __failed = __failed || this->rdbuf()->sputn(__s, __n) != __n; - } - - this->width(0); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - - if (__failed) - this->setstate(ios_base::failbit); - } -} - -template -void basic_ostream<_CharT, _Traits>::_M_put_widen(const char* __s) { - sentry __sentry(*this); - if (__sentry) { - bool __failed = true; - streamsize __n = char_traits::length(__s); - streamsize __npad = this->width() > __n ? this->width() - __n : 0; - - _STLP_TRY { - if (__npad == 0) - __failed = !this->_M_put_widen_aux(__s, __n); - else if ((this->flags() & ios_base::adjustfield) == ios_base::left) { - __failed = !this->_M_put_widen_aux(__s, __n); - __failed = __failed || - this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad; - } - else { - __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad; - __failed = __failed || !this->_M_put_widen_aux(__s, __n); - } - - this->width(0); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - - if (__failed) - this->setstate(ios_base::failbit); - } -} - -template -bool basic_ostream<_CharT, _Traits>::_M_put_widen_aux(const char* __s, - streamsize __n) { - basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf(); - - for ( ; __n > 0 ; --__n) - if (this->_S_eof(__buf->sputc(this->widen(*__s++)))) - return false; - return true; -} - -// Unformatted output of a single character. -template -basic_ostream<_CharT, _Traits>& -basic_ostream<_CharT, _Traits>::put(char_type __c) { - sentry __sentry(*this); - bool __failed = true; - - if (__sentry) { - _STLP_TRY { - __failed = this->_S_eof(this->rdbuf()->sputc(__c)); - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - } - - if (__failed) - this->setstate(ios_base::badbit); - - return *this; -} - -// Unformatted output of a single character. -template -basic_ostream<_CharT, _Traits>& -basic_ostream<_CharT, _Traits>::write(const char_type* __s, streamsize __n) { - sentry __sentry(*this); - bool __failed = true; - - if (__sentry) { - _STLP_TRY { - __failed = this->rdbuf()->sputn(__s, __n) != __n; - } - _STLP_CATCH_ALL { - this->_M_handle_exception(ios_base::badbit); - } - } - - if (__failed) - this->setstate(ios_base::badbit); - - return *this; -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_OSTREAM_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_ostream.h b/build/stlport/stlport/stl/_ostream.h deleted file mode 100644 index 3335b66f5e7e..000000000000 --- a/build/stlport/stlport/stl/_ostream.h +++ /dev/null @@ -1,387 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - - -#ifndef _STLP_INTERNAL_OSTREAM_H -#define _STLP_INTERNAL_OSTREAM_H - -#ifndef _STLP_INTERNAL_IOS_H -# include // For basic_ios<>. Includes . -#endif - -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H -# include -#endif - -#if !defined (_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT) && !defined (_STLP_INTERNAL_EXCEPTION) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -template -class _Osentry; -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -bool __init_bostr(basic_ostream<_CharT, _Traits>& __str); - -_STLP_MOVE_TO_STD_NAMESPACE - -//---------------------------------------------------------------------- -// class basic_ostream<> - -template -class basic_ostream : virtual public basic_ios<_CharT, _Traits> { - typedef basic_ostream<_CharT, _Traits> _Self; - -#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) - //explicitely defined as private to avoid warnings: - basic_ostream(_Self const&); - _Self& operator = (_Self const&); -#endif - -public: // Types - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - typedef basic_ios<_CharT, _Traits> _Basic_ios; - -public: // Constructor and destructor. - explicit basic_ostream(basic_streambuf<_CharT, _Traits>* __buf); - ~basic_ostream(); - -public: // Hooks for manipulators. - typedef basic_ios<_CharT, _Traits>& (_STLP_CALL *__ios_fn)(basic_ios<_CharT, _Traits>&); - typedef ios_base& (_STLP_CALL *__ios_base_fn)(ios_base&); - typedef _Self& (_STLP_CALL *__ostream_fn)(_Self&); - _Self& operator<< (__ostream_fn __f) { return __f(*this); } - _Self & operator<< (__ios_base_fn __f) { __f(*this); return *this; } - _Self& operator<< (__ios_fn __ff) { __ff(*this); return *this; } - -private: - bool _M_copy_buffered(basic_streambuf<_CharT, _Traits>* __from, - basic_streambuf<_CharT, _Traits>* __to); - bool _M_copy_unbuffered(basic_streambuf<_CharT, _Traits>* __from, - basic_streambuf<_CharT, _Traits>* __to); - -public: - void _M_put_char(_CharT __c); - - void _M_put_nowiden(const _CharT* __s); - void _M_put_widen(const char* __s); - bool _M_put_widen_aux(const char* __s, streamsize __n); - -public: // Unformatted output. - _Self& put(char_type __c); - _Self& write(const char_type* __s, streamsize __n); - -public: // Formatted output. - // Formatted output from a streambuf. - _Self& operator<<(basic_streambuf<_CharT, _Traits>* __buf); -# ifndef _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER - // this is needed for compiling with option char = unsigned - _Self& operator<<(unsigned char __x) { _M_put_char(__x); return *this; } -# endif - _Self& operator<<(short __x); - _Self& operator<<(unsigned short __x); - _Self& operator<<(int __x); -#if defined (_WIN64) || !defined (_STLP_MSVC) || (_STLP_MSVC < 1300) - _Self& operator<<(unsigned int __x); -#else -/* We define this operator with size_t rather than unsigned int to avoid - * 64 bits warning. - */ - _Self& operator<<(size_t __x); -#endif - _Self& operator<<(long __x); - _Self& operator<<(unsigned long __x); -#ifdef _STLP_LONG_LONG - _Self& operator<< (_STLP_LONG_LONG __x); - _Self& operator<< (unsigned _STLP_LONG_LONG __x); -#endif - _Self& operator<<(float __x); - _Self& operator<<(double __x); -# ifndef _STLP_NO_LONG_DOUBLE - _Self& operator<<(long double __x); -# endif - _Self& operator<<(const void* __x); -# ifndef _STLP_NO_BOOL - _Self& operator<<(bool __x); -# endif - -public: // Buffer positioning and manipulation. - _Self& flush() { - if (this->rdbuf()) - if (this->rdbuf()->pubsync() == -1) - this->setstate(ios_base::badbit); - return *this; - } - - pos_type tellp() { - return this->rdbuf() && !this->fail() - ? this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out) - : pos_type(-1); - } - - _Self& seekp(pos_type __pos) { - if (this->rdbuf() && !this->fail()) { - if (this->rdbuf()->pubseekpos(__pos, ios_base::out) == pos_type(-1)) { - this->setstate(ios_base::failbit); - } - } - return *this; - } - - _Self& seekp(off_type __off, ios_base::seekdir __dir) { - if (this->rdbuf() && !this->fail()) - this->rdbuf()->pubseekoff(__off, __dir, ios_base::out); - return *this; - } - -#if defined (_STLP_USE_TEMPLATE_EXPORT) - // If we are using DLL specs, we have not to use inner classes - // end class declaration here - typedef _Osentry<_CharT, _Traits> sentry; -}; -# define sentry _Osentry - template - class _Osentry { - typedef _Osentry<_CharT, _Traits> _Self; -#else - class sentry { - typedef sentry _Self; -#endif - private: - basic_ostream<_CharT, _Traits>& _M_str; - // basic_streambuf<_CharT, _Traits>* _M_buf; - bool _M_ok; - public: - explicit sentry(basic_ostream<_CharT, _Traits>& __str) - : _M_str(__str), /* _M_buf(__str.rdbuf()), */ _M_ok(_STLP_PRIV __init_bostr(__str)) - {} - - ~sentry() { - if (_M_str.flags() & ios_base::unitbuf) -#if !defined (_STLP_NO_UNCAUGHT_EXCEPT_SUPPORT) - if (!uncaught_exception()) -#endif - _M_str.flush(); - } - - operator bool() const { return _M_ok; } - private: // Disable assignment and copy constructor. - //Implementation is here only to avoid warning with some compilers. - sentry(const _Self& __s) : _M_str(__s._M_str) {} - _Self& operator=(const _Self&) { return *this; } - }; -#if defined (_STLP_USE_TEMPLATE_EXPORT) -# undef sentry -#else - // close basic_ostream class definition here -}; -#endif - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_ostream >; -_STLP_EXPORT_TEMPLATE_CLASS _Osentry >; -# if !defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_ostream >; -_STLP_EXPORT_TEMPLATE_CLASS _Osentry >; -# endif -#endif /* _STLP_USE_TEMPLATE_EXPORT */ - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Helper functions for istream<>::sentry constructor. -template -bool __init_bostr(basic_ostream<_CharT, _Traits>& __str) { - if (__str.good()) { - // boris : check if this is needed ! - if (!__str.rdbuf()) - __str.setstate(ios_base::badbit); - if (__str.tie()) - __str.tie()->flush(); - return __str.good(); - } - else - return false; -} - -template -inline basic_streambuf<_CharT, _Traits>* _STLP_CALL -__get_ostreambuf(basic_ostream<_CharT, _Traits>& __St) -{ return __St.rdbuf(); } - -_STLP_MOVE_TO_STD_NAMESPACE - -// Non-member functions. -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c){ - __os._M_put_char(__c); - return __os; -} - -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __s) { - __os._M_put_nowiden(__s); - return __os; -} - -#if defined (_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER) -// some specializations - -inline basic_ostream >& _STLP_CALL -operator<<(basic_ostream >& __os, char __c) { - __os._M_put_char(__c); - return __os; -} - -inline basic_ostream >& _STLP_CALL -operator<<(basic_ostream >& __os, signed char __c) { - __os._M_put_char(__c); - return __os; -} - -inline basic_ostream >& _STLP_CALL -operator<<(basic_ostream >& __os, unsigned char __c) { - __os._M_put_char(__c); - return __os; -} - -inline basic_ostream >& _STLP_CALL -operator<<(basic_ostream >& __os, const char* __s) { - __os._M_put_nowiden(__s); - return __os; -} - -inline basic_ostream >& _STLP_CALL -operator<<(basic_ostream >& __os, const signed char* __s) { - __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s)); - return __os; -} - -inline basic_ostream >& -operator<<(basic_ostream >& __os, const unsigned char* __s) { - __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s)); - return __os; -} - -#else - -// also for compilers who might use that -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, char __c) { - __os._M_put_char(__os.widen(__c)); - return __os; -} - -template -inline basic_ostream& _STLP_CALL -operator<<(basic_ostream& __os, char __c) { - __os._M_put_char(__c); - return __os; -} - -template -inline basic_ostream& _STLP_CALL -operator<<(basic_ostream& __os, signed char __c) { - __os._M_put_char(__c); - return __os; -} - -template -inline basic_ostream& _STLP_CALL -operator<<(basic_ostream& __os, unsigned char __c) { - __os._M_put_char(__c); - return __os; -} - -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, const char* __s) { - __os._M_put_widen(__s); - return __os; -} - -template -inline basic_ostream& _STLP_CALL -operator<<(basic_ostream& __os, const char* __s) { - __os._M_put_nowiden(__s); - return __os; -} - -template -inline basic_ostream& _STLP_CALL -operator<<(basic_ostream& __os, const signed char* __s) { - __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s)); - return __os; -} - -template -inline basic_ostream& -operator<<(basic_ostream& __os, const unsigned char* __s) { - __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s)); - return __os; -} -#endif /* _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER */ - -//---------------------------------------------------------------------- -// basic_ostream manipulators. - -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -endl(basic_ostream<_CharT, _Traits>& __os) { - __os.put(__os.widen('\n')); - __os.flush(); - return __os; -} - -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -ends(basic_ostream<_CharT, _Traits>& __os) { - __os.put(_STLP_DEFAULT_CONSTRUCTED(_CharT)); - return __os; -} - -template -inline basic_ostream<_CharT, _Traits>& _STLP_CALL -flush(basic_ostream<_CharT, _Traits>& __os) { - __os.flush(); - return __os; -} - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_OSTREAM_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_ostreambuf_iterator.h b/build/stlport/stlport/stl/_ostreambuf_iterator.h deleted file mode 100644 index d8865493c36f..000000000000 --- a/build/stlport/stlport/stl/_ostreambuf_iterator.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H -#define _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H - -#ifndef _STLP_INTERNAL_STREAMBUF -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -extern basic_streambuf<_CharT, _Traits>* _STLP_CALL __get_ostreambuf(basic_ostream<_CharT, _Traits>&); - -_STLP_MOVE_TO_STD_NAMESPACE - -// The default template argument is declared in iosfwd -template -class ostreambuf_iterator : - public iterator { -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef typename _Traits::int_type int_type; - typedef basic_streambuf<_CharT, _Traits> streambuf_type; - typedef basic_ostream<_CharT, _Traits> ostream_type; - - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - -public: - ostreambuf_iterator(streambuf_type* __buf) _STLP_NOTHROW : _M_buf(__buf), _M_ok(__buf!=0) {} - // ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW : _M_buf(__get_ostreambuf(__o)), _M_ok(_M_buf != 0) {} - inline ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW; - - ostreambuf_iterator<_CharT, _Traits>& operator=(char_type __c) { - _M_ok = _M_ok && !traits_type::eq_int_type(_M_buf->sputc(__c), - traits_type::eof()); - return *this; - } - - ostreambuf_iterator<_CharT, _Traits>& operator*() { return *this; } - ostreambuf_iterator<_CharT, _Traits>& operator++() { return *this; } - ostreambuf_iterator<_CharT, _Traits>& operator++(int) { return *this; } - - bool failed() const { return !_M_ok; } - -private: - streambuf_type* _M_buf; - bool _M_ok; -}; - -template -inline ostreambuf_iterator<_CharT, _Traits>::ostreambuf_iterator(basic_ostream<_CharT, _Traits>& __o) _STLP_NOTHROW - : _M_buf(_STLP_PRIV __get_ostreambuf(__o)), _M_ok(_M_buf != 0) {} - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator >; -# if defined (INSTANTIATE_WIDE_STREAMS) -_STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator >; -# endif -#endif /* _STLP_USE_TEMPLATE_EXPORT */ - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -template -inline output_iterator_tag _STLP_CALL -iterator_category(const ostreambuf_iterator<_CharT, _Traits>&) { return output_iterator_tag(); } -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_pair.h b/build/stlport/stlport/stl/_pair.h deleted file mode 100644 index 7da76a98bf8a..000000000000 --- a/build/stlport/stlport/stl/_pair.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_PAIR_H -#define _STLP_INTERNAL_PAIR_H - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# ifndef _STLP_TYPE_TRAITS_H -# include -# endif - -# if !defined (_STLP_MOVE_CONSTRUCT_FWK_H) && !defined (_STLP_NO_MOVE_SEMANTIC) -# include -# endif -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (__ANDROID__) -/* Android has stl_pair.h, prevent using it by defining the header guard. */ -# define __SGI_STL_INTERNAL_PAIR_H -#endif -template -struct pair { - typedef _T1 first_type; - typedef _T2 second_type; - - _T1 first; - _T2 second; -#if defined (_STLP_CONST_CONSTRUCTOR_BUG) - pair() {} -#else - pair() : first(_T1()), second(_T2()) {} -#endif - pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {} - -#if defined (_STLP_MEMBER_TEMPLATES) - template - pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {} - - pair(const pair<_T1,_T2>& __o) : first(__o.first), second(__o.second) {} -#endif - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) - pair(__move_source > src) : first(_STLP_PRIV _AsMoveSource(src.get().first)), - second(_STLP_PRIV _AsMoveSource(src.get().second)) - {} -#endif - - __TRIVIAL_DESTRUCTOR(pair) -}; - -template -inline bool _STLP_CALL operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -{ return __x.first == __y.first && __x.second == __y.second; } - -template -inline bool _STLP_CALL operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) { - return __x.first < __y.first || - (!(__y.first < __x.first) && __x.second < __y.second); -} - -#if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) -template -inline bool _STLP_CALL operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -{ return !(__x == __y); } - -template -inline bool _STLP_CALL operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -{ return __y < __x; } - -template -inline bool _STLP_CALL operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -{ return !(__y < __x); } - -template -inline bool _STLP_CALL operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) -{ return !(__x < __y); } -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && !defined (_STLP_NO_EXTENSIONS) -template -inline pair<_T1, _T2 const*> make_pair(_T1 const& __x, - _T2 const (&__y)[_Sz]) -{ return pair<_T1, _T2 const*>(__x, static_cast<_T2 const*>(__y)); } - -template -inline pair<_T1 const*, _T2> make_pair(_T1 const (&__x)[_Sz], - _T2 const& __y) -{ return pair<_T1 const*, _T2>(static_cast<_T1 const*>(__x), __y); } - -template -inline pair<_T1 const*, _T2 const*> make_pair(_T1 const (&__x)[_Sz1], - _T2 const (&__y)[_Sz2]) { - return pair<_T1 const*, _T2 const*>(static_cast<_T1 const*>(__x), - static_cast<_T2 const*>(__y)); -} -#endif - -template -inline pair<_T1, _T2> _STLP_CALL make_pair(_T1 __x, _T2 __y) -{ return pair<_T1, _T2>(__x, __y); } - -_STLP_END_NAMESPACE - -#if defined (_STLP_USE_NAMESPACES) || !defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) -_STLP_BEGIN_RELOPS_NAMESPACE - -template -inline bool _STLP_CALL operator!=(const _Tp& __x, const _Tp& __y) -{ return !(__x == __y); } - -template -inline bool _STLP_CALL operator>(const _Tp& __x, const _Tp& __y) -{ return __y < __x; } - -template -inline bool _STLP_CALL operator<=(const _Tp& __x, const _Tp& __y) -{ return !(__y < __x); } - -template -inline bool _STLP_CALL operator>=(const _Tp& __x, const _Tp& __y) -{ return !(__x < __y); } - -_STLP_END_RELOPS_NAMESPACE -#endif - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -_STLP_BEGIN_NAMESPACE - -template -struct __type_traits > { - typedef __type_traits<_T1> _T1Traits; - typedef __type_traits<_T2> _T2Traits; - typedef typename _Land2::_Ret has_trivial_default_constructor; - typedef typename _Land2::_Ret has_trivial_copy_constructor; - typedef typename _Land2::_Ret has_trivial_assignment_operator; - typedef typename _Land2::_Ret has_trivial_destructor; - typedef __false_type is_POD_type; -}; - -# if !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > - : _STLP_PRIV __move_traits_help1<_T1, _T2> {}; -# endif - -_STLP_END_NAMESPACE -#endif - -#endif /* _STLP_INTERNAL_PAIR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_prolog.h b/build/stlport/stlport/stl/_prolog.h deleted file mode 100644 index 9705c2c674de..000000000000 --- a/build/stlport/stlport/stl/_prolog.h +++ /dev/null @@ -1,18 +0,0 @@ -/* NOTE : this header has no guards and is MEANT for multiple inclusion! - * If you are using "header protection" option with your compiler, - * please also find #pragma which disables it and put it here, to - * allow reentrancy of this header. - */ - -#include - -/* Get all debug things, potentially only empty macros if none of - * the debug features available in user config file is activated. */ - /* Thanks to _STLP_OUTERMOST_HEADER_ID we hide _debug.h when C standard - * headers are included as some platforms (Win32) include C standard headers - * in an 'extern "C"' scope which do not accept the templates exposed - * in _debug.h. */ -#if defined (__cplusplus) && !defined (_STLP_DEBUG_H) && \ - !((_STLP_OUTERMOST_HEADER_ID >= 0x200) && (_STLP_OUTERMOST_HEADER_ID <= 0x300)) -# include -#endif diff --git a/build/stlport/stlport/stl/_pthread_alloc.h b/build/stlport/stlport/stl/_pthread_alloc.h deleted file mode 100644 index f45d9497ba7d..000000000000 --- a/build/stlport/stlport/stl/_pthread_alloc.h +++ /dev/null @@ -1,461 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_PTHREAD_ALLOC_H -#define _STLP_PTHREAD_ALLOC_H - -/* - * Pthread-specific node allocator. - * This is similar to the default allocator, except that free-list - * information is kept separately for each thread, avoiding locking. - * This should be reasonably fast even in the presence of threads. - * The down side is that storage may not be well-utilized. - * It is not an error to allocate memory in thread A and deallocate - * it in thread B. But this effectively transfers ownership of the memory, - * so that it can only be reallocated by thread B. Thus this can effectively - * result in a storage leak if it's done on a regular basis. - * It can also result in frequent sharing of - * cache lines among processors, with potentially serious performance - * consequences. - */ - -#if !defined (_STLP_PTHREADS) -# error POSIX specific allocator implementation. Your system do not seems to \ -have this interface so please comment the _STLP_USE_PERTHREAD_ALLOC macro \ -or report to the STLport forum. -#endif - -#if defined (_STLP_USE_NO_IOSTREAMS) -# error You cannot use per thread allocator implementation without building \ -STLport libraries. -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -struct _Pthread_alloc_per_thread_state; - -// Pthread-specific allocator. -class _STLP_CLASS_DECLSPEC _Pthread_alloc { -public: // but only for internal use: - typedef _Pthread_alloc_per_thread_state __state_type; - typedef char value_type; - -public: - // Return a recycled or new per thread state. - static __state_type * _STLP_CALL _S_get_per_thread_state(); - - /* n must be > 0 */ - static void * _STLP_CALL allocate(size_t& __n); - - /* p may not be 0 */ - static void _STLP_CALL deallocate(void *__p, size_t __n); - - // boris : versions for per_thread_allocator - /* n must be > 0 */ - static void * _STLP_CALL allocate(size_t& __n, __state_type* __a); - - /* p may not be 0 */ - static void _STLP_CALL deallocate(void *__p, size_t __n, __state_type* __a); - - static void * _STLP_CALL reallocate(void *__p, size_t __old_sz, size_t& __new_sz); -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -typedef _STLP_PRIV _Pthread_alloc __pthread_alloc; -typedef __pthread_alloc pthread_alloc; - -template -class pthread_allocator : public __stlport_class > { - typedef pthread_alloc _S_Alloc; // The underlying allocator. -public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef _Tp* pointer; - typedef const _Tp* const_pointer; - typedef _Tp& reference; - typedef const _Tp& const_reference; - typedef _Tp value_type; - -#ifdef _STLP_MEMBER_TEMPLATE_CLASSES - template struct rebind { - typedef pthread_allocator<_NewType> other; - }; -#endif - - pthread_allocator() _STLP_NOTHROW {} - pthread_allocator(const pthread_allocator<_Tp>& a) _STLP_NOTHROW {} - -#if defined (_STLP_MEMBER_TEMPLATES) /* && defined (_STLP_FUNCTION_PARTIAL_ORDER) */ - template pthread_allocator(const pthread_allocator<_OtherType>&) - _STLP_NOTHROW {} -#endif - - ~pthread_allocator() _STLP_NOTHROW {} - - pointer address(reference __x) const { return &__x; } - const_pointer address(const_reference __x) const { return &__x; } - - // __n is permitted to be 0. The C++ standard says nothing about what - // the return value is when __n == 0. - _Tp* allocate(size_type __n, const void* = 0) { - if (__n > max_size()) { - _STLP_THROW_BAD_ALLOC; - } - if (__n != 0) { - size_type __buf_size = __n * sizeof(value_type); - _Tp* __ret = __REINTERPRET_CAST(value_type*, _S_Alloc::allocate(__buf_size)); -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__ret, _STLP_SHRED_BYTE, __buf_size); -#endif - return __ret; - } - else - return 0; - } - - void deallocate(pointer __p, size_type __n) { - _STLP_ASSERT( (__p == 0) == (__n == 0) ) - if (__p != 0) { -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__p, _STLP_SHRED_BYTE, __n * sizeof(value_type)); -#endif - _S_Alloc::deallocate(__p, __n * sizeof(value_type)); - } - } - - size_type max_size() const _STLP_NOTHROW - { return size_t(-1) / sizeof(_Tp); } - - void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); } - void destroy(pointer _p) { _p->~_Tp(); } - -#if defined (_STLP_NO_EXTENSIONS) - /* STLport extension giving rounded size of an allocated memory buffer - * This method do not have to be part of a user defined allocator implementation - * and won't even be called if such a function was granted. - */ -protected: -#endif - _Tp* allocate(size_type __n, size_type& __allocated_n) { - if (__n > max_size()) { - _STLP_THROW_BAD_ALLOC; - } - if (__n != 0) { - size_type __buf_size = __n * sizeof(value_type); - _Tp* __ret = __REINTERPRET_CAST(value_type*, _S_Alloc::allocate(__buf_size)); -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__ret, _STLP_SHRED_BYTE, __buf_size); -#endif - __allocated_n = __buf_size / sizeof(value_type); - return __ret; - } - else - return 0; - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(pthread_allocator<_Tp>& __x) {} -#endif -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC pthread_allocator { -public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; -#ifdef _STLP_MEMBER_TEMPLATE_CLASSES - template struct rebind { - typedef pthread_allocator<_NewType> other; - }; -#endif -}; - -template -inline bool operator==(const pthread_allocator<_T1>&, - const pthread_allocator<_T2>& a2) -{ return true; } - -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER -template -inline bool operator!=(const pthread_allocator<_T1>&, - const pthread_allocator<_T2>&) -{ return false; } -#endif - - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) - -template -struct _Alloc_traits<_Tp, pthread_allocator<_Atype> > -{ typedef pthread_allocator<_Tp> allocator_type; }; - -#endif - -#if defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) - -template -inline pthread_allocator<_Tp2>& -__stl_alloc_rebind(pthread_allocator<_Tp1>& __x, const _Tp2*) -{ return (pthread_allocator<_Tp2>&)__x; } - -template -inline pthread_allocator<_Tp2> -__stl_alloc_create(pthread_allocator<_Tp1>&, const _Tp2*) -{ return pthread_allocator<_Tp2>(); } - -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct __pthread_alloc_type_traits { - typedef typename _IsSTLportClass >::_Ret _STLportAlloc; - //The default allocator implementation which is recognize thanks to the - //__stlport_class inheritance is a stateless object so: - typedef _STLportAlloc has_trivial_default_constructor; - typedef _STLportAlloc has_trivial_copy_constructor; - typedef _STLportAlloc has_trivial_assignment_operator; - typedef _STLportAlloc has_trivial_destructor; - typedef _STLportAlloc is_POD_type; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct __type_traits > : _STLP_PRIV __pthread_alloc_type_traits<_Tp> {}; -#else -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __pthread_alloc_type_traits {}; -# if defined (_STLP_HAS_WCHAR_T) -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __pthread_alloc_type_traits {}; -# endif -# if defined (_STLP_USE_PTR_SPECIALIZATIONS) -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __pthread_alloc_type_traits {}; -# endif -#endif - -// -// per_thread_allocator<> : this allocator always return memory to the same thread -// it was allocated from. -// - -template -class per_thread_allocator { - typedef pthread_alloc _S_Alloc; // The underlying allocator. - typedef pthread_alloc::__state_type __state_type; -public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef _Tp* pointer; - typedef const _Tp* const_pointer; - typedef _Tp& reference; - typedef const _Tp& const_reference; - typedef _Tp value_type; - -#ifdef _STLP_MEMBER_TEMPLATE_CLASSES - template struct rebind { - typedef per_thread_allocator<_NewType> other; - }; -#endif - - per_thread_allocator() _STLP_NOTHROW { - _M_state = _S_Alloc::_S_get_per_thread_state(); - } - per_thread_allocator(const per_thread_allocator<_Tp>& __a) _STLP_NOTHROW : _M_state(__a._M_state){} - -#if defined (_STLP_MEMBER_TEMPLATES) /* && defined (_STLP_FUNCTION_PARTIAL_ORDER) */ - template per_thread_allocator(const per_thread_allocator<_OtherType>& __a) - _STLP_NOTHROW : _M_state(__a._M_state) {} -#endif - - ~per_thread_allocator() _STLP_NOTHROW {} - - pointer address(reference __x) const { return &__x; } - const_pointer address(const_reference __x) const { return &__x; } - - // __n is permitted to be 0. The C++ standard says nothing about what - // the return value is when __n == 0. - _Tp* allocate(size_type __n, const void* = 0) { - if (__n > max_size()) { - _STLP_THROW_BAD_ALLOC; - } - if (__n != 0) { - size_type __buf_size = __n * sizeof(value_type); - _Tp* __ret = __REINTERPRET_CAST(_Tp*, _S_Alloc::allocate(__buf_size, _M_state)); -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__ret, _STLP_SHRED_BYTE, __buf_size); -#endif - return __ret; - } - else - return 0; - } - - void deallocate(pointer __p, size_type __n) { - _STLP_ASSERT( (__p == 0) == (__n == 0) ) - if (__p != 0) { -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__p, _STLP_SHRED_BYTE, __n * sizeof(value_type)); -#endif - _S_Alloc::deallocate(__p, __n * sizeof(value_type), _M_state); - } - } - - size_type max_size() const _STLP_NOTHROW - { return size_t(-1) / sizeof(_Tp); } - - void construct(pointer __p, const _Tp& __val) { new(__p) _Tp(__val); } - void destroy(pointer _p) { _p->~_Tp(); } - - // state is being kept here - __state_type* _M_state; - -#if defined (_STLP_NO_EXTENSIONS) - /* STLport extension giving rounded size of an allocated memory buffer - * This method do not have to be part of a user defined allocator implementation - * and won't even be called if such a function was granted. - */ -protected: -#endif - _Tp* allocate(size_type __n, size_type& __allocated_n) { - if (__n > max_size()) { - _STLP_THROW_BAD_ALLOC; - } - if (__n != 0) { - size_type __buf_size = __n * sizeof(value_type); - _Tp* __ret = __REINTERPRET_CAST(value_type*, _S_Alloc::allocate(__buf_size, _M_state)); -#if defined (_STLP_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_ALLOC) - memset((char*)__ret, _STLP_SHRED_BYTE, __buf_size); -#endif - __allocated_n = __buf_size / sizeof(value_type); - return __ret; - } - else - return 0; - } -}; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC per_thread_allocator { -public: - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef void* pointer; - typedef const void* const_pointer; - typedef void value_type; -#ifdef _STLP_MEMBER_TEMPLATE_CLASSES - template struct rebind { - typedef per_thread_allocator<_NewType> other; - }; -#endif -}; - -template -inline bool operator==(const per_thread_allocator<_T1>& __a1, - const per_thread_allocator<_T2>& __a2) -{ return __a1._M_state == __a2._M_state; } - -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER -template -inline bool operator!=(const per_thread_allocator<_T1>& __a1, - const per_thread_allocator<_T2>& __a2) -{ return __a1._M_state != __a2._M_state; } -#endif - - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) - -template -struct _Alloc_traits<_Tp, per_thread_allocator<_Atype> > -{ typedef per_thread_allocator<_Tp> allocator_type; }; - -#endif - -#if defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) - -template -inline per_thread_allocator<_Tp2>& -__stl_alloc_rebind(per_thread_allocator<_Tp1>& __x, const _Tp2*) -{ return (per_thread_allocator<_Tp2>&)__x; } - -template -inline per_thread_allocator<_Tp2> -__stl_alloc_create(per_thread_allocator<_Tp1>&, const _Tp2*) -{ return per_thread_allocator<_Tp2>(); } - -#endif /* _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE */ - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct __perthread_alloc_type_traits { - typedef typename _IsSTLportClass >::_Ret _STLportAlloc; - //The default allocator implementation which is recognize thanks to the - //__stlport_class inheritance is a stateless object so: - typedef __false_type has_trivial_default_constructor; - typedef _STLportAlloc has_trivial_copy_constructor; - typedef _STLportAlloc has_trivial_assignment_operator; - typedef _STLportAlloc has_trivial_destructor; - typedef __false_type is_POD_type; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct __type_traits > : _STLP_PRIV __perthread_alloc_type_traits<_Tp> {}; -#else -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __perthread_alloc_type_traits {}; -# if defined (_STLP_HAS_WCHAR_T) -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __perthread_alloc_type_traits {}; -# endif -# if defined (_STLP_USE_PTR_SPECIALIZATIONS) -_STLP_TEMPLATE_NULL -struct __type_traits > : _STLP_PRIV __perthread_alloc_type_traits {}; -# endif -#endif - - -_STLP_END_NAMESPACE - -#endif /* _STLP_PTHREAD_ALLOC */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_ptrs_specialize.h b/build/stlport/stlport/stl/_ptrs_specialize.h deleted file mode 100644 index b9cb5d88674c..000000000000 --- a/build/stlport/stlport/stl/_ptrs_specialize.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef _STLP_PTRS_SPECIALIZE_H -#define _STLP_PTRS_SPECIALIZE_H - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) || \ - (defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && !defined (_STLP_NO_ARROW_OPERATOR)) -# define _STLP_POINTERS_SPECIALIZE( _TpP ) -# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(operator*()); } -#else -# ifndef _STLP_TYPE_TRAITS_H -# include -# endif - -// the following is a workaround for arrow operator problems -# if defined ( _STLP_NO_ARROW_OPERATOR ) -// User wants to disable proxy -> operators -# define _STLP_DEFINE_ARROW_OPERATOR -# else -// Compiler can handle generic -> operator. -# if defined (__BORLANDC__) -# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(*(*this)); } -# elif defined(__WATCOMC__) -# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { reference x = operator*(); return &x; } -# else -# define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { return &(operator*()); } -# endif -# endif /* _STLP_NO_ARROW_OPERATOR */ - -// Important pointers specializations - -# ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS -# define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) -# define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) -# else -# define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) _STLP_TEMPLATE_NULL struct __type_traits<_Type> : __type_traits_aux<__true_type> {}; -# define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) \ -_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type*) \ -_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type*) \ -_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type**) \ -_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type* const *) \ -_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type**) \ -_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type***) \ -_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type***) -# endif - -# define _STLP_POINTERS_SPECIALIZE(_Type) _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) - -_STLP_BEGIN_NAMESPACE - -# if !defined ( _STLP_NO_BOOL ) -_STLP_POINTERS_SPECIALIZE( bool ) -# endif -_STLP_TYPE_TRAITS_POD_SPECIALIZE_V(void) -# ifndef _STLP_NO_SIGNED_BUILTINS - _STLP_POINTERS_SPECIALIZE( signed char ) -# endif - _STLP_POINTERS_SPECIALIZE( char ) - _STLP_POINTERS_SPECIALIZE( unsigned char ) - _STLP_POINTERS_SPECIALIZE( short ) - _STLP_POINTERS_SPECIALIZE( unsigned short ) - _STLP_POINTERS_SPECIALIZE( int ) - _STLP_POINTERS_SPECIALIZE( unsigned int ) - _STLP_POINTERS_SPECIALIZE( long ) - _STLP_POINTERS_SPECIALIZE( unsigned long ) - _STLP_POINTERS_SPECIALIZE( float ) - _STLP_POINTERS_SPECIALIZE( double ) -# if !defined ( _STLP_NO_LONG_DOUBLE ) - _STLP_POINTERS_SPECIALIZE( long double ) -# endif -# if defined ( _STLP_LONG_LONG) - _STLP_POINTERS_SPECIALIZE( _STLP_LONG_LONG ) - _STLP_POINTERS_SPECIALIZE( unsigned _STLP_LONG_LONG ) -# endif -# if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT) - _STLP_POINTERS_SPECIALIZE( wchar_t ) -# endif - -_STLP_END_NAMESPACE - -# undef _STLP_ARROW_SPECIALIZE -# undef _STLP_TYPE_TRAITS_POD_SPECIALIZE_V - -#endif -#endif diff --git a/build/stlport/stlport/stl/_queue.h b/build/stlport/stlport/stl/_queue.h deleted file mode 100644 index 5f3763c0207c..000000000000 --- a/build/stlport/stlport/stl/_queue.h +++ /dev/null @@ -1,268 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_QUEUE_H -#define _STLP_INTERNAL_QUEUE_H - -#ifndef _STLP_INTERNAL_DEQUE_H -# include -#endif - -#ifndef _STLP_INTERNAL_VECTOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_HEAP_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -# if ! defined ( _STLP_LIMITED_DEFAULT_TEMPLATES ) -template > -# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS ) -# define _STLP_QUEUE_ARGS _Tp -template -# else -template -# endif -class queue -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) -# if defined (_STLP_QUEUE_ARGS) - : public __stlport_class > -# else - : public __stlport_class > -# endif -#endif -{ -# if defined ( _STLP_QUEUE_ARGS ) - typedef deque<_Tp> _Sequence; - typedef queue<_Tp> _Self; -# else - typedef queue<_Tp, _Sequence> _Self; -# endif -public: - typedef typename _Sequence::value_type value_type; - typedef typename _Sequence::size_type size_type; - typedef _Sequence container_type; - - typedef typename _Sequence::reference reference; - typedef typename _Sequence::const_reference const_reference; - -protected: - //c is a Standard name (23.2.3.1), do no make it STLport naming convention compliant. - _Sequence c; -public: - queue() : c() {} - explicit queue(const _Sequence& __c) : c(__c) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - queue(__move_source<_Self> src) - : c(_STLP_PRIV _AsMoveSource(src.get().c)) {} -#endif - - bool empty() const { return c.empty(); } - size_type size() const { return c.size(); } - reference front() { return c.front(); } - const_reference front() const { return c.front(); } - reference back() { return c.back(); } - const_reference back() const { return c.back(); } - void push(const value_type& __x) { c.push_back(__x); } - void pop() { c.pop_front(); } - const _Sequence& _Get_s() const { return c; } - -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { - _Sequence __tmp = c; - c = __x.c; - __x.c = __tmp; - } -#endif -}; - -#ifndef _STLP_QUEUE_ARGS -# define _STLP_QUEUE_ARGS _Tp, _Sequence -# define _STLP_QUEUE_HEADER_ARGS class _Tp, class _Sequence -#else -# define _STLP_QUEUE_HEADER_ARGS class _Tp -#endif - -template < _STLP_QUEUE_HEADER_ARGS > -inline bool _STLP_CALL -operator==(const queue<_STLP_QUEUE_ARGS >& __x, const queue<_STLP_QUEUE_ARGS >& __y) { - return __x._Get_s() == __y._Get_s(); -} - -template < _STLP_QUEUE_HEADER_ARGS > -inline bool _STLP_CALL -operator<(const queue<_STLP_QUEUE_ARGS >& __x, const queue<_STLP_QUEUE_ARGS >& __y) { - return __x._Get_s() < __y._Get_s(); -} - -_STLP_RELOPS_OPERATORS( template < _STLP_QUEUE_HEADER_ARGS >, queue<_STLP_QUEUE_ARGS > ) - -# if !(defined ( _STLP_LIMITED_DEFAULT_TEMPLATES ) || defined ( _STLP_TEMPLATE_PARAM_SUBTYPE_BUG )) -template , - class _Compare = less<_STLP_HEADER_TYPENAME _Sequence::value_type> > -# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS ) -template -# else -template -# endif -class priority_queue -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) -# if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) - : public __stlport_class > -# else - : public __stlport_class > -# endif -#endif -{ -# ifdef _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS - typedef vector<_Tp> _Sequence; - typedef less< typename vector<_Tp>::value_type> _Compare; - typedef priority_queue<_Tp> _Self; -# else - typedef priority_queue<_Tp, _Sequence, _Compare> _Self; -# endif -public: - typedef typename _Sequence::value_type value_type; - typedef typename _Sequence::size_type size_type; - typedef _Sequence container_type; - - typedef typename _Sequence::reference reference; - typedef typename _Sequence::const_reference const_reference; -protected: - //c is a Standard name (23.2.3.2), do no make it STLport naming convention compliant. - _Sequence c; - _Compare comp; -public: - priority_queue() : c() {} - explicit priority_queue(const _Compare& __x) : c(), comp(__x) {} - priority_queue(const _Compare& __x, const _Sequence& __s) - : c(__s), comp(__x) - { make_heap(c.begin(), c.end(), comp); } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - priority_queue(__move_source<_Self> src) - : c(_STLP_PRIV _AsMoveSource(src.get().c)), - comp(_STLP_PRIV _AsMoveSource(src.get().comp)) {} -#endif - -#ifdef _STLP_MEMBER_TEMPLATES - template - priority_queue(_InputIterator __first, _InputIterator __last) - : c(__first, __last) { make_heap(c.begin(), c.end(), comp); } - - template - priority_queue(_InputIterator __first, - _InputIterator __last, const _Compare& __x) - : c(__first, __last), comp(__x) - { make_heap(c.begin(), c.end(), comp); } - - template - priority_queue(_InputIterator __first, _InputIterator __last, - const _Compare& __x, const _Sequence& __s) - : c(__s), comp(__x) - { - c.insert(c.end(), __first, __last); - make_heap(c.begin(), c.end(), comp); - } - -#else /* _STLP_MEMBER_TEMPLATES */ - priority_queue(const value_type* __first, const value_type* __last) - : c(__first, __last) { make_heap(c.begin(), c.end(), comp); } - - priority_queue(const value_type* __first, const value_type* __last, - const _Compare& __x) - : c(__first, __last), comp(__x) - { make_heap(c.begin(), c.end(), comp); } - - priority_queue(const value_type* __first, const value_type* __last, - const _Compare& __x, const _Sequence& __c) - : c(__c), comp(__x) - { - c.insert(c.end(), __first, __last); - make_heap(c.begin(), c.end(), comp); - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - bool empty() const { return c.empty(); } - size_type size() const { return c.size(); } - const_reference top() const { return c.front(); } - void push(const value_type& __x) { - _STLP_TRY { - c.push_back(__x); - push_heap(c.begin(), c.end(), comp); - } - _STLP_UNWIND(c.clear()) - } - void pop() { - _STLP_TRY { - pop_heap(c.begin(), c.end(), comp); - c.pop_back(); - } - _STLP_UNWIND(c.clear()) - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { - _Sequence __tmp = c; - c = __x.c; - __x.c = __tmp; - } -#endif -}; - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux<_Sequence> -{}; - -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux2<_Sequence, _Compare> -{}; -#endif - -_STLP_END_NAMESPACE - -#undef _STLP_QUEUE_ARGS -#undef _STLP_QUEUE_HEADER_ARGS -#undef comp - -#endif /* _STLP_INTERNAL_QUEUE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_range_errors.c b/build/stlport/stlport/stl/_range_errors.c deleted file mode 100644 index 87293be7f2f5..000000000000 --- a/build/stlport/stlport/stl/_range_errors.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#if defined(_STLP_THROW_RANGE_ERRORS) -# if defined (_STLP_WHOLE_NATIVE_STD) && defined (_STLP_DONT_REDEFINE_STD) -// In this mode we are going to throw native exception so that catch of -// exception like std::runtime_error for instance will also catch exception -// thrown by STLport containers like stlport::vector or stlport::string. -# include -# include -# define _STLP_THROW_MSG(ex,msg) throw std::ex(msg) -# else -# if defined (__BUILDING_STLPORT) -# include -# include -# else -# ifndef _STLP_INTERNAL_STDEXCEPT -# include -# endif -# ifndef _STLP_INTERNAL_STRING_H -# include -# endif -# endif -# define _STLP_THROW_MSG(ex,msg) throw ex(msg) -# endif -#else -# if defined (__BUILDING_STLPORT) -# include -# include -# else -# ifndef _STLP_INTERNAL_CSTDLIB -# include -# endif -# ifndef _STLP_INTERNAL_CSTDIO -# include -# endif -# endif -# define _STLP_THROW_MSG(ex,msg) puts(msg),_STLP_ABORT() -#endif - -// For mode without library and throwing range errors, include the -// stdexcept header and throw the appropriate exceptions directly. - -#if defined (_STLP_EXTERN_RANGE_ERRORS) -# define _STLP_THROW_FUNCT_SPEC void _STLP_DECLSPEC -#else -# define _STLP_THROW_FUNCT_SPEC inline void -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_runtime_error(const char* __msg) -{ _STLP_THROW_MSG(runtime_error, __msg); } - -_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_range_error(const char* __msg) -{ _STLP_THROW_MSG(range_error, __msg); } - -_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg) -{ _STLP_THROW_MSG(out_of_range, __msg); } - -_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_length_error(const char* __msg) -{ _STLP_THROW_MSG(length_error, __msg); } - -_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg) -{ _STLP_THROW_MSG(invalid_argument, __msg); } - -_STLP_THROW_FUNCT_SPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg) -{ _STLP_THROW_MSG(overflow_error, __msg); } - -_STLP_END_NAMESPACE - -#undef _STLP_THROW_FUNCT_SPEC -#undef _STLP_THROW_MSG diff --git a/build/stlport/stlport/stl/_range_errors.h b/build/stlport/stlport/stl/_range_errors.h deleted file mode 100644 index 80df26a4656c..000000000000 --- a/build/stlport/stlport/stl/_range_errors.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - -#ifndef _STLP_RANGE_ERRORS_H -#define _STLP_RANGE_ERRORS_H - -// A few places in the STL throw range errors, using standard exception -// classes defined in . This header file provides functions -// to throw those exception objects. - -// _STLP_DONT_THROW_RANGE_ERRORS is a hook so that users can disable -// this exception throwing. -#if defined (_STLP_CAN_THROW_RANGE_ERRORS) && defined (_STLP_USE_EXCEPTIONS) && \ - !defined (_STLP_DONT_THROW_RANGE_ERRORS) -# define _STLP_THROW_RANGE_ERRORS -#endif - -// For the STLport iostreams, only declaration here, definition is in the lib -#if !defined (_STLP_USE_NO_IOSTREAMS) && !defined (_STLP_EXTERN_RANGE_ERRORS) -# define _STLP_EXTERN_RANGE_ERRORS -#endif - -_STLP_BEGIN_NAMESPACE -void _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_runtime_error(const char* __msg); -void _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg); -void _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg); -void _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg); -void _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg); -void _STLP_FUNCTION_THROWS _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg); - -#if defined (__DMC__) && !defined (_STLP_NO_EXCEPTIONS) -# pragma noreturn(__stl_throw_runtime_error) -# pragma noreturn(__stl_throw_range_error) -# pragma noreturn(__stl_throw_out_of_range) -# pragma noreturn(__stl_throw_length_error) -# pragma noreturn(__stl_throw_invalid_argument) -# pragma noreturn(__stl_throw_overflow_error) -#endif -_STLP_END_NAMESPACE - -#if !defined (_STLP_EXTERN_RANGE_ERRORS) -# include -#endif - -#endif /* _STLP_RANGE_ERRORS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_raw_storage_iter.h b/build/stlport/stlport/stl/_raw_storage_iter.h deleted file mode 100644 index 6e4bc2e9de44..000000000000 --- a/build/stlport/stlport/stl/_raw_storage_iter.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H -#define _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -class raw_storage_iterator - : public iterator -{ -protected: - _ForwardIterator _M_iter; -public: - typedef output_iterator_tag iterator_category; -# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; -# endif - explicit raw_storage_iterator(_ForwardIterator __x) : _M_iter(__x) {} - raw_storage_iterator<_ForwardIterator, _Tp>& operator*() { return *this; } - raw_storage_iterator<_ForwardIterator, _Tp>& operator=(const _Tp& __element) { - _Param_Construct(&*_M_iter, __element); - return *this; - } - raw_storage_iterator<_ForwardIterator, _Tp>& operator++() { - ++_M_iter; - return *this; - } - raw_storage_iterator<_ForwardIterator, _Tp> operator++(int) { - raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this; - ++_M_iter; - return __tmp; - } -}; - -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES -template -inline output_iterator_tag iterator_category(const raw_storage_iterator<_ForwardIterator, _Tp>&) { return output_iterator_tag(); } -#endif -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_relops_cont.h b/build/stlport/stlport/stl/_relops_cont.h deleted file mode 100644 index cd8ec0504350..000000000000 --- a/build/stlport/stlport/stl/_relops_cont.h +++ /dev/null @@ -1,29 +0,0 @@ -// This is an implementation file which -// is intended to be included multiple times with different _STLP_ASSOCIATIVE_CONTAINER -// setting - -#if !defined (_STLP_EQUAL_OPERATOR_SPECIALIZED) -_STLP_TEMPLATE_HEADER -inline bool _STLP_CALL operator==(const _STLP_TEMPLATE_CONTAINER& __x, - const _STLP_TEMPLATE_CONTAINER& __y) { - return __x.size() == __y.size() && - equal(__x.begin(), __x.end(), __y.begin()); -} -#endif /* _STLP_EQUAL_OPERATOR_SPECIALIZED */ - -_STLP_TEMPLATE_HEADER -inline bool _STLP_CALL operator<(const _STLP_TEMPLATE_CONTAINER& __x, - const _STLP_TEMPLATE_CONTAINER& __y) { - return lexicographical_compare(__x.begin(), __x.end(), - __y.begin(), __y.end()); -} - -_STLP_RELOPS_OPERATORS( _STLP_TEMPLATE_HEADER , _STLP_TEMPLATE_CONTAINER ) - -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -_STLP_TEMPLATE_HEADER -inline void _STLP_CALL swap(_STLP_TEMPLATE_CONTAINER& __x, - _STLP_TEMPLATE_CONTAINER& __y) { - __x.swap(__y); -} -#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */ diff --git a/build/stlport/stlport/stl/_relops_hash_cont.h b/build/stlport/stlport/stl/_relops_hash_cont.h deleted file mode 100644 index 421c8050bfaa..000000000000 --- a/build/stlport/stlport/stl/_relops_hash_cont.h +++ /dev/null @@ -1,13 +0,0 @@ -/* This is an implementation file which is intended to be included - * multiple times with different _STLP_TEMPLATE_CONTAINER settings. - */ - -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - -_STLP_TEMPLATE_HEADER -inline void _STLP_CALL -swap(_STLP_TEMPLATE_CONTAINER& __hm1, _STLP_TEMPLATE_CONTAINER& __hm2) { - __hm1.swap(__hm2); -} - -#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */ diff --git a/build/stlport/stlport/stl/_rope.c b/build/stlport/stlport/stl/_rope.c deleted file mode 100644 index 196ee220b5ad..000000000000 --- a/build/stlport/stlport/stl/_rope.c +++ /dev/null @@ -1,1407 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -// Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf -// if necessary. Assumes path_end[leaf_index] and leaf_pos are correct. -// Results in a valid buf_ptr if the iterator can be legitimately -// dereferenced. -#ifndef _STLP_ROPEIMPL_H -#define _STLP_ROPEIMPL_H - -#ifndef _STLP_INTERNAL_ROPE_H -# include -#endif - -#ifndef _STLP_INTERNAL_CSTDIO -# include -#endif - -#if !defined (_STLP_USE_NO_IOSTREAMS) -# ifndef _STLP_INTERNAL_OSTREAM_H -# include -# endif - -# ifndef _STLP_INTERNAL_ISTREAM -# include -# endif -#endif - -#include - -_STLP_BEGIN_NAMESPACE - -#if defined ( _STLP_NESTED_TYPE_PARAM_BUG ) -# define __allocator__ _Alloc -#else -# define __allocator__ allocator_type -#endif - -template -_Rope_iterator<_CharT, _Alloc>::_Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos) - : _Rope_iterator_base<_CharT,_Alloc>(__r->_M_tree_ptr._M_data, __pos), - _M_root_rope(__r) { _RopeRep::_S_ref(this->_M_root); } - -template -_Rope_iterator<_CharT, _Alloc>::_Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos): - _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr._M_data, __pos), - _M_root_rope(&__r) { -#if !defined (__DMC__) - _RopeRep::_S_ref(this->_M_root); if (!(__r.empty()))_S_setcache(*this); -#else - _Rope_iterator_base<_CharT, _Alloc>* __x = this; - _RopeRep::_S_ref(this->_M_root); if (!(__r.empty()))_S_setcache(*__x); -#endif -} - -template -void _Rope_RopeRep<_CharT, _Alloc>::_M_free_c_string() { - _CharT* __cstr = _M_c_string; - if (0 != __cstr) { - size_t _p_size = _M_size._M_data + 1; - _STLP_STD::_Destroy_Range(__cstr, __cstr + _p_size); - _M_size.deallocate(__cstr, _p_size); - } -} - -// Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf -// if necessary. Assumes _M_path_end[leaf_index] and leaf_pos are correct. -// Results in a valid buf_ptr if the iterator can be legitimately -// dereferenced. -template -void _Rope_iterator_base<_CharT,_Alloc>::_S_setbuf( - _Rope_iterator_base<_CharT,_Alloc>& __x) { - const _RopeRep* __leaf = __x._M_path_end._M_data[__x._M_leaf_index]; - size_t __leaf_pos = __x._M_leaf_pos; - size_t __pos = __x._M_current_pos; - - switch(__leaf->_M_tag) { - case _RopeRep::_S_leaf: - typedef _Rope_RopeLeaf<_CharT, _Alloc> _RopeLeaf; - __x._M_buf_start = __STATIC_CAST(const _RopeLeaf*, __leaf)->_M_data; - __x._M_buf_ptr = __x._M_buf_start + (__pos - __leaf_pos); - __x._M_buf_end = __x._M_buf_start + __leaf->_M_size._M_data; - break; - case _RopeRep::_S_function: - case _RopeRep::_S_substringfn: - { - size_t __len = _S_iterator_buf_len; - size_t __buf_start_pos = __leaf_pos; - size_t __leaf_end = __leaf_pos + __leaf->_M_size._M_data; - typedef _Rope_RopeFunction<_CharT, _Alloc> _RopeFunction; - char_producer<_CharT>* __fn = __STATIC_CAST(const _RopeFunction*, __leaf)->_M_fn; - - if (__buf_start_pos + __len <= __pos) { - __buf_start_pos = __pos - __len/4; - if (__buf_start_pos + __len > __leaf_end) { - __buf_start_pos = __leaf_end - __len; - } - } - if (__buf_start_pos + __len > __leaf_end) { - __len = __leaf_end - __buf_start_pos; - } - (*__fn)(__buf_start_pos - __leaf_pos, __len, __x._M_tmp_buf._M_data); - __x._M_buf_ptr = __x._M_tmp_buf._M_data + (__pos - __buf_start_pos); - __x._M_buf_start = __x._M_tmp_buf._M_data; - __x._M_buf_end = __x._M_tmp_buf._M_data + __len; - } - break; - default: - _STLP_ASSERT(0) - ; - } -} - -// Set path and buffer inside a rope iterator. We assume that -// pos and root are already set. -template -void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache( - _Rope_iterator_base<_CharT,_Alloc>& __x) { - const _RopeRep* __path[_RopeRep::_S_max_rope_depth+1]; - const _RopeRep* __curr_rope; - int __curr_depth = -1; /* index into path */ - size_t __curr_start_pos = 0; - size_t __pos = __x._M_current_pos; - unsigned char __dirns = 0; // Bit vector marking right turns in the path - - _STLP_ASSERT(__pos <= __x._M_root->_M_size._M_data) - if (__pos >= __x._M_root->_M_size._M_data) { - __x._M_buf_ptr = 0; - return; - } - __curr_rope = __x._M_root; - if (0 != __curr_rope->_M_c_string) { - /* Treat the root as a leaf. */ - __x._M_buf_start = __curr_rope->_M_c_string; - __x._M_buf_end = __curr_rope->_M_c_string + __curr_rope->_M_size._M_data; - __x._M_buf_ptr = __curr_rope->_M_c_string + __pos; - __x._M_path_end._M_data[0] = __curr_rope; - __x._M_leaf_index = 0; - __x._M_leaf_pos = 0; - return; - } - for(;;) { - ++__curr_depth; - _STLP_ASSERT(__curr_depth <= _RopeRep::_S_max_rope_depth) - __path[__curr_depth] = __curr_rope; - switch(__curr_rope->_M_tag) { - case _RopeRep::_S_leaf: - case _RopeRep::_S_function: - case _RopeRep::_S_substringfn: - __x._M_leaf_pos = __curr_start_pos; - goto done; - case _RopeRep::_S_concat: - { - const _RopeConcat* __c = __STATIC_CAST(const _RopeConcat*, __curr_rope); - _RopeRep* __left = __c->_M_left; - size_t __left_len = __left->_M_size._M_data; - - __dirns <<= 1; - if (__pos >= __curr_start_pos + __left_len) { - __dirns |= 1; - __curr_rope = __c->_M_right; - __curr_start_pos += __left_len; - } else { - __curr_rope = __left; - } - } - break; - } - } -done: - // Copy last section of path into _M_path_end. - { - int __i = -1; - int __j = __curr_depth + 1 - _S_path_cache_len; - - if (__j < 0) __j = 0; - while (__j <= __curr_depth) { - __x._M_path_end._M_data[++__i] = __path[__j++]; - } - __x._M_leaf_index = __i; - } - __x._M_path_directions = __dirns; - _S_setbuf(__x); -} - -// Specialized version of the above. Assumes that -// the path cache is valid for the previous position. -template -void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache_for_incr( -_Rope_iterator_base<_CharT,_Alloc>& __x) { - int __current_index = __x._M_leaf_index; - const _RopeRep* __current_node = __x._M_path_end._M_data[__current_index]; - size_t __len = __current_node->_M_size._M_data; - size_t __node_start_pos = __x._M_leaf_pos; - unsigned char __dirns = __x._M_path_directions; - const _RopeConcat* __c; - - _STLP_ASSERT(__x._M_current_pos <= __x._M_root->_M_size._M_data) - if (__x._M_current_pos - __node_start_pos < __len) { - /* More stuff in this leaf, we just didn't cache it. */ - _S_setbuf(__x); - return; - } - _STLP_ASSERT(__node_start_pos + __len == __x._M_current_pos) - // node_start_pos is starting position of last_node. - while (--__current_index >= 0) { - if (!(__dirns & 1) /* Path turned left */) - break; - __current_node = __x._M_path_end._M_data[__current_index]; - __c = __STATIC_CAST(const _RopeConcat*, __current_node); - // Otherwise we were in the right child. Thus we should pop - // the concatenation node. - __node_start_pos -= __c->_M_left->_M_size._M_data; - __dirns >>= 1; - } - if (__current_index < 0) { - // We underflowed the cache. Punt. - _S_setcache(__x); - return; - } - __current_node = __x._M_path_end._M_data[__current_index]; - __c = __STATIC_CAST(const _RopeConcat*, __current_node); - // current_node is a concatenation node. We are positioned on the first - // character in its right child. - // node_start_pos is starting position of current_node. - __node_start_pos += __c->_M_left->_M_size._M_data; - __current_node = __c->_M_right; - __x._M_path_end._M_data[++__current_index] = __current_node; - __dirns |= 1; - while (_RopeRep::_S_concat == __current_node->_M_tag) { - ++__current_index; - if (_S_path_cache_len == __current_index) { - int __i; - for (__i = 0; __i < _S_path_cache_len-1; ++__i) { - __x._M_path_end._M_data[__i] = __x._M_path_end._M_data[__i+1]; - } - --__current_index; - } - __current_node = __STATIC_CAST(const _RopeConcat*, __current_node)->_M_left; - __x._M_path_end._M_data[__current_index] = __current_node; - __dirns <<= 1; - // node_start_pos is unchanged. - } - __x._M_leaf_index = __current_index; - __x._M_leaf_pos = __node_start_pos; - __x._M_path_directions = __dirns; - _S_setbuf(__x); -} - -template -void _Rope_iterator_base<_CharT,_Alloc>::_M_incr(size_t __n) { - _M_current_pos += __n; - if (0 != _M_buf_ptr) { - size_t __chars_left = _M_buf_end - _M_buf_ptr; - if (__chars_left > __n) { - _M_buf_ptr += __n; - } else if (__chars_left == __n) { - _M_buf_ptr += __n; - _S_setcache_for_incr(*this); - } else { - _M_buf_ptr = 0; - } - } -} - -template -void _Rope_iterator_base<_CharT,_Alloc>::_M_decr(size_t __n) { - if (0 != _M_buf_ptr) { - size_t __chars_left = _M_buf_ptr - _M_buf_start; - if (__chars_left >= __n) { - _M_buf_ptr -= __n; - } else { - _M_buf_ptr = 0; - } - } - _M_current_pos -= __n; -} - -template -void _Rope_iterator<_CharT,_Alloc>::_M_check() { - if (_M_root_rope->_M_tree_ptr._M_data != this->_M_root) { - // _Rope was modified. Get things fixed up. - _RopeRep::_S_unref(this->_M_root); - this->_M_root = _M_root_rope->_M_tree_ptr._M_data; - _RopeRep::_S_ref(this->_M_root); - this->_M_buf_ptr = 0; - } -} - -// There are several reasons for not doing this with virtual destructors -// and a class specific delete operator: -// - A class specific delete operator can't easily get access to -// allocator instances if we need them. -// - Any virtual function would need a 4 or byte vtable pointer; -// this only requires a one byte tag per object. -template -void _Rope_RopeRep<_CharT,_Alloc>::_M_free_tree() { - switch (_M_tag) { - case _S_leaf: - { - typedef _Rope_RopeLeaf<_CharT, _Alloc> _RopeLeaf; - _RopeLeaf* __l = __STATIC_CAST(_RopeLeaf*, this); - _STLP_STD::_Destroy(__l); // ->_Rope_RopeLeaf<_CharT,_Alloc>::~_Rope_RopeLeaf(); - _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, - _RopeLeaf).deallocate(__l, 1); - break; - } - case _S_concat: - { - typedef _Rope_RopeConcatenation<_CharT, _Alloc> _RopeConcatenation; - _RopeConcatenation* __c = __STATIC_CAST(_RopeConcatenation*, this); - _STLP_STD::_Destroy(__c); - _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, - _RopeConcatenation).deallocate(__c, 1); - break; - } - case _S_function: - { - typedef _Rope_RopeFunction<_CharT, _Alloc> _RopeFunction; - _RopeFunction* __f = __STATIC_CAST(_RopeFunction*, this); - _STLP_STD::_Destroy(__f); - _STLP_CREATE_ALLOCATOR(allocator_type, (const allocator_type&)_M_size, - _RopeFunction).deallocate(__f, 1); - break; - } - case _S_substringfn: - { - typedef _Rope_RopeSubstring<_CharT, _Alloc> _RopeSubstring; - _RopeSubstring* __rss = __STATIC_CAST(_RopeSubstring*, this); - _STLP_STD::_Destroy(__rss); - _STLP_CREATE_ALLOCATOR(allocator_type, (const allocator_type&)_M_size, - _RopeSubstring).deallocate(__rss, 1); - break; - } - } -} - -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG ) -# define __RopeLeaf__ _Rope_RopeLeaf<_CharT,_Alloc> -# define __RopeRep__ _Rope_RopeRep<_CharT,_Alloc> -# define _RopeLeaf _Rope_RopeLeaf<_CharT,_Alloc> -# define _RopeRep _Rope_RopeRep<_CharT,_Alloc> -# define size_type size_t -# else -# define __RopeLeaf__ _STLP_TYPENAME_ON_RETURN_TYPE rope<_CharT,_Alloc>::_RopeLeaf -# define __RopeRep__ _STLP_TYPENAME_ON_RETURN_TYPE rope<_CharT,_Alloc>::_RopeRep -# endif - -template -void rope<_CharT, _Alloc>::_M_throw_out_of_range() const { - __stl_throw_out_of_range("rope"); -} - -// Concatenate a C string onto a leaf rope by copying the rope data. -// Used for short ropes. -template -__RopeLeaf__* -rope<_CharT,_Alloc>::_S_leaf_concat_char_iter ( - _RopeLeaf* __r, const _CharT* __iter, size_t __len) { - size_t __old_len = __r->_M_size._M_data; - _CharT* __new_data = __r->_M_size.allocate(_S_rounded_up_size(__old_len + __len)); - _RopeLeaf* __result; - - _STLP_PRIV __ucopy_n(__r->_M_data, __old_len, __new_data); - _STLP_PRIV __ucopy_n(__iter, __len, __new_data + __old_len); - _S_construct_null(__new_data + __old_len + __len); - _STLP_TRY { - __result = _S_new_RopeLeaf(__new_data, __old_len + __len, __r->get_allocator()); - } - _STLP_UNWIND(_RopeRep::_S_free_string(__new_data, __old_len + __len, - __r->get_allocator())) - return __result; -} - -template -void _Terminate_RopeLeaf(_Rope_RopeLeaf<_CharT,_Alloc> *__r, - size_t __size, const __true_type& /*basic char type*/) { - _S_construct_null(__r->_M_data + __size); - _STLP_ASSERT(__r->_M_c_string == __r->_M_data) -} - -template -void _Terminate_RopeLeaf(_Rope_RopeLeaf<_CharT,_Alloc> *__r, - size_t, const __false_type& /*basic char type*/) { - if (__r->_M_c_string != __r->_M_data && 0 != __r->_M_c_string) { - __r->_M_free_c_string(); - __r->_M_c_string = 0; - } -} - -// As above, but it's OK to clobber original if refcount is 1 -template -__RopeLeaf__* -rope<_CharT,_Alloc>::_S_destr_leaf_concat_char_iter (_RopeLeaf* __r, const _CharT* __iter, size_t __len) { - //_STLP_ASSERT(__r->_M_ref_count >= 1) - if ( /* __r->_M_ref_count > 1 */ __r->_M_incr() > 2 ) { // - ptr - __r->_M_decr(); // - ptr - return _S_leaf_concat_char_iter(__r, __iter, __len); - } - __r->_M_decr(); // - ptr, __r->_M_ref_count == 1 or 0 - size_t __old_len = __r->_M_size._M_data; - if (_S_rounded_up_size(__old_len) == _S_rounded_up_size(__old_len + __len)) { - // The space has been partially initialized for the standard - // character types. But that doesn't matter for those types. - _STLP_PRIV __ucopy_n(__iter, __len, __r->_M_data + __old_len); - _Terminate_RopeLeaf(__r, __old_len + __len, _IsBasicCharType()); - __r->_M_size._M_data = __old_len + __len; - // _STLP_ASSERT(__r->_M_ref_count == 1) - // __r->_M_ref_count = 2; - __r->_M_incr(); // i.e. __r->_M_ref_count = 2 - return __r; - } else { - _RopeLeaf* __result = _S_leaf_concat_char_iter(__r, __iter, __len); - //_STLP_ASSERT(__result->_M_ref_count == 1) - return __result; - } -} - -// Assumes left and right are not 0. -// Does not increment (nor decrement on exception) child reference counts. -// Result has ref count 1. -template -__RopeRep__* -rope<_CharT,_Alloc>::_S_tree_concat (_RopeRep* __left, _RopeRep* __right) { - _RopeConcatenation* __result = - _S_new_RopeConcatenation(__left, __right, __left->get_allocator()); - size_t __depth = __result->_M_depth; - - _STLP_ASSERT(__left->get_allocator() == __right->get_allocator()) - if (__depth > 20 && (__result->_M_size._M_data < 1000 || - __depth > _RopeRep::_S_max_rope_depth)) { - _RopeRep* __balanced; - - _STLP_TRY { - __balanced = _S_balance(__result); - // _STLP_ASSERT(__result == __balanced || - // 1 == __result->_M_ref_count && - // 1 == __balanced->_M_ref_count) - __result->_M_unref_nonnil(); - } - _STLP_UNWIND((_STLP_CREATE_ALLOCATOR(allocator_type,(allocator_type&)__left->_M_size, - _RopeConcatenation).deallocate(__result,1))) - // In case of exception, we need to deallocate - // otherwise dangling result node. But caller - // still owns its children. Thus unref is - // inappropriate. - return __balanced; - } else { - return __result; - } -} - -template -__RopeRep__* -rope<_CharT,_Alloc>::_S_concat_char_iter (_RopeRep* __r, - const _CharT*__s, size_t __slen) { - _RopeRep* __result; - if (0 == __slen) { - _S_ref(__r); - return __r; - } - if (0 == __r) - return _S_RopeLeaf_from_unowned_char_ptr(__s, __slen, __r->get_allocator()); - if (_RopeRep::_S_leaf == __r->_M_tag && - __r->_M_size._M_data + __slen <= _S_copy_max) { - __result = _S_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen); - // _STLP_ASSERT(1 == __result->_M_ref_count) - return __result; - } - if (_RopeRep::_S_concat == __r->_M_tag && - _RopeRep::_S_leaf == ((_RopeConcatenation*)__r)->_M_right->_M_tag) { - _RopeLeaf* __right = (_RopeLeaf* )(((_RopeConcatenation* )__r)->_M_right); - if (__right->_M_size._M_data + __slen <= _S_copy_max) { - _RopeRep* __left = ((_RopeConcatenation*)__r)->_M_left; - _RopeRep* __nright = _S_leaf_concat_char_iter((_RopeLeaf*)__right, __s, __slen); - __left->_M_ref_nonnil(); - _STLP_TRY { - __result = _S_tree_concat(__left, __nright); - } - _STLP_UNWIND(_S_unref(__left); _S_unref(__nright)) - // _STLP_ASSERT(1 == __result->_M_ref_count) - return __result; - } - } - _RopeRep* __nright = - _S_RopeLeaf_from_unowned_char_ptr(__s, __slen, __r->get_allocator()); - _STLP_TRY { - __r->_M_ref_nonnil(); - __result = _S_tree_concat(__r, __nright); - } - _STLP_UNWIND(_S_unref(__r); _S_unref(__nright)) - // _STLP_ASSERT(1 == __result->_M_ref_count) - return __result; -} - -template -__RopeRep__* -rope<_CharT,_Alloc>::_S_destr_concat_char_iter( - _RopeRep* __r, const _CharT* __s, size_t __slen) { - _RopeRep* __result; - if (0 == __r) - return _S_RopeLeaf_from_unowned_char_ptr(__s, __slen, - __r->get_allocator()); - // size_t __count = __r->_M_ref_count; - size_t __orig_size = __r->_M_size._M_data; - // _STLP_ASSERT(__count >= 1) - if ( /* __count > 1 */ __r->_M_incr() > 2 ) { - __r->_M_decr(); - return _S_concat_char_iter(__r, __s, __slen); - } - if (0 == __slen) { - return __r; - } - __r->_M_decr(); - if (__orig_size + __slen <= _S_copy_max && _RopeRep::_S_leaf == __r->_M_tag) { - return _S_destr_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen); - } - if (_RopeRep::_S_concat == __r->_M_tag) { - _RopeLeaf* __right = __STATIC_CAST(_RopeLeaf*, __STATIC_CAST(_RopeConcatenation*, __r)->_M_right); - if (_RopeRep::_S_leaf == __right->_M_tag && - __right->_M_size._M_data + __slen <= _S_copy_max) { - _RopeRep* __new_right = _S_destr_leaf_concat_char_iter(__right, __s, __slen); - if (__right == __new_right) { - // _STLP_ASSERT(__new_right->_M_ref_count == 2) - // __new_right->_M_ref_count = 1; - __new_right->_M_decr(); - } else { - // _STLP_ASSERT(__new_right->_M_ref_count >= 1) - __right->_M_unref_nonnil(); - } - // _STLP_ASSERT(__r->_M_ref_count == 1) - // __r->_M_ref_count = 2; // One more than before. - __r->_M_incr(); - __STATIC_CAST(_RopeConcatenation*, __r)->_M_right = __new_right; - // E.Musser : moved below - // __r->_M_size._M_data = __orig_size + __slen; - if (0 != __r->_M_c_string) { - __r->_M_free_c_string(); - __r->_M_c_string = 0; - } - __r->_M_size._M_data = __orig_size + __slen; - return __r; - } - } - _RopeRep* __right = - _S_RopeLeaf_from_unowned_char_ptr(__s, __slen, __r->get_allocator()); - __r->_M_ref_nonnil(); - _STLP_TRY { - __result = _S_tree_concat(__r, __right); - } - _STLP_UNWIND(_S_unref(__r); _S_unref(__right)) - // _STLP_ASSERT(1 == __result->_M_ref_count) - return __result; -} - -template -__RopeRep__* -rope<_CharT,_Alloc>::_S_concat_rep(_RopeRep* __left, _RopeRep* __right) { - if (0 == __left) { - _S_ref(__right); - return __right; - } - if (0 == __right) { - __left->_M_ref_nonnil(); - return __left; - } - if (_RopeRep::_S_leaf == __right->_M_tag) { - if (_RopeRep::_S_leaf == __left->_M_tag) { - if (__right->_M_size._M_data + __left->_M_size._M_data <= _S_copy_max) { - return _S_leaf_concat_char_iter(__STATIC_CAST(_RopeLeaf*, __left), - __STATIC_CAST(_RopeLeaf*, __right)->_M_data, - __right->_M_size._M_data); - } - } else if (_RopeRep::_S_concat == __left->_M_tag && - _RopeRep::_S_leaf == __STATIC_CAST(_RopeConcatenation*, __left)->_M_right->_M_tag) { - _RopeLeaf* __leftright = - __STATIC_CAST(_RopeLeaf*, __STATIC_CAST(_RopeConcatenation*, __left)->_M_right); - if (__leftright->_M_size._M_data + __right->_M_size._M_data <= _S_copy_max) { - _RopeRep* __leftleft = __STATIC_CAST(_RopeConcatenation*, __left)->_M_left; - _RopeRep* __rest = _S_leaf_concat_char_iter(__leftright, - __STATIC_CAST(_RopeLeaf*, __right)->_M_data, - __right->_M_size._M_data); - __leftleft->_M_ref_nonnil(); - _STLP_TRY { - return _S_tree_concat(__leftleft, __rest); - } - _STLP_UNWIND(_S_unref(__leftleft); _S_unref(__rest)) - } - } - } - __left->_M_ref_nonnil(); - __right->_M_ref_nonnil(); - _STLP_TRY { - return _S_tree_concat(__left, __right); - } - _STLP_UNWIND(_S_unref(__left); _S_unref(__right)) - _STLP_RET_AFTER_THROW(0) -} - -template -__RopeRep__* -rope<_CharT,_Alloc>::_S_substring(_RopeRep* __base, - size_t __start, size_t __endp1) { - if (0 == __base) return 0; - size_t __len = __base->_M_size._M_data; - size_t __adj_endp1; - const size_t __lazy_threshold = 128; - - if (__endp1 >= __len) { - if (0 == __start) { - __base->_M_ref_nonnil(); - return __base; - } else { - __adj_endp1 = __len; - } - } else { - __adj_endp1 = __endp1; - } - switch(__base->_M_tag) { - case _RopeRep::_S_concat: - { - _RopeConcatenation* __c = __STATIC_CAST(_RopeConcatenation*, __base); - _RopeRep* __left = __c->_M_left; - _RopeRep* __right = __c->_M_right; - size_t __left_len = __left->_M_size._M_data; - _RopeRep* __result; - - if (__adj_endp1 <= __left_len) { - return _S_substring(__left, __start, __endp1); - } else if (__start >= __left_len) { - return _S_substring(__right, __start - __left_len, - __adj_endp1 - __left_len); - } - _Self_destruct_ptr __left_result(_S_substring(__left, __start, __left_len)); - _Self_destruct_ptr __right_result(_S_substring(__right, 0, __endp1 - __left_len)); - _STLP_MPWFIX_TRY //*TY 06/01/2000 - mpw forgets to call dtor on __left_result and __right_result without this try block - __result = _S_concat_rep(__left_result, __right_result); - // _STLP_ASSERT(1 == __result->_M_ref_count) - return __result; - _STLP_MPWFIX_CATCH //*TY 06/01/2000 - - } - case _RopeRep::_S_leaf: - { - _RopeLeaf* __l = __STATIC_CAST(_RopeLeaf*, __base); - _RopeLeaf* __result; - size_t __result_len; - if (__start >= __adj_endp1) return 0; - __result_len = __adj_endp1 - __start; - if (__result_len > __lazy_threshold) goto lazy; - const _CharT* __section = __l->_M_data + __start; - // We should sometimes create substring node instead. - __result = _S_RopeLeaf_from_unowned_char_ptr(__section, __result_len, - __base->get_allocator()); - return __result; - } - case _RopeRep::_S_substringfn: - // Avoid introducing multiple layers of substring nodes. - { - _RopeSubstring* __old = __STATIC_CAST(_RopeSubstring*, __base); - size_t __result_len; - if (__start >= __adj_endp1) return 0; - __result_len = __adj_endp1 - __start; - if (__result_len > __lazy_threshold) { - _RopeSubstring* __result = _S_new_RopeSubstring(__old->_M_base, - __start + __old->_M_start, - __adj_endp1 - __start, - __base->get_allocator()); - return __result; - } // *** else fall through: *** - } - case _RopeRep::_S_function: - { - _RopeFunction* __f = __STATIC_CAST(_RopeFunction*, __base); - if (__start >= __adj_endp1) return 0; - size_t __result_len = __adj_endp1 - __start; - - if (__result_len > __lazy_threshold) goto lazy; - _CharT* __section = __base->_M_size.allocate(_S_rounded_up_size(__result_len)); - _STLP_TRY { - (*(__f->_M_fn))(__start, __result_len, __section); - } - _STLP_UNWIND(_RopeRep::_S_free_string(__section, - __result_len, __base->get_allocator())) - _S_construct_null(__section + __result_len); - return _S_new_RopeLeaf(__section, __result_len, - __base->get_allocator()); - } - } - /*NOTREACHED*/ - _STLP_ASSERT(false) - lazy: - { - // Create substring node. - return _S_new_RopeSubstring(__base, __start, __adj_endp1 - __start, - __base->get_allocator()); - } -} - -template -class _Rope_flatten_char_consumer : public _Rope_char_consumer<_CharT> { -private: - _CharT* _M_buf_ptr; -public: - _Rope_flatten_char_consumer(_CharT* __buffer) { - _M_buf_ptr = __buffer; - } - ~_Rope_flatten_char_consumer() {} - bool operator() (const _CharT* __leaf, size_t __n) { - _STLP_PRIV __ucopy_n(__leaf, __n, _M_buf_ptr); - _M_buf_ptr += __n; - return true; - } -}; - -template -class _Rope_find_char_char_consumer : public _Rope_char_consumer<_CharT> { -private: - _CharT _M_pattern; -public: - size_t _M_count; // Number of nonmatching characters - _Rope_find_char_char_consumer(_CharT __p) - : _M_pattern(__p), _M_count(0) {} - ~_Rope_find_char_char_consumer() {} - bool operator() (const _CharT* __leaf, size_t __n) { - size_t __i; - for (__i = 0; __i < __n; ++__i) { - if (__leaf[__i] == _M_pattern) { - _M_count += __i; return false; - } - } - _M_count += __n; return true; - } -}; - -#if !defined (_STLP_USE_NO_IOSTREAMS) -template -// Here _CharT is both the stream and rope character type. -class _Rope_insert_char_consumer : public _Rope_char_consumer<_CharT> { -private: - typedef basic_ostream<_CharT,_Traits> _Insert_ostream; - typedef _Rope_insert_char_consumer<_CharT,_Traits> _Self; - _Insert_ostream& _M_o; - - //explicitely defined as private to avoid warnings: - _Self& operator = (_Self const&); -public: - _Rope_insert_char_consumer(_Insert_ostream& __writer) - : _M_o(__writer) {} - ~_Rope_insert_char_consumer() {} - // Caller is presumed to own the ostream - bool operator() (const _CharT* __leaf, size_t __n); - // Returns true to continue traversal. -}; - -template -bool _Rope_insert_char_consumer<_CharT, _Traits>::operator() - (const _CharT* __leaf, size_t __n) { - size_t __i; - // We assume that formatting is set up correctly for each element. - for (__i = 0; __i < __n; ++__i) _M_o.put(__leaf[__i]); - return true; -} -#endif /* !_STLP_USE_NO_IOSTREAMS */ - -template -bool _S_apply_to_pieces(_CharConsumer& __c, - _Rope_RopeRep<_CharT, _Alloc> * __r, - size_t __begin, size_t __end) { - typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep; - typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcatenation; - typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf; - typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction; - - if (0 == __r) return true; - switch(__r->_M_tag) { - case _RopeRep::_S_concat: - { - _RopeConcatenation* __conc = __STATIC_CAST(_RopeConcatenation*, __r); - _RopeRep* __left = __conc->_M_left; - size_t __left_len = __left->_M_size._M_data; - if (__begin < __left_len) { - size_t __left_end = (min) (__left_len, __end); - if (!_S_apply_to_pieces(__c, __left, __begin, __left_end)) - return false; - } - if (__end > __left_len) { - _RopeRep* __right = __conc->_M_right; - size_t __right_start = (max)(__left_len, __begin); - if (!_S_apply_to_pieces(__c, __right, - __right_start - __left_len, - __end - __left_len)) { - return false; - } - } - } - return true; - case _RopeRep::_S_leaf: - { - _RopeLeaf* __l = __STATIC_CAST(_RopeLeaf*, __r); - return __c(__l->_M_data + __begin, __end - __begin); - } - case _RopeRep::_S_function: - case _RopeRep::_S_substringfn: - { - _RopeFunction* __f = __STATIC_CAST(_RopeFunction*, __r); - size_t __len = __end - __begin; - bool __result; - _CharT* __buffer = __r->get_allocator().allocate(__len); - _STLP_TRY { - (*(__f->_M_fn))(__begin, __len, __buffer); - __result = __c(__buffer, __len); - __r->get_allocator().deallocate(__buffer, __len); - } - _STLP_UNWIND((__r->get_allocator().deallocate(__buffer, __len))) - return __result; - } - default: - _STLP_ASSERT(false) - /*NOTREACHED*/ - return false; - } -} - -#if !defined (_STLP_USE_NO_IOSTREAMS) -template -inline void _Rope_fill(basic_ostream<_CharT, _Traits>& __o, streamsize __n) { - char __f = __o.fill(); - for (streamsize __i = 0; __i < __n; ++__i) __o.put(__f); -} - -template -basic_ostream<_CharT, _Traits>& _S_io_get(basic_ostream<_CharT, _Traits>& __o, - const rope<_CharT, _Alloc>& __r, const __true_type& /*_IsBasicCharType*/) { - streamsize __w = __o.width(); - const bool __left = (__o.flags() & ios::left) != 0; - size_t __rope_len = __r.size(); - _Rope_insert_char_consumer<_CharT, _Traits> __c(__o); - - const bool __need_pad = (((sizeof(streamsize) > sizeof(size_t)) && (__STATIC_CAST(streamsize, __rope_len) < __w)) || - ((sizeof(streamsize) <= sizeof(size_t)) && (__rope_len < __STATIC_CAST(size_t, __w)))); - streamsize __pad_len = __need_pad ? __w - __rope_len : 0; - - if (!__left && __pad_len > 0) { - _Rope_fill(__o, __pad_len); - } - __r.apply_to_pieces(0, __rope_len, __c); - if (__left && __pad_len > 0) { - _Rope_fill(__o, __pad_len); - } - return __o; -} - -template -basic_ostream<_CharT, _Traits>& _S_io_get(basic_ostream<_CharT, _Traits>& __o, - const rope<_CharT, _Alloc>& __r, const __false_type& /*_IsBasicCharType*/) { - streamsize __w = __o.width(); - size_t __rope_len = __r.size(); - _Rope_insert_char_consumer<_CharT, _Traits> __c(__o); - - __o.width(__w /__rope_len); - _STLP_TRY { - __r.apply_to_pieces(0, __rope_len, __c); - __o.width(__w); - } - _STLP_UNWIND(__o.width(__w)) - return __o; -} - -template -basic_ostream<_CharT, _Traits>& operator<<(basic_ostream<_CharT, _Traits>& __o, - const rope<_CharT, _Alloc>& __r) { - typedef typename _IsIntegral<_CharT>::_Ret _Char_Is_Integral; - return _S_io_get(__o, __r, _Char_Is_Integral()); -} -#endif /* NO_IOSTREAMS */ - -template -_CharT* rope<_CharT,_Alloc>::_S_flatten(_RopeRep* __r, - size_t __start, size_t __len, - _CharT* __buffer) { - _Rope_flatten_char_consumer<_CharT> __c(__buffer); - _S_apply_to_pieces(__c, __r, __start, __start + __len); - return(__buffer + __len); -} - -template -size_t rope<_CharT,_Alloc>::find(_CharT __pattern, size_t __start) const { - _Rope_find_char_char_consumer<_CharT> __c(__pattern); - _S_apply_to_pieces(__c, _M_tree_ptr._M_data, __start, size()); - size_type __result_pos = __start + __c._M_count; -#ifndef _STLP_OLD_ROPE_SEMANTICS - if (__result_pos == size()) __result_pos = npos; -#endif - return __result_pos; -} - -template -_CharT* -rope<_CharT,_Alloc>::_S_flatten(_Rope_RopeRep<_CharT, _Alloc>* __r, _CharT* __buffer) { - if (0 == __r) return __buffer; - switch(__r->_M_tag) { - case _RopeRep::_S_concat: - { - _RopeConcatenation* __c = __STATIC_CAST(_RopeConcatenation*, __r); - _RopeRep* __left = __c->_M_left; - _RopeRep* __right = __c->_M_right; - _CharT* __rest = _S_flatten(__left, __buffer); - return _S_flatten(__right, __rest); - } - case _RopeRep::_S_leaf: - { - _RopeLeaf* __l = __STATIC_CAST(_RopeLeaf*, __r); - return _STLP_PRIV __ucopy_n(__l->_M_data, __l->_M_size._M_data, __buffer).second; - } - case _RopeRep::_S_function: - case _RopeRep::_S_substringfn: - // We dont yet do anything with substring nodes. - // This needs to be fixed before ropefiles will work well. - { - _RopeFunction* __f = __STATIC_CAST(_RopeFunction*, __r); - (*(__f->_M_fn))(0, __f->_M_size._M_data, __buffer); - return __buffer + __f->_M_size._M_data; - } - default: - _STLP_ASSERT(false) - /*NOTREACHED*/ - return 0; - } -} - -#ifdef _STLP_DEBUG -// This needs work for _CharT != char -template -void rope<_CharT,_Alloc>::_S_dump(_RopeRep* __r, int __indent) { - for (int __i = 0; __i < __indent; ++__i) putchar(' '); - if (0 == __r) { - printf("NULL\n"); return; - } - if (_RopeRep::_S_concat == __r->_M_tag) { - _RopeConcatenation* __c = __STATIC_CAST(_RopeConcatenation*, __r); - _RopeRep* __left = __c->_M_left; - _RopeRep* __right = __c->_M_right; - printf("Concatenation %p (rc = %ld, depth = %d, len = %ld, %s balanced)\n", - __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size._M_data, - __r->_M_is_balanced? "" : "not"); - _S_dump(__left, __indent + 2); - _S_dump(__right, __indent + 2); - return; - } - else { - const char* __kind; - - switch (__r->_M_tag) { - case _RopeRep::_S_leaf: - __kind = "Leaf"; - break; - case _RopeRep::_S_function: - __kind = "Function"; - break; - case _RopeRep::_S_substringfn: - __kind = "Function representing substring"; - break; - default: - __kind = "(corrupted kind field!)"; - } - printf("%s %p (rc = %ld, depth = %d, len = %ld) ", - __kind, __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size._M_data); - if (sizeof(_CharT) == 1) { - const int __max_len = 40; - _Self_destruct_ptr __prefix(_S_substring(__r, 0, __max_len)); - _CharT __buffer[__max_len + 1]; - bool __too_big = __r->_M_size._M_data > __prefix->_M_size._M_data; - - _S_flatten(__prefix, __buffer); - __buffer[__prefix->_M_size._M_data] = _STLP_DEFAULT_CONSTRUCTED(_CharT); - printf("%s%s\n", (char*)__buffer, __too_big? "...\n" : "\n"); - } else { - printf("\n"); - } - } -} -#endif /* _STLP_DEBUG */ - -# define __ROPE_TABLE_BODY = { \ -/* 0 */1, /* 1 */2, /* 2 */3, /* 3 */5, /* 4 */8, /* 5 */13, /* 6 */21, \ -/* 7 */34, /* 8 */55, /* 9 */89, /* 10 */144, /* 11 */233, /* 12 */377, \ -/* 13 */610, /* 14 */987, /* 15 */1597, /* 16 */2584, /* 17 */4181, \ -/* 18 */6765ul, /* 19 */10946ul, /* 20 */17711ul, /* 21 */28657ul, /* 22 */46368ul, \ -/* 23 */75025ul, /* 24 */121393ul, /* 25 */196418ul, /* 26 */317811ul, \ -/* 27 */514229ul, /* 28 */832040ul, /* 29 */1346269ul, /* 30 */2178309ul, \ -/* 31 */3524578ul, /* 32 */5702887ul, /* 33 */9227465ul, /* 34 */14930352ul, \ -/* 35 */24157817ul, /* 36 */39088169ul, /* 37 */63245986ul, /* 38 */102334155ul, \ -/* 39 */165580141ul, /* 40 */267914296ul, /* 41 */433494437ul, \ -/* 42 */701408733ul, /* 43 */1134903170ul, /* 44 */1836311903ul, \ -/* 45 */2971215073ul } - -template -const unsigned long -rope<_CharT,_Alloc>::_S_min_len[__ROPE_DEPTH_SIZE] __ROPE_TABLE_BODY; -# undef __ROPE_DEPTH_SIZE -# undef __ROPE_MAX_DEPTH -# undef __ROPE_TABLE_BODY - -// These are Fibonacci numbers < 2**32. - -template -__RopeRep__* rope<_CharT,_Alloc>::_S_balance(_RopeRep* __r) { - _RopeRep* __forest[_RopeRep::_S_max_rope_depth + 1] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0}; - _RopeRep* __result = 0; - int __i; - // Invariant: - // The concatenation of forest in descending order is equal to __r. - // __forest[__i]._M_size._M_data >= _S_min_len[__i] - // __forest[__i]._M_depth = __i - // References from forest are included in refcount. - - _STLP_TRY { - _S_add_to_forest(__r, __forest); - for (__i = 0; __i <= _RopeRep::_S_max_rope_depth; ++__i) - if (0 != __forest[__i]) { - _Self_destruct_ptr __old(__result); - __result = _S_concat_rep(__forest[__i], __result); - __forest[__i]->_M_unref_nonnil(); -# ifdef _STLP_USE_EXCEPTIONS - __forest[__i] = 0; -# endif - } - } - _STLP_UNWIND(for(__i = 0; __i <= _RopeRep::_S_max_rope_depth; ++__i) - _S_unref(__forest[__i])) - if (__result->_M_depth > _RopeRep::_S_max_rope_depth) { - __stl_throw_range_error("rope too long"); - } - return(__result); -} - - -template -void -rope<_CharT,_Alloc>::_S_add_to_forest(_RopeRep* __r, _RopeRep** __forest) -{ - if (__r -> _M_is_balanced) { - _S_add_leaf_to_forest(__r, __forest); - return; - } - _STLP_ASSERT(__r->_M_tag == _RopeRep::_S_concat) - { - _RopeConcatenation* __c = (_RopeConcatenation*)__r; - - _S_add_to_forest(__c->_M_left, __forest); - _S_add_to_forest(__c->_M_right, __forest); - } -} - - -template -void -rope<_CharT,_Alloc>::_S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest) -{ - _RopeRep* __insertee; // included in refcount - _RopeRep* __too_tiny = 0; // included in refcount - int __i; // forest[0..__i-1] is empty - size_t __s = __r->_M_size._M_data; - - for (__i = 0; __s >= _S_min_len[__i+1]/* not this bucket */; ++__i) { - if (0 != __forest[__i]) { - _Self_destruct_ptr __old(__too_tiny); - __too_tiny = _S_concat_and_set_balanced(__forest[__i], __too_tiny); - __forest[__i]->_M_unref_nonnil(); - __forest[__i] = 0; - } - } - { - _Self_destruct_ptr __old(__too_tiny); - __insertee = _S_concat_and_set_balanced(__too_tiny, __r); - } - // Too_tiny dead, and no longer included in refcount. - // Insertee is live and included. - _STLP_ASSERT(_S_is_almost_balanced(__insertee)) - _STLP_ASSERT(__insertee->_M_depth <= __r->_M_depth + 1) - for (;; ++__i) { - if (0 != __forest[__i]) { - _Self_destruct_ptr __old(__insertee); - __insertee = _S_concat_and_set_balanced(__forest[__i], __insertee); - __forest[__i]->_M_unref_nonnil(); - __forest[__i] = 0; - _STLP_ASSERT(_S_is_almost_balanced(__insertee)) - } - _STLP_ASSERT(_S_min_len[__i] <= __insertee->_M_size._M_data) - _STLP_ASSERT(__forest[__i] == 0) - if (__i == _RopeRep::_S_max_rope_depth || - __insertee->_M_size._M_data < _S_min_len[__i+1]) { - __forest[__i] = __insertee; - // refcount is OK since __insertee is now dead. - return; - } - } -} - -template -_CharT -rope<_CharT,_Alloc>::_S_fetch(_RopeRep* __r, size_type __i) -{ - _CharT* __cstr = __r->_M_c_string; - - _STLP_ASSERT(__i < __r->_M_size._M_data) - if (0 != __cstr) return __cstr[__i]; - for(;;) { - switch(__r->_M_tag) { - case _RopeRep::_S_concat: - { - _RopeConcatenation* __c = (_RopeConcatenation*)__r; - _RopeRep* __left = __c->_M_left; - size_t __left_len = __left->_M_size._M_data; - - if (__i >= __left_len) { - __i -= __left_len; - __r = __c->_M_right; - } else { - __r = __left; - } - } - break; - case _RopeRep::_S_leaf: - { - _RopeLeaf* __l = (_RopeLeaf*)__r; - return __l->_M_data[__i]; - } - case _RopeRep::_S_function: - case _RopeRep::_S_substringfn: - { - _RopeFunction* __f = (_RopeFunction*)__r; - _CharT __result; - - (*(__f->_M_fn))(__i, 1, &__result); - return __result; - } - } - } -#if defined(_STLP_NEED_UNREACHABLE_RETURN) - return 0; -#endif -} - -// Return a uniquely referenced character slot for the given -// position, or 0 if that's not possible. -template -_CharT* -rope<_CharT,_Alloc>::_S_fetch_ptr(_RopeRep* __r, size_type __i) -{ - _RopeRep* __clrstack[_RopeRep::_S_max_rope_depth]; - size_t __csptr = 0; - - for(;;) { - // if (__r->_M_ref_count > 1) return 0; - if ( __r->_M_incr() > 2 ) { - __r->_M_decr(); - return 0; - } - switch(__r->_M_tag) { - case _RopeRep::_S_concat: - { - _RopeConcatenation* __c = (_RopeConcatenation*)__r; - _RopeRep* __left = __c->_M_left; - size_t __left_len = __left->_M_size._M_data; - - if (__c->_M_c_string != 0) __clrstack[__csptr++] = __c; - if (__i >= __left_len) { - __i -= __left_len; - __r = __c->_M_right; - } else { - __r = __left; - } - } - break; - case _RopeRep::_S_leaf: - { - _RopeLeaf* __l = (_RopeLeaf*)__r; - if (__l->_M_c_string != __l->_M_data && __l->_M_c_string != 0) - __clrstack[__csptr++] = __l; - while (__csptr > 0) { - -- __csptr; - _RopeRep* __d = __clrstack[__csptr]; - __d->_M_free_c_string(); - __d->_M_c_string = 0; - } - return __l->_M_data + __i; - } - case _RopeRep::_S_function: - case _RopeRep::_S_substringfn: - return 0; - } - } -#if defined(_STLP_NEED_UNREACHABLE_RETURN) - return 0; -#endif - -} - -// The following could be implemented trivially using -// lexicographical_compare_3way. -// We do a little more work to avoid dealing with rope iterators for -// flat strings. -template -int -rope<_CharT,_Alloc>::_S_compare (const _RopeRep* __left, - const _RopeRep* __right) { - size_t __left_len; - size_t __right_len; - - if (0 == __right) return 0 != __left; - if (0 == __left) return -1; - __left_len = __left->_M_size._M_data; - __right_len = __right->_M_size._M_data; - if (_RopeRep::_S_leaf == __left->_M_tag) { - const _RopeLeaf* __l = __STATIC_CAST(const _RopeLeaf*, __left); - if (_RopeRep::_S_leaf == __right->_M_tag) { - const _RopeLeaf* __r = __STATIC_CAST(const _RopeLeaf*, __right); - return _STLP_PRIV __lexicographical_compare_3way(__l->_M_data, __l->_M_data + __left_len, - __r->_M_data, __r->_M_data + __right_len); - } - else { - const_iterator __rstart(__right, 0); - const_iterator __rend(__right, __right_len); - return _STLP_PRIV __lexicographical_compare_3way(__l->_M_data, __l->_M_data + __left_len, - __rstart, __rend); - } - } - else { - const_iterator __lstart(__left, 0); - const_iterator __lend(__left, __left_len); - if (_RopeRep::_S_leaf == __right->_M_tag) { - const _RopeLeaf* __r = __STATIC_CAST(const _RopeLeaf*, __right); - return _STLP_PRIV __lexicographical_compare_3way(__lstart, __lend, - __r->_M_data, __r->_M_data + __right_len); - } - else { - const_iterator __rstart(__right, 0); - const_iterator __rend(__right, __right_len); - return _STLP_PRIV __lexicographical_compare_3way(__lstart, __lend, __rstart, __rend); - } - } -} - -// Assignment to reference proxies. -template -_Rope_char_ref_proxy<_CharT, _Alloc>& -_Rope_char_ref_proxy<_CharT, _Alloc>::operator= (_CharT __c) { - _RopeRep* __old = _M_root->_M_tree_ptr._M_data; - // First check for the case in which everything is uniquely - // referenced. In that case we can do this destructively. - _CharT* __ptr = _My_rope::_S_fetch_ptr(__old, _M_pos); - if (0 != __ptr) { - *__ptr = __c; - return *this; - } - _Self_destruct_ptr __left( - _My_rope::_S_substring(__old, 0, _M_pos)); - _Self_destruct_ptr __right( - _My_rope::_S_substring(__old, _M_pos+1, __old->_M_size._M_data)); - _Self_destruct_ptr __result_left( - _My_rope::_S_destr_concat_char_iter(__left, &__c, 1)); - - // _STLP_ASSERT(__left == __result_left || 1 == __result_left->_M_ref_count) - _RopeRep* __result = - _My_rope::_S_concat_rep(__result_left, __right); - // _STLP_ASSERT(1 <= __result->_M_ref_count) - _RopeRep::_S_unref(__old); - _M_root->_M_tree_ptr._M_data = __result; - return *this; -} - -template -_Rope_char_ptr_proxy<_CharT, _Alloc> -_Rope_char_ref_proxy<_CharT, _Alloc>::operator& () const { - return _Rope_char_ptr_proxy<_CharT, _Alloc>(*this); -} - -template -_CharT rope<_CharT,_Alloc>::_S_empty_c_str[1] = { _CharT() }; -// # endif - -#if !defined (_STLP_STATIC_CONST_INIT_BUG) && !defined (_STLP_NO_STATIC_CONST_DEFINITION) -template -const size_t rope<_CharT, _Alloc>::npos; -#endif - -template -const _CharT* rope<_CharT,_Alloc>::c_str() const { - if (0 == _M_tree_ptr._M_data) { - // Possibly redundant, but probably fast. - _S_empty_c_str[0] = _STLP_DEFAULT_CONSTRUCTED(_CharT); - return _S_empty_c_str; - } - _CharT* __old_c_string = _M_tree_ptr._M_data->_M_c_string; - if (0 != __old_c_string) return __old_c_string; - size_t __s = size(); - _CharT* __result = _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_tree_ptr, _CharT).allocate(__s + 1); - _S_flatten(_M_tree_ptr._M_data, __result); - _S_construct_null(__result + __s); - __old_c_string = __STATIC_CAST(_CharT*, _Atomic_swap_ptr(__REINTERPRET_CAST(void* _STLP_VOLATILE*, &(_M_tree_ptr._M_data->_M_c_string)), - __result)); - if (0 != __old_c_string) { - // It must have been added in the interim. Hence it had to have been - // separately allocated. Deallocate the old copy, since we just - // replaced it. - _STLP_STD::_Destroy_Range(__old_c_string, __old_c_string + __s + 1); - _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_tree_ptr, _CharT).deallocate(__old_c_string, __s + 1); - } - return __result; -} - -template -const _CharT* rope<_CharT,_Alloc>::replace_with_c_str() { - if (0 == _M_tree_ptr._M_data) { - _S_empty_c_str[0] = _STLP_DEFAULT_CONSTRUCTED(_CharT); - return _S_empty_c_str; - } - _CharT* __old_c_string = _M_tree_ptr._M_data->_M_c_string; - if (_RopeRep::_S_leaf == _M_tree_ptr._M_data->_M_tag && 0 != __old_c_string) { - return __old_c_string; - } - size_t __s = size(); - _CharT* __result = _M_tree_ptr.allocate(_S_rounded_up_size(__s)); - _S_flatten(_M_tree_ptr._M_data, __result); - _S_construct_null(__result + __s); - _M_tree_ptr._M_data->_M_unref_nonnil(); - _M_tree_ptr._M_data = _S_new_RopeLeaf(__result, __s, _M_tree_ptr); - return __result; -} - -// Algorithm specializations. More should be added. - -#if (!defined (_STLP_MSVC) || (_STLP_MSVC >= 1310)) && !defined (__DMC__) -// I couldn't get this to work with VC++ -template -void _Rope_rotate(_Rope_iterator<_CharT,_Alloc> __first, - _Rope_iterator<_CharT,_Alloc> __middle, - _Rope_iterator<_CharT,_Alloc> __last) { - _STLP_ASSERT(__first.container() == __middle.container() && - __middle.container() == __last.container()) - rope<_CharT,_Alloc>& __r(__first.container()); - rope<_CharT,_Alloc> __prefix = __r.substr(0, __first.index()); - rope<_CharT,_Alloc> __suffix = - __r.substr(__last.index(), __r.size() - __last.index()); - rope<_CharT,_Alloc> __part1 = - __r.substr(__middle.index(), __last.index() - __middle.index()); - rope<_CharT,_Alloc> __part2 = - __r.substr(__first.index(), __middle.index() - __first.index()); - __r = __prefix; - __r += __part1; - __r += __part2; - __r += __suffix; -} - - -# if 0 -// Probably not useful for several reasons: -// - for SGIs 7.1 compiler and probably some others, -// this forces lots of rope instantiations, creating a -// code bloat and compile time problem. (Fixed in 7.2.) -// - wchar_t is 4 bytes wide on most UNIX platforms, making it unattractive -// for unicode strings. Unsigned short may be a better character -// type. -inline void rotate( - _Rope_iterator > __first, - _Rope_iterator > __middle, - _Rope_iterator > __last) { - _Rope_rotate(__first, __middle, __last); -} -# endif -#endif /* _STLP_MSVC */ - -# undef __RopeLeaf__ -# undef __RopeRep__ -# undef __RopeLeaf -# undef __RopeRep -# undef size_type - -_STLP_END_NAMESPACE - -# endif /* ROPEIMPL_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_rope.h b/build/stlport/stlport/stl/_rope.h deleted file mode 100644 index cc391f75d926..000000000000 --- a/build/stlport/stlport/stl/_rope.h +++ /dev/null @@ -1,2391 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -// rope<_CharT,_Alloc> is a sequence of _CharT. -// Ropes appear to be mutable, but update operations -// really copy enough of the data structure to leave the original -// valid. Thus ropes can be logically copied by just copying -// a pointer value. - -#ifndef _STLP_INTERNAL_ROPE_H -#define _STLP_INTERNAL_ROPE_H - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#if !defined (_STLP_USE_NO_IOSTREAMS) && !defined (_STLP_INTERNAL_IOSFWD) -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALGO_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_NUMERIC_H -# include -#endif - -#ifndef _STLP_INTERNAL_HASH_FUN_H -# include -#endif - -#ifndef _STLP_CHAR_TRAITS_H -# include -#endif - -#ifndef _STLP_INTERNAL_THREADS_H -# include -#endif - -#ifdef _STLP_SGI_THREADS -# include -#endif - -#ifndef _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE -# define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) (_Alloc_traits<_Tp,__atype>::create_allocator(__a)) -#else -# define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) __stl_alloc_create(__a,(_Tp*)0) -#endif - -_STLP_BEGIN_NAMESPACE - -// First a lot of forward declarations. The standard seems to require -// much stricter "declaration before use" than many of the implementations -// that preceded it. -template) > class rope; -template struct _Rope_RopeConcatenation; -template struct _Rope_RopeRep; -template struct _Rope_RopeLeaf; -template struct _Rope_RopeFunction; -template struct _Rope_RopeSubstring; -template class _Rope_iterator; -template class _Rope_const_iterator; -template class _Rope_char_ref_proxy; -template class _Rope_char_ptr_proxy; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _BasicCharType { typedef __false_type _Ret; }; - -_STLP_TEMPLATE_NULL -struct _BasicCharType { typedef __true_type _Ret; }; - -#ifdef _STLP_HAS_WCHAR_T -_STLP_TEMPLATE_NULL -struct _BasicCharType { typedef __true_type _Ret; }; -#endif - -// Some helpers, so we can use the power algorithm on ropes. -// See below for why this isn't local to the implementation. - -// This uses a nonstandard refcount convention. -// The result has refcount 0. -template -struct _Rope_Concat_fn - : public binary_function, rope<_CharT,_Alloc>, - rope<_CharT,_Alloc> > { - rope<_CharT,_Alloc> operator() (const rope<_CharT,_Alloc>& __x, - const rope<_CharT,_Alloc>& __y) { - return __x + __y; - } -}; - -template -inline -rope<_CharT,_Alloc> -__identity_element(_Rope_Concat_fn<_CharT, _Alloc>) -{ return rope<_CharT,_Alloc>(); } - -_STLP_MOVE_TO_STD_NAMESPACE - -// Store an eos -template -inline void _S_construct_null_aux(_CharT *__p, const __true_type&) -{ *__p = 0; } - -template -inline void _S_construct_null_aux(_CharT *__p, const __false_type&) -{ _STLP_STD::_Construct(__p); } - -template -inline void _S_construct_null(_CharT *__p) { - typedef typename _IsIntegral<_CharT>::_Ret _Char_Is_Integral; - _S_construct_null_aux(__p, _Char_Is_Integral()); -} - -// char_producers are logically functions that generate a section of -// a string. These can be converted to ropes. The resulting rope -// invokes the char_producer on demand. This allows, for example, -// files to be viewed as ropes without reading the entire file. -template -class char_producer { -public: - virtual ~char_producer() {} - virtual void operator()(size_t __start_pos, size_t __len, - _CharT* __buffer) = 0; - // Buffer should really be an arbitrary output iterator. - // That way we could flatten directly into an ostream, etc. - // This is thoroughly impossible, since iterator types don't - // have runtime descriptions. -}; - -// Sequence buffers: -// -// Sequence must provide an append operation that appends an -// array to the sequence. Sequence buffers are useful only if -// appending an entire array is cheaper than appending element by element. -// This is true for many string representations. -// This should perhaps inherit from ostream -// and be implemented correspondingly, so that they can be used -// for formatted. For the sake of portability, we don't do this yet. -// -// For now, sequence buffers behave as output iterators. But they also -// behave a little like basic_ostringstream and a -// little like containers. - -template -// The 3rd parameter works around a common compiler bug. -class sequence_buffer : public iterator { -public: -# ifndef __TYPEDEF_WORKAROUND - typedef typename _Sequence::value_type value_type; - typedef sequence_buffer<_Sequence -# if !(defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) || \ - defined ( _STLP_NO_DEFAULT_NON_TYPE_PARAM )) - , _Buf_sz - > _Self; -# else /* _STLP_NON_TYPE_TMPL_PARAM_BUG */ - > _Self; - enum { _Buf_sz = 100}; -# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */ - // # endif -# else /* __TYPEDEF_WORKAROUND */ - typedef _V value_type; - typedef sequence_buffer<_Sequence, _Buf_sz, _V> _Self; -# endif /* __TYPEDEF_WORKAROUND */ -protected: - _Sequence* _M_prefix; - value_type _M_buffer[_Buf_sz]; - size_t _M_buf_count; -public: - void flush() { - _M_prefix->append(_M_buffer, _M_buffer + _M_buf_count); - _M_buf_count = 0; - } - ~sequence_buffer() { flush(); } - sequence_buffer() : _M_prefix(0), _M_buf_count(0) {} - sequence_buffer(const _Self& __x) { - _M_prefix = __x._M_prefix; - _M_buf_count = __x._M_buf_count; - _STLP_STD::copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer); - } - sequence_buffer(_Self& __x) { - __x.flush(); - _M_prefix = __x._M_prefix; - _M_buf_count = 0; - } - sequence_buffer(_Sequence& __s) : _M_prefix(&__s), _M_buf_count(0) {} - _Self& operator= (_Self& __x) { - __x.flush(); - _M_prefix = __x._M_prefix; - _M_buf_count = 0; - return *this; - } - _Self& operator= (const _Self& __x) { - _M_prefix = __x._M_prefix; - _M_buf_count = __x._M_buf_count; - _STLP_STD::copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer); - return *this; - } - void push_back(value_type __x) { - if (_M_buf_count < _Buf_sz) { - _M_buffer[_M_buf_count] = __x; - ++_M_buf_count; - } else { - flush(); - _M_buffer[0] = __x; - _M_buf_count = 1; - } - } - void append(const value_type *__s, size_t __len) { - if (__len + _M_buf_count <= _Buf_sz) { - size_t __i = _M_buf_count; - size_t __j = 0; - for (; __j < __len; __i++, __j++) { - _M_buffer[__i] = __s[__j]; - } - _M_buf_count += __len; - } else if (0 == _M_buf_count) { - _M_prefix->append(__s, __s + __len); - } else { - flush(); - append(__s, __len); - } - } - _Self& write(const value_type *__s, size_t __len) { - append(__s, __len); - return *this; - } - _Self& put(value_type __x) { - push_back(__x); - return *this; - } - _Self& operator=(const value_type& __rhs) { - push_back(__rhs); - return *this; - } - _Self& operator*() { return *this; } - _Self& operator++() { return *this; } - _Self& operator++(int) { return *this; } -}; - -// The following should be treated as private, at least for now. -template -class _Rope_char_consumer { -#if !defined (_STLP_MEMBER_TEMPLATES) -public: - //Without member templates we have to use run-time parameterization. - // The symmetry with char_producer is accidental and temporary. - virtual ~_Rope_char_consumer() {} - virtual bool operator()(const _CharT* __buffer, size_t __len) = 0; -#endif -}; - -// -// What follows should really be local to rope. Unfortunately, -// that doesn't work, since it makes it impossible to define generic -// equality on rope iterators. According to the draft standard, the -// template parameters for such an equality operator cannot be inferred -// from the occurence of a member class as a parameter. -// (SGI compilers in fact allow this, but the __result wouldn't be -// portable.) -// Similarly, some of the static member functions are member functions -// only to avoid polluting the global namespace, and to circumvent -// restrictions on type inference for template functions. -// - -// -// The internal data structure for representing a rope. This is -// private to the implementation. A rope is really just a pointer -// to one of these. -// -// A few basic functions for manipulating this data structure -// are members of _RopeRep. Most of the more complex algorithms -// are implemented as rope members. -// -// Some of the static member functions of _RopeRep have identically -// named functions in rope that simply invoke the _RopeRep versions. -// - -template -struct _Rope_RopeRep - : public _Refcount_Base -{ - typedef _Rope_RopeRep<_CharT, _Alloc> _Self; -public: - // - // GAB: 11/09/05 - // - // "__ROPE_DEPTH_SIZE" is set to one more then the "__ROPE_MAX_DEPTH". - // This was originally just an addition of "__ROPE_MAX_DEPTH + 1" - // but this addition causes the sunpro compiler to complain about - // multiple declarations during the initialization of "_S_min_len". - // Changed to be a fixed value and the sunpro compiler appears to - // be happy??? - // -# define __ROPE_MAX_DEPTH 45 -# define __ROPE_DEPTH_SIZE 46 // __ROPE_MAX_DEPTH + 1 - enum { _S_max_rope_depth = __ROPE_MAX_DEPTH }; - enum _Tag {_S_leaf, _S_concat, _S_substringfn, _S_function}; - // Apparently needed by VC++ - // The data fields of leaves are allocated with some - // extra space, to accomodate future growth and for basic - // character types, to hold a trailing eos character. - enum { _S_alloc_granularity = 8 }; - - _Tag _M_tag:8; - bool _M_is_balanced:8; - - _STLP_FORCE_ALLOCATORS(_CharT, _Alloc) - typedef _Alloc allocator_type; - - allocator_type get_allocator() const { return allocator_type(_M_size); } - - unsigned char _M_depth; - _CharT* _STLP_VOLATILE _M_c_string; - _STLP_PRIV _STLP_alloc_proxy _M_size; - -#ifdef _STLP_NO_ARROW_OPERATOR - _Rope_RopeRep() : _Refcount_Base(1), _M_size(allocator_type(), 0) { -# if defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) - _STLP_CHECK_RUNTIME_COMPATIBILITY(); -# endif - } -#endif - - /* Flattened version of string, if needed. */ - /* typically 0. */ - /* If it's not 0, then the memory is owned */ - /* by this node. */ - /* In the case of a leaf, this may point to */ - /* the same memory as the data field. */ - _Rope_RopeRep(_Tag __t, unsigned char __d, bool __b, size_t _p_size, - allocator_type __a) : - _Refcount_Base(1), - _M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0), _M_size(__a, _p_size) { -#if defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) - _STLP_CHECK_RUNTIME_COMPATIBILITY(); -#endif - } - - typedef _STLP_TYPENAME _STLP_PRIV _BasicCharType<_CharT>::_Ret _IsBasicCharType; - -#if 0 - /* Please tell why this code is necessary if you uncomment it. - * Problem with it is that rope implementation expect that _S_rounded_up_size(n) - * returns a size > n in order to store the terminating null charater. When - * instanciation type is not a char or wchar_t this is not guaranty resulting in - * memory overrun. - */ - static size_t _S_rounded_up_size_aux(size_t __n, __true_type const& /*_IsBasicCharType*/) { - // Allow slop for in-place expansion. - return (__n + _S_alloc_granularity) & ~(_S_alloc_granularity - 1); - } - - static size_t _S_rounded_up_size_aux(size_t __n, __false_type const& /*_IsBasicCharType*/) { - // Allow slop for in-place expansion. - return (__n + _S_alloc_granularity - 1) & ~(_S_alloc_granularity - 1); - } -#endif - // fbp : moved from RopeLeaf - static size_t _S_rounded_up_size(size_t __n) - //{ return _S_rounded_up_size_aux(__n, _IsBasicCharType()); } - { return (__n + _S_alloc_granularity) & ~(_S_alloc_granularity - 1); } - - static void _S_free_string( _CharT* __s, size_t __len, - allocator_type __a) { - _STLP_STD::_Destroy_Range(__s, __s + __len); - // This has to be a static member, so this gets a bit messy -# ifndef _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE - __a.deallocate(__s, _S_rounded_up_size(__len)); //*ty 03/24/2001 - restored not to use __stl_alloc_rebind() since it is not defined under _STLP_MEMBER_TEMPLATE_CLASSES -# else - __stl_alloc_rebind (__a, (_CharT*)0).deallocate(__s, _S_rounded_up_size(__len)); -# endif - } - - // Deallocate data section of a leaf. - // This shouldn't be a member function. - // But its hard to do anything else at the - // moment, because it's templatized w.r.t. - // an allocator. - // Does nothing if __GC is defined. - void _M_free_c_string(); - void _M_free_tree(); - // Deallocate t. Assumes t is not 0. - void _M_unref_nonnil() { - if (_M_decr() == 0) _M_free_tree(); - } - void _M_ref_nonnil() { - _M_incr(); - } - static void _S_unref(_Self* __t) { - if (0 != __t) { - __t->_M_unref_nonnil(); - } - } - static void _S_ref(_Self* __t) { - if (0 != __t) __t->_M_incr(); - } - //static void _S_free_if_unref(_Self* __t) { - // if (0 != __t && 0 == __t->_M_ref_count) __t->_M_free_tree(); - //} -}; - -template -struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> { -public: - _CharT* _M_data; /* Not necessarily 0 terminated. */ - /* The allocated size is */ - /* _S_rounded_up_size(size), except */ - /* in the GC case, in which it */ - /* doesn't matter. */ -private: - typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep; - typedef typename _RopeRep::_IsBasicCharType _IsBasicCharType; - void _M_init(__true_type const& /*_IsBasicCharType*/) { - this->_M_c_string = _M_data; - } - void _M_init(__false_type const& /*_IsBasicCharType*/) {} - -public: - _STLP_FORCE_ALLOCATORS(_CharT, _Alloc) - typedef typename _RopeRep::allocator_type allocator_type; - - _Rope_RopeLeaf( _CharT* __d, size_t _p_size, allocator_type __a) - : _Rope_RopeRep<_CharT,_Alloc>(_RopeRep::_S_leaf, 0, true, _p_size, __a), - _M_data(__d) { - _STLP_ASSERT(_p_size > 0) - _M_init(_IsBasicCharType()); - } - -# ifdef _STLP_NO_ARROW_OPERATOR - _Rope_RopeLeaf() {} - _Rope_RopeLeaf(const _Rope_RopeLeaf<_CharT, _Alloc>& ) {} -# endif - -// The constructor assumes that d has been allocated with - // the proper allocator and the properly padded size. - // In contrast, the destructor deallocates the data: - ~_Rope_RopeLeaf() { - if (_M_data != this->_M_c_string) { - this->_M_free_c_string(); - } - _RopeRep::_S_free_string(_M_data, this->_M_size._M_data, this->get_allocator()); - } -}; - -template -struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT, _Alloc> { -private: - typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep; - -public: - _RopeRep* _M_left; - _RopeRep* _M_right; - _STLP_FORCE_ALLOCATORS(_CharT, _Alloc) - typedef typename _RopeRep::allocator_type allocator_type; - _Rope_RopeConcatenation(_RopeRep* __l, _RopeRep* __r, allocator_type __a) - : _Rope_RopeRep<_CharT,_Alloc>(_RopeRep::_S_concat, - (max)(__l->_M_depth, __r->_M_depth) + 1, false, - __l->_M_size._M_data + __r->_M_size._M_data, __a), _M_left(__l), _M_right(__r) - {} -# ifdef _STLP_NO_ARROW_OPERATOR - _Rope_RopeConcatenation() {} - _Rope_RopeConcatenation(const _Rope_RopeConcatenation<_CharT, _Alloc>&) {} -# endif - - ~_Rope_RopeConcatenation() { - this->_M_free_c_string(); - _M_left->_M_unref_nonnil(); - _M_right->_M_unref_nonnil(); - } -}; - -template -struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT, _Alloc> { -private: - typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep; -public: - char_producer<_CharT>* _M_fn; - /* - * Char_producer is owned by the - * rope and should be explicitly - * deleted when the rope becomes - * inaccessible. - */ - bool _M_delete_when_done; - _STLP_FORCE_ALLOCATORS(_CharT, _Alloc) - typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type; -# ifdef _STLP_NO_ARROW_OPERATOR - _Rope_RopeFunction() {} - _Rope_RopeFunction(const _Rope_RopeFunction<_CharT, _Alloc>& ) {} -# endif - - _Rope_RopeFunction(char_producer<_CharT>* __f, size_t _p_size, - bool __d, allocator_type __a) - : _Rope_RopeRep<_CharT,_Alloc>(_RopeRep::_S_function, 0, true, _p_size, __a), _M_fn(__f) - , _M_delete_when_done(__d) - { _STLP_ASSERT(_p_size > 0) } - - ~_Rope_RopeFunction() { - this->_M_free_c_string(); - if (_M_delete_when_done) { - delete _M_fn; - } - } -}; - -/* - * Substring results are usually represented using just - * concatenation nodes. But in the case of very long flat ropes - * or ropes with a functional representation that isn't practical. - * In that case, we represent the __result as a special case of - * RopeFunction, whose char_producer points back to the rope itself. - * In all cases except repeated substring operations and - * deallocation, we treat the __result as a RopeFunction. - */ -template -struct _Rope_RopeSubstring : public char_producer<_CharT>, public _Rope_RopeFunction<_CharT,_Alloc> { -public: - // XXX this whole class should be rewritten. - typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep; - _RopeRep *_M_base; // not 0 - size_t _M_start; - /* virtual */ void operator()(size_t __start_pos, size_t __req_len, - _CharT* __buffer) { - typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction; - typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf; - switch (_M_base->_M_tag) { - case _RopeRep::_S_function: - case _RopeRep::_S_substringfn: - { - char_producer<_CharT>* __fn = - __STATIC_CAST(_RopeFunction*, _M_base)->_M_fn; - _STLP_ASSERT(__start_pos + __req_len <= this->_M_size._M_data) - _STLP_ASSERT(_M_start + this->_M_size._M_data <= _M_base->_M_size._M_data) - (*__fn)(__start_pos + _M_start, __req_len, __buffer); - } - break; - case _RopeRep::_S_leaf: - { - _CharT* __s = - __STATIC_CAST(_RopeLeaf*, _M_base)->_M_data; - _STLP_PRIV __ucopy_n(__s + __start_pos + _M_start, __req_len, __buffer); - } - break; - default: - _STLP_ASSERT(false) - ; - } - } - - _STLP_FORCE_ALLOCATORS(_CharT, _Alloc) - typedef typename _RopeRep::allocator_type allocator_type; - - _Rope_RopeSubstring(_RopeRep* __b, size_t __s, size_t __l, allocator_type __a) - : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a), - _M_base(__b), _M_start(__s) { - _STLP_ASSERT(__l > 0) - _STLP_ASSERT(__s + __l <= __b->_M_size._M_data) - _M_base->_M_ref_nonnil(); - this->_M_tag = _RopeRep::_S_substringfn; - } - virtual ~_Rope_RopeSubstring() - { _M_base->_M_unref_nonnil(); } -}; - -/* - * Self-destructing pointers to Rope_rep. - * These are not conventional smart pointers. Their - * only purpose in life is to ensure that unref is called - * on the pointer either at normal exit or if an exception - * is raised. It is the caller's responsibility to - * adjust reference counts when these pointers are initialized - * or assigned to. (This convention significantly reduces - * the number of potentially expensive reference count - * updates.) - */ -template -struct _Rope_self_destruct_ptr { - _Rope_RopeRep<_CharT,_Alloc>* _M_ptr; - ~_Rope_self_destruct_ptr() - { _Rope_RopeRep<_CharT,_Alloc>::_S_unref(_M_ptr); } -# ifdef _STLP_USE_EXCEPTIONS - _Rope_self_destruct_ptr() : _M_ptr(0) {} -# else - _Rope_self_destruct_ptr() {} -# endif - _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT,_Alloc>* __p) : _M_ptr(__p) {} - _Rope_RopeRep<_CharT,_Alloc>& operator*() { return *_M_ptr; } - _Rope_RopeRep<_CharT,_Alloc>* operator->() { return _M_ptr; } - operator _Rope_RopeRep<_CharT,_Alloc>*() { return _M_ptr; } - _Rope_self_destruct_ptr<_CharT, _Alloc>& - operator= (_Rope_RopeRep<_CharT,_Alloc>* __x) - { _M_ptr = __x; return *this; } -}; - -/* - * Dereferencing a nonconst iterator has to return something - * that behaves almost like a reference. It's not possible to - * return an actual reference since assignment requires extra - * work. And we would get into the same problems as with the - * CD2 version of basic_string. - */ -template -class _Rope_char_ref_proxy { - typedef _Rope_char_ref_proxy<_CharT, _Alloc> _Self; - friend class rope<_CharT,_Alloc>; - friend class _Rope_iterator<_CharT,_Alloc>; - friend class _Rope_char_ptr_proxy<_CharT,_Alloc>; - typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr; - typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep; - typedef rope<_CharT,_Alloc> _My_rope; - size_t _M_pos; - _CharT _M_current; - bool _M_current_valid; - _My_rope* _M_root; // The whole rope. -public: - _Rope_char_ref_proxy(_My_rope* __r, size_t __p) : - _M_pos(__p), _M_current_valid(false), _M_root(__r) {} - _Rope_char_ref_proxy(const _Self& __x) : - _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {} - // Don't preserve cache if the reference can outlive the - // expression. We claim that's not possible without calling - // a copy constructor or generating reference to a proxy - // reference. We declare the latter to have undefined semantics. - _Rope_char_ref_proxy(_My_rope* __r, size_t __p, _CharT __c) - : _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {} - inline operator _CharT () const; - _Self& operator= (_CharT __c); - _Rope_char_ptr_proxy<_CharT, _Alloc> operator& () const; - _Self& operator= (const _Self& __c) { - return operator=((_CharT)__c); - } -}; - -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER -template -inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, - _Rope_char_ref_proxy <_CharT, __Alloc > __b) { - _CharT __tmp = __a; - __a = __b; - __b = __tmp; -} -#else -// There is no really acceptable way to handle this. The default -// definition of swap doesn't work for proxy references. -// It can't really be made to work, even with ugly hacks, since -// the only unusual operation it uses is the copy constructor, which -// is needed for other purposes. We provide a macro for -// full specializations, and instantiate the most common case. -# define _ROPE_SWAP_SPECIALIZATION(_CharT, __Alloc) \ - inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, \ - _Rope_char_ref_proxy <_CharT, __Alloc > __b) { \ - _CharT __tmp = __a; \ - __a = __b; \ - __b = __tmp; \ - } - -_ROPE_SWAP_SPECIALIZATION(char, allocator) - -# ifndef _STLP_NO_WCHAR_T -_ROPE_SWAP_SPECIALIZATION(wchar_t, allocator) -# endif - -#endif /* !_STLP_FUNCTION_TMPL_PARTIAL_ORDER */ - -template -class _Rope_char_ptr_proxy { - // XXX this class should be rewritten. -public: - typedef _Rope_char_ptr_proxy<_CharT, _Alloc> _Self; - friend class _Rope_char_ref_proxy<_CharT,_Alloc>; - size_t _M_pos; - rope<_CharT,_Alloc>* _M_root; // The whole rope. - - _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x) - : _M_pos(__x._M_pos), _M_root(__x._M_root) {} - _Rope_char_ptr_proxy(const _Self& __x) - : _M_pos(__x._M_pos), _M_root(__x._M_root) {} - _Rope_char_ptr_proxy() {} - _Rope_char_ptr_proxy(_CharT* __x) : _M_pos(0), _M_root(0) { - _STLP_ASSERT(0 == __x) - } - _Self& operator= (const _Self& __x) { - _M_pos = __x._M_pos; - _M_root = __x._M_root; - return *this; - } - - _Rope_char_ref_proxy<_CharT,_Alloc> operator*() const { - return _Rope_char_ref_proxy<_CharT,_Alloc>(_M_root, _M_pos); - } -}; - - -/* - * Rope iterators: - * Unlike in the C version, we cache only part of the stack - * for rope iterators, since they must be efficiently copyable. - * When we run out of cache, we have to reconstruct the iterator - * value. - * Pointers from iterators are not included in reference counts. - * Iterators are assumed to be thread private. Ropes can - * be shared. - */ -template -class _Rope_iterator_base -/* : public random_access_iterator<_CharT, ptrdiff_t> */ -{ - friend class rope<_CharT,_Alloc>; - typedef _Rope_iterator_base<_CharT, _Alloc> _Self; - typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcat; -public: - typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep; - - enum { _S_path_cache_len = 4 }; // Must be <= 9 because of _M_path_direction. - enum { _S_iterator_buf_len = 15 }; - size_t _M_current_pos; - // The whole rope. - _RopeRep* _M_root; - // Starting position for current leaf - size_t _M_leaf_pos; - // Buffer possibly containing current char. - _CharT* _M_buf_start; - // Pointer to current char in buffer, != 0 ==> buffer valid. - _CharT* _M_buf_ptr; - // One past __last valid char in buffer. - _CharT* _M_buf_end; - - // What follows is the path cache. We go out of our - // way to make this compact. - // Path_end contains the bottom section of the path from - // the root to the current leaf. - struct { -# if defined (__BORLANDC__) && (__BORLANDC__ < 0x560) - _RopeRep const*_M_data[4]; -# else - _RopeRep const*_M_data[_S_path_cache_len]; -# endif - } _M_path_end; - // Last valid __pos in path_end; - // _M_path_end[0] ... _M_path_end[_M_leaf_index-1] - // point to concatenation nodes. - int _M_leaf_index; - // (_M_path_directions >> __i) & 1 is 1 - // if we got from _M_path_end[leaf_index - __i - 1] - // to _M_path_end[leaf_index - __i] by going to the - // __right. Assumes path_cache_len <= 9. - unsigned char _M_path_directions; - // Short buffer for surrounding chars. - // This is useful primarily for - // RopeFunctions. We put the buffer - // here to avoid locking in the - // multithreaded case. - // The cached path is generally assumed to be valid - // only if the buffer is valid. - struct { -# if defined (__BORLANDC__) && (__BORLANDC__ < 0x560) - _CharT _M_data[15]; -# else - _CharT _M_data[_S_iterator_buf_len]; -# endif - } _M_tmp_buf; - - // Set buffer contents given path cache. - static void _S_setbuf(_Rope_iterator_base<_CharT, _Alloc>& __x); - // Set buffer contents and path cache. - static void _S_setcache(_Rope_iterator_base<_CharT, _Alloc>& __x); - // As above, but assumes path cache is valid for previous posn. - static void _S_setcache_for_incr(_Rope_iterator_base<_CharT, _Alloc>& __x); - _Rope_iterator_base() {} - _Rope_iterator_base(_RopeRep* __root, size_t __pos) - : _M_current_pos(__pos),_M_root(__root), _M_buf_ptr(0) {} - void _M_incr(size_t __n); - void _M_decr(size_t __n); -public: - size_t index() const { return _M_current_pos; } -private: - void _M_copy_buf(const _Self& __x) { - _M_tmp_buf = __x._M_tmp_buf; - if (__x._M_buf_start == __x._M_tmp_buf._M_data) { - _M_buf_start = _M_tmp_buf._M_data; - _M_buf_end = _M_buf_start + (__x._M_buf_end - __x._M_buf_start); - _M_buf_ptr = _M_buf_start + (__x._M_buf_ptr - __x._M_buf_start); - } else { - _M_buf_end = __x._M_buf_end; - } - } - -public: - _Rope_iterator_base(const _Self& __x) : - _M_current_pos(__x._M_current_pos), - _M_root(__x._M_root), - _M_leaf_pos( __x._M_leaf_pos ), - _M_buf_start(__x._M_buf_start), - _M_buf_ptr(__x._M_buf_ptr), - _M_path_end(__x._M_path_end), - _M_leaf_index(__x._M_leaf_index), - _M_path_directions(__x._M_path_directions) - { - if (0 != __x._M_buf_ptr) { - _M_copy_buf(__x); - } - } - _Self& operator = (const _Self& __x) - { - _M_current_pos = __x._M_current_pos; - _M_root = __x._M_root; - _M_buf_start = __x._M_buf_start; - _M_buf_ptr = __x._M_buf_ptr; - _M_path_end = __x._M_path_end; - _M_leaf_index = __x._M_leaf_index; - _M_path_directions = __x._M_path_directions; - _M_leaf_pos = __x._M_leaf_pos; - if (0 != __x._M_buf_ptr) { - _M_copy_buf(__x); - } - return *this; - } -}; - -template class _Rope_iterator; - -template -class _Rope_const_iterator : public _Rope_iterator_base<_CharT,_Alloc> { - friend class rope<_CharT,_Alloc>; - typedef _Rope_const_iterator<_CharT, _Alloc> _Self; - typedef _Rope_iterator_base<_CharT,_Alloc> _Base; - // protected: -public: -# ifndef _STLP_HAS_NO_NAMESPACES - typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep; - // The one from the base class may not be directly visible. -# endif - _Rope_const_iterator(const _RopeRep* __root, size_t __pos): - _Rope_iterator_base<_CharT,_Alloc>(__CONST_CAST(_RopeRep*,__root), __pos) - // Only nonconst iterators modify root ref count - {} -public: - typedef _CharT reference; // Really a value. Returning a reference - // Would be a mess, since it would have - // to be included in refcount. - typedef const _CharT* pointer; - typedef _CharT value_type; - typedef ptrdiff_t difference_type; - typedef random_access_iterator_tag iterator_category; - -public: - _Rope_const_iterator() {} - _Rope_const_iterator(const _Self& __x) : - _Rope_iterator_base<_CharT,_Alloc>(__x) { } - _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x): - _Rope_iterator_base<_CharT,_Alloc>(__x) {} - _Rope_const_iterator(const rope<_CharT,_Alloc>& __r, size_t __pos) : - _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr._M_data, __pos) {} - _Self& operator= (const _Self& __x) { - _Base::operator=(__x); - return *this; - } - reference operator*() { - if (0 == this->_M_buf_ptr) -#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4 || __GNUC_MINOR__ >= 7)) - this->_S_setcache(*this); -#elif !defined (__DMC__) - _S_setcache(*this); -#else - { _Rope_iterator_base<_CharT, _Alloc>* __x = this; _S_setcache(*__x); } -#endif - return *(this->_M_buf_ptr); - } - _Self& operator++() - { - if ( this->_M_buf_ptr != 0 ) { - _CharT *__next = this->_M_buf_ptr + 1; - if ( __next < this->_M_buf_end ) { - this->_M_buf_ptr = __next; - ++this->_M_current_pos; - return *this; - } - } - this->_M_incr(1); - return *this; - } - _Self& operator+=(ptrdiff_t __n) { - if (__n >= 0) { - this->_M_incr(__n); - } else { - this->_M_decr(-__n); - } - return *this; - } - _Self& operator--() { - this->_M_decr(1); - return *this; - } - _Self& operator-=(ptrdiff_t __n) { - if (__n >= 0) { - this->_M_decr(__n); - } else { - this->_M_incr(-__n); - } - return *this; - } - _Self operator++(int) { - size_t __old_pos = this->_M_current_pos; - this->_M_incr(1); - return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos); - // This makes a subsequent dereference expensive. - // Perhaps we should instead copy the iterator - // if it has a valid cache? - } - _Self operator--(int) { - size_t __old_pos = this->_M_current_pos; - this->_M_decr(1); - return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos); - } - inline reference operator[](size_t __n); -}; - -template -class _Rope_iterator : public _Rope_iterator_base<_CharT,_Alloc> { - friend class rope<_CharT,_Alloc>; - typedef _Rope_iterator<_CharT, _Alloc> _Self; - typedef _Rope_iterator_base<_CharT,_Alloc> _Base; - typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep; - -public: - rope<_CharT,_Alloc>* _M_root_rope; - // root is treated as a cached version of this, - // and is used to detect changes to the underlying - // rope. - // Root is included in the reference count. - // This is necessary so that we can detect changes reliably. - // Unfortunately, it requires careful bookkeeping for the - // nonGC case. - _Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos); - - void _M_check(); -public: - typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference; - typedef _Rope_char_ref_proxy<_CharT,_Alloc>* pointer; - typedef _CharT value_type; - typedef ptrdiff_t difference_type; - typedef random_access_iterator_tag iterator_category; -public: - ~_Rope_iterator() { //*TY 5/6/00 - added dtor to balance reference count - _RopeRep::_S_unref(this->_M_root); - } - - rope<_CharT,_Alloc>& container() { return *_M_root_rope; } - _Rope_iterator() { - this->_M_root = 0; // Needed for reference counting. - } - _Rope_iterator(const _Self& __x) : - _Rope_iterator_base<_CharT,_Alloc>(__x) { - _M_root_rope = __x._M_root_rope; - _RopeRep::_S_ref(this->_M_root); - } - _Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos); - _Self& operator= (const _Self& __x) { - _RopeRep* __old = this->_M_root; - _RopeRep::_S_ref(__x._M_root); - _Base::operator=(__x); - _M_root_rope = __x._M_root_rope; - _RopeRep::_S_unref(__old); - return *this; - } - reference operator*() { - _M_check(); - if (0 == this->_M_buf_ptr) { - return reference(_M_root_rope, this->_M_current_pos); - } else { - return reference(_M_root_rope, this->_M_current_pos, *(this->_M_buf_ptr)); - } - } - _Self& operator++() { - this->_M_incr(1); - return *this; - } - _Self& operator+=(ptrdiff_t __n) { - if (__n >= 0) { - this->_M_incr(__n); - } else { - this->_M_decr(-__n); - } - return *this; - } - _Self& operator--() { - this->_M_decr(1); - return *this; - } - _Self& operator-=(ptrdiff_t __n) { - if (__n >= 0) { - this->_M_decr(__n); - } else { - this->_M_incr(-__n); - } - return *this; - } - _Self operator++(int) { - size_t __old_pos = this->_M_current_pos; - this->_M_incr(1); - return _Self(_M_root_rope, __old_pos); - } - _Self operator--(int) { - size_t __old_pos = this->_M_current_pos; - this->_M_decr(1); - return _Self(_M_root_rope, __old_pos); - } - reference operator[](ptrdiff_t __n) { - return reference(_M_root_rope, this->_M_current_pos + __n); - } -}; - -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES -template -inline random_access_iterator_tag -iterator_category(const _Rope_iterator<_CharT,_Alloc>&) { return random_access_iterator_tag();} -template -inline _CharT* value_type(const _Rope_iterator<_CharT,_Alloc>&) { return 0; } -template -inline ptrdiff_t* distance_type(const _Rope_iterator<_CharT,_Alloc>&) { return 0; } -template -inline random_access_iterator_tag -iterator_category(const _Rope_const_iterator<_CharT,_Alloc>&) { return random_access_iterator_tag(); } -template -inline _CharT* value_type(const _Rope_const_iterator<_CharT,_Alloc>&) { return 0; } -template -inline ptrdiff_t* distance_type(const _Rope_const_iterator<_CharT,_Alloc>&) { return 0; } -#endif /* _STLP_USE_OLD_HP_ITERATOR_QUERIES */ - -template -bool _S_apply_to_pieces(_CharConsumer& __c, - _Rope_RopeRep<_CharT, _Alloc> *__r, - size_t __begin, size_t __end); - // begin and end are assumed to be in range. - -template -class rope -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef rope<_CharT,_Alloc> _Self; -public: - typedef _CharT value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef _CharT const_reference; - typedef const _CharT* const_pointer; - typedef _Rope_iterator<_CharT,_Alloc> iterator; - typedef _Rope_const_iterator<_CharT,_Alloc> const_iterator; - typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference; - typedef _Rope_char_ptr_proxy<_CharT,_Alloc> pointer; - - friend class _Rope_iterator<_CharT,_Alloc>; - friend class _Rope_const_iterator<_CharT,_Alloc>; - friend struct _Rope_RopeRep<_CharT,_Alloc>; - friend class _Rope_iterator_base<_CharT,_Alloc>; - friend class _Rope_char_ptr_proxy<_CharT,_Alloc>; - friend class _Rope_char_ref_proxy<_CharT,_Alloc>; - friend struct _Rope_RopeSubstring<_CharT,_Alloc>; - - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - -protected: - typedef _CharT* _Cstrptr; - - static _CharT _S_empty_c_str[1]; - - enum { _S_copy_max = 23 }; - // For strings shorter than _S_copy_max, we copy to - // concatenate. - - typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep; - typedef typename _RopeRep::_IsBasicCharType _IsBasicCharType; - -public: - _STLP_FORCE_ALLOCATORS(_CharT, _Alloc) - typedef _Alloc allocator_type; - -public: - // The only data member of a rope: - _STLP_PRIV _STLP_alloc_proxy<_RopeRep*, _CharT, allocator_type> _M_tree_ptr; - -public: - allocator_type get_allocator() const { return allocator_type(_M_tree_ptr); } - -public: - typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcatenation; - typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf; - typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction; - typedef _Rope_RopeSubstring<_CharT,_Alloc> _RopeSubstring; - - // Retrieve a character at the indicated position. - static _CharT _S_fetch(_RopeRep* __r, size_type __pos); - - // Obtain a pointer to the character at the indicated position. - // The pointer can be used to change the character. - // If such a pointer cannot be produced, as is frequently the - // case, 0 is returned instead. - // (Returns nonzero only if all nodes in the path have a refcount - // of 1.) - static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos); - - static void _S_unref(_RopeRep* __t) { - _RopeRep::_S_unref(__t); - } - static void _S_ref(_RopeRep* __t) { - _RopeRep::_S_ref(__t); - } - - typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr; - - // _Result is counted in refcount. - static _RopeRep* _S_substring(_RopeRep* __base, - size_t __start, size_t __endp1); - - static _RopeRep* _S_concat_char_iter(_RopeRep* __r, - const _CharT* __iter, size_t __slen); - // Concatenate rope and char ptr, copying __s. - // Should really take an arbitrary iterator. - // Result is counted in refcount. - static _RopeRep* _S_destr_concat_char_iter(_RopeRep* __r, - const _CharT* __iter, size_t __slen); - // As above, but one reference to __r is about to be - // destroyed. Thus the pieces may be recycled if all - // relevent reference counts are 1. - - // General concatenation on _RopeRep. _Result - // has refcount of 1. Adjusts argument refcounts. - static _RopeRep* _S_concat_rep(_RopeRep* __left, _RopeRep* __right); - -public: -#if defined (_STLP_MEMBER_TEMPLATES) - template -#else - typedef _Rope_char_consumer<_CharT> _CharConsumer; -#endif - void apply_to_pieces(size_t __begin, size_t __end, - _CharConsumer& __c) const - { _S_apply_to_pieces(__c, _M_tree_ptr._M_data, __begin, __end); } - -protected: - - static size_t _S_rounded_up_size(size_t __n) - { return _RopeRep::_S_rounded_up_size(__n); } - - // Allocate and construct a RopeLeaf using the supplied allocator - // Takes ownership of s instead of copying. - static _RopeLeaf* _S_new_RopeLeaf(_CharT *__s, - size_t _p_size, allocator_type __a) { - _RopeLeaf* __space = _STLP_CREATE_ALLOCATOR(allocator_type, __a, - _RopeLeaf).allocate(1); - _STLP_TRY { - new(__space) _RopeLeaf(__s, _p_size, __a); - } - _STLP_UNWIND(_STLP_CREATE_ALLOCATOR(allocator_type,__a, - _RopeLeaf).deallocate(__space, 1)) - return __space; - } - - static _RopeConcatenation* _S_new_RopeConcatenation(_RopeRep* __left, _RopeRep* __right, - allocator_type __a) { - _RopeConcatenation* __space = _STLP_CREATE_ALLOCATOR(allocator_type, __a, - _RopeConcatenation).allocate(1); - return new(__space) _RopeConcatenation(__left, __right, __a); - } - - static _RopeFunction* _S_new_RopeFunction(char_producer<_CharT>* __f, - size_t _p_size, bool __d, allocator_type __a) { - _RopeFunction* __space = _STLP_CREATE_ALLOCATOR(allocator_type, __a, - _RopeFunction).allocate(1); - return new(__space) _RopeFunction(__f, _p_size, __d, __a); - } - - static _RopeSubstring* _S_new_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s, - size_t __l, allocator_type __a) { - _RopeSubstring* __space = _STLP_CREATE_ALLOCATOR(allocator_type, __a, - _RopeSubstring).allocate(1); - return new(__space) _RopeSubstring(__b, __s, __l, __a); - } - - static - _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s, - size_t _p_size, allocator_type __a) { - if (0 == _p_size) return 0; - - _CharT* __buf = _STLP_CREATE_ALLOCATOR(allocator_type,__a, _CharT).allocate(_S_rounded_up_size(_p_size)); - - _STLP_PRIV __ucopy_n(__s, _p_size, __buf); - _S_construct_null(__buf + _p_size); - - _STLP_TRY { - return _S_new_RopeLeaf(__buf, _p_size, __a); - } - _STLP_UNWIND(_RopeRep::_S_free_string(__buf, _p_size, __a)) - _STLP_RET_AFTER_THROW(0) - } - - - // Concatenation of nonempty strings. - // Always builds a concatenation node. - // Rebalances if the result is too deep. - // Result has refcount 1. - // Does not increment left and right ref counts even though - // they are referenced. - static _RopeRep* - _S_tree_concat(_RopeRep* __left, _RopeRep* __right); - - // Concatenation helper functions - static _RopeLeaf* - _S_leaf_concat_char_iter(_RopeLeaf* __r, - const _CharT* __iter, size_t __slen); - // Concatenate by copying leaf. - // should take an arbitrary iterator - // result has refcount 1. - static _RopeLeaf* _S_destr_leaf_concat_char_iter - (_RopeLeaf* __r, const _CharT* __iter, size_t __slen); - // A version that potentially clobbers __r if __r->_M_ref_count == 1. - - - // A helper function for exponentiating strings. - // This uses a nonstandard refcount convention. - // The result has refcount 0. - typedef _STLP_PRIV _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn; -#if !defined (__GNUC__) || (__GNUC__ < 3) - friend _Concat_fn; -#else - friend struct _STLP_PRIV _Rope_Concat_fn<_CharT,_Alloc>; -#endif - -public: - static size_t _S_char_ptr_len(const _CharT* __s) { - return char_traits<_CharT>::length(__s); - } - -public: /* for operators */ - rope(_RopeRep* __t, const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, __t) { } -private: - // Copy __r to the _CharT buffer. - // Returns __buffer + __r->_M_size._M_data. - // Assumes that buffer is uninitialized. - static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer); - - // Again, with explicit starting position and length. - // Assumes that buffer is uninitialized. - static _CharT* _S_flatten(_RopeRep* __r, - size_t __start, size_t __len, - _CharT* __buffer); - - // fbp : HP aCC prohibits access to protected min_len from within static methods ( ?? ) -public: - static const unsigned long _S_min_len[__ROPE_DEPTH_SIZE]; -protected: - static bool _S_is_balanced(_RopeRep* __r) - { return (__r->_M_size._M_data >= _S_min_len[__r->_M_depth]); } - - static bool _S_is_almost_balanced(_RopeRep* __r) { - return (__r->_M_depth == 0 || - __r->_M_size._M_data >= _S_min_len[__r->_M_depth - 1]); - } - - static bool _S_is_roughly_balanced(_RopeRep* __r) { - return (__r->_M_depth <= 1 || - __r->_M_size._M_data >= _S_min_len[__r->_M_depth - 2]); - } - - // Assumes the result is not empty. - static _RopeRep* _S_concat_and_set_balanced(_RopeRep* __left, - _RopeRep* __right) { - _RopeRep* __result = _S_concat_rep(__left, __right); - if (_S_is_balanced(__result)) __result->_M_is_balanced = true; - return __result; - } - - // The basic rebalancing operation. Logically copies the - // rope. The result has refcount of 1. The client will - // usually decrement the reference count of __r. - // The result is within height 2 of balanced by the above - // definition. - static _RopeRep* _S_balance(_RopeRep* __r); - - // Add all unbalanced subtrees to the forest of balanceed trees. - // Used only by balance. - static void _S_add_to_forest(_RopeRep*__r, _RopeRep** __forest); - - // Add __r to forest, assuming __r is already balanced. - static void _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest); - -#ifdef _STLP_DEBUG - // Print to stdout, exposing structure - static void _S_dump(_RopeRep* __r, int __indent = 0); -#endif - - // Return -1, 0, or 1 if __x < __y, __x == __y, or __x > __y resp. - static int _S_compare(const _RopeRep* __x, const _RopeRep* __y); - - void _STLP_FUNCTION_THROWS _M_throw_out_of_range() const; - - void _M_reset(_RopeRep* __r) { - //if (__r != _M_tree_ptr._M_data) { - _S_unref(_M_tree_ptr._M_data); - _M_tree_ptr._M_data = __r; - //} - } - -public: - bool empty() const { return 0 == _M_tree_ptr._M_data; } - - // Comparison member function. This is public only for those - // clients that need a ternary comparison. Others - // should use the comparison operators below. - int compare(const _Self& __y) const { - return _S_compare(_M_tree_ptr._M_data, __y._M_tree_ptr._M_data); - } - - rope(const _CharT* __s, const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, _S_RopeLeaf_from_unowned_char_ptr(__s, _S_char_ptr_len(__s),__a)) - {} - - rope(const _CharT* __s, size_t __len, - const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, (_S_RopeLeaf_from_unowned_char_ptr(__s, __len, __a))) - {} - - // Should perhaps be templatized with respect to the iterator type - // and use Sequence_buffer. (It should perhaps use sequence_buffer - // even now.) - rope(const _CharT *__s, const _CharT *__e, - const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, _S_RopeLeaf_from_unowned_char_ptr(__s, __e - __s, __a)) - {} - - rope(const const_iterator& __s, const const_iterator& __e, - const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, _S_substring(__s._M_root, __s._M_current_pos, - __e._M_current_pos)) - {} - - rope(const iterator& __s, const iterator& __e, - const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, _S_substring(__s._M_root, __s._M_current_pos, - __e._M_current_pos)) - {} - - rope(_CharT __c, const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, (_RopeRep*)0) { - _CharT* __buf = _M_tree_ptr.allocate(_S_rounded_up_size(1)); - - _Copy_Construct(__buf, __c); - _S_construct_null(__buf + 1); - - _STLP_TRY { - _M_tree_ptr._M_data = _S_new_RopeLeaf(__buf, 1, __a); - } - _STLP_UNWIND(_RopeRep::_S_free_string(__buf, 1, __a)) - } - - rope(size_t __n, _CharT __c, - const allocator_type& __a = allocator_type()): - _M_tree_ptr(__a, (_RopeRep*)0) { - if (0 == __n) - return; - - rope<_CharT,_Alloc> __result; -# define __exponentiate_threshold size_t(32) - _RopeRep* __remainder; - rope<_CharT,_Alloc> __remainder_rope; - - // gcc-2.7.2 bugs - typedef _STLP_PRIV _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn; - - size_t __exponent = __n / __exponentiate_threshold; - size_t __rest = __n % __exponentiate_threshold; - if (0 == __rest) { - __remainder = 0; - } else { - _CharT* __rest_buffer = _M_tree_ptr.allocate(_S_rounded_up_size(__rest)); - uninitialized_fill_n(__rest_buffer, __rest, __c); - _S_construct_null(__rest_buffer + __rest); - _STLP_TRY { - __remainder = _S_new_RopeLeaf(__rest_buffer, __rest, __a); - } - _STLP_UNWIND(_RopeRep::_S_free_string(__rest_buffer, __rest, __a)) - } - __remainder_rope._M_tree_ptr._M_data = __remainder; - if (__exponent != 0) { - _CharT* __base_buffer = _M_tree_ptr.allocate(_S_rounded_up_size(__exponentiate_threshold)); - _RopeLeaf* __base_leaf; - rope<_CharT,_Alloc> __base_rope; - uninitialized_fill_n(__base_buffer, __exponentiate_threshold, __c); - _S_construct_null(__base_buffer + __exponentiate_threshold); - _STLP_TRY { - __base_leaf = _S_new_RopeLeaf(__base_buffer, - __exponentiate_threshold, __a); - } - _STLP_UNWIND(_RopeRep::_S_free_string(__base_buffer, - __exponentiate_threshold, __a)) - __base_rope._M_tree_ptr._M_data = __base_leaf; - if (1 == __exponent) { - __result = __base_rope; - // One each for base_rope and __result - //_STLP_ASSERT(2 == __result._M_tree_ptr._M_data->_M_ref_count) - } else { - __result = _STLP_PRIV __power(__base_rope, __exponent, _Concat_fn()); - } - if (0 != __remainder) { - __result += __remainder_rope; - } - } else { - __result = __remainder_rope; - } - _M_tree_ptr._M_data = __result._M_tree_ptr._M_data; - _M_tree_ptr._M_data->_M_ref_nonnil(); -# undef __exponentiate_threshold - } - - rope(const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, (_RopeRep*)0) {} - - // Construct a rope from a function that can compute its members - rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn, - const allocator_type& __a = allocator_type()) - : _M_tree_ptr(__a, (_RopeRep*)0) { - _M_tree_ptr._M_data = (0 == __len) ? - 0 : _S_new_RopeFunction(__fn, __len, __delete_fn, __a); - } - - rope(const _Self& __x) - : _M_tree_ptr(__x._M_tree_ptr, __x._M_tree_ptr._M_data) { - _S_ref(_M_tree_ptr._M_data); - } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - rope(__move_source<_Self> __src) - : _M_tree_ptr(__src.get()._M_tree_ptr, __src.get()._M_tree_ptr._M_data) { - __src.get()._M_tree_ptr._M_data = 0; - } -#endif - - ~rope() { - _S_unref(_M_tree_ptr._M_data); - } - - _Self& operator=(const _Self& __x) { - _STLP_ASSERT(get_allocator() == __x.get_allocator()) - _S_ref(__x._M_tree_ptr._M_data); - _M_reset(__x._M_tree_ptr._M_data); - return *this; - } - - void clear() { - _S_unref(_M_tree_ptr._M_data); - _M_tree_ptr._M_data = 0; - } - void push_back(_CharT __x) { - _M_reset(_S_destr_concat_char_iter(_M_tree_ptr._M_data, &__x, 1)); - } - - void pop_back() { - _RopeRep* __old = _M_tree_ptr._M_data; - _M_tree_ptr._M_data = - _S_substring(_M_tree_ptr._M_data, 0, _M_tree_ptr._M_data->_M_size._M_data - 1); - _S_unref(__old); - } - - _CharT back() const { - return _S_fetch(_M_tree_ptr._M_data, _M_tree_ptr._M_data->_M_size._M_data - 1); - } - - void push_front(_CharT __x) { - _RopeRep* __old = _M_tree_ptr._M_data; - _RopeRep* __left = - _S_RopeLeaf_from_unowned_char_ptr(&__x, 1, _M_tree_ptr); - _STLP_TRY { - _M_tree_ptr._M_data = _S_concat_rep(__left, _M_tree_ptr._M_data); - _S_unref(__old); - _S_unref(__left); - } - _STLP_UNWIND(_S_unref(__left)) - } - - void pop_front() { - _RopeRep* __old = _M_tree_ptr._M_data; - _M_tree_ptr._M_data = _S_substring(_M_tree_ptr._M_data, 1, _M_tree_ptr._M_data->_M_size._M_data); - _S_unref(__old); - } - - _CharT front() const { - return _S_fetch(_M_tree_ptr._M_data, 0); - } - - void balance() { - _RopeRep* __old = _M_tree_ptr._M_data; - _M_tree_ptr._M_data = _S_balance(_M_tree_ptr._M_data); - _S_unref(__old); - } - - void copy(_CharT* __buffer) const { - _STLP_STD::_Destroy_Range(__buffer, __buffer + size()); - _S_flatten(_M_tree_ptr._M_data, __buffer); - } - - /* - * This is the copy function from the standard, but - * with the arguments reordered to make it consistent with the - * rest of the interface. - * Note that this guaranteed not to compile if the draft standard - * order is assumed. - */ - size_type copy(size_type __pos, size_type __n, _CharT* __buffer) const { - size_t _p_size = size(); - size_t __len = (__pos + __n > _p_size? _p_size - __pos : __n); - - _STLP_STD::_Destroy_Range(__buffer, __buffer + __len); - _S_flatten(_M_tree_ptr._M_data, __pos, __len, __buffer); - return __len; - } - -# ifdef _STLP_DEBUG - // Print to stdout, exposing structure. May be useful for - // performance debugging. - void dump() { - _S_dump(_M_tree_ptr._M_data); - } -# endif - - // Convert to 0 terminated string in new allocated memory. - // Embedded 0s in the input do not terminate the copy. - const _CharT* c_str() const; - - // As above, but also use the flattened representation as the - // the new rope representation. - const _CharT* replace_with_c_str(); - - // Reclaim memory for the c_str generated flattened string. - // Intentionally undocumented, since it's hard to say when this - // is safe for multiple threads. - void delete_c_str () { - if (0 == _M_tree_ptr._M_data) return; - if (_RopeRep::_S_leaf == _M_tree_ptr._M_data->_M_tag && - ((_RopeLeaf*)_M_tree_ptr._M_data)->_M_data == - _M_tree_ptr._M_data->_M_c_string) { - // Representation shared - return; - } - _M_tree_ptr._M_data->_M_free_c_string(); - _M_tree_ptr._M_data->_M_c_string = 0; - } - - _CharT operator[] (size_type __pos) const { - return _S_fetch(_M_tree_ptr._M_data, __pos); - } - - _CharT at(size_type __pos) const { - if (__pos >= size()) _M_throw_out_of_range(); - return (*this)[__pos]; - } - - const_iterator begin() const { - return(const_iterator(_M_tree_ptr._M_data, 0)); - } - - // An easy way to get a const iterator from a non-const container. - const_iterator const_begin() const { - return(const_iterator(_M_tree_ptr._M_data, 0)); - } - - const_iterator end() const { - return(const_iterator(_M_tree_ptr._M_data, size())); - } - - const_iterator const_end() const { - return(const_iterator(_M_tree_ptr._M_data, size())); - } - - size_type size() const { - return(0 == _M_tree_ptr._M_data? 0 : _M_tree_ptr._M_data->_M_size._M_data); - } - - size_type length() const { - return size(); - } - - size_type max_size() const { - return _S_min_len[__ROPE_MAX_DEPTH-1] - 1; - // Guarantees that the result can be sufficiently - // balanced. Longer ropes will probably still work, - // but it's harder to make guarantees. - } - - const_reverse_iterator rbegin() const { - return const_reverse_iterator(end()); - } - - const_reverse_iterator const_rbegin() const { - return const_reverse_iterator(end()); - } - - const_reverse_iterator rend() const { - return const_reverse_iterator(begin()); - } - - const_reverse_iterator const_rend() const { - return const_reverse_iterator(begin()); - } - // The symmetric cases are intentionally omitted, since they're presumed - // to be less common, and we don't handle them as well. - - // The following should really be templatized. - // The first argument should be an input iterator or - // forward iterator with value_type _CharT. - _Self& append(const _CharT* __iter, size_t __n) { - _M_reset(_S_destr_concat_char_iter(_M_tree_ptr._M_data, __iter, __n)); - return *this; - } - - _Self& append(const _CharT* __c_string) { - size_t __len = _S_char_ptr_len(__c_string); - append(__c_string, __len); - return *this; - } - - _Self& append(const _CharT* __s, const _CharT* __e) { - _M_reset(_S_destr_concat_char_iter(_M_tree_ptr._M_data, __s, __e - __s)); - return *this; - } - - _Self& append(const_iterator __s, const_iterator __e) { - _STLP_ASSERT(__s._M_root == __e._M_root) - _STLP_ASSERT(get_allocator() == __s._M_root->get_allocator()) - _Self_destruct_ptr __appendee(_S_substring(__s._M_root, __s._M_current_pos, __e._M_current_pos)); - _M_reset(_S_concat_rep(_M_tree_ptr._M_data, (_RopeRep*)__appendee)); - return *this; - } - - _Self& append(_CharT __c) { - _M_reset(_S_destr_concat_char_iter(_M_tree_ptr._M_data, &__c, 1)); - return *this; - } - - _Self& append() { return append(_CharT()); } // XXX why? - - _Self& append(const _Self& __y) { - _STLP_ASSERT(__y.get_allocator() == get_allocator()) - _M_reset(_S_concat_rep(_M_tree_ptr._M_data, __y._M_tree_ptr._M_data)); - return *this; - } - - _Self& append(size_t __n, _CharT __c) { - rope<_CharT,_Alloc> __last(__n, __c); - return append(__last); - } - - void swap(_Self& __b) { - _M_tree_ptr.swap(__b._M_tree_ptr); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -protected: - // Result is included in refcount. - static _RopeRep* replace(_RopeRep* __old, size_t __pos1, - size_t __pos2, _RopeRep* __r) { - if (0 == __old) { _S_ref(__r); return __r; } - _Self_destruct_ptr __left(_S_substring(__old, 0, __pos1)); - _Self_destruct_ptr __right(_S_substring(__old, __pos2, __old->_M_size._M_data)); - _STLP_MPWFIX_TRY //*TY 06/01/2000 - - _RopeRep* __result; - - if (0 == __r) { - __result = _S_concat_rep(__left, __right); - } else { - _STLP_ASSERT(__old->get_allocator() == __r->get_allocator()) - _Self_destruct_ptr __left_result(_S_concat_rep(__left, __r)); - __result = _S_concat_rep(__left_result, __right); - } - return __result; - _STLP_MPWFIX_CATCH //*TY 06/01/2000 - - } - -public: - void insert(size_t __p, const _Self& __r) { - if (__p > size()) _M_throw_out_of_range(); - _STLP_ASSERT(get_allocator() == __r.get_allocator()) - _M_reset(replace(_M_tree_ptr._M_data, __p, __p, __r._M_tree_ptr._M_data)); - } - - void insert(size_t __p, size_t __n, _CharT __c) { - rope<_CharT,_Alloc> __r(__n,__c); - insert(__p, __r); - } - - void insert(size_t __p, const _CharT* __i, size_t __n) { - if (__p > size()) _M_throw_out_of_range(); - _Self_destruct_ptr __left(_S_substring(_M_tree_ptr._M_data, 0, __p)); - _Self_destruct_ptr __right(_S_substring(_M_tree_ptr._M_data, __p, size())); - _Self_destruct_ptr __left_result( - _S_concat_char_iter(__left, __i, __n)); - // _S_ destr_concat_char_iter should be safe here. - // But as it stands it's probably not a win, since __left - // is likely to have additional references. - _M_reset(_S_concat_rep(__left_result, __right)); - } - - void insert(size_t __p, const _CharT* __c_string) { - insert(__p, __c_string, _S_char_ptr_len(__c_string)); - } - - void insert(size_t __p, _CharT __c) { - insert(__p, &__c, 1); - } - - void insert(size_t __p) { - _CharT __c = _CharT(); - insert(__p, &__c, 1); - } - - void insert(size_t __p, const _CharT* __i, const _CharT* __j) { - _Self __r(__i, __j); - insert(__p, __r); - } - - void insert(size_t __p, const const_iterator& __i, - const const_iterator& __j) { - _Self __r(__i, __j); - insert(__p, __r); - } - - void insert(size_t __p, const iterator& __i, - const iterator& __j) { - _Self __r(__i, __j); - insert(__p, __r); - } - - // (position, length) versions of replace operations: - void replace(size_t __p, size_t __n, const _Self& __r) { - if (__p > size()) _M_throw_out_of_range(); - _M_reset(replace(_M_tree_ptr._M_data, __p, __p + __n, __r._M_tree_ptr._M_data)); - } - - void replace(size_t __p, size_t __n, - const _CharT* __i, size_t __i_len) { - _Self __r(__i, __i_len); - replace(__p, __n, __r); - } - - void replace(size_t __p, size_t __n, _CharT __c) { - _Self __r(__c); - replace(__p, __n, __r); - } - - void replace(size_t __p, size_t __n, const _CharT* __c_string) { - _Self __r(__c_string); - replace(__p, __n, __r); - } - - void replace(size_t __p, size_t __n, - const _CharT* __i, const _CharT* __j) { - _Self __r(__i, __j); - replace(__p, __n, __r); - } - - void replace(size_t __p, size_t __n, - const const_iterator& __i, const const_iterator& __j) { - _Self __r(__i, __j); - replace(__p, __n, __r); - } - - void replace(size_t __p, size_t __n, - const iterator& __i, const iterator& __j) { - _Self __r(__i, __j); - replace(__p, __n, __r); - } - - // Single character variants: - void replace(size_t __p, _CharT __c) { - if (__p > size()) _M_throw_out_of_range(); - iterator __i(this, __p); - *__i = __c; - } - - void replace(size_t __p, const _Self& __r) { - replace(__p, 1, __r); - } - - void replace(size_t __p, const _CharT* __i, size_t __i_len) { - replace(__p, 1, __i, __i_len); - } - - void replace(size_t __p, const _CharT* __c_string) { - replace(__p, 1, __c_string); - } - - void replace(size_t __p, const _CharT* __i, const _CharT* __j) { - replace(__p, 1, __i, __j); - } - - void replace(size_t __p, const const_iterator& __i, - const const_iterator& __j) { - replace(__p, 1, __i, __j); - } - - void replace(size_t __p, const iterator& __i, - const iterator& __j) { - replace(__p, 1, __i, __j); - } - - // Erase, (position, size) variant. - void erase(size_t __p, size_t __n) { - if (__p > size()) _M_throw_out_of_range(); - _M_reset(replace(_M_tree_ptr._M_data, __p, __p + __n, 0)); - } - - // Erase, single character - void erase(size_t __p) { - erase(__p, __p + 1); - } - - // Insert, iterator variants. - iterator insert(const iterator& __p, const _Self& __r) - { insert(__p.index(), __r); return __p; } - iterator insert(const iterator& __p, size_t __n, _CharT __c) - { insert(__p.index(), __n, __c); return __p; } - iterator insert(const iterator& __p, _CharT __c) - { insert(__p.index(), __c); return __p; } - iterator insert(const iterator& __p ) - { insert(__p.index()); return __p; } - iterator insert(const iterator& __p, const _CharT* c_string) - { insert(__p.index(), c_string); return __p; } - iterator insert(const iterator& __p, const _CharT* __i, size_t __n) - { insert(__p.index(), __i, __n); return __p; } - iterator insert(const iterator& __p, const _CharT* __i, - const _CharT* __j) - { insert(__p.index(), __i, __j); return __p; } - iterator insert(const iterator& __p, - const const_iterator& __i, const const_iterator& __j) - { insert(__p.index(), __i, __j); return __p; } - iterator insert(const iterator& __p, - const iterator& __i, const iterator& __j) - { insert(__p.index(), __i, __j); return __p; } - - // Replace, range variants. - void replace(const iterator& __p, const iterator& __q, - const _Self& __r) - { replace(__p.index(), __q.index() - __p.index(), __r); } - void replace(const iterator& __p, const iterator& __q, _CharT __c) - { replace(__p.index(), __q.index() - __p.index(), __c); } - void replace(const iterator& __p, const iterator& __q, - const _CharT* __c_string) - { replace(__p.index(), __q.index() - __p.index(), __c_string); } - void replace(const iterator& __p, const iterator& __q, - const _CharT* __i, size_t __n) - { replace(__p.index(), __q.index() - __p.index(), __i, __n); } - void replace(const iterator& __p, const iterator& __q, - const _CharT* __i, const _CharT* __j) - { replace(__p.index(), __q.index() - __p.index(), __i, __j); } - void replace(const iterator& __p, const iterator& __q, - const const_iterator& __i, const const_iterator& __j) - { replace(__p.index(), __q.index() - __p.index(), __i, __j); } - void replace(const iterator& __p, const iterator& __q, - const iterator& __i, const iterator& __j) - { replace(__p.index(), __q.index() - __p.index(), __i, __j); } - - // Replace, iterator variants. - void replace(const iterator& __p, const _Self& __r) - { replace(__p.index(), __r); } - void replace(const iterator& __p, _CharT __c) - { replace(__p.index(), __c); } - void replace(const iterator& __p, const _CharT* __c_string) - { replace(__p.index(), __c_string); } - void replace(const iterator& __p, const _CharT* __i, size_t __n) - { replace(__p.index(), __i, __n); } - void replace(const iterator& __p, const _CharT* __i, const _CharT* __j) - { replace(__p.index(), __i, __j); } - void replace(const iterator& __p, const_iterator __i, - const_iterator __j) - { replace(__p.index(), __i, __j); } - void replace(const iterator& __p, iterator __i, iterator __j) - { replace(__p.index(), __i, __j); } - - // Iterator and range variants of erase - iterator erase(const iterator& __p, const iterator& __q) { - size_t __p_index = __p.index(); - erase(__p_index, __q.index() - __p_index); - return iterator(this, __p_index); - } - iterator erase(const iterator& __p) { - size_t __p_index = __p.index(); - erase(__p_index, 1); - return iterator(this, __p_index); - } - - _Self substr(size_t __start, size_t __len = 1) const { - if (__start > size()) _M_throw_out_of_range(); - return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __start, __start + __len)); - } - - _Self substr(iterator __start, iterator __end) const { - return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __start.index(), __end.index())); - } - - _Self substr(iterator __start) const { - size_t __pos = __start.index(); - return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __pos, __pos + 1)); - } - - _Self substr(const_iterator __start, const_iterator __end) const { - // This might eventually take advantage of the cache in the - // iterator. - return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __start.index(), __end.index())); - } - - rope<_CharT,_Alloc> substr(const_iterator __start) { - size_t __pos = __start.index(); - return rope<_CharT,_Alloc>(_S_substring(_M_tree_ptr._M_data, __pos, __pos + 1)); - } - -#include - - size_type find(const _Self& __s, size_type __pos = 0) const { - if (__pos >= size()) -# ifndef _STLP_OLD_ROPE_SEMANTICS - return npos; -# else - return size(); -# endif - - size_type __result_pos; - const_iterator __result = _STLP_STD::search(const_begin() + (ptrdiff_t)__pos, const_end(), __s.begin(), __s.end() ); - __result_pos = __result.index(); -# ifndef _STLP_OLD_ROPE_SEMANTICS - if (__result_pos == size()) __result_pos = npos; -# endif - return __result_pos; - } - size_type find(_CharT __c, size_type __pos = 0) const; - size_type find(const _CharT* __s, size_type __pos = 0) const { - size_type __result_pos; - const_iterator __result = _STLP_STD::search(const_begin() + (ptrdiff_t)__pos, const_end(), - __s, __s + _S_char_ptr_len(__s)); - __result_pos = __result.index(); -# ifndef _STLP_OLD_ROPE_SEMANTICS - if (__result_pos == size()) __result_pos = npos; -# endif - return __result_pos; - } - - iterator mutable_begin() { - return(iterator(this, 0)); - } - - iterator mutable_end() { - return(iterator(this, size())); - } - - reverse_iterator mutable_rbegin() { - return reverse_iterator(mutable_end()); - } - - reverse_iterator mutable_rend() { - return reverse_iterator(mutable_begin()); - } - - reference mutable_reference_at(size_type __pos) { - return reference(this, __pos); - } - -# ifdef __STD_STUFF - reference operator[] (size_type __pos) { - return reference(this, __pos); - } - - reference at(size_type __pos) { - if (__pos >= size()) _M_throw_out_of_range(); - return (*this)[__pos]; - } - - void resize(size_type, _CharT) {} - void resize(size_type) {} - void reserve(size_type = 0) {} - size_type capacity() const { - return max_size(); - } - - // Stuff below this line is dangerous because it's error prone. - // I would really like to get rid of it. - // copy function with funny arg ordering. - size_type copy(_CharT* __buffer, size_type __n, - size_type __pos = 0) const { - return copy(__pos, __n, __buffer); - } - - iterator end() { return mutable_end(); } - - iterator begin() { return mutable_begin(); } - - reverse_iterator rend() { return mutable_rend(); } - - reverse_iterator rbegin() { return mutable_rbegin(); } - -# else - - const_iterator end() { return const_end(); } - - const_iterator begin() { return const_begin(); } - - const_reverse_iterator rend() { return const_rend(); } - - const_reverse_iterator rbegin() { return const_rbegin(); } - -# endif -}; //class rope - -#if defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96) -template -const size_t rope<_CharT, _Alloc>::npos = ~(size_t) 0; -#endif - -template -inline _CharT -_Rope_const_iterator< _CharT, _Alloc>::operator[](size_t __n) -{ return rope<_CharT,_Alloc>::_S_fetch(this->_M_root, this->_M_current_pos + __n); } - -template -inline bool operator== (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) { - return (__x._M_current_pos == __y._M_current_pos && - __x._M_root == __y._M_root); -} - -template -inline bool operator< (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) -{ return (__x._M_current_pos < __y._M_current_pos); } - -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE - -template -inline bool operator!= (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) -{ return !(__x == __y); } - -template -inline bool operator> (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) -{ return __y < __x; } - -template -inline bool operator<= (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) -{ return !(__y < __x); } - -template -inline bool operator>= (const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) -{ return !(__x < __y); } - -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -template -inline ptrdiff_t operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x, - const _Rope_const_iterator<_CharT,_Alloc>& __y) -{ return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos; } - -#if !defined( __MWERKS__ ) || __MWERKS__ >= 0x2000 // dwa 8/21/97 - "ambiguous access to overloaded function" bug. -template -inline _Rope_const_iterator<_CharT,_Alloc> -operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) -{ return _Rope_const_iterator<_CharT,_Alloc>(__x._M_root, __x._M_current_pos - __n); } -# endif - -template -inline _Rope_const_iterator<_CharT,_Alloc> -operator+(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) -{ return _Rope_const_iterator<_CharT,_Alloc>(__x._M_root, __x._M_current_pos + __n); } - -template -inline _Rope_const_iterator<_CharT,_Alloc> -operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT,_Alloc>& __x) -{ return _Rope_const_iterator<_CharT,_Alloc>(__x._M_root, __x._M_current_pos + __n); } - -template -inline bool operator== (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) { - return (__x._M_current_pos == __y._M_current_pos && - __x._M_root_rope == __y._M_root_rope); -} - -template -inline bool operator< (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) -{ return (__x._M_current_pos < __y._M_current_pos); } - -#if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) -template -inline bool operator!= (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) -{ return !(__x == __y); } - -template -inline bool operator> (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) -{ return __y < __x; } - -template -inline bool operator<= (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) -{ return !(__y < __x); } - -template -inline bool operator>= (const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) -{ return !(__x < __y); } -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -template -inline ptrdiff_t operator-(const _Rope_iterator<_CharT,_Alloc>& __x, - const _Rope_iterator<_CharT,_Alloc>& __y) -{ return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos; } - -#if !defined( __MWERKS__ ) || __MWERKS__ >= 0x2000 // dwa 8/21/97 - "ambiguous access to overloaded function" bug. -template -inline _Rope_iterator<_CharT,_Alloc> -operator-(const _Rope_iterator<_CharT,_Alloc>& __x, - ptrdiff_t __n) { - return _Rope_iterator<_CharT,_Alloc>(__x._M_root_rope, __x._M_current_pos - __n); -} -# endif - -template -inline _Rope_iterator<_CharT,_Alloc> -operator+(const _Rope_iterator<_CharT,_Alloc>& __x, - ptrdiff_t __n) { - return _Rope_iterator<_CharT,_Alloc>(__x._M_root_rope, __x._M_current_pos + __n); -} - -template -inline _Rope_iterator<_CharT,_Alloc> -operator+(ptrdiff_t __n, const _Rope_iterator<_CharT,_Alloc>& __x) { - return _Rope_iterator<_CharT,_Alloc>(__x._M_root_rope, __x._M_current_pos + __n); -} - -template -inline rope<_CharT,_Alloc> -operator+ (const rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) { - _STLP_ASSERT(__left.get_allocator() == __right.get_allocator()) - return rope<_CharT,_Alloc>(rope<_CharT,_Alloc>::_S_concat_rep(__left._M_tree_ptr._M_data, __right._M_tree_ptr._M_data)); - // Inlining this should make it possible to keep __left and __right in registers. -} - -template -inline rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) { - __left.append(__right); - return __left; -} - -template -inline rope<_CharT,_Alloc> -operator+ (const rope<_CharT,_Alloc>& __left, - const _CharT* __right) { - size_t __rlen = rope<_CharT,_Alloc>::_S_char_ptr_len(__right); - return rope<_CharT,_Alloc>(rope<_CharT,_Alloc>::_S_concat_char_iter(__left._M_tree_ptr._M_data, __right, __rlen)); -} - -template -inline rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, - const _CharT* __right) { - __left.append(__right); - return __left; -} - -template -inline rope<_CharT,_Alloc> -operator+ (const rope<_CharT,_Alloc>& __left, _CharT __right) { - return rope<_CharT,_Alloc>(rope<_CharT,_Alloc>::_S_concat_char_iter(__left._M_tree_ptr._M_data, &__right, 1)); -} - -template -inline rope<_CharT,_Alloc>& -operator+= (rope<_CharT,_Alloc>& __left, _CharT __right) { - __left.append(__right); - return __left; -} - -template -inline bool -operator< (const rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) { - return __left.compare(__right) < 0; -} - -template -inline bool -operator== (const rope<_CharT,_Alloc>& __left, - const rope<_CharT,_Alloc>& __right) { - return __left.compare(__right) == 0; -} - -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE - -template -inline bool -operator!= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) { - return !(__x == __y); -} - -template -inline bool -operator> (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) { - return __y < __x; -} - -template -inline bool -operator<= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) { - return !(__y < __x); -} - -template -inline bool -operator>= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) { - return !(__x < __y); -} - -template -inline bool operator!= (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x, - const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) { - return !(__x == __y); -} - -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -template -inline bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x, - const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) { - return (__x._M_pos == __y._M_pos && __x._M_root == __y._M_root); -} - -#if !defined (_STLP_USE_NO_IOSTREAMS) -template -basic_ostream<_CharT, _Traits>& operator<< (basic_ostream<_CharT, _Traits>& __o, - const rope<_CharT, _Alloc>& __r); -#endif - -typedef rope > crope; -#if defined (_STLP_HAS_WCHAR_T) -typedef rope > wrope; -#endif - -inline crope::reference __mutable_reference_at(crope& __c, size_t __i) -{ return __c.mutable_reference_at(__i); } - -#if defined (_STLP_HAS_WCHAR_T) -inline wrope::reference __mutable_reference_at(wrope& __c, size_t __i) -{ return __c.mutable_reference_at(__i); } -#endif - -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -template -inline void swap(rope<_CharT,_Alloc>& __x, rope<_CharT,_Alloc>& __y) -{ __x.swap(__y); } -#else - -inline void swap(crope& __x, crope& __y) { __x.swap(__y); } -# ifdef _STLP_HAS_WCHAR_T // dwa 8/21/97 -inline void swap(wrope& __x, wrope& __y) { __x.swap(__y); } -# endif - -#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */ - - -// Hash functions should probably be revisited later: -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(const crope& __str) const { - size_t _p_size = __str.size(); - - if (0 == _p_size) return 0; - return 13*__str[0] + 5*__str[_p_size - 1] + _p_size; - } -}; - -#if defined (_STLP_HAS_WCHAR_T) // dwa 8/21/97 -_STLP_TEMPLATE_NULL struct hash { - size_t operator()(const wrope& __str) const { - size_t _p_size = __str.size(); - - if (0 == _p_size) return 0; - return 13*__str[0] + 5*__str[_p_size - 1] + _p_size; - } -}; -#endif - -#if (!defined (_STLP_MSVC) || (_STLP_MSVC >= 1310)) -// I couldn't get this to work with VC++ -template -# if defined (__DMC__) -extern -# endif -void _Rope_rotate(_Rope_iterator<_CharT, _Alloc> __first, - _Rope_iterator<_CharT, _Alloc> __middle, - _Rope_iterator<_CharT, _Alloc> __last); - -inline void rotate(_Rope_iterator > __first, - _Rope_iterator > __middle, - _Rope_iterator > __last) -{ _Rope_rotate(__first, __middle, __last); } -#endif - -template -inline _Rope_char_ref_proxy<_CharT, _Alloc>::operator _CharT () const { - if (_M_current_valid) { - return _M_current; - } else { - return _My_rope::_S_fetch(_M_root->_M_tree_ptr._M_data, _M_pos); - } -} - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > { - typedef __true_type implemented; - //Completness depends on the allocator: - typedef typename __move_traits<_Alloc>::complete complete; -}; -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_ROPE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_set.h b/build/stlport/stlport/stl/_set.h deleted file mode 100644 index a8f68620eaee..000000000000 --- a/build/stlport/stlport/stl/_set.h +++ /dev/null @@ -1,412 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_SET_H -#define _STLP_INTERNAL_SET_H - -#ifndef _STLP_INTERNAL_TREE_H -# include -#endif - -#if !defined (_STLP_USE_PTR_SPECIALIZATIONS) - -_STLP_BEGIN_NAMESPACE - -//Specific iterator traits creation -_STLP_CREATE_ITERATOR_TRAITS(SetTraitsT, Const_traits) - -template ), - _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Key>) > -class set -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef set<_Key, _Compare, _Alloc> _Self; -public: -// typedefs: - typedef _Key key_type; - typedef _Key value_type; - typedef _Compare key_compare; - typedef _Compare value_compare; - -private: - //Specific iterator traits creation - typedef _STLP_PRIV _SetTraitsT _SetTraits; - -public: - //Following typedef have to be public for __move_traits specialization. - typedef _STLP_PRIV _Rb_tree, - _SetTraits, _Alloc> _Rep_type; - - typedef typename _Rep_type::pointer pointer; - typedef typename _Rep_type::const_pointer const_pointer; - typedef typename _Rep_type::reference reference; - typedef typename _Rep_type::const_reference const_reference; - typedef typename _Rep_type::iterator iterator; - typedef typename _Rep_type::const_iterator const_iterator; - typedef typename _Rep_type::reverse_iterator reverse_iterator; - typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; - typedef typename _Rep_type::size_type size_type; - typedef typename _Rep_type::difference_type difference_type; - typedef typename _Rep_type::allocator_type allocator_type; - -private: - _Rep_type _M_t; // red-black tree representing set - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - - // allocation/deallocation -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit set(const _Compare& __comp = _Compare(), - const allocator_type& __a = allocator_type()) -#else - set() - : _M_t(_Compare(), allocator_type()) {} - explicit set(const _Compare& __comp) - : _M_t(__comp, allocator_type()) {} - set(const _Compare& __comp, const allocator_type& __a) -#endif - : _M_t(__comp, __a) {} - -#if defined (_STLP_MEMBER_TEMPLATES) - template - set(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_unique(__first, __last); } - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - set(_InputIterator __first, _InputIterator __last, const _Compare& __comp) - : _M_t(__comp, allocator_type()) { _M_t.insert_unique(__first, __last); } -# endif - template - set(_InputIterator __first, _InputIterator __last, const _Compare& __comp, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); } -#else - set(const value_type* __first, const value_type* __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_unique(__first, __last); } - - set(const value_type* __first, - const value_type* __last, const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); } - - set(const_iterator __first, const_iterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_unique(__first, __last); } - - set(const_iterator __first, const_iterator __last, const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { _M_t.insert_unique(__first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - set(const _Self& __x) : _M_t(__x._M_t) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - set(__move_source<_Self> src) - : _M_t(__move_source<_Rep_type>(src.get()._M_t)) {} -#endif - - _Self& operator=(const _Self& __x) { - _M_t = __x._M_t; - return *this; - } - - // accessors: - key_compare key_comp() const { return _M_t.key_comp(); } - value_compare value_comp() const { return _M_t.key_comp(); } - allocator_type get_allocator() const { return _M_t.get_allocator(); } - - iterator begin() { return _M_t.begin(); } - iterator end() { return _M_t.end(); } - const_iterator begin() const { return _M_t.begin(); } - const_iterator end() const { return _M_t.end(); } - reverse_iterator rbegin() { return _M_t.rbegin(); } - reverse_iterator rend() { return _M_t.rend(); } - const_reverse_iterator rbegin() const { return _M_t.rbegin(); } - const_reverse_iterator rend() const { return _M_t.rend(); } - bool empty() const { return _M_t.empty(); } - size_type size() const { return _M_t.size(); } - size_type max_size() const { return _M_t.max_size(); } - void swap(_Self& __x) { _M_t.swap(__x._M_t); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - // insert/erase - pair insert(const value_type& __x) - { return _M_t.insert_unique(__x); } - iterator insert(iterator __pos, const value_type& __x) - { return _M_t.insert_unique( __pos , __x); } -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __first, _InputIterator __last) - { _M_t.insert_unique(__first, __last); } -#else - void insert(const_iterator __first, const_iterator __last) - { _M_t.insert_unique(__first, __last); } - void insert(const value_type* __first, const value_type* __last) - { _M_t.insert_unique(__first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - void erase(iterator __pos) { _M_t.erase( __pos ); } - size_type erase(const key_type& __x) { return _M_t.erase_unique(__x); } - void erase(iterator __first, iterator __last) { _M_t.erase(__first, __last ); } - void clear() { _M_t.clear(); } - - // set operations: - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __x) const { return _M_t.find(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __x) { return _M_t.find(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __x) const - { return _M_t.find(__x) == _M_t.end() ? 0 : 1 ; } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator lower_bound(const _KT& __x) { return _M_t.lower_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator lower_bound(const _KT& __x) const { return _M_t.lower_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator upper_bound(const _KT& __x) { return _M_t.upper_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator upper_bound(const _KT& __x) const { return _M_t.upper_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) - { return _M_t.equal_range_unique(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) const - { return _M_t.equal_range_unique(__x); } -}; - -//Specific iterator traits creation -_STLP_CREATE_ITERATOR_TRAITS(MultisetTraitsT, Const_traits) - -template ), - _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Key>) > -class multiset -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef multiset<_Key, _Compare, _Alloc> _Self; -public: - // typedefs: - - typedef _Key key_type; - typedef _Key value_type; - typedef _Compare key_compare; - typedef _Compare value_compare; - -private: - //Specific iterator traits creation - typedef _STLP_PRIV _MultisetTraitsT _MultisetTraits; - -public: - //Following typedef have to be public for __move_traits specialization. - typedef _STLP_PRIV _Rb_tree, - _MultisetTraits, _Alloc> _Rep_type; - - typedef typename _Rep_type::pointer pointer; - typedef typename _Rep_type::const_pointer const_pointer; - typedef typename _Rep_type::reference reference; - typedef typename _Rep_type::const_reference const_reference; - typedef typename _Rep_type::iterator iterator; - typedef typename _Rep_type::const_iterator const_iterator; - typedef typename _Rep_type::reverse_iterator reverse_iterator; - typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator; - typedef typename _Rep_type::size_type size_type; - typedef typename _Rep_type::difference_type difference_type; - typedef typename _Rep_type::allocator_type allocator_type; - -private: - _Rep_type _M_t; // red-black tree representing multiset - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit multiset(const _Compare& __comp = _Compare(), - const allocator_type& __a = allocator_type()) -#else - multiset() - : _M_t(_Compare(), allocator_type()) {} - explicit multiset(const _Compare& __comp) - : _M_t(__comp, allocator_type()) {} - multiset(const _Compare& __comp, const allocator_type& __a) -#endif - : _M_t(__comp, __a) {} - -#if defined (_STLP_MEMBER_TEMPLATES) - template - multiset(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_equal(__first, __last); } - - template - multiset(_InputIterator __first, _InputIterator __last, - const _Compare& __comp, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - multiset(_InputIterator __first, _InputIterator __last, - const _Compare& __comp) - : _M_t(__comp, allocator_type()) { _M_t.insert_equal(__first, __last); } -# endif -#else - multiset(const value_type* __first, const value_type* __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_equal(__first, __last); } - - multiset(const value_type* __first, const value_type* __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); } - - multiset(const_iterator __first, const_iterator __last) - : _M_t(_Compare(), allocator_type()) - { _M_t.insert_equal(__first, __last); } - - multiset(const_iterator __first, const_iterator __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, __a) { _M_t.insert_equal(__first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - multiset(const _Self& __x) : _M_t(__x._M_t) {} - _Self& operator=(const _Self& __x) { - _M_t = __x._M_t; - return *this; - } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - multiset(__move_source<_Self> src) - : _M_t(__move_source<_Rep_type>(src.get()._M_t)) {} -#endif - - // accessors: - key_compare key_comp() const { return _M_t.key_comp(); } - value_compare value_comp() const { return _M_t.key_comp(); } - allocator_type get_allocator() const { return _M_t.get_allocator(); } - - iterator begin() { return _M_t.begin(); } - iterator end() { return _M_t.end(); } - const_iterator begin() const { return _M_t.begin(); } - const_iterator end() const { return _M_t.end(); } - reverse_iterator rbegin() { return _M_t.rbegin(); } - reverse_iterator rend() { return _M_t.rend(); } - const_reverse_iterator rbegin() const { return _M_t.rbegin(); } - const_reverse_iterator rend() const { return _M_t.rend(); } - bool empty() const { return _M_t.empty(); } - size_type size() const { return _M_t.size(); } - size_type max_size() const { return _M_t.max_size(); } - void swap(_Self& __x) { _M_t.swap(__x._M_t); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - // insert/erase - iterator insert(const value_type& __x) - { return _M_t.insert_equal(__x); } - iterator insert(iterator __pos, const value_type& __x) - { return _M_t.insert_equal(__pos, __x); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __first, _InputIterator __last) - { _M_t.insert_equal(__first, __last); } -#else - void insert(const value_type* __first, const value_type* __last) - { _M_t.insert_equal(__first, __last); } - void insert(const_iterator __first, const_iterator __last) - { _M_t.insert_equal(__first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - void erase(iterator __pos) { _M_t.erase( __pos ); } - size_type erase(const key_type& __x) { return _M_t.erase(__x); } - void erase(iterator __first, iterator __last) { _M_t.erase( __first, __last ); } - void clear() { _M_t.clear(); } - - // multiset operations: - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __x) { return _M_t.find(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __x) const { return _M_t.find(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __x) const { return _M_t.count(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator lower_bound(const _KT& __x) { return _M_t.lower_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator lower_bound(const _KT& __x) const { return _M_t.lower_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator upper_bound(const _KT& __x) { return _M_t.upper_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator upper_bound(const _KT& __x) const { return _M_t.upper_bound(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) { return _M_t.equal_range(__x); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) const { return _M_t.equal_range(__x); } -}; - -#else -# include -_STLP_BEGIN_NAMESPACE -#endif /* _STLP_USE_PTR_SPECIALIZATIONS */ - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER set<_Key,_Compare,_Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#define _STLP_TEMPLATE_CONTAINER multiset<_Key,_Compare,_Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux::_Rep_type> -{}; - -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux::_Rep_type> -{}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_SET_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_slist.c b/build/stlport/stlport/stl/_slist.c deleted file mode 100644 index 107b600b4ca1..000000000000 --- a/build/stlport/stlport/stl/_slist.c +++ /dev/null @@ -1,230 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_SLIST_C -#define _STLP_SLIST_C - -#ifndef _STLP_INTERNAL_SLIST_H -# include -#endif - -#ifndef _STLP_CARRAY_H -# include -#endif - -#ifndef _STLP_RANGE_ERRORS_H -# include -#endif - -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -# define size_type size_t -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_Slist_node_base* -_Slist_base<_Tp,_Alloc>::_M_erase_after(_Slist_node_base* __before_first, - _Slist_node_base* __last_node) { - _Slist_node_base* __cur = __before_first->_M_next; - while (__cur != __last_node) { - _Node* __tmp = __STATIC_CAST(_Node*, __cur); - __cur = __cur->_M_next; - _STLP_STD::_Destroy(&__tmp->_M_data); - _M_head.deallocate(__tmp,1); - } - __before_first->_M_next = __last_node; - return __last_node; -} - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define slist _STLP_PTR_IMPL_NAME(slist) -#elif defined (_STLP_DEBUG) -# define slist _STLP_NON_DBG_NAME(slist) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -/* When building STLport lib Digital Mars Compiler complains on the _M_data assignment - * problem which would be perfertly right if we were using it. Hiding it during build - * fix this issue. - */ -template -slist<_Tp,_Alloc>& slist<_Tp,_Alloc>::operator=(const slist<_Tp,_Alloc>& __x) { - if (&__x != this) { - _Node_base* __p1 = &this->_M_head._M_data; - _Node_base* __n1 = this->_M_head._M_data._M_next; - const _Node_base* __n2 = __x._M_head._M_data._M_next; - while (__n1 && __n2) { - __STATIC_CAST(_Node*, __n1)->_M_data = __STATIC_CAST(const _Node*, __n2)->_M_data; - __p1 = __n1; - __n1 = __n1->_M_next; - __n2 = __n2->_M_next; - } - if (__n2 == 0) - this->_M_erase_after(__p1, 0); - else - _M_insert_after_range(__p1, const_iterator(__CONST_CAST(_Node_base*, __n2)), - const_iterator(0)); - } - return *this; -} - -template -void slist<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val) { - _Node_base* __prev = &this->_M_head._M_data; - _Node_base* __node = this->_M_head._M_data._M_next; - for ( ; __node != 0 && __n > 0 ; --__n) { - __STATIC_CAST(_Node*, __node)->_M_data = __val; - __prev = __node; - __node = __node->_M_next; - } - if (__n > 0) - _M_insert_after_fill(__prev, __n, __val); - else - this->_M_erase_after(__prev, 0); -} - -template -void slist<_Tp,_Alloc>::resize(size_type __len, const _Tp& __x) { - _Node_base* __cur = &this->_M_head._M_data; - while (__cur->_M_next != 0 && __len > 0) { - --__len; - __cur = __cur->_M_next; - } - if (__cur->_M_next) - this->_M_erase_after(__cur, 0); - else - _M_insert_after_fill(__cur, __len, __x); -} - -template -void slist<_Tp,_Alloc>::remove(const _Tp& __val) { - _Node_base* __cur = &this->_M_head._M_data; - while (__cur && __cur->_M_next) { - if (__STATIC_CAST(_Node*, __cur->_M_next)->_M_data == __val) - this->_M_erase_after(__cur); - else - __cur = __cur->_M_next; - } -} - -#if !defined (slist) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -template -void _Slist_unique(slist<_Tp, _Alloc>& __that, _BinaryPredicate __pred) { - typedef _Slist_node<_Tp> _Node; - typename slist<_Tp, _Alloc>::iterator __ite(__that.begin()); - if (__ite != __that.end()) { - while (__ite._M_node->_M_next) { - if (__pred(*__ite, __STATIC_CAST(_Node*, __ite._M_node->_M_next)->_M_data)) - __that.erase_after(__ite); - else - ++__ite; - } - } -} - -template -void _Slist_merge(slist<_Tp, _Alloc>& __that, slist<_Tp, _Alloc>& __x, - _StrictWeakOrdering __comp) { - typedef _Slist_node<_Tp> _Node; - if (__that.get_allocator() == __x.get_allocator()) { - typename slist<_Tp, _Alloc>::iterator __ite(__that.before_begin()); - while (__ite._M_node->_M_next && !__x.empty()) { - if (__comp(__x.front(), __STATIC_CAST(_Node*, __ite._M_node->_M_next)->_M_data)) { - _STLP_VERBOSE_ASSERT(!__comp(__STATIC_CAST(_Node*, __ite._M_node->_M_next)->_M_data, __x.front()), - _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - __that.splice_after(__ite, __x, __x.before_begin()); - } - ++__ite; - } - if (!__x.empty()) { - __that.splice_after(__ite, __x); - } - } - else { - typename slist<_Tp, _Alloc>::iterator __i1(__that.before_begin()), __i2(__x.begin()); - while (__i1._M_node->_M_next && __i2._M_node) { - if (__comp(__STATIC_CAST(_Node*, __i1._M_node->_M_next)->_M_data, *__i2)) { - _STLP_VERBOSE_ASSERT(!__comp(*__i2, __STATIC_CAST(_Node*, __i1._M_node->_M_next)->_M_data), - _StlMsg_INVALID_STRICT_WEAK_PREDICATE) - ++__i1; - } - else { - __i1 = __that.insert_after(__i1, *(__i2++)); - } - } - __that.insert_after(__i1, __i2, __x.end()); - __x.clear(); - } -} - -template -void _Slist_sort(slist<_Tp, _Alloc>& __that, _StrictWeakOrdering __comp) { - if (!__that.begin()._M_node || !__that.begin()._M_node->_M_next) - return; - - slist<_Tp, _Alloc> __carry(__that.get_allocator()); - const int NB = 64; - _STLP_PRIV _CArray, NB> __counter(__carry); - int __fill = 0; - while (!__that.empty()) { - __carry.splice_after(__carry.before_begin(), __that, __that.before_begin()); - int __i = 0; - while (__i < __fill && !__counter[__i].empty()) { - _STLP_PRIV _Slist_merge(__counter[__i], __carry, __comp); - __carry.swap(__counter[__i]); - ++__i; - } - __carry.swap(__counter[__i]); - if (__i == __fill) { - ++__fill; - if (__fill >= NB) { - //Looks like the slist has too many elements to be sorted with this algorithm: - __stl_throw_overflow_error("slist::sort"); - } - } - } - - for (int __i = 1; __i < __fill; ++__i) - _STLP_PRIV _Slist_merge(__counter[__i], __counter[__i - 1], __comp); - __that.swap(__counter[__fill-1]); -} - -#if defined (slist) -# undef slist -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -# undef size_type -#endif - -#endif /* _STLP_SLIST_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_slist.h b/build/stlport/stlport/stl/_slist.h deleted file mode 100644 index 924daa496218..000000000000 --- a/build/stlport/stlport/stl/_slist.h +++ /dev/null @@ -1,914 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_SLIST_H -#define _STLP_INTERNAL_SLIST_H - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_CONSTRUCT_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_SLIST_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -class _Slist_node : public _Slist_node_base { -public: - _Tp _M_data; - __TRIVIAL_STUFF(_Slist_node) -}; - -struct _Slist_iterator_base { - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef forward_iterator_tag iterator_category; - - _Slist_node_base *_M_node; - - _Slist_iterator_base(_Slist_node_base *__x) : _M_node(__x) {} - - void _M_incr() { - _M_node = _M_node->_M_next; - } -}; - -template -class _Slist_iterator : public _Slist_iterator_base { -public: - typedef typename _Traits::value_type value_type; - typedef typename _Traits::pointer pointer; - typedef typename _Traits::reference reference; - typedef forward_iterator_tag iterator_category; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - - typedef _Slist_iterator<_Tp, _Traits> _Self; - typedef typename _Traits::_NonConstTraits _NonConstTraits; - typedef _Slist_iterator<_Tp, _NonConstTraits> iterator; - typedef typename _Traits::_ConstTraits _ConstTraits; - typedef _Slist_iterator<_Tp, _ConstTraits> const_iterator; - - typedef _Slist_node _Node; - - explicit _Slist_iterator(_Slist_node_base *__x) : _Slist_iterator_base(__x) {} - _Slist_iterator() : _Slist_iterator_base(0) {} - //copy constructor for iterator and constructor from iterator for const_iterator - _Slist_iterator(const iterator& __x) : _Slist_iterator_base(__x._M_node) {} - - reference operator*() const { return __STATIC_CAST(_Node*, this->_M_node)->_M_data; } - - _STLP_DEFINE_ARROW_OPERATOR - - _Self& operator++() { - _M_incr(); - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - _M_incr(); - return __tmp; - } - - bool operator==(const_iterator __y ) const { - return this->_M_node == __y._M_node; - } - bool operator!=(const_iterator __y ) const { - return this->_M_node != __y._M_node; - } -}; - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -_STLP_MOVE_TO_STD_NAMESPACE -template -struct __type_traits<_STLP_PRIV _Slist_iterator<_Tp, _Traits> > { - typedef __false_type has_trivial_default_constructor; - typedef __true_type has_trivial_copy_constructor; - typedef __true_type has_trivial_assignment_operator; - typedef __true_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -_STLP_MOVE_TO_STD_NAMESPACE -template -inline _Tp* _STLP_CALL value_type(const _STLP_PRIV _Slist_iterator<_Tp, _Traits>&) { return __STATIC_CAST(_Tp*, 0); } -inline ptrdiff_t* _STLP_CALL distance_type(const _STLP_PRIV _Slist_iterator_base&) { return 0; } -inline forward_iterator_tag _STLP_CALL iterator_category(const _STLP_PRIV _Slist_iterator_base&) { return forward_iterator_tag(); } -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif /* OLD_QUERIES */ - -// Base class that encapsulates details of allocators and simplifies EH -template -class _Slist_base { -protected: - typedef _Slist_node<_Tp> _Node; - typedef typename _Alloc_traits<_Node,_Alloc>::allocator_type _M_node_allocator_type; - typedef _Slist_base<_Tp, _Alloc> _Self; - -public: - typedef _STLP_alloc_proxy<_Slist_node_base, _Node, _M_node_allocator_type> _AllocProxy; - - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef _Alloc allocator_type; - - _Slist_base(const allocator_type& __a) : - _M_head(_STLP_CONVERT_ALLOCATOR(__a, _Node), _Slist_node_base() ) - { _M_head._M_data._M_next = 0; } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _Slist_base(__move_source<_Self> src) : - _M_head(__move_source<_AllocProxy>(src.get()._M_head)) - { src.get()._M_head._M_data._M_next = 0; } -#endif - - ~_Slist_base() { _M_erase_after(&_M_head._M_data, 0); } - -protected: - _Slist_node_base* _M_erase_after(_Slist_node_base* __pos) { - _Node* __next = __STATIC_CAST(_Node*, __pos->_M_next); - _Slist_node_base* __next_next = __next->_M_next; - __pos->_M_next = __next_next; - _STLP_STD::_Destroy(&__next->_M_data); - _M_head.deallocate(__next,1); - return __next_next; - } - _Slist_node_base* _M_erase_after(_Slist_node_base*, _Slist_node_base*); - -public: - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR((const _M_node_allocator_type&)_M_head, _Tp); } - _AllocProxy _M_head; -}; - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define slist _STLP_PTR_IMPL_NAME(slist) -#elif defined (_STLP_DEBUG) -# define slist _STLP_NON_DBG_NAME(slist) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template ) > -class slist; - -#if !defined (slist) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -// helper functions to reduce code duplication -template -void _Slist_unique(slist<_Tp, _Alloc>& __that, _BinaryPredicate __binary_pred); - -template -void _Slist_merge(slist<_Tp, _Alloc>& __that, slist<_Tp, _Alloc>& __x, - _StrictWeakOrdering __comp); - -template -void _Slist_sort(slist<_Tp, _Alloc>& __that, _StrictWeakOrdering __comp); - -#if !defined (slist) -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template -class slist : protected _STLP_PRIV _Slist_base<_Tp,_Alloc> -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (slist) - , public __stlport_class > -#endif -{ -private: - typedef _STLP_PRIV _Slist_base<_Tp,_Alloc> _Base; - typedef slist<_Tp,_Alloc> _Self; -public: - typedef _Tp value_type; - - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef forward_iterator_tag _Iterator_category; - - typedef _STLP_PRIV _Slist_iterator<_Tp, _Nonconst_traits<_Tp> > iterator; - typedef _STLP_PRIV _Slist_iterator<_Tp, _Const_traits<_Tp> > const_iterator; - - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef typename _Base::allocator_type allocator_type; - -private: - typedef _STLP_PRIV _Slist_node<_Tp> _Node; - typedef _STLP_PRIV _Slist_node_base _Node_base; - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - _Node* _M_create_node(const value_type& __x = _Tp()) { -#else - _Node* _M_create_node(const value_type& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - _Node* __node = this->_M_head.allocate(1); - _STLP_TRY { - _Copy_Construct(&__node->_M_data, __x); - __node->_M_next = 0; - } - _STLP_UNWIND(this->_M_head.deallocate(__node, 1)) - return __node; - } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - _Node* _M_create_node() { - _Node* __node = this->_M_head.allocate(1); - _STLP_TRY { - _STLP_STD::_Construct(&__node->_M_data); - __node->_M_next = 0; - } - _STLP_UNWIND(this->_M_head.deallocate(__node, 1)) - return __node; - } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -public: - - allocator_type get_allocator() const { return _Base::get_allocator(); } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit slist(const allocator_type& __a = allocator_type()) -#else - slist() - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(allocator_type()) {} - slist(const allocator_type& __a) -#endif - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(__a) {} - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit slist(size_type __n, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(_Tp), - const allocator_type& __a = allocator_type()) -#else - explicit slist(size_type __n) - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(allocator_type()) - { _M_insert_after_fill(&this->_M_head._M_data, __n, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } - slist(size_type __n, const value_type& __x) - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(allocator_type()) - { _M_insert_after_fill(&this->_M_head._M_data, __n, __x); } - slist(size_type __n, const value_type& __x, const allocator_type& __a) -#endif - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(__a) - { _M_insert_after_fill(&this->_M_head._M_data, __n, __x); } - -#if defined (_STLP_MEMBER_TEMPLATES) - // We don't need any dispatching tricks here, because _M_insert_after_range - // already does them. - template - slist(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(__a) - { _M_insert_after_range(&this->_M_head._M_data, __first, __last); } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - // VC++ needs this crazyness - template - slist(_InputIterator __first, _InputIterator __last) - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(allocator_type()) - { _M_insert_after_range(&this->_M_head._M_data, __first, __last); } -# endif -#else /* _STLP_MEMBER_TEMPLATES */ - slist(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type() ) - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(__a) - { _M_insert_after_range(&this->_M_head._M_data, __first, __last); } - slist(const value_type* __first, const value_type* __last, - const allocator_type& __a = allocator_type()) - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(__a) - { _M_insert_after_range(&this->_M_head._M_data, __first, __last); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - slist(const _Self& __x) - : _STLP_PRIV _Slist_base<_Tp,_Alloc>(__x.get_allocator()) - { _M_insert_after_range(&this->_M_head._M_data, __x.begin(), __x.end()); } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - slist(__move_source<_Self> src) - : _STLP_PRIV _Slist_base<_Tp, _Alloc>(__move_source<_Base>(src.get())) {} -#endif - - _Self& operator= (const _Self& __x); - - ~slist() {} - -public: - // assign(), a generalized assignment member function. Two - // versions: one that takes a count, and one that takes a range. - // The range version is a member template, so we dispatch on whether - // or not the type is an integer. - - void assign(size_type __n, const _Tp& __val) { _M_fill_assign(__n, __val); } - -private: - void _M_fill_assign(size_type __n, const _Tp& __val); - -#if defined (_STLP_MEMBER_TEMPLATES) -public: - template - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } - -private: - template - void _M_assign_dispatch(_Integer __n, _Integer __val, - const __true_type& /*_IsIntegral*/) { - _M_fill_assign((size_type) __n, (_Tp) __val); - } - - template - void _M_assign_dispatch(_InputIter __first, _InputIter __last, - const __false_type& /*_IsIntegral*/) { -#else -public: - void assign(const_pointer __first, const_pointer __last) { - _Node_base* __prev = &this->_M_head._M_data; - _Node_base* __node = this->_M_head._M_data._M_next; - while (__node != 0 && __first != __last) { - __STATIC_CAST(_Node*, __node)->_M_data = *__first; - __prev = __node; - __node = __node->_M_next; - ++__first; - } - if (__first != __last) - _M_insert_after_range(__prev, __first, __last); - else - this->_M_erase_after(__prev, 0); - } - void assign(const_iterator __first, const_iterator __last) { -#endif /* _STLP_MEMBER_TEMPLATES */ - _Node_base* __prev = &this->_M_head._M_data; - _Node_base* __node = this->_M_head._M_data._M_next; - while (__node != 0 && __first != __last) { - __STATIC_CAST(_Node*, __node)->_M_data = *__first; - __prev = __node; - __node = __node->_M_next; - ++__first; - } - if (__first != __last) - _M_insert_after_range(__prev, __first, __last); - else - this->_M_erase_after(__prev, 0); - } - -public: - - // Experimental new feature: before_begin() returns a - // non-dereferenceable iterator that, when incremented, yields - // begin(). This iterator may be used as the argument to - // insert_after, erase_after, etc. Note that even for an empty - // slist, before_begin() is not the same iterator as end(). It - // is always necessary to increment before_begin() at least once to - // obtain end(). - iterator before_begin() { return iterator(&this->_M_head._M_data); } - const_iterator before_begin() const - { return const_iterator(__CONST_CAST(_Node_base*, &this->_M_head._M_data)); } - - iterator begin() { return iterator(this->_M_head._M_data._M_next); } - const_iterator begin() const - { return const_iterator(this->_M_head._M_data._M_next);} - - iterator end() { return iterator(); } - const_iterator end() const { return const_iterator(); } - - size_type size() const - { return _STLP_PRIV _Sl_global_inst::size(this->_M_head._M_data._M_next); } - - size_type max_size() const { return size_type(-1); } - - bool empty() const { return this->_M_head._M_data._M_next == 0; } - - void swap(_Self& __x) - { this->_M_head.swap(__x._M_head); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -public: - reference front() { return *begin(); } - const_reference front() const { return *begin(); } -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_front(const value_type& __x = _Tp()) { -#else - void push_front(const value_type& __x) { -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - _STLP_PRIV __slist_make_link(&this->_M_head._M_data, _M_create_node(__x)); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_front() { _STLP_PRIV __slist_make_link(&this->_M_head._M_data, _M_create_node());} -#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - void pop_front() { - _Node* __node = __STATIC_CAST(_Node*, this->_M_head._M_data._M_next); - this->_M_head._M_data._M_next = __node->_M_next; - _STLP_STD::_Destroy(&__node->_M_data); - this->_M_head.deallocate(__node, 1); - } - - iterator previous(const_iterator __pos) { - return iterator(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node)); - } - const_iterator previous(const_iterator __pos) const { - return const_iterator(__CONST_CAST(_Node_base*, - _STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, - __pos._M_node))); - } - -private: -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - _Node* _M_insert_after(_Node_base* __pos, const value_type& __x = _Tp()) { -#else - _Node* _M_insert_after(_Node_base* __pos, const value_type& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - return __STATIC_CAST(_Node*, _STLP_PRIV __slist_make_link(__pos, _M_create_node(__x))); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - _Node* _M_insert_after(_Node_base* __pos) { - return __STATIC_CAST(_Node*, _STLP_PRIV __slist_make_link(__pos, _M_create_node())); - } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void _M_insert_after_fill(_Node_base* __pos, - size_type __n, const value_type& __x) { - for (size_type __i = 0; __i < __n; ++__i) - __pos = _STLP_PRIV __slist_make_link(__pos, _M_create_node(__x)); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - // Check whether it's an integral type. If so, it's not an iterator. - template - void _M_insert_after_range(_Node_base* __pos, - _InIter __first, _InIter __last) { - typedef typename _IsIntegral<_InIter>::_Ret _Integral; - _M_insert_after_range(__pos, __first, __last, _Integral()); - } - - template - void _M_insert_after_range(_Node_base* __pos, _Integer __n, _Integer __x, - const __true_type&) { - _M_insert_after_fill(__pos, __n, __x); - } - - template - void _M_insert_after_range(_Node_base* __pos, - _InIter __first, _InIter __last, - const __false_type&) { -#else /* _STLP_MEMBER_TEMPLATES */ - void _M_insert_after_range(_Node_base* __pos, - const value_type* __first, - const value_type* __last) { - while (__first != __last) { - __pos = _STLP_PRIV __slist_make_link(__pos, _M_create_node(*__first)); - ++__first; - } - } - void _M_insert_after_range(_Node_base* __pos, - const_iterator __first, const_iterator __last) { -#endif /* _STLP_MEMBER_TEMPLATES */ - while (__first != __last) { - __pos = _STLP_PRIV __slist_make_link(__pos, _M_create_node(*__first)); - ++__first; - } - } - -#if defined (_STLP_MEMBER_TEMPLATES) - // Check whether it's an integral type. If so, it's not an iterator. - template - void _M_splice_after_range(_Node_base* __pos, - _InIter __first, _InIter __last) { - typedef typename _IsIntegral<_InIter>::_Ret _Integral; - _M_splice_after_range(__pos, __first, __last, _Integral()); - } - - template - void _M_splice_after_range(_Node_base* __pos, _Integer __n, _Integer __x, - const __true_type&) { - _M_insert_after_fill(__pos, __n, __x); - } - - template - void _M_splice_after_range(_Node_base* __pos, - _InIter __first, _InIter __last, - const __false_type&) { -#else /* _STLP_MEMBER_TEMPLATES */ - void _M_splice_after_range(_Node_base* __pos, - const value_type* __first, - const value_type* __last) { - while (__first != __last) { - __pos = _STLP_PRIV __slist_make_link(__pos, _M_create_node(*__first)); - ++__first; - } - } - void _M_splice_after_range(_Node_base* __pos, - const_iterator __first, const_iterator __last) { -#endif /* _STLP_MEMBER_TEMPLATES */ - //We use a temporary slist to avoid the auto reference troubles (infinite loop) - _Self __tmp(__first, __last, this->get_allocator()); - splice_after(iterator(__pos), __tmp); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - // Check whether it's an integral type. If so, it's not an iterator. - template - void _M_splice_range(_Node_base* __pos, - _InIter __first, _InIter __last) { - typedef typename _IsIntegral<_InIter>::_Ret _Integral; - _M_splice_range(__pos, __first, __last, _Integral()); - } - - template - void _M_splice_range(_Node_base* __pos, _Integer __n, _Integer __x, - const __true_type&) { - _M_insert_after_fill(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos), - __n, __x); - } - - template - void _M_splice_range(_Node_base* __pos, - _InIter __first, _InIter __last, - const __false_type&) { -#else /* _STLP_MEMBER_TEMPLATES */ - void _M_splice_range(_Node_base* __pos, - const value_type* __first, - const value_type* __last) { - while (__first != __last) { - __pos = _STLP_PRIV __slist_make_link(__pos, _M_create_node(*__first)); - ++__first; - } - } - void _M_splice_range(_Node_base* __pos, - const_iterator __first, const_iterator __last) { -#endif /* _STLP_MEMBER_TEMPLATES */ - //We use a temporary slist to avoid the auto reference troubles (infinite loop) - _Self __tmp(__first, __last, this->get_allocator()); - splice(iterator(__pos), __tmp); - } - -public: - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - iterator insert_after(iterator __pos, const value_type& __x = _Tp()) { -#else - iterator insert_after(iterator __pos, const value_type& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - return iterator(_M_insert_after(__pos._M_node, __x)); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - iterator insert_after(iterator __pos) { - return insert_after(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); - } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void insert_after(iterator __pos, size_type __n, const value_type& __x) { - _M_insert_after_fill(__pos._M_node, __n, __x); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - // We don't need any dispatching tricks here, because _M_insert_after_range - // already does them. - template - void insert_after(iterator __pos, _InIter __first, _InIter __last) { -#else /* _STLP_MEMBER_TEMPLATES */ - void insert_after(iterator __pos, - const value_type* __first, const value_type* __last) { - _M_insert_after_range(__pos._M_node, __first, __last); - } - void insert_after(iterator __pos, - const_iterator __first, const_iterator __last) { -#endif /* _STLP_MEMBER_TEMPLATES */ - _M_splice_after_range(__pos._M_node, __first, __last); - } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - iterator insert(iterator __pos, const value_type& __x = _Tp()) { -#else - iterator insert(iterator __pos, const value_type& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - return iterator(_M_insert_after(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node), - __x)); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - iterator insert(iterator __pos) { - return iterator(_M_insert_after(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node), - _STLP_DEFAULT_CONSTRUCTED(_Tp))); - } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void insert(iterator __pos, size_type __n, const value_type& __x) { - _M_insert_after_fill(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node), __n, __x); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - // We don't need any dispatching tricks here, because _M_insert_after_range - // already does them. - template - void insert(iterator __pos, _InIter __first, _InIter __last) { -#else /* _STLP_MEMBER_TEMPLATES */ - void insert(iterator __pos, const value_type* __first, - const value_type* __last) { - _M_insert_after_range(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node), - __first, __last); - } - void insert(iterator __pos, const_iterator __first, const_iterator __last) { -#endif /* _STLP_MEMBER_TEMPLATES */ - _M_splice_range(__pos._M_node, __first, __last); - } - -public: - iterator erase_after(iterator __pos) - { return iterator(this->_M_erase_after(__pos._M_node)); } - iterator erase_after(iterator __before_first, iterator __last) - { return iterator(this->_M_erase_after(__before_first._M_node, __last._M_node)); } - - iterator erase(iterator __pos) - { return iterator(this->_M_erase_after(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node))); } - iterator erase(iterator __first, iterator __last) - { return iterator(this->_M_erase_after(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __first._M_node), __last._M_node)); } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type new_size, const value_type& __x = _Tp()); -#else - void resize(size_type new_size, const value_type& __x); -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type new_size) { resize(new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void clear() - { this->_M_erase_after(&this->_M_head._M_data, 0); } - -public: - // Moves the range [__before_first + 1, __before_last + 1) to *this, - // inserting it immediately after __pos. This is constant time. - void splice_after(iterator __pos, _Self& __x, - iterator __before_first, iterator __before_last) { - if (__before_first != __before_last) { - if (this->get_allocator() == __x.get_allocator()) { - _STLP_PRIV _Sl_global_inst::__splice_after(__pos._M_node, - __before_first._M_node, __before_last._M_node); - } - else { - this->insert_after(__pos, iterator(__before_first._M_node->_M_next), iterator(__before_last._M_node->_M_next)); - __x.erase_after(__before_first, ++__before_last); - } - } - } - - // Moves the element that follows __prev to *this, inserting it immediately - // after __pos. This is constant time. - void splice_after(iterator __pos, _Self& __x, iterator __prev) { - if (this->get_allocator() == __x.get_allocator()) { - _STLP_PRIV _Sl_global_inst::__splice_after(__pos._M_node, - __prev._M_node, __prev._M_node->_M_next); - } - else { - this->insert_after(__pos, __STATIC_CAST(_Node*, __prev._M_node->_M_next)->_M_data); - __x.erase_after(__prev); - } - } - - // Removes all of the elements from the list __x to *this, inserting - // them immediately after __pos. __x must not be *this. Complexity: - // linear in __x.size(). - void splice_after(iterator __pos, _Self& __x) { - if (this->get_allocator() == __x.get_allocator()) - _STLP_PRIV _Sl_global_inst::__splice_after(__pos._M_node, &__x._M_head._M_data); - else { - this->insert_after(__pos, __x.begin(), __x.end()); - __x.clear(); - } - } - - // Linear in distance(begin(), __pos), and linear in __x.size(). - void splice(iterator __pos, _Self& __x) { - if (__x._M_head._M_data._M_next) { - if (this->get_allocator() == __x.get_allocator()) { - _STLP_PRIV _Sl_global_inst::__splice_after(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node), - &__x._M_head._M_data, - _STLP_PRIV _Sl_global_inst::__previous(&__x._M_head._M_data, 0)); - } - else { - insert(__pos, __x.begin(), __x.end()); - __x.clear(); - } - } - } - - // Linear in distance(begin(), __pos), and in distance(__x.begin(), __i). - void splice(iterator __pos, _Self& __x, iterator __i) { - if (this->get_allocator() == __x.get_allocator()) { - _STLP_PRIV _Sl_global_inst::__splice_after(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node), - _STLP_PRIV _Sl_global_inst::__previous(&__x._M_head._M_data, __i._M_node), - __i._M_node); - } - else { - insert(__pos, *__i); - __x.erase(__i); - } - } - - // Linear in distance(begin(), __pos), in distance(__x.begin(), __first), - // and in distance(__first, __last). - void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) { - if (__first != __last) { - if (this->get_allocator() == __x.get_allocator()) { - _STLP_PRIV _Sl_global_inst::__splice_after(_STLP_PRIV _Sl_global_inst::__previous(&this->_M_head._M_data, __pos._M_node), - _STLP_PRIV _Sl_global_inst::__previous(&__x._M_head._M_data, __first._M_node), - _STLP_PRIV _Sl_global_inst::__previous(__first._M_node, __last._M_node)); - } - else { - insert(__pos, __first, __last); - __x.erase(__first, __last); - } - } - } - -public: - void reverse() { - if (this->_M_head._M_data._M_next) - this->_M_head._M_data._M_next = _STLP_PRIV _Sl_global_inst::__reverse(this->_M_head._M_data._M_next); - } - - void remove(const _Tp& __val); - - void unique() { _STLP_PRIV _Slist_unique(*this, equal_to()); } - void merge(_Self& __x) { _STLP_PRIV _Slist_merge(*this, __x, less()); } - void sort() { _STLP_PRIV _Slist_sort(*this, less()); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void remove_if(_Predicate __pred) { - _Node_base* __cur = &this->_M_head._M_data; - while (__cur->_M_next) { - if (__pred(__STATIC_CAST(_Node*, __cur->_M_next)->_M_data)) - this->_M_erase_after(__cur); - else - __cur = __cur->_M_next; - } - } - - template - void unique(_BinaryPredicate __pred) - { _STLP_PRIV _Slist_unique(*this, __pred); } - - template - void merge(_Self& __x, _StrictWeakOrdering __comp) - { _STLP_PRIV _Slist_merge(*this, __x, __comp); } - - template - void sort(_StrictWeakOrdering __comp) - { _STLP_PRIV _Slist_sort(*this, __comp); } -#endif /* _STLP_MEMBER_TEMPLATES */ -}; - -#if defined (slist) -# undef slist -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# include -#endif - -#if defined (_STLP_DEBUG) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -inline bool _STLP_CALL -operator == (const slist<_Tp,_Alloc>& _SL1, const slist<_Tp,_Alloc>& _SL2) { - typedef typename slist<_Tp,_Alloc>::const_iterator const_iterator; - const_iterator __end1 = _SL1.end(); - const_iterator __end2 = _SL2.end(); - - const_iterator __i1 = _SL1.begin(); - const_iterator __i2 = _SL2.begin(); - while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2) { - ++__i1; - ++__i2; - } - return __i1 == __end1 && __i2 == __end2; -} - -#define _STLP_EQUAL_OPERATOR_SPECIALIZED -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER slist<_Tp, _Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER -#undef _STLP_EQUAL_OPERATOR_SPECIALIZED - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# if !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > { - typedef __true_type implemented; - typedef typename __move_traits<_Alloc>::complete complete; -}; -# endif - -// Specialization of insert_iterator so that insertions will be constant -// time rather than linear time. -template -class insert_iterator > { -protected: - typedef slist<_Tp, _Alloc> _Container; - _Container* _M_container; - typename _Container::iterator _M_iter; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x, typename _Container::iterator __i) - : _M_container(&__x) { - if (__i == __x.begin()) - _M_iter = __x.before_begin(); - else - _M_iter = __x.previous(__i); - } - - insert_iterator<_Container>& - operator = (const typename _Container::value_type& __val) { - _M_iter = _M_container->insert_after(_M_iter, __val); - return *this; - } - - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_SLIST_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_slist_base.c b/build/stlport/stlport/stl/_slist_base.c deleted file mode 100644 index e0e68c9b2608..000000000000 --- a/build/stlport/stlport/stl/_slist_base.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_SLIST_BASE_C -#define _STLP_SLIST_BASE_C - -#ifndef _STLP_INTERNAL_SLIST_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_Slist_node_base* _STLP_CALL -_Sl_global<_Dummy>::__previous(_Slist_node_base* __head, - const _Slist_node_base* __node) { - while (__head && __head->_M_next != __node) - __head = __head->_M_next; - return __head; -} - -template -void _STLP_CALL -_Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos, _Slist_node_base* __head) { - _Slist_node_base* __before_last = __previous(__head, 0); - if (__before_last != __head) { - _Slist_node_base* __after = __pos->_M_next; - __pos->_M_next = __head->_M_next; - __head->_M_next = 0; - __before_last->_M_next = __after; - } -} - -template -void _STLP_CALL -_Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos, - _Slist_node_base* __before_first, - _Slist_node_base* __before_last) { - if (__pos != __before_first && __pos != __before_last) { - _Slist_node_base* __first = __before_first->_M_next; - _Slist_node_base* __after = __pos->_M_next; - __before_first->_M_next = __before_last->_M_next; - __pos->_M_next = __first; - __before_last->_M_next = __after; - } -} - -template -_Slist_node_base* _STLP_CALL -_Sl_global<_Dummy>::__reverse(_Slist_node_base* __node) { - _Slist_node_base* __result = __node; - __node = __node->_M_next; - __result->_M_next = 0; - while(__node) { - _Slist_node_base* __next = __node->_M_next; - __node->_M_next = __result; - __result = __node; - __node = __next; - } - return __result; -} - -template -size_t _STLP_CALL -_Sl_global<_Dummy>::size(_Slist_node_base* __node) { - size_t __result = 0; - for ( ; __node != 0; __node = __node->_M_next) - ++__result; - return __result; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_SLIST_BASE_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_slist_base.h b/build/stlport/stlport/stl/_slist_base.h deleted file mode 100644 index 3afa18a15b7a..000000000000 --- a/build/stlport/stlport/stl/_slist_base.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_SLIST_BASE_H -#define _STLP_INTERNAL_SLIST_BASE_H - -#ifndef _STLP_INTERNAL_CSTDDEF -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -struct _Slist_node_base { - _Slist_node_base* _M_next; -}; - -inline _Slist_node_base* -__slist_make_link(_Slist_node_base* __prev_node, - _Slist_node_base* __new_node) { - __new_node->_M_next = __prev_node->_M_next; - __prev_node->_M_next = __new_node; - return __new_node; -} - - -template -class _Sl_global { -public: - // those used to be global functions - // moved here to reduce code bloat without templatizing _Slist_iterator_base - static size_t _STLP_CALL size(_Slist_node_base* __node); - static _Slist_node_base* _STLP_CALL __reverse(_Slist_node_base* __node); - static void _STLP_CALL __splice_after(_Slist_node_base* __pos, - _Slist_node_base* __before_first, - _Slist_node_base* __before_last); - - static void _STLP_CALL __splice_after(_Slist_node_base* __pos, _Slist_node_base* __head); - - static _Slist_node_base* _STLP_CALL __previous(_Slist_node_base* __head, - const _Slist_node_base* __node); - static const _Slist_node_base* _STLP_CALL __previous(const _Slist_node_base* __head, - const _Slist_node_base* __node) { - return _Sl_global<_Dummy>::__previous(__CONST_CAST(_Slist_node_base*, __head), __node); - } -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS _Sl_global; -#endif - -typedef _Sl_global _Sl_global_inst; - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) && defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) -# include -#endif - -#endif /* _STLP_INTERNAL_SLIST_BASE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_sparc_atomic.h b/build/stlport/stlport/stl/_sparc_atomic.h deleted file mode 100644 index 21cc0ad030af..000000000000 --- a/build/stlport/stlport/stl/_sparc_atomic.h +++ /dev/null @@ -1,61 +0,0 @@ - -// Currently, SUN CC requires object file - -#if defined (__GNUC__) - -/* -** int _STLP_atomic_exchange (__stl_atomic_t *pvalue, __stl_atomic_t value) -*/ - -# if defined(__sparc_v9__) || defined (__sparcv9) - -# ifdef __arch64__ - -# define _STLP_EXCH_ASM asm volatile ("casx [%3], %4, %0 ; membar #LoadLoad | #LoadStore " : \ - "=r" (_L_value2), "=m" (*_L_pvalue1) : \ - "m" (*_L_pvalue1), "r" (_L_pvalue1), "r" (_L_value1), "0" (_L_value2) ) - -# else /* __arch64__ */ - -# define _STLP_EXCH_ASM asm volatile ("cas [%3], %4, %0" : \ - "=r" (_L_value2), "=m" (*_L_pvalue1) : \ - "m" (*_L_pvalue1), "r" (_L_pvalue1), "r" (_L_value1), "0" (_L_value2) ) -# endif - -# else /* __sparc_v9__ */ - -# define _STLP_EXCH_ASM asm volatile ("swap [%3], %0 " : \ - "=r" (_L_value2), "=m" (*_L_pvalue1) : \ - "m" (*_L_pvalue1), "r" (_L_pvalue1), "0" (_L_value2) ) -# endif - - -# define _STLP_ATOMIC_EXCHANGE(__pvalue1, __value2) \ - ({ register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \ - register __stl_atomic_t _L_value1, _L_value2 = __value2 ; \ - do { _L_value1 = *_L_pvalue1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; \ - _L_value1; }) - -# define _STLP_ATOMIC_INCREMENT(__pvalue1) \ - ({ register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \ - register __stl_atomic_t _L_value1, _L_value2; \ - do { _L_value1 = *_L_pvalue1; _L_value2 = _L_value1+1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; \ - (_L_value2 + 1); }) - -# define _STLP_ATOMIC_DECREMENT(__pvalue1) \ - ({ register volatile __stl_atomic_t *_L_pvalue1 = __pvalue1; \ - register __stl_atomic_t _L_value1, _L_value2; \ - do { _L_value1 = *_L_pvalue1; _L_value2 = _L_value1-1; _STLP_EXCH_ASM; } while ( _L_value1 != _L_value2 ) ; \ - (_L_value2 - 1); }) - -# elif ! defined (_STLP_NO_EXTERN_INLINE) - -extern "C" __stl_atomic_t _STLP_atomic_exchange(__stl_atomic_t * __x, __stl_atomic_t __v); -extern "C" void _STLP_atomic_decrement(__stl_atomic_t* i); -extern "C" void _STLP_atomic_increment(__stl_atomic_t* i); - -# define _STLP_ATOMIC_INCREMENT(__x) _STLP_atomic_increment((__stl_atomic_t*)__x) -# define _STLP_ATOMIC_DECREMENT(__x) _STLP_atomic_decrement((__stl_atomic_t*)__x) -# define _STLP_ATOMIC_EXCHANGE(__x, __y) _STLP_atomic_exchange((__stl_atomic_t*)__x, (__stl_atomic_t)__y) - -#endif diff --git a/build/stlport/stlport/stl/_sstream.c b/build/stlport/stlport/stl/_sstream.c deleted file mode 100644 index 9f585351e147..000000000000 --- a/build/stlport/stlport/stl/_sstream.c +++ /dev/null @@ -1,465 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_SSTREAM_C -#define _STLP_SSTREAM_C - -#ifndef _STLP_INTERNAL_SSTREAM -# include -#endif - -#if defined ( _STLP_NESTED_TYPE_PARAM_BUG ) -// no wint_t is supported for this mode -# define __BSB_int_type__ int -# define __BSB_pos_type__ streampos -#else -# define __BSB_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_stringbuf<_CharT, _Traits, _Alloc>::int_type -# define __BSB_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// Non-inline stringbuf member functions. - -// Constructors. Note that the base class constructor sets all of the -// get and area pointers to null. - -template -basic_stringbuf<_CharT, _Traits, _Alloc> - ::basic_stringbuf(ios_base::openmode __mode) - : basic_streambuf<_CharT, _Traits>(), _M_mode(__mode), _M_str() -{} - -template -basic_stringbuf<_CharT, _Traits, _Alloc> - ::basic_stringbuf(const basic_string<_CharT, _Traits, _Alloc>& __s, ios_base::openmode __mode) - : basic_streambuf<_CharT, _Traits>(), _M_mode(__mode), _M_str(__s) -{ - _M_set_ptrs(); -} - -template -basic_stringbuf<_CharT, _Traits, _Alloc>::~basic_stringbuf() -{} - -// Set the underlying string to a new value. -template -void -basic_stringbuf<_CharT, _Traits, _Alloc>::str(const basic_string<_CharT, _Traits, _Alloc>& __s) -{ - _M_str = __s; - _M_set_ptrs(); -} - -template -void -basic_stringbuf<_CharT, _Traits, _Alloc>::_M_set_ptrs() -{ - _CharT* __data_ptr = _S_start(_M_str); - _CharT* __data_end = _S_finish(_M_str); - // The initial read position is the beginning of the string. - if (_M_mode & ios_base::in) { - this->setg(__data_ptr, (_M_mode & ios_base::ate) ? __data_end : __data_ptr, __data_end); - } - - // The initial write position is the beginning of the string. - if (_M_mode & ios_base::out) { - if ( _M_mode & (ios_base::app | ios_base::ate) ) { - this->setp( __data_end, __data_end ); - } else { - this->setp( __data_ptr, __data_end ); - this->pbump((int)_M_str.size()); // initial write position, if we initialized with string - } - // this->setp((_M_mode & (ios_base::app | ios_base::ate))? __data_end : __data_ptr, __data_end); - } -} - -// Precondition: gptr() >= egptr(). Returns a character, if one is available. -template -__BSB_int_type__ -basic_stringbuf<_CharT, _Traits, _Alloc>::underflow() { - return this->gptr() != this->egptr() - ? _Traits::to_int_type(*this->gptr()) - : _Traits::eof(); -} - -// Precondition: gptr() >= egptr(). -template -__BSB_int_type__ -basic_stringbuf<_CharT, _Traits, _Alloc>::uflow() { - if (this->gptr() != this->egptr()) { - int_type __c = _Traits::to_int_type(*this->gptr()); - this->gbump(1); - return __c; - } - else - return _Traits::eof(); -} - -template -__BSB_int_type__ -basic_stringbuf<_CharT, _Traits, _Alloc>::pbackfail(int_type __c) { - if (this->gptr() != this->eback()) { - if (!_Traits::eq_int_type(__c, _Traits::eof())) { - if (_Traits::eq(_Traits::to_char_type(__c), this->gptr()[-1])) { - this->gbump(-1); - return __c; - } - else if (_M_mode & ios_base::out) { - this->gbump(-1); - *this->gptr() = _Traits::to_char_type(__c); - return __c; - } - else - return _Traits::eof(); - } - else { - this->gbump(-1); - return _Traits::not_eof(__c); - } - } - else - return _Traits::eof(); -} - -template -__BSB_int_type__ basic_stringbuf<_CharT, _Traits, _Alloc>::overflow(int_type __c) -{ - if (!_Traits::eq_int_type(__c, _Traits::eof())) { - if (_M_mode & ios_base::out) { - if ( this->pptr() < this->epptr() ) { // just put back in any case - _M_str.push_back( _Traits::to_char_type(__c) ); - this->pbump(1); - } else if ( _M_mode & ios_base::in ) { - ptrdiff_t __offset = this->gptr() - this->eback(); - _M_str.push_back(_Traits::to_char_type(__c)); - _CharT* __data_ptr = _S_start(_M_str); - this->setg(__data_ptr, __data_ptr + __offset, _S_finish(_M_str)); - this->setp(__data_ptr, _S_finish(_M_str)); - this->pbump((int)_M_str.size()); - } else { - _M_str.push_back( _Traits::to_char_type(__c) ); - this->setp(_S_start(_M_str), _S_finish(_M_str)); - this->pbump((int)_M_str.size()); - } - return __c; - } - return _Traits::eof(); // Overflow always fails if it's read-only - } - return _Traits::not_eof(__c); // __c is EOF, so we don't have to do anything -} - -template -streamsize -basic_stringbuf<_CharT, _Traits, _Alloc>::xsputn(const char_type* __s, - streamsize __n) { - streamsize __nwritten = 0; - - if ((_M_mode & ios_base::out) && __n > 0) { - // If the put pointer is somewhere in the middle of the string, - // then overwrite instead of append. - if ( !_M_str.empty() && this->pbase() == _S_start(_M_str)) { - ptrdiff_t __avail = _S_finish(_M_str) - this->pptr(); - if (__avail > __n) { - _Traits::copy(this->pptr(), __s, __STATIC_CAST(size_t, __n)); - this->pbump((int)__n); - return __n; - } else { - _Traits::copy(this->pptr(), __s, __avail); - __nwritten += __avail; - __n -= __avail; - __s += __avail; - } - } - - // At this point we know we're appending. - _CharT* __data_ptr; - if (_M_mode & ios_base::in) { - ptrdiff_t __get_offset = this->gptr() - this->eback(); - _M_str.append(__s, __s + __STATIC_CAST(ptrdiff_t, __n)); - __data_ptr = _S_start(_M_str); - this->setg(__data_ptr, __data_ptr + __get_offset, _S_finish(_M_str)); - } else { - _M_str.append(__s, __s + __STATIC_CAST(ptrdiff_t, __n)); - __data_ptr = _S_start(_M_str); - } - - this->setp(__data_ptr, _S_finish(_M_str)); - this->pbump((int)_M_str.size()); - __nwritten += __n; - } - - return __nwritten; -} - -template -streamsize -basic_stringbuf<_CharT, _Traits, _Alloc>::_M_xsputnc(char_type __c, - streamsize __n) { - streamsize __nwritten = 0; - - if ((_M_mode & ios_base::out) && __n > 0) { - // If the put pointer is somewhere in the middle of the string, - // then overwrite instead of append. - if (this->pbase() == _S_start(_M_str)) { - ptrdiff_t __avail = _S_finish(_M_str) - this->pptr(); - if (__avail > __n) { - _Traits::assign(this->pptr(), __STATIC_CAST(size_t, __n), __c); - this->pbump(__STATIC_CAST(int, __n)); - return __n; - } - else { - _Traits::assign(this->pptr(), __avail, __c); - __nwritten += __avail; - __n -= __avail; - } - } - - // At this point we know we're appending. - size_t __app_size = sizeof(streamsize) > sizeof(size_t) ? __STATIC_CAST(size_t, (min)(__n, __STATIC_CAST(streamsize, _M_str.max_size()))) - : __STATIC_CAST(size_t, __n); - _CharT* __data_ptr; - if (this->_M_mode & ios_base::in) { - ptrdiff_t __get_offset = this->gptr() - this->eback(); - _M_str.append(__app_size, __c); - __data_ptr = _S_start(_M_str); - this->setg(__data_ptr, __data_ptr + __get_offset, _S_finish(_M_str)); - } else { - _M_str.append(__app_size, __c); - __data_ptr = _S_start(_M_str); - } - - this->setp(__data_ptr, _S_finish(_M_str)); - this->pbump((int)_M_str.size()); - __nwritten += __app_size; - } - - return __nwritten; -} - -// According to the C++ standard the effects of setbuf are implementation -// defined, except that setbuf(0, 0) has no effect. In this implementation, -// setbuf(, n), for n > 0, calls reserve(n) on the underlying -// string. -template -basic_streambuf<_CharT, _Traits>* -basic_stringbuf<_CharT, _Traits, _Alloc>::setbuf(_CharT*, streamsize __n) { - if (__n > 0) { - bool __do_get_area = false; - bool __do_put_area = false; - ptrdiff_t __offg = 0; - ptrdiff_t __offp = 0; - - if (this->pbase() == _S_start(_M_str)) { - __do_put_area = true; - __offp = this->pptr() - this->pbase(); - } - - if (this->eback() == _S_start(_M_str)) { - __do_get_area = true; - __offg = this->gptr() - this->eback(); - } - - _M_str.reserve(sizeof(streamsize) > sizeof(size_t) ? __STATIC_CAST(size_t, (min)(__n, __STATIC_CAST(streamsize, _M_str.max_size()))) - : __STATIC_CAST(size_t, __n)); - - _CharT* __data_ptr = _S_start(_M_str); - - if (__do_get_area) { - this->setg(__data_ptr, __data_ptr + __offg, _S_finish(_M_str)); - } - - if (__do_put_area) { - this->setp(__data_ptr, _S_finish(_M_str)); - this->pbump((int)__offp); - } - } - - return this; -} - -template -__BSB_pos_type__ -basic_stringbuf<_CharT, _Traits, _Alloc> - ::seekoff(off_type __off, - ios_base::seekdir __dir, - ios_base::openmode __mode) { - __mode &= _M_mode; - - bool __imode = (__mode & ios_base::in) != 0; - bool __omode = (__mode & ios_base::out) != 0; - - if ( !(__imode || __omode) ) - return pos_type(off_type(-1)); - - if ( (__imode && (this->gptr() == 0)) || (__omode && (this->pptr() == 0)) ) - return pos_type(off_type(-1)); - - streamoff __newoff; - switch(__dir) { - case ios_base::beg: - __newoff = 0; - break; - case ios_base::end: - __newoff = _M_str.size(); - break; - case ios_base::cur: - __newoff = __imode ? this->gptr() - this->eback() : this->pptr() - this->pbase(); - if ( __off == 0 ) { - return pos_type(__newoff); - } - break; - default: - return pos_type(off_type(-1)); - } - - __off += __newoff; - - if (__imode) { - ptrdiff_t __n = this->egptr() - this->eback(); - - if (__off < 0 || __off > __n) - return pos_type(off_type(-1)); - this->setg(this->eback(), this->eback() + __STATIC_CAST(ptrdiff_t, __off), - this->eback() + __STATIC_CAST(ptrdiff_t, __n)); - } - - if (__omode) { - ptrdiff_t __n = this->epptr() - this->pbase(); - - if (__off < 0 || __off > __n) - return pos_type(off_type(-1)); - this->setp(this->pbase(), this->pbase() + __n); - this->pbump((int)__off); - } - - return pos_type(__off); -} - -template -__BSB_pos_type__ -basic_stringbuf<_CharT, _Traits, _Alloc> - ::seekpos(pos_type __pos, ios_base::openmode __mode) { - __mode &= _M_mode; - - bool __imode = (__mode & ios_base::in) != 0; - bool __omode = (__mode & ios_base::out) != 0; - - if ( !(__imode || __omode) ) - return pos_type(off_type(-1)); - - if ( (__imode && (this->gptr() == 0)) || (__omode && (this->pptr() == 0)) ) - return pos_type(off_type(-1)); - - const off_type __n = __pos - pos_type(off_type(0)); - - if (__imode) { - if (__n < 0 || __n > this->egptr() - this->eback()) - return pos_type(off_type(-1)); - this->setg(this->eback(), this->eback() + __STATIC_CAST(ptrdiff_t, __n), this->egptr()); - } - - if (__omode) { - if (__n < 0 || size_t(__n) > _M_str.size()) - return pos_type(off_type(-1)); - - this->setp(_S_start(_M_str), _S_finish(_M_str)); - this->pbump((int)__n); - } - - return __pos; -} - -//---------------------------------------------------------------------- -// Non-inline istringstream member functions. - -template -basic_istringstream<_CharT, _Traits, _Alloc> - ::basic_istringstream(ios_base::openmode __mode) - : basic_istream<_CharT, _Traits>(0), - _M_buf(__mode | ios_base::in) { - this->init(&_M_buf); -} - -template -basic_istringstream<_CharT, _Traits, _Alloc> - ::basic_istringstream(const _String& __str,ios_base::openmode __mode) - : basic_istream<_CharT, _Traits>(0), - _M_buf(__str, __mode | ios_base::in) { - this->init(&_M_buf); -} - -template -basic_istringstream<_CharT, _Traits, _Alloc>::~basic_istringstream() -{} - -//---------------------------------------------------------------------- -// Non-inline ostringstream member functions. - -template -basic_ostringstream<_CharT, _Traits, _Alloc> - ::basic_ostringstream(ios_base::openmode __mode) - : basic_ostream<_CharT, _Traits>(0), - _M_buf(__mode | ios_base::out) { - this->init(&_M_buf); -} - -template -basic_ostringstream<_CharT, _Traits, _Alloc> - ::basic_ostringstream(const _String& __str, ios_base::openmode __mode) - : basic_ostream<_CharT, _Traits>(0), - _M_buf(__str, __mode | ios_base::out) { - this->init(&_M_buf); -} - -template -basic_ostringstream<_CharT, _Traits, _Alloc>::~basic_ostringstream() -{} - -//---------------------------------------------------------------------- -// Non-inline stringstream member functions. - -template -basic_stringstream<_CharT, _Traits, _Alloc> - ::basic_stringstream(ios_base::openmode __mode) - : basic_iostream<_CharT, _Traits>(0), _M_buf(__mode) { - this->init(&_M_buf); -} - -template -basic_stringstream<_CharT, _Traits, _Alloc> - ::basic_stringstream(const _String& __str, ios_base::openmode __mode) - : basic_iostream<_CharT, _Traits>(0), _M_buf(__str, __mode) { - this->init(&_M_buf); -} - -template -basic_stringstream<_CharT, _Traits, _Alloc>::~basic_stringstream() -{} - -_STLP_END_NAMESPACE - -# undef __BSB_int_type__ -# undef __BSB_pos_type__ - -#endif /* _STLP_SSTREAM_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_sstream.h b/build/stlport/stlport/stl/_sstream.h deleted file mode 100644 index 9e8d02a64ae7..000000000000 --- a/build/stlport/stlport/stl/_sstream.h +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - - -// This header defines classes basic_stringbuf, basic_istringstream, -// basic_ostringstream, and basic_stringstream. These classes -// represent streamsbufs and streams whose sources or destinations are -// C++ strings. - -#ifndef _STLP_INTERNAL_SSTREAM -#define _STLP_INTERNAL_SSTREAM - -#ifndef _STLP_INTERNAL_STREAMBUF -# include -#endif - -#ifndef _STLP_INTERNAL_ISTREAM -# include // Includes , , -#endif - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// This version of basic_stringbuf relies on the internal details of -// basic_string. It relies on the fact that, in this implementation, -// basic_string's iterators are pointers. It also assumes (as allowed -// by the standard) that _CharT is a POD type. - -// We have a very small buffer for the put area, just so that we don't -// have to use append() for every sputc. Conceptually, the buffer -// immediately follows the end of the underlying string. We use this -// buffer when appending to write-only streambufs, but we don't use it -// for read-write streambufs. - -template -class basic_stringbuf : public basic_streambuf<_CharT, _Traits> { -public: // Typedefs. - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - - typedef basic_streambuf<_CharT, _Traits> _Base; - typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Self; - typedef basic_string<_CharT, _Traits, _Alloc> _String; - -public: // Constructors, destructor. - explicit basic_stringbuf(ios_base::openmode __mode - = ios_base::in | ios_base::out); - explicit basic_stringbuf(const _String& __s, ios_base::openmode __mode - = ios_base::in | ios_base::out); - virtual ~basic_stringbuf(); - -public: // Get or set the string. - _String str() const { return _M_str; } - void str(const _String& __s); - -protected: // Overridden virtual member functions. - virtual int_type underflow(); - virtual int_type uflow(); - virtual int_type pbackfail(int_type __c); - virtual int_type overflow(int_type __c); - int_type pbackfail() {return pbackfail(_Traits::eof());} - int_type overflow() {return overflow(_Traits::eof());} - - virtual streamsize xsputn(const char_type* __s, streamsize __n); - virtual streamsize _M_xsputnc(char_type __c, streamsize __n); - - virtual _Base* setbuf(_CharT* __buf, streamsize __n); - virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir, - ios_base::openmode __mode - = ios_base::in | ios_base::out); - virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode - = ios_base::in | ios_base::out); - -private: // Helper functions. - void _M_set_ptrs(); - static _CharT* _S_start(const _String& __str) { return __CONST_CAST(_CharT*, __str.data()); } - static _CharT* _S_finish(const _String& __str) { return __CONST_CAST(_CharT*, __str.data()) + __str.size(); } - -private: - ios_base::openmode _M_mode; - _String _M_str; -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf, allocator >; -# if !defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf, allocator >; -# endif -#endif /* _STLP_USE_TEMPLATE_EXPORT */ - -//---------------------------------------------------------------------- -// Class basic_istringstream, an input stream that uses a stringbuf. - -template -class basic_istringstream : public basic_istream<_CharT, _Traits> { -public: // Typedefs - typedef typename _Traits::char_type char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - - typedef basic_ios<_CharT, _Traits> _Basic_ios; - typedef basic_istream<_CharT, _Traits> _Base; - typedef basic_string<_CharT, _Traits, _Alloc> _String; - typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; - -public: // Constructors, destructor. - basic_istringstream(ios_base::openmode __mode = ios_base::in); - basic_istringstream(const _String& __str, - ios_base::openmode __mode = ios_base::in); - ~basic_istringstream(); - -public: // Member functions - - basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const - { return __CONST_CAST(_Buf*,&_M_buf); } - - _String str() const { return _M_buf.str(); } - void str(const _String& __s) { _M_buf.str(__s); } - -private: - basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; - -#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) - typedef basic_istringstream<_CharT, _Traits> _Self; - //explicitely defined as private to avoid warnings: - basic_istringstream(_Self const&); - _Self& operator = (_Self const&); -#endif -}; - - -//---------------------------------------------------------------------- -// Class basic_ostringstream, an output stream that uses a stringbuf. - -template -class basic_ostringstream : public basic_ostream<_CharT, _Traits> { -public: // Typedefs - typedef typename _Traits::char_type char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - - typedef basic_ios<_CharT, _Traits> _Basic_ios; - typedef basic_ostream<_CharT, _Traits> _Base; - typedef basic_string<_CharT, _Traits, _Alloc> _String; - typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; - -public: // Constructors, destructor. - basic_ostringstream(ios_base::openmode __mode = ios_base::out); - basic_ostringstream(const _String& __str, - ios_base::openmode __mode = ios_base::out); - ~basic_ostringstream(); - -public: // Member functions. - - basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const - { return __CONST_CAST(_Buf*,&_M_buf); } - - _String str() const { return _M_buf.str(); } - void str(const _String& __s) { _M_buf.str(__s); } // dwa 02/07/00 - BUG STOMPER DAVE - - -private: - basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; - -#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) - typedef basic_ostringstream<_CharT, _Traits> _Self; - //explicitely defined as private to avoid warnings: - basic_ostringstream(_Self const&); - _Self& operator = (_Self const&); -#endif -}; - - -//---------------------------------------------------------------------- -// Class basic_stringstream, a bidirectional stream that uses a stringbuf. - -template -class basic_stringstream : public basic_iostream<_CharT, _Traits> { -public: // Typedefs - typedef typename _Traits::char_type char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - - typedef basic_ios<_CharT, _Traits> _Basic_ios; - typedef basic_iostream<_CharT, _Traits> _Base; - typedef basic_string<_CharT, _Traits, _Alloc> _String; - typedef basic_stringbuf<_CharT, _Traits, _Alloc> _Buf; - - typedef ios_base::openmode openmode; - -public: // Constructors, destructor. - basic_stringstream(openmode __mod = ios_base::in | ios_base::out); - basic_stringstream(const _String& __str, - openmode __mod = ios_base::in | ios_base::out); - ~basic_stringstream(); - -public: // Member functions. - - basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const - { return __CONST_CAST(_Buf*,&_M_buf); } - - _String str() const { return _M_buf.str(); } - void str(const _String& __s) { _M_buf.str(__s); } - -private: - basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf; - -#if defined (_STLP_MSVC) && (_STLP_MSVC >= 1300 && _STLP_MSVC <= 1310) - typedef basic_stringstream<_CharT, _Traits> _Self; - //explicitely defined as private to avoid warnings: - basic_stringstream(_Self const&); - _Self& operator = (_Self const&); -#endif -}; - - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream, allocator >; -_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream, allocator >; -_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream, allocator >; -# if !defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream, allocator >; -_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream, allocator >; -_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream, allocator >; -# endif -#endif /* _STLP_USE_TEMPLATE_EXPORT */ - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_SSTREAM */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_stack.h b/build/stlport/stlport/stl/_stack.h deleted file mode 100644 index 7ea9d59afbfd..000000000000 --- a/build/stlport/stlport/stl/_stack.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_STACK_H -#define _STLP_INTERNAL_STACK_H - -#ifndef _STLP_INTERNAL_DEQUE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if !defined ( _STLP_LIMITED_DEFAULT_TEMPLATES ) -template > -#elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS ) -# define _STLP_STACK_ARGS _Tp -template -#else -template -#endif -class stack -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) -# if defined (_STLP_STACK_ARGS) - : public __stlport_class > -# else - : public __stlport_class > -# endif -#endif -{ -#ifdef _STLP_STACK_ARGS - typedef deque<_Tp> _Sequence; - typedef stack<_Tp> _Self; -#else - typedef stack<_Tp, _Sequence> _Self; -#endif - -public: - typedef typename _Sequence::value_type value_type; - typedef typename _Sequence::size_type size_type; - typedef _Sequence container_type; - - typedef typename _Sequence::reference reference; - typedef typename _Sequence::const_reference const_reference; -protected: - //c is a Standard name (23.2.3.3), do no make it STLport naming convention compliant. - _Sequence c; -public: - stack() : c() {} - explicit stack(const _Sequence& __s) : c(__s) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - stack(__move_source<_Self> src) - : c(_STLP_PRIV _AsMoveSource(src.get().c)) {} -#endif - - bool empty() const { return c.empty(); } - size_type size() const { return c.size(); } - reference top() { return c.back(); } - const_reference top() const { return c.back(); } - void push(const value_type& __x) { c.push_back(__x); } - void pop() { c.pop_back(); } - const _Sequence& _Get_s() const { return c; } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { - _Sequence __tmp = c; - c = __x.c; - __x.c = __tmp; - } -#endif -}; - -#ifndef _STLP_STACK_ARGS -# define _STLP_STACK_ARGS _Tp, _Sequence -# define _STLP_STACK_HEADER_ARGS class _Tp, class _Sequence -#else -# define _STLP_STACK_HEADER_ARGS class _Tp -#endif - -template < _STLP_STACK_HEADER_ARGS > -inline bool _STLP_CALL operator==(const stack< _STLP_STACK_ARGS >& __x, - const stack< _STLP_STACK_ARGS >& __y) -{ return __x._Get_s() == __y._Get_s(); } - -template < _STLP_STACK_HEADER_ARGS > -inline bool _STLP_CALL operator<(const stack< _STLP_STACK_ARGS >& __x, - const stack< _STLP_STACK_ARGS >& __y) -{ return __x._Get_s() < __y._Get_s(); } - -_STLP_RELOPS_OPERATORS(template < _STLP_STACK_HEADER_ARGS >, stack< _STLP_STACK_ARGS >) - -#undef _STLP_STACK_ARGS -#undef _STLP_STACK_HEADER_ARGS - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > : - _STLP_PRIV __move_traits_aux<_Sequence> -{}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_STACK_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_stdexcept.h b/build/stlport/stlport/stl/_stdexcept.h deleted file mode 100644 index ac241601e975..000000000000 --- a/build/stlport/stlport/stl/_stdexcept.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_STDEXCEPT -#define _STLP_INTERNAL_STDEXCEPT - -#ifndef _STLP_INTERNAL_STDEXCEPT_BASE -# include -#endif - -#if !defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE) - -# if defined(_STLP_USE_EXCEPTIONS) - -_STLP_BEGIN_NAMESPACE - -class _STLP_CLASS_DECLSPEC logic_error : public __Named_exception { -public: - logic_error(const string& __s) : __Named_exception(__s) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~logic_error() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -class _STLP_CLASS_DECLSPEC runtime_error : public __Named_exception { -public: - runtime_error(const string& __s) : __Named_exception(__s) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~runtime_error() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -class _STLP_CLASS_DECLSPEC domain_error : public logic_error { -public: - domain_error(const string& __arg) : logic_error(__arg) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~domain_error() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -class _STLP_CLASS_DECLSPEC invalid_argument : public logic_error { -public: - invalid_argument(const string& __arg) : logic_error(__arg) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~invalid_argument() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -class _STLP_CLASS_DECLSPEC length_error : public logic_error { -public: - length_error(const string& __arg) : logic_error(__arg) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~length_error() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -class _STLP_CLASS_DECLSPEC out_of_range : public logic_error { -public: - out_of_range(const string& __arg) : logic_error(__arg) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~out_of_range() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -class _STLP_CLASS_DECLSPEC range_error : public runtime_error { -public: - range_error(const string& __arg) : runtime_error(__arg) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~range_error() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -class _STLP_CLASS_DECLSPEC overflow_error : public runtime_error { -public: - overflow_error(const string& __arg) : runtime_error(__arg) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~overflow_error() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -class _STLP_CLASS_DECLSPEC underflow_error : public runtime_error { -public: - underflow_error(const string& __arg) : runtime_error(__arg) {} -# ifndef _STLP_USE_NO_IOSTREAMS - ~underflow_error() _STLP_NOTHROW_INHERENTLY; -# endif -}; - -_STLP_END_NAMESPACE - -# endif /* _STLP_USE_EXCEPTIONS */ -#endif - -#endif /* _STLP_INTERNAL_STDEXCEPT */ diff --git a/build/stlport/stlport/stl/_stdexcept_base.c b/build/stlport/stlport/stl/_stdexcept_base.c deleted file mode 100644 index 3ff3c66b462b..000000000000 --- a/build/stlport/stlport/stl/_stdexcept_base.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -__Named_exception::__Named_exception(const string& __str) { - size_t __size = strlen(_STLP_PRIV __get_c_string(__str)) + 1; - if (__size > _S_bufsize) { - _M_name = __STATIC_CAST(char*, malloc(__size * sizeof(char))); - if (!_M_name) { - __size = _S_bufsize; - _M_name = _M_static_name; - } - else { - *(__REINTERPRET_CAST(size_t*, &_M_static_name[0])) = __size * sizeof(char); - } - } - else { - _M_name = _M_static_name; - } -#if !defined (_STLP_USE_SAFE_STRING_FUNCTIONS) - strncpy(_M_name, _STLP_PRIV __get_c_string(__str), __size - 1); - _M_name[__size - 1] = '\0'; -#else - strncpy_s(_M_name, __size, _STLP_PRIV __get_c_string(__str), __size - 1); -#endif -} - -__Named_exception::__Named_exception(const __Named_exception& __x) { - size_t __size = strlen(__x._M_name) + 1; - if (__size > _S_bufsize) { - _M_name = __STATIC_CAST(char*, malloc(__size * sizeof(char))); - if (!_M_name) { - __size = _S_bufsize; - _M_name = _M_static_name; - } - else { - *(__REINTERPRET_CAST(size_t*, &_M_static_name[0])) = __size * sizeof(char); - } - } - else { - _M_name = _M_static_name; - } -#if !defined (_STLP_USE_SAFE_STRING_FUNCTIONS) - strncpy(_M_name, __x._M_name, __size - 1); - _M_name[__size - 1] = '\0'; -#else - strncpy_s(_M_name, __size, __x._M_name, __size - 1); -#endif -} - -__Named_exception& __Named_exception::operator = (const __Named_exception& __x) { - size_t __size = strlen(__x._M_name) + 1; - size_t __buf_size = _M_name != _M_static_name ? *(__REINTERPRET_CAST(size_t*, &_M_static_name[0])) : static_cast(_S_bufsize); - if (__size > __buf_size) { - // Being here necessarily mean that we need to allocate a buffer: - if (_M_name != _M_static_name) free(_M_name); - _M_name = __STATIC_CAST(char*, malloc(__size * sizeof(char))); - if (!_M_name) { - __size = _S_bufsize; - _M_name = _M_static_name; - } - else { - *(__REINTERPRET_CAST(size_t*, &_M_static_name[0])) = __size * sizeof(char); - } - } -#if !defined (_STLP_USE_SAFE_STRING_FUNCTIONS) - strncpy(_M_name, __x._M_name, __size - 1); - _M_name[__size - 1] = '\0'; -#else - strncpy_s(_M_name, __size, __x._M_name, __size - 1); -#endif - return *this; -} - -__Named_exception::~__Named_exception() _STLP_NOTHROW_INHERENTLY { - if (_M_name != _M_static_name) - free(_M_name); -} - -const char* __Named_exception::what() const _STLP_NOTHROW_INHERENTLY -{ return _M_name; } diff --git a/build/stlport/stlport/stl/_stdexcept_base.h b/build/stlport/stlport/stl/_stdexcept_base.h deleted file mode 100644 index bac2c178e3d7..000000000000 --- a/build/stlport/stlport/stl/_stdexcept_base.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_STDEXCEPT_BASE -#define _STLP_INTERNAL_STDEXCEPT_BASE - -#if !defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE) - -# ifndef _STLP_INTERNAL_EXCEPTION -# include -# endif - -# if defined(_STLP_USE_EXCEPTIONS) - -# ifndef _STLP_INTERNAL_CSTRING -# include -# endif - -# ifndef _STLP_STRING_FWD_H -# include -# endif - -# ifndef _STLP_USE_NO_IOSTREAMS -# define _STLP_OWN_STDEXCEPT 1 -# endif - -_STLP_BEGIN_NAMESPACE - -/* We disable the 4275 warning for - * - WinCE where there are only static version of the native C++ runtime. - * - The MSVC compilers when the STLport user wants to make an STLport dll linked to - * the static C++ native runtime. In this case the std::exception base class is no more - * exported from native dll but is used as a base class for the exported __Named_exception - * class. - */ -# if defined (_STLP_WCE_NET) || \ - defined (_STLP_USE_DYNAMIC_LIB) && defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB) -# define _STLP_DO_WARNING_POP -# pragma warning (push) -# pragma warning (disable: 4275) // Non dll interface class 'exception' used as base - // for dll-interface class '__Named_exception' -# endif - -# if !defined (_STLP_NO_EXCEPTION_HEADER) -# if !defined (_STLP_EXCEPTION_BASE) && !defined (_STLP_BROKEN_EXCEPTION_CLASS) && \ - defined (_STLP_USE_NAMESPACES) && defined (_STLP_USE_OWN_NAMESPACE) -using _STLP_VENDOR_EXCEPT_STD::exception; -# endif -# endif -# define _STLP_EXCEPTION_BASE exception - -class _STLP_CLASS_DECLSPEC __Named_exception : public _STLP_EXCEPTION_BASE { -public: - __Named_exception(const string& __str); - __Named_exception(const __Named_exception&); - __Named_exception& operator = (const __Named_exception&); - - const char* what() const _STLP_NOTHROW_INHERENTLY; - ~__Named_exception() _STLP_NOTHROW_INHERENTLY; - -private: - enum { _S_bufsize = 256 }; - char _M_static_name[_S_bufsize]; - char *_M_name; -}; - -# if defined (_STLP_USE_NO_IOSTREAMS) && !defined (__BUILDING_STLPORT) - // if not linking to the lib, expose implementation of members here -# include -# endif - -# if defined (_STLP_DO_WARNING_POP) -# pragma warning (pop) -# undef _STLP_DO_WARNING_POP -# endif - -_STLP_END_NAMESPACE - -# endif /* _STLP_USE_EXCEPTIONS */ -#endif - -#endif /* _STLP_INTERNAL_STDEXCEPT_BASE */ diff --git a/build/stlport/stlport/stl/_stlport_version.h b/build/stlport/stlport/stl/_stlport_version.h deleted file mode 100644 index 587651de4174..000000000000 --- a/build/stlport/stlport/stl/_stlport_version.h +++ /dev/null @@ -1,30 +0,0 @@ - /* - * - * Copyright (c) 2005 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STLPORT_VERSION_H -#define _STLP_STLPORT_VERSION_H - -/* The last SGI STL release we merged with */ -#define __SGI_STL 0x330 - -/* STLport version */ -#define _STLPORT_MAJOR 5 -#define _STLPORT_MINOR 2 -#define _STLPORT_PATCHLEVEL 1 - -#define _STLPORT_VERSION 0x521 - -#endif /* _STLP_STLPORT_VERSION_H */ diff --git a/build/stlport/stlport/stl/_stream_iterator.h b/build/stlport/stlport/stl/_stream_iterator.h deleted file mode 100644 index aa26ae351727..000000000000 --- a/build/stlport/stlport/stl/_stream_iterator.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#if !defined (_STLP_INTERNAL_STREAM_ITERATOR_H) && !defined (_STLP_USE_NO_IOSTREAMS) -#define _STLP_INTERNAL_STREAM_ITERATOR_H - -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -#endif - -// streambuf_iterators predeclarations must appear first -#ifndef _STLP_INTERNAL_IOSFWD -# include -#endif - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_ISTREAM -# include -#endif - -// istream_iterator and ostream_iterator look very different if we're -// using new, templatized iostreams than if we're using the old cfront -// version. - -_STLP_BEGIN_NAMESPACE - -#if !defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -# define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _CharT, class _Traits, class _Dist -# define __ISI_TMPL_ARGUMENTS _Tp, _CharT, _Traits, _Dist -template , - class _Dist = ptrdiff_t> -class istream_iterator : public iterator { -#else -# if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_DEFAULT_TYPE_PARAM) -# define __ISI_TMPL_HEADER_ARGUMENTS class _Tp -# define __ISI_TMPL_ARGUMENTS _Tp -template -class istream_iterator : public iterator { -# else -# define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _Dist -# define __ISI_TMPL_ARGUMENTS _Tp, _Dist -template -class istream_iterator : public iterator { -# endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */ -#endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */ - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) - typedef char _CharT; - typedef char_traits _Traits; -# if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_DEFAULT_TYPE_PARAM) - typedef ptrdiff_t _Dist; -# endif -#endif - - typedef istream_iterator< __ISI_TMPL_ARGUMENTS > _Self; -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_istream<_CharT, _Traits> istream_type; - - typedef input_iterator_tag iterator_category; - typedef _Tp value_type; - typedef _Dist difference_type; - typedef const _Tp* pointer; - typedef const _Tp& reference; - - istream_iterator() : _M_stream(0), _M_ok(false), _M_read_done(true) {} - istream_iterator(istream_type& __s) : _M_stream(&__s), _M_ok(false), _M_read_done(false) {} - - reference operator*() const { - if (!_M_read_done) { - _M_read(); - } - return _M_value; - } - - _STLP_DEFINE_ARROW_OPERATOR - - _Self& operator++() { - _M_read(); - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - _M_read(); - return __tmp; - } - - bool _M_equal(const _Self& __x) const { - if (!_M_read_done) { - _M_read(); - } - if (!__x._M_read_done) { - __x._M_read(); - } - return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); - } - -private: - istream_type* _M_stream; - mutable _Tp _M_value; - mutable bool _M_ok; - mutable bool _M_read_done; - - void _M_read() const { - _STLP_MUTABLE(_Self, _M_ok) = ((_M_stream != 0) && !_M_stream->fail()); - if (_M_ok) { - *_M_stream >> _STLP_MUTABLE(_Self, _M_value); - _STLP_MUTABLE(_Self, _M_ok) = !_M_stream->fail(); - } - _STLP_MUTABLE(_Self, _M_read_done) = true; - } -}; - -#if !defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template > -#else -template -#endif -class ostream_iterator: public iterator { -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) - typedef char _CharT; - typedef char_traits _Traits; - typedef ostream_iterator<_TpP> _Self; -#else - typedef ostream_iterator<_TpP, _CharT, _Traits> _Self; -#endif -public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_ostream<_CharT, _Traits> ostream_type; - - typedef output_iterator_tag iterator_category; - - ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {} - ostream_iterator(ostream_type& __s, const _CharT* __c) - : _M_stream(&__s), _M_string(__c) {} - _Self& operator=(const _TpP& __val) { - *_M_stream << __val; - if (_M_string) *_M_stream << _M_string; - return *this; - } - _Self& operator*() { return *this; } - _Self& operator++() { return *this; } - _Self& operator++(int) { return *this; } -private: - ostream_type* _M_stream; - const _CharT* _M_string; -}; - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -# if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -inline output_iterator_tag _STLP_CALL -iterator_category(const ostream_iterator<_TpP>&) { return output_iterator_tag(); } -# else -template -inline output_iterator_tag _STLP_CALL -iterator_category(const ostream_iterator<_TpP, _CharT, _Traits>&) { return output_iterator_tag(); } -# endif -#endif - -_STLP_END_NAMESPACE - -// form-independent definiotion of stream iterators -_STLP_BEGIN_NAMESPACE - -template < __ISI_TMPL_HEADER_ARGUMENTS > -inline bool _STLP_CALL -operator==(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x, - const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) -{ return __x._M_equal(__y); } - -#if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) -template < __ISI_TMPL_HEADER_ARGUMENTS > -inline bool _STLP_CALL -operator!=(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x, - const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) -{ return !__x._M_equal(__y); } -#endif - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -template < __ISI_TMPL_HEADER_ARGUMENTS > -inline input_iterator_tag _STLP_CALL -iterator_category(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) -{ return input_iterator_tag(); } -template < __ISI_TMPL_HEADER_ARGUMENTS > -inline _Tp* _STLP_CALL -value_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Tp*) 0; } - -# if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_DEFAULT_TYPE_PARAM) -template < __ISI_TMPL_HEADER_ARGUMENTS > -inline ptrdiff_t* _STLP_CALL -distance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (ptrdiff_t*)0; } -# else -template < __ISI_TMPL_HEADER_ARGUMENTS > -inline _Dist* _STLP_CALL -distance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Dist*)0; } -# endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */ -#endif - -_STLP_END_NAMESPACE - -#undef __ISI_TMPL_HEADER_ARGUMENTS -#undef __ISI_TMPL_ARGUMENTS - -#endif /* _STLP_INTERNAL_STREAM_ITERATOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_streambuf.c b/build/stlport/stlport/stl/_streambuf.c deleted file mode 100644 index bd61a204fa5e..000000000000 --- a/build/stlport/stlport/stl/_streambuf.c +++ /dev/null @@ -1,208 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_STREAMBUF_C -#define _STLP_STREAMBUF_C - -#ifndef _STLP_INTERNAL_STREAMBUF -# include -#endif - -_STLP_BEGIN_NAMESPACE -//---------------------------------------------------------------------- -// Non-inline basic_streambuf<> member functions. - -#if !defined (_STLP_MSVC) || (_STLP_MSVC >= 1300) || !defined (_STLP_USE_STATIC_LIB) -template -basic_streambuf<_CharT, _Traits>::basic_streambuf() - : _M_gbegin(0), _M_gnext(0), _M_gend(0), - _M_pbegin(0), _M_pnext(0), _M_pend(0), - _M_locale() { - // _M_lock._M_initialize(); -} -#endif - -template -basic_streambuf<_CharT, _Traits>::~basic_streambuf() -{} - -template -locale -basic_streambuf<_CharT, _Traits>::pubimbue(const locale& __loc) { - this->imbue(__loc); - locale __tmp = _M_locale; - _M_locale = __loc; - return __tmp; -} - -template -streamsize -basic_streambuf<_CharT, _Traits>::xsgetn(_CharT* __s, streamsize __n) { - streamsize __result = 0; - const int_type __eof = _Traits::eof(); - - while (__result < __n) { - if (_M_gnext < _M_gend) { - size_t __chunk = (min) (__STATIC_CAST(size_t,_M_gend - _M_gnext), - __STATIC_CAST(size_t,__n - __result)); - _Traits::copy(__s, _M_gnext, __chunk); - __result += __chunk; - __s += __chunk; - _M_gnext += __chunk; - } - else { - int_type __c = this->sbumpc(); - if (!_Traits::eq_int_type(__c, __eof)) { - *__s = _Traits::to_char_type(__c); - ++__result; - ++__s; - } - else - break; - } - } - - return __result; -} - -template -streamsize -basic_streambuf<_CharT, _Traits>::xsputn(const _CharT* __s, streamsize __n) -{ - streamsize __result = 0; - const int_type __eof = _Traits::eof(); - - while (__result < __n) { - if (_M_pnext < _M_pend) { - size_t __chunk = (min) (__STATIC_CAST(size_t,_M_pend - _M_pnext), - __STATIC_CAST(size_t,__n - __result)); - _Traits::copy(_M_pnext, __s, __chunk); - __result += __chunk; - __s += __chunk; - _M_pnext += __chunk; - } - - else if (!_Traits::eq_int_type(this->overflow(_Traits::to_int_type(*__s)), - __eof)) { - ++__result; - ++__s; - } - else - break; - } - return __result; -} - -template -streamsize -basic_streambuf<_CharT, _Traits>::_M_xsputnc(_CharT __c, streamsize __n) -{ - streamsize __result = 0; - const int_type __eof = _Traits::eof(); - - while (__result < __n) { - if (_M_pnext < _M_pend) { - size_t __chunk = (min) (__STATIC_CAST(size_t,_M_pend - _M_pnext), - __STATIC_CAST(size_t,__n - __result)); - _Traits::assign(_M_pnext, __chunk, __c); - __result += __chunk; - _M_pnext += __chunk; - } - - else if (!_Traits::eq_int_type(this->overflow(_Traits::to_int_type(__c)), - __eof)) - ++__result; - else - break; - } - return __result; -} - -template -_STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type -basic_streambuf<_CharT, _Traits>::_M_snextc_aux() -{ - int_type __eof = _Traits::eof(); - if (_M_gend == _M_gnext) - return _Traits::eq_int_type(this->uflow(), __eof) ? __eof : this->sgetc(); - else { - _M_gnext = _M_gend; - return this->underflow(); - } -} - -template -_STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type -basic_streambuf<_CharT, _Traits>::pbackfail(int_type) { - return _Traits::eof(); -} - -template -_STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type -basic_streambuf<_CharT, _Traits>::overflow(int_type) { - return _Traits::eof(); -} - -template -_STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type -basic_streambuf<_CharT, _Traits>::uflow() { - return ( _Traits::eq_int_type(this->underflow(),_Traits::eof()) ? - _Traits::eof() : - _Traits::to_int_type(*_M_gnext++)); -} - -template -_STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type -basic_streambuf<_CharT, _Traits>::underflow() -{ return _Traits::eof(); } - -template -streamsize -basic_streambuf<_CharT, _Traits>::showmanyc() -{ return 0; } - -template -void -basic_streambuf<_CharT, _Traits>::imbue(const locale&) {} - -template -int -basic_streambuf<_CharT, _Traits>::sync() { return 0; } - -template -_STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::pos_type -basic_streambuf<_CharT, _Traits>::seekpos(pos_type, ios_base::openmode) -{ return pos_type(-1); } - -template -_STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::pos_type -basic_streambuf<_CharT, _Traits>::seekoff(off_type, ios_base::seekdir, - ios_base::openmode) -{ return pos_type(-1); } - -template -basic_streambuf<_CharT, _Traits>* -basic_streambuf<_CharT, _Traits>:: setbuf(char_type*, streamsize) -{ return this; } - -_STLP_END_NAMESPACE - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_streambuf.h b/build/stlport/stlport/stl/_streambuf.h deleted file mode 100644 index e336b0f53f36..000000000000 --- a/build/stlport/stlport/stl/_streambuf.h +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_INTERNAL_STREAMBUF -#define _STLP_INTERNAL_STREAMBUF - -#ifndef _STLP_IOS_BASE_H -# include // Needed for ios_base bitfield members. -#endif // includes . - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// Class basic_streambuf<>, the base class of the streambuf hierarchy. - -// A basic_streambuf<> manages an input (get) area and an output (put) -// area. Each is described by three pointers: a beginning, an end, and a -// current position. basic_streambuf<> contains some very simple member -// functions that manipulate those six pointers, but almost all of the real -// functionality gets delegated to protected virtual member functions. -// All of the public member functions are inline, and most of the protected -// member functions are virtual. - -// Although basic_streambuf<> is not abstract, it is useful only as a base -// class. Its virtual member functions have default definitions such that -// reading from a basic_streambuf<> will always yield EOF, and writing to a -// basic_streambuf<> will always fail. - -// The second template parameter, _Traits, defaults to char_traits<_CharT>. -// The default is declared in header , and it isn't declared here -// because C++ language rules do not allow it to be declared twice. - -template -class basic_streambuf { - friend class basic_istream<_CharT, _Traits>; - friend class basic_ostream<_CharT, _Traits>; - -public: // Typedefs. - typedef _CharT char_type; - typedef typename _Traits::int_type int_type; - typedef typename _Traits::pos_type pos_type; - typedef typename _Traits::off_type off_type; - typedef _Traits traits_type; - -private: // Data members. - - char_type* _M_gbegin; // Beginning of get area - char_type* _M_gnext; // Current position within the get area - char_type* _M_gend; // End of get area - - char_type* _M_pbegin; // Beginning of put area - char_type* _M_pnext; // Current position within the put area - char_type* _M_pend; // End of put area - - locale _M_locale; // The streambuf's locale object - -public: // Destructor. - virtual ~basic_streambuf(); - -protected: // The default constructor. - basic_streambuf() -#if defined (_STLP_MSVC) && (_STLP_MSVC < 1300) && defined (_STLP_USE_STATIC_LIB) - //We make it inline to avoid unresolved symbol. - : _M_gbegin(0), _M_gnext(0), _M_gend(0), - _M_pbegin(0), _M_pnext(0), _M_pend(0), - _M_locale() - {} -#else - ; -#endif - -protected: // Protected interface to the get area. - char_type* eback() const { return _M_gbegin; } // Beginning - char_type* gptr() const { return _M_gnext; } // Current position - char_type* egptr() const { return _M_gend; } // End - - void gbump(int __n) { _M_gnext += __n; } - void setg(char_type* __gbegin, char_type* __gnext, char_type* __gend) { - _M_gbegin = __gbegin; - _M_gnext = __gnext; - _M_gend = __gend; - } - -public: - // An alternate public interface to the above functions - // which allows us to avoid using templated friends which - // are not supported on some compilers. - char_type* _M_eback() const { return eback(); } - char_type* _M_gptr() const { return gptr(); } - char_type* _M_egptr() const { return egptr(); } - void _M_gbump(int __n) { gbump(__n); } - void _M_setg(char_type* __gbegin, char_type* __gnext, char_type* __gend) - { this->setg(__gbegin, __gnext, __gend); } - -protected: // Protected interface to the put area - - char_type* pbase() const { return _M_pbegin; } // Beginning - char_type* pptr() const { return _M_pnext; } // Current position - char_type* epptr() const { return _M_pend; } // End - - void pbump(int __n) { _M_pnext += __n; } - void setp(char_type* __pbegin, char_type* __pend) { - _M_pbegin = __pbegin; - _M_pnext = __pbegin; - _M_pend = __pend; - } - -protected: // Virtual buffer management functions. - - virtual basic_streambuf<_CharT, _Traits>* setbuf(char_type*, streamsize); - - // Alters the stream position, using an integer offset. In this - // class seekoff does nothing; subclasses are expected to override it. - virtual pos_type seekoff(off_type, ios_base::seekdir, - ios_base::openmode = ios_base::in | ios_base::out); - - // Alters the stream position, using a previously obtained streampos. In - // this class seekpos does nothing; subclasses are expected to override it. - virtual pos_type - seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out); - - // Synchronizes (i.e. flushes) the buffer. All subclasses are expected to - // override this virtual member function. - virtual int sync(); - - -public: // Buffer management. - basic_streambuf<_CharT, _Traits>* pubsetbuf(char_type* __s, streamsize __n) - { return this->setbuf(__s, __n); } - - pos_type pubseekoff(off_type __offset, ios_base::seekdir __way, - ios_base::openmode __mod = ios_base::in | ios_base::out) - { return this->seekoff(__offset, __way, __mod); } - - pos_type pubseekpos(pos_type __sp, - ios_base::openmode __mod = ios_base::in | ios_base::out) - { return this->seekpos(__sp, __mod); } - - int pubsync() { return this->sync(); } - -protected: // Virtual get area functions, as defined in - // 17.5.2.4.3 and 17.5.2.4.4 of the standard. - // Returns a lower bound on the number of characters that we can read, - // with underflow, before reaching end of file. (-1 is a special value: - // it means that underflow will fail.) Most subclasses should probably - // override this virtual member function. - virtual streamsize showmanyc(); - - // Reads up to __n characters. Return value is the number of - // characters read. - virtual streamsize xsgetn(char_type* __s, streamsize __n); - - // Called when there is no read position, i.e. when gptr() is null - // or when gptr() >= egptr(). Subclasses are expected to override - // this virtual member function. - virtual int_type underflow(); - - // Similar to underflow(), but used for unbuffered input. Most - // subclasses should probably override this virtual member function. - virtual int_type uflow(); - - // Called when there is no putback position, i.e. when gptr() is null - // or when gptr() == eback(). All subclasses are expected to override - // this virtual member function. - virtual int_type pbackfail(int_type = traits_type::eof()); - -protected: // Virtual put area functions, as defined in - // 27.5.2.4.5 of the standard. - - // Writes up to __n characters. Return value is the number of characters - // written. - virtual streamsize xsputn(const char_type* __s, streamsize __n); - - // Extension: writes up to __n copies of __c. Return value is the number - // of characters written. - virtual streamsize _M_xsputnc(char_type __c, streamsize __n); - - // Called when there is no write position. All subclasses are expected to - // override this virtual member function. - virtual int_type overflow(int_type = traits_type::eof()); - -public: // Public members for writing characters. - // Write a single character. - int_type sputc(char_type __c) { - return ((_M_pnext < _M_pend) ? _Traits::to_int_type(*_M_pnext++ = __c) - : this->overflow(_Traits::to_int_type(__c))); - } - - // Write __n characters. - streamsize sputn(const char_type* __s, streamsize __n) - { return this->xsputn(__s, __n); } - - // Extension: write __n copies of __c. - streamsize _M_sputnc(char_type __c, streamsize __n) - { return this->_M_xsputnc(__c, __n); } - -private: // Helper functions. - int_type _M_snextc_aux(); - -public: // Public members for reading characters. - streamsize in_avail() { - return (_M_gnext < _M_gend) ? (_M_gend - _M_gnext) : this->showmanyc(); - } - - // Advance to the next character and return it. - int_type snextc() { - return ( _M_gend - _M_gnext > 1 ? - _Traits::to_int_type(*++_M_gnext) : - this->_M_snextc_aux()); - } - - // Return the current character and advance to the next. - int_type sbumpc() { - return _M_gnext < _M_gend ? _Traits::to_int_type(*_M_gnext++) - : this->uflow(); - } - - // Return the current character without advancing to the next. - int_type sgetc() { - return _M_gnext < _M_gend ? _Traits::to_int_type(*_M_gnext) - : this->underflow(); - } - - streamsize sgetn(char_type* __s, streamsize __n) - { return this->xsgetn(__s, __n); } - - int_type sputbackc(char_type __c) { - return ((_M_gbegin < _M_gnext) && _Traits::eq(__c, *(_M_gnext - 1))) - ? _Traits::to_int_type(*--_M_gnext) - : this->pbackfail(_Traits::to_int_type(__c)); - } - - int_type sungetc() { - return (_M_gbegin < _M_gnext) - ? _Traits::to_int_type(*--_M_gnext) - : this->pbackfail(); - } - -protected: // Virtual locale functions. - - // This is a hook, called by pubimbue() just before pubimbue() - // sets the streambuf's locale to __loc. Note that imbue should - // not (and cannot, since it has no access to streambuf's private - // members) set the streambuf's locale itself. - virtual void imbue(const locale&); - -public: // Locale-related functions. - locale pubimbue(const locale&); - locale getloc() const { return _M_locale; } - -#if !defined (_STLP_NO_ANACHRONISMS) - void stossc() { this->sbumpc(); } -#endif -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_streambuf >; -# if !defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_streambuf >; -# endif // _STLP_NO_WCHAR_T -#endif // _STLP_USE_TEMPLATE_EXPORT - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_string.c b/build/stlport/stlport/stl/_string.c deleted file mode 100644 index ae55092635bd..000000000000 --- a/build/stlport/stlport/stl/_string.c +++ /dev/null @@ -1,673 +0,0 @@ -/* - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - */ - -#ifndef _STLP_STRING_C -#define _STLP_STRING_C - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -#ifndef _STLP_INTERNAL_CTRAITS_FUNCTIONS_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_H -# include -#endif - -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# define basic_string _STLP_NO_MEM_T_NAME(str) -#elif defined (_STLP_DEBUG) -# define basic_string _STLP_NON_DBG_NAME(str) -#endif - -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -# define __size_type__ size_t -# define size_type size_t -# define iterator _CharT* -#else -# define __size_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_string<_CharT,_Traits,_Alloc>::size_type -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// A helper class to use a char_traits as a function object. -template -struct _Not_within_traits : public unary_function { - typedef typename _Traits::char_type _CharT; - const _CharT* _M_first; - const _CharT* _M_last; - - _Not_within_traits(const _CharT* __f, const _CharT* __l) - : _M_first(__f), _M_last(__l) {} - - bool operator()(const _CharT& __x) const { - return find_if(_M_first, _M_last, - _STLP_PRIV _Eq_char_bound<_Traits>(__x)) == _M_last; - } -}; - -template -inline _InputIter __str_find_first_of_aux(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Traits*, const __true_type& /* _STLportTraits */) -{ return __find_first_of(__first1, __last1, __first2, __last2); } - -template -inline _InputIter __str_find_first_of_aux(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Traits*, const __false_type& /* _STLportTraits */) -{ return __find_first_of(__first1, __last1, __first2, __last2, _STLP_PRIV _Eq_traits<_Traits>()); } - -template -inline _InputIter __str_find_first_of(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Traits* __traits) { -#if !defined (__BORLANDC__) - typedef typename _IsSTLportClass<_Traits>::_Ret _STLportTraits; -#else - enum { _Is = _IsSTLportClass<_Traits>::_Is }; - typedef typename __bool2type<_Is>::_Ret _STLportTraits; -#endif - return __str_find_first_of_aux(__first1, __last1, __first2, __last2, __traits, _STLportTraits()); -} - -template -inline _InputIter __str_find_first_not_of_aux3(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Traits* /* __traits */, const __true_type& __useStrcspnLikeAlgo) -{ return __find_first_of_aux2(__first1, __last1, __first2, __last2, __first2, not1(_Identity()), __useStrcspnLikeAlgo); } - -template -inline _InputIter __str_find_first_not_of_aux3(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Traits* /* __traits */, const __false_type& /* _UseStrcspnLikeAlgo */) -{ return _STLP_STD::find_if(__first1, __last1, _STLP_PRIV _Not_within_traits<_Traits>(__first2, __last2)); } - -template -inline _InputIter __str_find_first_not_of_aux2(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Tp* __pt, _Traits* __traits) { - typedef typename _IsIntegral<_Tp>::_Ret _IsIntegral; - typedef typename _IsCharLikeType<_CharT>::_Ret _IsCharLike; - typedef typename _Land2<_IsIntegral, _IsCharLike>::_Ret _UseStrcspnLikeAlgo; - return __str_find_first_not_of_aux3(__first1, __last1, __first2, __last2, __traits, _UseStrcspnLikeAlgo()); -} - -template -inline _InputIter __str_find_first_not_of_aux1(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Traits* __traits, const __true_type& /* _STLportTraits */) -{ return __str_find_first_not_of_aux2(__first1, __last1, __first2, __last2, - _STLP_VALUE_TYPE(__first1, _InputIter), __traits); } - -template -inline _InputIter __str_find_first_not_of_aux1(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Traits*, const __false_type& /* _STLportTraits */) -{ return _STLP_STD::find_if(__first1, __last1, _STLP_PRIV _Not_within_traits<_Traits>(__first2, __last2)); } - -template -inline _InputIter __str_find_first_not_of(_InputIter __first1, _InputIter __last1, - const _CharT* __first2, const _CharT* __last2, - _Traits* __traits) { -#if !defined (__BORLANDC__) - typedef typename _IsSTLportClass<_Traits>::_Ret _STLportTraits; -#else - enum { _Is = _IsSTLportClass<_Traits>::_Is }; - typedef typename __bool2type<_Is>::_Ret _STLportTraits; -#endif - return __str_find_first_not_of_aux1(__first1, __last1, __first2, __last2, __traits, _STLportTraits()); -} - -// ------------------------------------------------------------ -// Non-inline declarations. - -#if !defined (basic_string) -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -// Change the string's capacity so that it is large enough to hold -// at least __res_arg elements, plus the terminating _CharT(). Note that, -// if __res_arg < capacity(), this member function may actually decrease -// the string's capacity. -template -void basic_string<_CharT,_Traits,_Alloc>::reserve(size_type __res_arg) { - if (__res_arg > max_size()) - this->_M_throw_length_error(); - - size_type __n = (max)(__res_arg, size()) + 1; - if (__n < this->_M_capacity()) - return; - - _M_reserve(__n); -} - -template -void basic_string<_CharT,_Traits,_Alloc>::_M_reserve(size_type __n) { - pointer __new_start = this->_M_start_of_storage.allocate(__n, __n); - pointer __new_finish = _STLP_PRIV __ucopy(this->_M_Start(), this->_M_Finish(), __new_start); - _M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __n); -} - -template -basic_string<_CharT,_Traits,_Alloc>& -basic_string<_CharT,_Traits,_Alloc>::append(size_type __n, _CharT __c) { - if (__n > 0) { - if (__n > max_size() - size()) - this->_M_throw_length_error(); - if (__n >= this->_M_rest()) - _M_reserve(_M_compute_next_size(__n)); - _STLP_PRIV __uninitialized_fill_n(this->_M_finish + 1, __n - 1, __c); - _M_construct_null(this->_M_finish + __n); - _Traits::assign(*end(), __c); - this->_M_finish += __n; - } - return *this; -} - -template -basic_string<_CharT, _Traits, _Alloc>& -basic_string<_CharT, _Traits, _Alloc>::_M_append(const _CharT* __first, const _CharT* __last) { - if (__first != __last) { - size_type __n = __STATIC_CAST(size_type, __last - __first); - if (__n >= this->_M_rest()) { - size_type __len = _M_compute_next_size(__n); - pointer __new_start = this->_M_start_of_storage.allocate(__len, __len); - pointer __new_finish = _STLP_PRIV __ucopy(this->_M_Start(), this->_M_Finish(), __new_start); - __new_finish = _STLP_PRIV __ucopy(__first, __last, __new_finish); - _M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - else { - const _CharT* __f1 = __first; - ++__f1; - _STLP_PRIV __ucopy(__f1, __last, this->_M_finish + 1); - _M_construct_null(this->_M_finish + __n); - _Traits::assign(*end(), *__first); - this->_M_finish += __n; - } - } - return *this; -} - -template -basic_string<_CharT,_Traits,_Alloc>& -basic_string<_CharT,_Traits,_Alloc>::assign(size_type __n, _CharT __c) { - if (__n <= size()) { - _Traits::assign(this->_M_Start(), __n, __c); - erase(begin() + __n, end()); - } - else { - if (__n < capacity()) { - _Traits::assign(this->_M_Start(), size(), __c); - append(__n - size(), __c); - } - else { - _Self __str(__n, __c); - this->swap(__str); - } - } - return *this; -} - -template -basic_string<_CharT,_Traits,_Alloc>& -basic_string<_CharT,_Traits,_Alloc>::_M_assign(const _CharT* __f, const _CharT* __l) { - ptrdiff_t __n = __l - __f; - if (__STATIC_CAST(size_type, __n) <= size()) { - _Traits::move(this->_M_Start(), __f, __n); - erase(begin() + __n, end()); - } - else { - _Traits::move(this->_M_Start(), __f, size()); - _M_append(__f + size(), __l); - } - return *this; -} - -template -_CharT* basic_string<_CharT,_Traits,_Alloc> ::_M_insert_aux(_CharT* __p, - _CharT __c) { - pointer __new_pos = __p; - if (this->_M_rest() > 1 ) { - _M_construct_null(this->_M_finish + 1); - _Traits::move(__p + 1, __p, this->_M_finish - __p); - _Traits::assign(*__p, __c); - ++this->_M_finish; - } - else { - size_type __len = _M_compute_next_size(1); - pointer __new_start = this->_M_start_of_storage.allocate(__len, __len); - __new_pos = _STLP_PRIV __ucopy(this->_M_Start(), __p, __new_start); - _Traits::assign(*__new_pos, __c); - pointer __new_finish = __new_pos + 1; - __new_finish = _STLP_PRIV __ucopy(__p, this->_M_finish, __new_finish); - _M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - return __new_pos; -} - -template -void basic_string<_CharT,_Traits,_Alloc>::insert(iterator __pos, - size_t __n, _CharT __c) { - if (__n != 0) { - if (this->_M_rest() > __n) { - const size_type __elems_after = this->_M_finish - __pos; - pointer __old_finish = this->_M_finish; - if (__elems_after >= __n) { - _STLP_PRIV __ucopy((this->_M_finish - __n) + 1, this->_M_finish + 1, this->_M_finish + 1); - this->_M_finish += __n; - _Traits::move(__pos + __n, __pos, (__elems_after - __n) + 1); - _Traits::assign(__pos, __n, __c); - } - else { - _STLP_PRIV __uninitialized_fill_n(this->_M_finish + 1, __n - __elems_after - 1, __c); - this->_M_finish += __n - __elems_after; - _STLP_PRIV __ucopy(__pos, __old_finish + 1, this->_M_finish); - this->_M_finish += __elems_after; - _Traits::assign(__pos, __elems_after + 1, __c); - } - } - else { - size_type __len = _M_compute_next_size(__n); - pointer __new_start = this->_M_start_of_storage.allocate(__len, __len); - pointer __new_finish = _STLP_PRIV __ucopy(this->_M_Start(), __pos, __new_start); - __new_finish = _STLP_PRIV __uninitialized_fill_n(__new_finish, __n, __c); - __new_finish = _STLP_PRIV __ucopy(__pos, this->_M_finish, __new_finish); - _M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - } -} - -template -void basic_string<_CharT,_Traits,_Alloc>::_M_insert(iterator __pos, - const _CharT* __first, const _CharT* __last, - bool __self_ref) { - //this version has to take care about the auto referencing - if (__first != __last) { - const size_t __n = __last - __first; - if (this->_M_rest() > __n) { - const size_t __elems_after = this->_M_finish - __pos; - pointer __old_finish = this->_M_finish; - if (__elems_after >= __n) { - _STLP_PRIV __ucopy((this->_M_finish - __n) + 1, this->_M_finish + 1, this->_M_finish + 1); - this->_M_finish += __n; - _Traits::move(__pos + __n, __pos, (__elems_after - __n) + 1); - if (!__self_ref || __last < __pos) { - _M_copy(__first, __last, __pos); - } - else { - //We have to check that the source buffer hasn't move - if (__first >= __pos) { - //The source buffer has move - __first += __n; - __last += __n; - _M_copy(__first, __last, __pos); - } - else { - //The source buffer hasn't move, it has been duplicated - _M_move(__first, __last, __pos); - } - } - } - else { - const_iterator __mid = __first; - __mid += __elems_after + 1; - _STLP_PRIV __ucopy(__mid, __last, this->_M_finish + 1); - this->_M_finish += __n - __elems_after; - _STLP_PRIV __ucopy(__pos, __old_finish + 1, this->_M_finish); - this->_M_finish += __elems_after; - if (!__self_ref) - _M_copy(__first, __mid, __pos); - else - _M_move(__first, __mid, __pos); - } - } - else { - size_type __len = _M_compute_next_size(__n); - pointer __new_start = this->_M_start_of_storage.allocate(__len, __len); - pointer __new_finish = _STLP_PRIV __ucopy(this->_M_Start(), __pos, __new_start); - __new_finish = _STLP_PRIV __ucopy(__first, __last, __new_finish); - __new_finish = _STLP_PRIV __ucopy(__pos, this->_M_finish, __new_finish); - _M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - } -} - -template -basic_string<_CharT,_Traits,_Alloc>& -basic_string<_CharT,_Traits,_Alloc> ::replace(iterator __first, iterator __last, - size_type __n, _CharT __c) { - size_type __len = (size_type)(__last - __first); - - if (__len >= __n) { - _Traits::assign(__first, __n, __c); - erase(__first + __n, __last); - } - else { - _Traits::assign(__first, __len, __c); - insert(__last, __n - __len, __c); - } - return *this; -} - -template -basic_string<_CharT,_Traits,_Alloc>& -basic_string<_CharT,_Traits,_Alloc> ::_M_replace(iterator __first, iterator __last, - const _CharT* __f, const _CharT* __l, - bool __self_ref) { - const ptrdiff_t __n = __l - __f; - const difference_type __len = __last - __first; - if (__len >= __n) { - if (!__self_ref || __l < __first || __f >= __last) - _M_copy(__f, __l, __first); - else - _M_move(__f, __l, __first); - erase(__first + __n, __last); - } else if (!__self_ref || (__f >= __last) || (__l <= __first)) { // no overlap - const_iterator __m = __f + __len; - _M_copy(__f, __m, __first); - _M_insert(__last, __m, __l, __self_ref ); - } else if (__f < __first) { // we have to take care of overlaping - const_iterator __m = __f + __len; - // We have to deal with possible reallocation because we do insert first. - const difference_type __off_dest = __first - this->begin(); - const difference_type __off_src = __f - this->begin(); - _M_insert(__last, __m, __l, true); - _Traits::move(begin() + __off_dest, begin() + __off_src, __len); - } else { - const_iterator __m = __f + __len; - _Traits::move(__first, __f, __len); - _M_insert(__last, __m, __l, true); - } - return *this; -} - -template -__size_type__ basic_string<_CharT,_Traits,_Alloc>::find( const _CharT* __s, size_type __pos, - size_type __n) const -{ - const size_t __len = size(); - if (__pos >= __len || __pos + __n > __len) { - if ( __n == 0 && __pos <= __len ) { // marginal case - return __pos; - } - return npos; - } - - const_pointer __result = - _STLP_STD::search(this->_M_Start() + __pos, this->_M_Finish(), - __s, __s + __n, _STLP_PRIV _Eq_traits<_Traits>()); - return __result != this->_M_Finish() ? __result - this->_M_Start() : npos; -} - -template -__size_type__ basic_string<_CharT,_Traits,_Alloc>::find(_CharT __c, size_type __pos) const -{ - if (__pos >= size()) { /*__pos + 1 > size()*/ - return npos; - } - - const_pointer __result = - _STLP_STD::find_if(this->_M_Start() + __pos, this->_M_Finish(), - _STLP_PRIV _Eq_char_bound<_Traits>(__c)); - return __result != this->_M_Finish() ? __result - this->_M_Start() : npos; -} - -template -__size_type__ basic_string<_CharT,_Traits,_Alloc>::rfind(const _CharT* __s, size_type __pos, - size_type __n) const -{ - const size_type __len = size(); - if ( __len < __n ) { - return npos; - } - const_pointer __last = this->_M_Start() + (min)( __len - __n, __pos) + __n; - if ( __n == 0 ) { // marginal case - return __last - this->_M_Start(); - } - const_pointer __result = _STLP_STD::find_end(this->_M_Start(), __last, - __s, __s + __n, _STLP_PRIV _Eq_traits<_Traits>()); - return __result != __last ? __result - this->_M_Start() : npos; -} - -template -__size_type__ basic_string<_CharT,_Traits,_Alloc>::rfind(_CharT __c, size_type __pos) const -{ - const size_type __len = size(); - if ( __len < 1 ) { - return npos; - } - const_iterator __last = begin() + (min)(__len - 1, __pos) + 1; - const_reverse_iterator __rresult = - _STLP_STD::find_if(const_reverse_iterator(__last), rend(), - _STLP_PRIV _Eq_char_bound<_Traits>(__c)); - return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos; -} - -template __size_type__ -basic_string<_CharT,_Traits,_Alloc> ::find_first_of(const _CharT* __s, size_type __pos, - size_type __n) const { - if (__pos >= size()) /*__pos + 1 > size()*/ - return npos; - else { - const_iterator __result = _STLP_PRIV __str_find_first_of(begin() + __pos, end(), - __s, __s + __n, - __STATIC_CAST(_Traits*, 0)); - return __result != end() ? __result - begin() : npos; - } -} - -template - __size_type__ -basic_string<_CharT,_Traits,_Alloc> ::find_last_of(const _CharT* __s, size_type __pos, - size_type __n) const -{ - const size_type __len = size(); - if ( __len < 1 ) { - return npos; - } - const const_iterator __last = begin() + (min)(__len - 1, __pos) + 1; - const const_reverse_iterator __rresult = - _STLP_PRIV __str_find_first_of(const_reverse_iterator(__last), rend(), - __s, __s + __n, - __STATIC_CAST(_Traits*, 0)); - return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos; -} - - -template __size_type__ -basic_string<_CharT,_Traits,_Alloc> ::find_first_not_of(const _CharT* __s, size_type __pos, - size_type __n) const { - typedef typename _Traits::char_type _CharType; - if (__pos >= size()) /*__pos + 1 >= size()*/ - return npos; - else { - const_pointer __result = _STLP_PRIV __str_find_first_not_of(this->_M_Start() + __pos, this->_M_Finish(), - __STATIC_CAST(const _CharType*, __s), - __STATIC_CAST(const _CharType*, __s) + __n, - __STATIC_CAST(_Traits*, 0)); - return __result != this->_M_finish ? __result - this->_M_Start() : npos; - } -} - -template __size_type__ -basic_string<_CharT,_Traits,_Alloc> ::find_first_not_of(_CharT __c, size_type __pos) const { - if (1 > size()) - return npos; - else { - const_pointer __result = _STLP_STD::find_if(this->_M_Start() + __pos, this->_M_Finish(), - _STLP_PRIV _Neq_char_bound<_Traits>(__c)); - return __result != this->_M_finish ? __result - this->_M_Start() : npos; - } -} - -template -__size_type__ -basic_string<_CharT,_Traits,_Alloc>::find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const -{ - typedef typename _Traits::char_type _CharType; - const size_type __len = size(); - if ( __len < 1 ) { - return npos; - } - const_iterator __last = begin() + (min)(__len - 1, __pos) + 1; - const_reverse_iterator __rlast = const_reverse_iterator(__last); - const_reverse_iterator __rresult = - _STLP_PRIV __str_find_first_not_of(__rlast, rend(), - __STATIC_CAST(const _CharType*, __s), - __STATIC_CAST(const _CharType*, __s) + __n, - __STATIC_CAST(_Traits*, 0)); - return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos; -} - -template -__size_type__ -basic_string<_CharT, _Traits, _Alloc>::find_last_not_of(_CharT __c, size_type __pos) const -{ - const size_type __len = size(); - if ( __len < 1 ) { - return npos; - } - const_iterator __last = begin() + (min)(__len - 1, __pos) + 1; - const_reverse_iterator __rlast = const_reverse_iterator(__last); - const_reverse_iterator __rresult = - _STLP_STD::find_if(__rlast, rend(), - _STLP_PRIV _Neq_char_bound<_Traits>(__c)); - return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos; -} - -#if !defined (basic_string) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -template -void _STLP_CALL _S_string_copy(const basic_string<_CharT,_Traits,_Alloc>& __s, - _CharT* __buf, size_t __n) { - if (__n > 0) { - __n = (min) (__n - 1, __s.size()); - _STLP_STD::copy(__s.begin(), __s.begin() + __n, __buf); - __buf[__n] = _CharT(); - } -} - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#include - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// _String_base methods -template -void _String_base<_Tp,_Alloc>::_M_throw_length_error() const -{ __stl_throw_length_error("basic_string"); } - -template -void _String_base<_Tp, _Alloc>::_M_throw_out_of_range() const -{ __stl_throw_out_of_range("basic_string"); } - -template -void _String_base<_Tp, _Alloc>::_M_allocate_block(size_t __n) { - if ((__n <= (max_size() + 1)) && (__n > 0)) { -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - if (__n > _DEFAULT_SIZE) { - this->_M_start_of_storage._M_data = _M_start_of_storage.allocate(__n, __n); - this->_M_finish = this->_M_start_of_storage._M_data; - this->_M_buffers._M_end_of_storage = this->_M_start_of_storage._M_data + __n; - } -#else - this->_M_start_of_storage._M_data = _M_start_of_storage.allocate(__n, __n); - this->_M_finish = this->_M_start_of_storage._M_data; - this->_M_end_of_storage = this->_M_start_of_storage._M_data + __n; -#endif - } else { - this->_M_throw_length_error(); - } -} - -#if !defined (basic_string) -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) -template -basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT* __s) - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type()) { - _STLP_FIX_LITERAL_BUG(__s) - _M_range_initialize(__s, __s + traits_type::length(__s)); -} -#endif - -template -basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT* __s, - const allocator_type& __a) - : _STLP_PRIV _String_base<_CharT,_Alloc>(__a) { - _STLP_FIX_LITERAL_BUG(__s) - _M_range_initialize(__s, __s + traits_type::length(__s)); -} - -template -basic_string<_CharT, _Traits, _Alloc>::basic_string(const basic_string<_CharT, _Traits, _Alloc> & __s) - : _STLP_PRIV _String_base<_CharT,_Alloc>(__s.get_allocator()) -{ _M_range_initialize(__s._M_Start(), __s._M_Finish()); } - -#if defined (basic_string) -_STLP_MOVE_TO_STD_NAMESPACE -# undef basic_string -#endif - -#if !defined (_STLP_STATIC_CONST_INIT_BUG) && !defined (_STLP_NO_STATIC_CONST_DEFINITION) -template -const size_t basic_string<_CharT, _Traits, _Alloc>::npos; -#endif - -_STLP_END_NAMESPACE - -#undef __size_type__ -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -# undef size_type -# undef iterator -#endif - -#endif /* _STLP_STRING_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_string.h b/build/stlport/stlport/stl/_string.h deleted file mode 100644 index 540822b3c147..000000000000 --- a/build/stlport/stlport/stl/_string.h +++ /dev/null @@ -1,1182 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_STRING_H -#define _STLP_INTERNAL_STRING_H - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#ifndef _STLP_STRING_FWD_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_UNINITIALIZED_H -# include -#endif - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -# include -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -#if defined (__MWERKS__) && ! defined (_STLP_USE_OWN_NAMESPACE) - -// MSL implementation classes expect to see the definition of streampos -// when this header is included. We expect this to be fixed in later MSL -// implementations -# if !defined( __MSL_CPP__ ) || __MSL_CPP__ < 0x4105 -# include -# endif -#endif // __MWERKS__ - -/* - * Standard C++ string class. This class has performance - * characteristics very much like vector<>, meaning, for example, that - * it does not perform reference-count or copy-on-write, and that - * concatenation of two strings is an O(N) operation. - - * There are three reasons why basic_string is not identical to - * vector. - * First, basic_string always stores a null character at the end; - * this makes it possible for c_str to be a fast operation. - * Second, the C++ standard requires basic_string to copy elements - * using char_traits<>::assign, char_traits<>::copy, and - * char_traits<>::move. This means that all of vector<>'s low-level - * operations must be rewritten. Third, basic_string<> has a lot of - * extra functions in its interface that are convenient but, strictly - * speaking, redundant. - */ - -#include - -_STLP_BEGIN_NAMESPACE - -// ------------------------------------------------------------ -// Class basic_string. - -// Class invariants: -// (1) [start, finish) is a valid range. -// (2) Each iterator in [start, finish) points to a valid object -// of type value_type. -// (3) *finish is a valid object of type value_type; when -// value_type is not a POD it is value_type(). -// (4) [finish + 1, end_of_storage) is a valid range. -// (5) Each iterator in [finish + 1, end_of_storage) points to -// unininitialized memory. - -// Note one important consequence: a string of length n must manage -// a block of memory whose size is at least n + 1. - -_STLP_MOVE_TO_PRIV_NAMESPACE -struct _String_reserve_t {}; -_STLP_MOVE_TO_STD_NAMESPACE - -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# define basic_string _STLP_NO_MEM_T_NAME(str) -#elif defined (_STLP_DEBUG) -# define basic_string _STLP_NON_DBG_NAME(str) -#endif - -#if defined (basic_string) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -#if defined (__DMC__) -# define _STLP_PRIVATE public -#elif defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# define _STLP_PRIVATE protected -#else -# define _STLP_PRIVATE private -#endif - -template -class basic_string : _STLP_PRIVATE _STLP_PRIV _String_base<_CharT,_Alloc> -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (basic_string) - , public __stlport_class > -#endif -{ -_STLP_PRIVATE: // Private members inherited from base. - typedef _STLP_PRIV _String_base<_CharT,_Alloc> _Base; - typedef basic_string<_CharT, _Traits, _Alloc> _Self; - -public: - typedef _CharT value_type; - typedef _Traits traits_type; - - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef typename _Base::size_type size_type; - typedef ptrdiff_t difference_type; - typedef random_access_iterator_tag _Iterator_category; - - typedef const value_type* const_iterator; - typedef value_type* iterator; - - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - -#include - - typedef _STLP_PRIV _String_reserve_t _Reserve_t; - -public: // Constructor, destructor, assignment. - typedef typename _Base::allocator_type allocator_type; - - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR((const allocator_type&)this->_M_start_of_storage, _CharT); } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit basic_string(const allocator_type& __a = allocator_type()) -#else - basic_string() - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type(), _Base::_DEFAULT_SIZE) - { _M_terminate_string(); } - explicit basic_string(const allocator_type& __a) -#endif - : _STLP_PRIV _String_base<_CharT,_Alloc>(__a, _Base::_DEFAULT_SIZE) - { _M_terminate_string(); } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - basic_string(_Reserve_t, size_t __n, - const allocator_type& __a = allocator_type()) -#else - basic_string(_Reserve_t, size_t __n) - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type(), __n + 1) - { _M_terminate_string(); } - basic_string(_Reserve_t, size_t __n, const allocator_type& __a) -#endif - : _STLP_PRIV _String_base<_CharT,_Alloc>(__a, __n + 1) - { _M_terminate_string(); } - - basic_string(const _Self&); - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - basic_string(const _Self& __s, size_type __pos, size_type __n = npos, - const allocator_type& __a = allocator_type()) -#else - basic_string(const _Self& __s, size_type __pos) - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type()) { - if (__pos > __s.size()) - this->_M_throw_out_of_range(); - else - _M_range_initialize(__s._M_Start() + __pos, __s._M_Finish()); - } - basic_string(const _Self& __s, size_type __pos, size_type __n) - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type()) { - if (__pos > __s.size()) - this->_M_throw_out_of_range(); - else - _M_range_initialize(__s._M_Start() + __pos, - __s._M_Start() + __pos + (min) (__n, __s.size() - __pos)); - } - basic_string(const _Self& __s, size_type __pos, size_type __n, - const allocator_type& __a) -#endif - : _STLP_PRIV _String_base<_CharT,_Alloc>(__a) { - if (__pos > __s.size()) - this->_M_throw_out_of_range(); - else - _M_range_initialize(__s._M_Start() + __pos, - __s._M_Start() + __pos + (min) (__n, __s.size() - __pos)); - } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - basic_string(const _CharT* __s, size_type __n, - const allocator_type& __a = allocator_type()) -#else - basic_string(const _CharT* __s, size_type __n) - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type()) { - _STLP_FIX_LITERAL_BUG(__s) - _M_range_initialize(__s, __s + __n); - } - basic_string(const _CharT* __s, size_type __n, const allocator_type& __a) -#endif - : _STLP_PRIV _String_base<_CharT,_Alloc>(__a) { - _STLP_FIX_LITERAL_BUG(__s) - _M_range_initialize(__s, __s + __n); - } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - basic_string(const _CharT* __s, - const allocator_type& __a = allocator_type()); -#else - basic_string(const _CharT* __s); - basic_string(const _CharT* __s, const allocator_type& __a); -#endif - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - basic_string(size_type __n, _CharT __c, - const allocator_type& __a = allocator_type()) -#else - basic_string(size_type __n, _CharT __c) - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type(), __n + 1) { - this->_M_finish = _STLP_PRIV __uninitialized_fill_n(this->_M_Start(), __n, __c); - _M_terminate_string(); - } - basic_string(size_type __n, _CharT __c, const allocator_type& __a) -#endif - : _STLP_PRIV _String_base<_CharT,_Alloc>(__a, __n + 1) { - this->_M_finish = _STLP_PRIV __uninitialized_fill_n(this->_M_Start(), __n, __c); - _M_terminate_string(); - } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - basic_string(__move_source<_Self> src) - : _STLP_PRIV _String_base<_CharT,_Alloc>(__move_source<_Base>(src.get())) {} -#endif - - // Check to see if _InputIterator is an integer type. If so, then - // it can't be an iterator. -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - template - basic_string(_InputIterator __f, _InputIterator __l, - const allocator_type & __a _STLP_ALLOCATOR_TYPE_DFL) - : _STLP_PRIV _String_base<_CharT,_Alloc>(__a) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_dispatch(__f, __l, _Integral()); - } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - basic_string(_InputIterator __f, _InputIterator __l) - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type()) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_dispatch(__f, __l, _Integral()); - } -# endif -#else -# if !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - basic_string(const _CharT* __f, const _CharT* __l, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _STLP_PRIV _String_base<_CharT,_Alloc>(__a) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _M_range_initialize(__f, __l); - } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - basic_string(const _CharT* __f, const _CharT* __l) - : _STLP_PRIV _String_base<_CharT,_Alloc>(allocator_type()) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _M_range_initialize(__f, __l); - } -# endif -# endif -# if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - /* We need an additionnal constructor to build an empty string without - * any allocation or termination char*/ -protected: - struct _CalledFromWorkaround_t {}; - basic_string(_CalledFromWorkaround_t, const allocator_type &__a) - : _String_base<_CharT,_Alloc>(__a) {} -# endif -#endif - -_STLP_PRIVATE: - size_type _M_compute_next_size(size_type __n) { - const size_type __size = size(); - if (__n > max_size() - __size) - this->_M_throw_length_error(); - size_type __len = __size + (max)(__n, __size) + 1; - if (__len > max_size() || __len < __size) - __len = max_size(); // overflow - return __len; - } - - template - void _M_range_initialize(_InputIter __f, _InputIter __l, - const input_iterator_tag &__tag) { - this->_M_allocate_block(); - _M_construct_null(this->_M_Finish()); - _M_appendT(__f, __l, __tag); - } - - template - void _M_range_initialize(_ForwardIter __f, _ForwardIter __l, - const forward_iterator_tag &) { - difference_type __n = _STLP_STD::distance(__f, __l); - this->_M_allocate_block(__n + 1); - this->_M_finish = uninitialized_copy(__f, __l, this->_M_Start()); - this->_M_terminate_string(); - } - - template - void _M_range_initializeT(_InputIter __f, _InputIter __l) { - _M_range_initialize(__f, __l, _STLP_ITERATOR_CATEGORY(__f, _InputIter)); - } - - template - void _M_initialize_dispatch(_Integer __n, _Integer __x, const __true_type& /*_Integral*/) { - this->_M_allocate_block(__n + 1); - this->_M_finish = _STLP_PRIV __uninitialized_fill_n(this->_M_Start(), __n, __x); - this->_M_terminate_string(); - } - - template - void _M_initialize_dispatch(_InputIter __f, _InputIter __l, const __false_type& /*_Integral*/) { - _M_range_initializeT(__f, __l); - } - -public: - _Self& operator=(const _Self& __s) { - if (&__s != this) - _M_assign(__s._M_Start(), __s._M_Finish()); - return *this; - } - - _Self& operator=(const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return _M_assign(__s, __s + traits_type::length(__s)); - } - - _Self& operator=(_CharT __c) - { return assign(__STATIC_CAST(size_type,1), __c); } - -private: - static _CharT _STLP_CALL _M_null() - { return _STLP_DEFAULT_CONSTRUCTED(_CharT); } - -_STLP_PRIVATE: // Helper functions used by constructors - // and elsewhere. - void _M_construct_null(_CharT* __p) const - { _STLP_STD::_Construct(__p); } - void _M_terminate_string() - { _M_construct_null(this->_M_Finish()); } - bool _M_inside(const _CharT* __s) const { - _STLP_FIX_LITERAL_BUG(__s) - return (__s >= this->_M_Start()) && (__s < this->_M_Finish()); - } - - void _M_range_initialize(const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - ptrdiff_t __n = __l - __f; - this->_M_allocate_block(__n + 1); - this->_M_finish = uninitialized_copy(__f, __l, this->_M_Start()); - _M_terminate_string(); - } - -public: // Iterators. - iterator begin() { return this->_M_Start(); } - iterator end() { return this->_M_Finish(); } - const_iterator begin() const { return this->_M_Start(); } - const_iterator end() const { return this->_M_Finish(); } - - reverse_iterator rbegin() - { return reverse_iterator(this->_M_Finish()); } - reverse_iterator rend() - { return reverse_iterator(this->_M_Start()); } - const_reverse_iterator rbegin() const - { return const_reverse_iterator(this->_M_Finish()); } - const_reverse_iterator rend() const - { return const_reverse_iterator(this->_M_Start()); } - -public: // Size, capacity, etc. - size_type size() const { return this->_M_Finish() - this->_M_Start(); } - size_type length() const { return size(); } - size_type max_size() const { return _Base::max_size(); } - - void resize(size_type __n, _CharT __c) { - if (__n <= size()) - erase(begin() + __n, end()); - else - append(__n - size(), __c); - } - - void resize(size_type __n) { resize(__n, _M_null()); } - -private: - void _M_reserve(size_type); -public: - void reserve(size_type = 0); - - size_type capacity() const - { return this->_M_capacity() - 1; } - - void clear() { - if (!empty()) { - _Traits::assign(*(this->_M_Start()), _M_null()); - this->_M_finish = this->_M_Start(); - } - } - - bool empty() const { return this->_M_Start() == this->_M_Finish(); } - -public: // Element access. - - const_reference operator[](size_type __n) const - { return *(this->_M_Start() + __n); } - reference operator[](size_type __n) - { return *(this->_M_Start() + __n); } - - const_reference at(size_type __n) const { - if (__n >= size()) - this->_M_throw_out_of_range(); - return *(this->_M_Start() + __n); - } - - reference at(size_type __n) { - if (__n >= size()) - this->_M_throw_out_of_range(); - return *(this->_M_Start() + __n); - } - -public: // Append, operator+=, push_back. - - _Self& operator+=(const _Self& __s) { return append(__s); } - _Self& operator+=(const _CharT* __s) { _STLP_FIX_LITERAL_BUG(__s) return append(__s); } - _Self& operator+=(_CharT __c) { push_back(__c); return *this; } - -private: - _Self& _M_append(const _CharT* __first, const _CharT* __last); - -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - template - _Self& _M_appendT(_InputIter __first, _InputIter __last, - const input_iterator_tag &) { - for ( ; __first != __last ; ++__first) - push_back(*__first); - return *this; - } - - template - _Self& _M_appendT(_ForwardIter __first, _ForwardIter __last, - const forward_iterator_tag &) { - if (__first != __last) { - size_type __n = __STATIC_CAST(size_type, _STLP_STD::distance(__first, __last)); - if (__n >= this->_M_rest()) { - size_type __len = _M_compute_next_size(__n); - pointer __new_start = this->_M_start_of_storage.allocate(__len, __len); - pointer __new_finish = uninitialized_copy(this->_M_Start(), this->_M_Finish(), __new_start); - __new_finish = uninitialized_copy(__first, __last, __new_finish); - _M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - else { - _Traits::assign(*this->_M_finish, *__first++); - uninitialized_copy(__first, __last, this->_M_Finish() + 1); - _M_construct_null(this->_M_Finish() + __n); - this->_M_finish += __n; - } - } - return *this; - } - - template - _Self& _M_append_dispatch(_Integer __n, _Integer __x, const __true_type& /*Integral*/) - { return append((size_type) __n, (_CharT) __x); } - - template - _Self& _M_append_dispatch(_InputIter __f, _InputIter __l, const __false_type& /*Integral*/) - { return _M_appendT(__f, __l, _STLP_ITERATOR_CATEGORY(__f, _InputIter)); } - -public: - // Check to see if _InputIterator is an integer type. If so, then - // it can't be an iterator. - template - _Self& append(_InputIter __first, _InputIter __last) { - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - return _M_append_dispatch(__first, __last, _Integral()); - } -#else -public: - _Self& append(const _CharT* __first, const _CharT* __last) { - _STLP_FIX_LITERAL_BUG(__first)_STLP_FIX_LITERAL_BUG(__last) - return _M_append(__first, __last); - } -#endif - -public: - _Self& append(const _Self& __s) - { return _M_append(__s._M_Start(), __s._M_Finish()); } - - _Self& append(const _Self& __s, - size_type __pos, size_type __n) { - if (__pos > __s.size()) - this->_M_throw_out_of_range(); - return _M_append(__s._M_Start() + __pos, - __s._M_Start() + __pos + (min) (__n, __s.size() - __pos)); - } - - _Self& append(const _CharT* __s, size_type __n) - { _STLP_FIX_LITERAL_BUG(__s) return _M_append(__s, __s+__n); } - _Self& append(const _CharT* __s) - { _STLP_FIX_LITERAL_BUG(__s) return _M_append(__s, __s + traits_type::length(__s)); } - _Self& append(size_type __n, _CharT __c); - -public: - void push_back(_CharT __c) { - if (this->_M_rest() == 1 ) - _M_reserve(_M_compute_next_size(1)); - _M_construct_null(this->_M_Finish() + 1); - _Traits::assign(*(this->_M_Finish()), __c); - ++this->_M_finish; - } - - void pop_back() { - _Traits::assign(*(this->_M_Finish() - 1), _M_null()); - --this->_M_finish; - } - -public: // Assign - _Self& assign(const _Self& __s) - { return _M_assign(__s._M_Start(), __s._M_Finish()); } - - _Self& assign(const _Self& __s, - size_type __pos, size_type __n) { - if (__pos > __s.size()) - this->_M_throw_out_of_range(); - return _M_assign(__s._M_Start() + __pos, - __s._M_Start() + __pos + (min) (__n, __s.size() - __pos)); - } - - _Self& assign(const _CharT* __s, size_type __n) - { _STLP_FIX_LITERAL_BUG(__s) return _M_assign(__s, __s + __n); } - - _Self& assign(const _CharT* __s) - { _STLP_FIX_LITERAL_BUG(__s) return _M_assign(__s, __s + _Traits::length(__s)); } - - _Self& assign(size_type __n, _CharT __c); - -private: - _Self& _M_assign(const _CharT* __f, const _CharT* __l); - -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - // Helper functions for assign. - template - _Self& _M_assign_dispatch(_Integer __n, _Integer __x, const __true_type& /*_Integral*/) - { return assign((size_type) __n, (_CharT) __x); } - - template - _Self& _M_assign_dispatch(_InputIter __f, _InputIter __l, const __false_type& /*_Integral*/) { - pointer __cur = this->_M_Start(); - while (__f != __l && __cur != this->_M_Finish()) { - _Traits::assign(*__cur, *__f); - ++__f; - ++__cur; - } - if (__f == __l) - erase(__cur, this->end()); - else - _M_appendT(__f, __l, _STLP_ITERATOR_CATEGORY(__f, _InputIter)); - return *this; - } - -public: - // Check to see if _InputIterator is an integer type. If so, then - // it can't be an iterator. - template - _Self& assign(_InputIter __first, _InputIter __last) { - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - return _M_assign_dispatch(__first, __last, _Integral()); - } -#else -public: - _Self& assign(const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - return _M_assign(__f, __l); - } -#endif - -public: // Insert - _Self& insert(size_type __pos, const _Self& __s) { - if (__pos > size()) - this->_M_throw_out_of_range(); - if (__s.size() > max_size() - size()) - this->_M_throw_length_error(); - _M_insert(begin() + __pos, __s._M_Start(), __s._M_Finish(), &__s == this); - return *this; - } - - _Self& insert(size_type __pos, const _Self& __s, - size_type __beg, size_type __n) { - if (__pos > size() || __beg > __s.size()) - this->_M_throw_out_of_range(); - size_type __len = (min) (__n, __s.size() - __beg); - if (__len > max_size() - size()) - this->_M_throw_length_error(); - _M_insert(begin() + __pos, - __s._M_Start() + __beg, __s._M_Start() + __beg + __len, &__s == this); - return *this; - } - _Self& insert(size_type __pos, const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__s) - if (__pos > size()) - this->_M_throw_out_of_range(); - if (__n > max_size() - size()) - this->_M_throw_length_error(); - _M_insert(begin() + __pos, __s, __s + __n, _M_inside(__s)); - return *this; - } - - _Self& insert(size_type __pos, const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - if (__pos > size()) - this->_M_throw_out_of_range(); - size_type __len = _Traits::length(__s); - if (__len > max_size() - size()) - this->_M_throw_length_error(); - _M_insert(this->_M_Start() + __pos, __s, __s + __len, _M_inside(__s)); - return *this; - } - - _Self& insert(size_type __pos, size_type __n, _CharT __c) { - if (__pos > size()) - this->_M_throw_out_of_range(); - if (__n > max_size() - size()) - this->_M_throw_length_error(); - insert(begin() + __pos, __n, __c); - return *this; - } - - iterator insert(iterator __p, _CharT __c) { - _STLP_FIX_LITERAL_BUG(__p) - if (__p == end()) { - push_back(__c); - return this->_M_Finish() - 1; - } - else - return _M_insert_aux(__p, __c); - } - - void insert(iterator __p, size_t __n, _CharT __c); - -_STLP_PRIVATE: // Helper functions for insert. - void _M_insert(iterator __p, const _CharT* __first, const _CharT* __last, bool __self_ref); - - pointer _M_insert_aux(pointer, _CharT); - - void _M_copy(const _CharT* __f, const _CharT* __l, _CharT* __res) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _STLP_FIX_LITERAL_BUG(__res) - _Traits::copy(__res, __f, __l - __f); - } - - void _M_move(const _CharT* __f, const _CharT* __l, _CharT* __res) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _Traits::move(__res, __f, __l - __f); - } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - template - void _M_insert_overflow(iterator __pos, _ForwardIter __first, _ForwardIter __last, - size_type __n) { - size_type __len = _M_compute_next_size(__n); - pointer __new_start = this->_M_start_of_storage.allocate(__len, __len); - pointer __new_finish = uninitialized_copy(this->_M_Start(), __pos, __new_start); - __new_finish = uninitialized_copy(__first, __last, __new_finish); - __new_finish = uninitialized_copy(__pos, this->_M_Finish(), __new_finish); - _M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - - template - void _M_insertT(iterator __p, _InputIter __first, _InputIter __last, - const input_iterator_tag &) { - for ( ; __first != __last; ++__first) { - __p = insert(__p, *__first); - ++__p; - } - } - - template - void _M_insertT(iterator __pos, _ForwardIter __first, _ForwardIter __last, - const forward_iterator_tag &) { - if (__first != __last) { - size_type __n = _STLP_STD::distance(__first, __last); - if (__n < this->_M_rest()) { - const size_type __elems_after = this->_M_finish - __pos; - if (__elems_after >= __n) { - uninitialized_copy((this->_M_Finish() - __n) + 1, this->_M_Finish() + 1, this->_M_Finish() + 1); - this->_M_finish += __n; - _Traits::move(__pos + __n, __pos, (__elems_after - __n) + 1); - _M_copyT(__first, __last, __pos); - } - else { - pointer __old_finish = this->_M_Finish(); - _ForwardIter __mid = __first; - _STLP_STD::advance(__mid, __elems_after + 1); - _STLP_STD::uninitialized_copy(__mid, __last, this->_M_Finish() + 1); - this->_M_finish += __n - __elems_after; - uninitialized_copy(__pos, __old_finish + 1, this->_M_Finish()); - this->_M_finish += __elems_after; - _M_copyT(__first, __mid, __pos); - } - } - else { - _M_insert_overflow(__pos, __first, __last, __n); - } - } - } - - template - void _M_insert_dispatch(iterator __p, _Integer __n, _Integer __x, - const __true_type& /*Integral*/) - { insert(__p, (size_type) __n, (_CharT) __x); } - - template - void _M_insert_dispatch(iterator __p, _InputIter __first, _InputIter __last, - const __false_type& /*Integral*/) { - _STLP_FIX_LITERAL_BUG(__p) - /* We are forced to do a temporary string to avoid the self referencing issue. */ - const _Self __self(__first, __last, get_allocator()); - _M_insertT(__p, __self.begin(), __self.end(), forward_iterator_tag()); - } - - template - void _M_copyT(_InputIterator __first, _InputIterator __last, pointer __result) { - _STLP_FIX_LITERAL_BUG(__result) - for ( ; __first != __last; ++__first, ++__result) - _Traits::assign(*__result, *__first); - } - -# if !defined (_STLP_NO_METHOD_SPECIALIZATION) - void _M_copyT(const _CharT* __f, const _CharT* __l, _CharT* __res) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _STLP_FIX_LITERAL_BUG(__res) - _Traits::copy(__res, __f, __l - __f); - } -# endif -public: - // Check to see if _InputIterator is an integer type. If so, then - // it can't be an iterator. - template - void insert(iterator __p, _InputIter __first, _InputIter __last) { - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - _M_insert_dispatch(__p, __first, __last, _Integral()); - } -# endif -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) -public: - void insert(iterator __p, const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _M_insert(__p, __f, __l, _M_inside(__f)); - } -#endif - -public: // Erase. - _Self& erase(size_type __pos = 0, size_type __n = npos) { - if (__pos > size()) - this->_M_throw_out_of_range(); - erase(begin() + __pos, begin() + __pos + (min) (__n, size() - __pos)); - return *this; - } - - iterator erase(iterator __pos) { - // The move includes the terminating _CharT(). - _Traits::move(__pos, __pos + 1, this->_M_Finish() - __pos); - --this->_M_finish; - return __pos; - } - - iterator erase(iterator __first, iterator __last) { - if (__first != __last) { - // The move includes the terminating _CharT(). - traits_type::move(__first, __last, (this->_M_Finish() - __last) + 1); - this->_M_finish = this->_M_Finish() - (__last - __first); - } - return __first; - } - -public: // Replace. (Conceptually equivalent - // to erase followed by insert.) - _Self& replace(size_type __pos, size_type __n, const _Self& __s) { - const size_type __size = size(); - if (__pos > __size) - this->_M_throw_out_of_range(); - const size_type __len = (min) (__n, __size - __pos); - if (__s.size() > max_size() - (__size - __len)) - this->_M_throw_length_error(); - return _M_replace(begin() + __pos, begin() + __pos + __len, - __s._M_Start(), __s._M_Finish(), &__s == this); - } - - _Self& replace(size_type __pos1, size_type __n1, const _Self& __s, - size_type __pos2, size_type __n2) { - const size_type __size1 = size(); - const size_type __size2 = __s.size(); - if (__pos1 > __size1 || __pos2 > __size2) - this->_M_throw_out_of_range(); - const size_type __len1 = (min) (__n1, __size1 - __pos1); - const size_type __len2 = (min) (__n2, __size2 - __pos2); - if (__len2 > max_size() - (__size1 - __len1)) - this->_M_throw_length_error(); - return _M_replace(begin() + __pos1, begin() + __pos1 + __len1, - __s._M_Start() + __pos2, __s._M_Start() + __pos2 + __len2, &__s == this); - } - - _Self& replace(size_type __pos, size_type __n1, - const _CharT* __s, size_type __n2) { - _STLP_FIX_LITERAL_BUG(__s) - const size_type __size = size(); - if (__pos > __size) - this->_M_throw_out_of_range(); - const size_type __len = (min) (__n1, __size - __pos); - if (__n2 > max_size() - (__size - __len)) - this->_M_throw_length_error(); - return _M_replace(begin() + __pos, begin() + __pos + __len, - __s, __s + __n2, _M_inside(__s)); - } - - _Self& replace(size_type __pos, size_type __n1, const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return replace(__pos, __n1, __s, _Traits::length(__s)); - } - - _Self& replace(size_type __pos, size_type __n1, - size_type __n2, _CharT __c) { - const size_type __size = size(); - if (__pos > __size) - this->_M_throw_out_of_range(); - const size_type __len = (min) (__n1, __size - __pos); - if (__n2 > max_size() - (__size - __len)) - this->_M_throw_length_error(); - return replace(begin() + __pos, begin() + __pos + __len, __n2, __c); - } - - _Self& replace(iterator __first, iterator __last, const _Self& __s) { - _STLP_FIX_LITERAL_BUG(__first)_STLP_FIX_LITERAL_BUG(__last) - return _M_replace(__first, __last, __s._M_Start(), __s._M_Finish(), &__s == this); - } - - _Self& replace(iterator __first, iterator __last, - const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__first)_STLP_FIX_LITERAL_BUG(__last) - _STLP_FIX_LITERAL_BUG(__s) - return _M_replace(__first, __last, __s, __s + __n, _M_inside(__s)); - } - - _Self& replace(iterator __first, iterator __last, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__first)_STLP_FIX_LITERAL_BUG(__last) - _STLP_FIX_LITERAL_BUG(__s) - return _M_replace(__first, __last, __s, __s + _Traits::length(__s), _M_inside(__s)); - } - - _Self& replace(iterator __first, iterator __last, size_type __n, _CharT __c); - -_STLP_PRIVATE: // Helper functions for replace. - _Self& _M_replace(iterator __first, iterator __last, - const _CharT* __f, const _CharT* __l, bool __self_ref); - -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - template - _Self& _M_replace_dispatch(iterator __first, iterator __last, - _Integer __n, _Integer __x, const __true_type& /*IsIntegral*/) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - return replace(__first, __last, (size_type) __n, (_CharT) __x); - } - - template - _Self& _M_replace_dispatch(iterator __first, iterator __last, - _InputIter __f, _InputIter __l, const __false_type& /*IsIntegral*/) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - /* We are forced to do a temporary string to avoid the self referencing issue. */ - const _Self __self(__f, __l, get_allocator()); - return _M_replace(__first, __last, __self._M_Start(), __self._M_Finish(), false); - } - -public: - // Check to see if _InputIter is an integer type. If so, then - // it can't be an iterator. - template - _Self& replace(iterator __first, iterator __last, - _InputIter __f, _InputIter __l) { - _STLP_FIX_LITERAL_BUG(__first)_STLP_FIX_LITERAL_BUG(__last) - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - return _M_replace_dispatch(__first, __last, __f, __l, _Integral()); - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) -public: - _Self& replace(iterator __first, iterator __last, - const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__first)_STLP_FIX_LITERAL_BUG(__last) - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - return _M_replace(__first, __last, __f, __l, _M_inside(__f)); - } -#endif - -public: // Other modifier member functions. - - size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const { - _STLP_FIX_LITERAL_BUG(__s) - if (__pos > size()) - this->_M_throw_out_of_range(); - const size_type __len = (min) (__n, size() - __pos); - _Traits::copy(__s, this->_M_Start() + __pos, __len); - return __len; - } - - void swap(_Self& __s) { this->_M_swap(__s); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -public: // Conversion to C string. - - const _CharT* c_str() const { return this->_M_Start(); } - const _CharT* data() const { return this->_M_Start(); } - -public: // find. - size_type find(const _Self& __s, size_type __pos = 0) const - { return find(__s._M_Start(), __pos, __s.size()); } - - size_type find(const _CharT* __s, size_type __pos = 0) const - { _STLP_FIX_LITERAL_BUG(__s) return find(__s, __pos, _Traits::length(__s)); } - - size_type find(const _CharT* __s, size_type __pos, size_type __n) const; - - // WIE: Versant schema compiler 5.2.2 ICE workaround - size_type find(_CharT __c) const { return find(__c, 0); } - size_type find(_CharT __c, size_type __pos /* = 0 */) const; - -public: // rfind. - size_type rfind(const _Self& __s, size_type __pos = npos) const - { return rfind(__s._M_Start(), __pos, __s.size()); } - - size_type rfind(const _CharT* __s, size_type __pos = npos) const - { _STLP_FIX_LITERAL_BUG(__s) return rfind(__s, __pos, _Traits::length(__s)); } - - size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const; - size_type rfind(_CharT __c, size_type __pos = npos) const; - -public: // find_first_of - size_type find_first_of(const _Self& __s, size_type __pos = 0) const - { return find_first_of(__s._M_Start(), __pos, __s.size()); } - - size_type find_first_of(const _CharT* __s, size_type __pos = 0) const - { _STLP_FIX_LITERAL_BUG(__s) return find_first_of(__s, __pos, _Traits::length(__s)); } - - size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; - - size_type find_first_of(_CharT __c, size_type __pos = 0) const - { return find(__c, __pos); } - -public: // find_last_of - size_type find_last_of(const _Self& __s, size_type __pos = npos) const - { return find_last_of(__s._M_Start(), __pos, __s.size()); } - - size_type find_last_of(const _CharT* __s, size_type __pos = npos) const - { _STLP_FIX_LITERAL_BUG(__s) return find_last_of(__s, __pos, _Traits::length(__s)); } - - size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; - - size_type find_last_of(_CharT __c, size_type __pos = npos) const - { return rfind(__c, __pos); } - -public: // find_first_not_of - size_type find_first_not_of(const _Self& __s, size_type __pos = 0) const - { return find_first_not_of(__s._M_Start(), __pos, __s.size()); } - - size_type find_first_not_of(const _CharT* __s, size_type __pos = 0) const - { _STLP_FIX_LITERAL_BUG(__s) return find_first_not_of(__s, __pos, _Traits::length(__s)); } - - size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const; - - size_type find_first_not_of(_CharT __c, size_type __pos = 0) const; - -public: // find_last_not_of - size_type find_last_not_of(const _Self& __s, size_type __pos = npos) const - { return find_last_not_of(__s._M_Start(), __pos, __s.size()); } - - size_type find_last_not_of(const _CharT* __s, size_type __pos = npos) const - { _STLP_FIX_LITERAL_BUG(__s) return find_last_not_of(__s, __pos, _Traits::length(__s)); } - - size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const; - - size_type find_last_not_of(_CharT __c, size_type __pos = npos) const; - -public: // Substring. - _Self substr(size_type __pos = 0, size_type __n = npos) const - { return _Self(*this, __pos, __n, get_allocator()); } - -public: // Compare - int compare(const _Self& __s) const - { return _M_compare(this->_M_Start(), this->_M_Finish(), __s._M_Start(), __s._M_Finish()); } - - int compare(size_type __pos1, size_type __n1, const _Self& __s) const { - if (__pos1 > size()) - this->_M_throw_out_of_range(); - return _M_compare(this->_M_Start() + __pos1, - this->_M_Start() + __pos1 + (min) (__n1, size() - __pos1), - __s._M_Start(), __s._M_Finish()); - } - - int compare(size_type __pos1, size_type __n1, const _Self& __s, - size_type __pos2, size_type __n2) const { - if (__pos1 > size() || __pos2 > __s.size()) - this->_M_throw_out_of_range(); - return _M_compare(this->_M_Start() + __pos1, - this->_M_Start() + __pos1 + (min) (__n1, size() - __pos1), - __s._M_Start() + __pos2, - __s._M_Start() + __pos2 + (min) (__n2, __s.size() - __pos2)); - } - - int compare(const _CharT* __s) const { - _STLP_FIX_LITERAL_BUG(__s) - return _M_compare(this->_M_Start(), this->_M_Finish(), __s, __s + _Traits::length(__s)); - } - - int compare(size_type __pos1, size_type __n1, const _CharT* __s) const { - _STLP_FIX_LITERAL_BUG(__s) - if (__pos1 > size()) - this->_M_throw_out_of_range(); - return _M_compare(this->_M_Start() + __pos1, - this->_M_Start() + __pos1 + (min) (__n1, size() - __pos1), - __s, __s + _Traits::length(__s)); - } - - int compare(size_type __pos1, size_type __n1, const _CharT* __s, size_type __n2) const { - _STLP_FIX_LITERAL_BUG(__s) - if (__pos1 > size()) - this->_M_throw_out_of_range(); - return _M_compare(this->_M_Start() + __pos1, - this->_M_Start() + __pos1 + (min) (__n1, size() - __pos1), - __s, __s + __n2); - } - -public: // Helper functions for compare. - static int _STLP_CALL _M_compare(const _CharT* __f1, const _CharT* __l1, - const _CharT* __f2, const _CharT* __l2) { - const ptrdiff_t __n1 = __l1 - __f1; - const ptrdiff_t __n2 = __l2 - __f2; - const int cmp = _Traits::compare(__f1, __f2, (min) (__n1, __n2)); - return cmp != 0 ? cmp : (__n1 < __n2 ? -1 : (__n1 > __n2 ? 1 : 0)); - } -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) && !defined (_STLP_DEBUG) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# define _STLP_STRING_SUM_BASE(__reserve, __size, __alloc) _STLP_PRIV _String_base<_CharT,_Alloc>(__alloc, __size + 1) -# include -# undef _STLP_STRING_SUM_BASE -#endif -}; - -#undef _STLP_PRIVATE - -#if defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96) -template -const size_t basic_string<_CharT, _Traits, _Alloc>::npos = ~(size_t) 0; -#endif - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS basic_string, allocator >; -# if defined (_STLP_HAS_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS basic_string, allocator >; -# endif -#endif /* _STLP_USE_TEMPLATE_EXPORT */ - -#if defined (basic_string) -_STLP_MOVE_TO_STD_NAMESPACE -# undef basic_string -#endif - -_STLP_END_NAMESPACE - -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -# include -#endif - -#if defined (_STLP_DEBUG) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// ------------------------------------------------------------ -// Non-member functions. -// Swap. -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -template -inline void _STLP_CALL -swap(basic_string<_CharT,_Traits,_Alloc>& __x, - basic_string<_CharT,_Traits,_Alloc>& __y) -{ __x.swap(__y); } -#else -inline void _STLP_CALL swap(string& __x, string& __y) -{ __x.swap(__y); } -# if defined (_STLP_HAS_WCHAR_T) -inline void _STLP_CALL swap(wstring& __x, wstring& __y) -{ __x.swap(__y); } -# endif -#endif - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > { - typedef __true_type implemented; - //Completness depends on the allocator: - typedef typename __move_traits<_Alloc>::complete complete; -}; -/*#else - * There is no need to specialize for string and wstring in this case - * as the default __move_traits will already tell that string is movable - * but not complete. We cannot define it as complete as nothing guaranty - * that the STLport user hasn't specialized std::allocator for char or - * wchar_t. - */ -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void _STLP_CALL _S_string_copy(const basic_string<_CharT,_Traits,_Alloc>& __s, - _CharT* __buf, size_t __n); - -#if defined(_STLP_USE_WIDE_INTERFACE) -// A couple of functions to transfer between ASCII/Unicode -wstring __ASCIIToWide(const char *ascii); -string __WideToASCII(const wchar_t *wide); -#endif - -inline const char* _STLP_CALL -__get_c_string(const string& __str) { return __str.c_str(); } - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#include - -#if defined(_STLP_USE_NO_IOSTREAMS) || \ - (defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)) -# include -#endif - -#endif /* _STLP_INTERNAL_STRING_H */ - -/* - * Local Variables: - * mode:C++ - * End: - */ diff --git a/build/stlport/stlport/stl/_string_base.h b/build/stlport/stlport/stl/_string_base.h deleted file mode 100644 index 7c6d7fe694a1..000000000000 --- a/build/stlport/stlport/stl/_string_base.h +++ /dev/null @@ -1,231 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STRING_BASE_H -#define _STLP_STRING_BASE_H - -// ------------------------------------------------------------ -// Class _String_base. - -// _String_base is a helper class that makes it it easier to write an -// exception-safe version of basic_string. The constructor allocates, -// but does not initialize, a block of memory. The destructor -// deallocates, but does not destroy elements within, a block of -// memory. The destructor assumes that _M_start either is null, or else -// points to a block of memory that was allocated using _String_base's -// allocator and whose size is _M_end_of_storage - _M_start_of_storage._M_data. - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -class _String_base { - typedef _String_base<_Tp, _Alloc> _Self; -protected: - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) -public: - //dums: Some compiler(MSVC6) require it to be public not simply protected! - enum {_DEFAULT_SIZE = 4 * sizeof( void * )}; - //This is needed by the full move framework - typedef _Alloc allocator_type; - typedef _STLP_alloc_proxy<_Tp*, _Tp, allocator_type> _AllocProxy; - typedef size_t size_type; -private: -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - union _Buffers { - _Tp* _M_end_of_storage; - _Tp _M_static_buf[_DEFAULT_SIZE]; - } _M_buffers; -#else - _Tp* _M_end_of_storage; -#endif /* _STLP_USE_SHORT_STRING_OPTIM */ -protected: -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - bool _M_using_static_buf() const - { return (_M_start_of_storage._M_data == _M_buffers._M_static_buf); } - _Tp const* _M_Start() const { return _M_start_of_storage._M_data; } - _Tp* _M_Start() { return _M_start_of_storage._M_data; } - _Tp const* _M_End() const - { return _M_using_static_buf() ? _M_buffers._M_static_buf + _DEFAULT_SIZE : _M_buffers._M_end_of_storage; } - _Tp* _M_End() - { return _M_using_static_buf() ? _M_buffers._M_static_buf + _DEFAULT_SIZE : _M_buffers._M_end_of_storage; } - size_type _M_capacity() const - { return _M_using_static_buf() ? _DEFAULT_SIZE : _M_buffers._M_end_of_storage - _M_start_of_storage._M_data; } - size_type _M_rest() const - { return _M_using_static_buf() ? _DEFAULT_SIZE - (_M_finish - _M_buffers._M_static_buf) : _M_buffers._M_end_of_storage - _M_finish; } -#else - _Tp const* _M_Start() const { return _M_start_of_storage._M_data; } - _Tp* _M_Start() { return _M_start_of_storage._M_data; } - _Tp const* _M_End() const { return _M_end_of_storage; } - _Tp* _M_End() { return _M_end_of_storage; } - size_type _M_capacity() const - { return _M_end_of_storage - _M_start_of_storage._M_data; } - size_type _M_rest() const - { return _M_end_of_storage - _M_finish; } -#endif /* _STLP_USE_SHORT_STRING_OPTIM */ - - _Tp* _M_finish; - _AllocProxy _M_start_of_storage; - - _Tp const* _M_Finish() const {return _M_finish;} - _Tp* _M_Finish() {return _M_finish;} - - // Precondition: 0 < __n <= max_size(). - void _M_allocate_block(size_t __n = _DEFAULT_SIZE); - void _M_deallocate_block() { -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - if (!_M_using_static_buf() && (_M_start_of_storage._M_data != 0)) - _M_start_of_storage.deallocate(_M_start_of_storage._M_data, _M_buffers._M_end_of_storage - _M_start_of_storage._M_data); -#else - if (_M_start_of_storage._M_data != 0) - _M_start_of_storage.deallocate(_M_start_of_storage._M_data, _M_end_of_storage - _M_start_of_storage._M_data); -#endif /* _STLP_USE_SHORT_STRING_OPTIM */ - } - - size_t max_size() const { - const size_type __string_max_size = size_type(-1) / sizeof(_Tp); - typename allocator_type::size_type __alloc_max_size = _M_start_of_storage.max_size(); - return (min)(__alloc_max_size, __string_max_size) - 1; - } - - _String_base(const allocator_type& __a) -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - : _M_finish(_M_buffers._M_static_buf), _M_start_of_storage(__a, _M_buffers._M_static_buf) -#else - : _M_end_of_storage(0), _M_finish(0), _M_start_of_storage(__a, (_Tp*)0) -#endif - {} - - _String_base(const allocator_type& __a, size_t __n) -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - : _M_finish(_M_buffers._M_static_buf), _M_start_of_storage(__a, _M_buffers._M_static_buf) { -#else - : _M_end_of_storage(0), _M_finish(0), _M_start_of_storage(__a, (_Tp*)0) { -#endif - _M_allocate_block(__n); - } - -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - void _M_move_src (_Self &src) { - if (src._M_using_static_buf()) { - _M_buffers = src._M_buffers; - _M_finish = _M_buffers._M_static_buf + (src._M_finish - src._M_start_of_storage._M_data); - _M_start_of_storage._M_data = _M_buffers._M_static_buf; - } - else { - _M_start_of_storage._M_data = src._M_start_of_storage._M_data; - _M_finish = src._M_finish; - _M_buffers._M_end_of_storage = src._M_buffers._M_end_of_storage; - src._M_start_of_storage._M_data = 0; - } - } -#endif - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _String_base(__move_source<_Self> src) -# if defined (_STLP_USE_SHORT_STRING_OPTIM) - : _M_start_of_storage(__move_source<_AllocProxy>(src.get()._M_start_of_storage)) { - _M_move_src(src.get()); -# else - : _M_end_of_storage(src.get()._M_end_of_storage), _M_finish(src.get()._M_finish), - _M_start_of_storage(__move_source<_AllocProxy>(src.get()._M_start_of_storage)) { - src.get()._M_start_of_storage._M_data = 0; -# endif - } -#endif - - ~_String_base() { _M_deallocate_block(); } - - void _M_reset(_Tp *__start, _Tp *__finish, _Tp *__end_of_storage) { -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - _M_buffers._M_end_of_storage = __end_of_storage; -#else - _M_end_of_storage = __end_of_storage; -#endif - _M_finish = __finish; - _M_start_of_storage._M_data = __start; - } - - void _M_swap(_Self &__s) { -#if defined (_STLP_USE_SHORT_STRING_OPTIM) - if (_M_using_static_buf()) { - if (__s._M_using_static_buf()) { - _STLP_STD::swap(_M_buffers, __s._M_buffers); - _Tp *__tmp = _M_finish; - _M_finish = _M_start_of_storage._M_data + (__s._M_finish - __s._M_start_of_storage._M_data); - __s._M_finish = __s._M_buffers._M_static_buf + (__tmp - _M_start_of_storage._M_data); - //We need to swap _M_start_of_storage for allocators with state: - _M_start_of_storage.swap(__s._M_start_of_storage); - _M_start_of_storage._M_data = _M_buffers._M_static_buf; - __s._M_start_of_storage._M_data = __s._M_buffers._M_static_buf; - } else { - __s._M_swap(*this); - return; - } - } - else if (__s._M_using_static_buf()) { - _Tp *__tmp = _M_start_of_storage._M_data; - _Tp *__tmp_finish = _M_finish; - _Tp *__tmp_end_data = _M_buffers._M_end_of_storage; - _M_buffers = __s._M_buffers; - //We need to swap _M_start_of_storage for allocators with state: - _M_start_of_storage.swap(__s._M_start_of_storage); - _M_start_of_storage._M_data = _M_buffers._M_static_buf; - _M_finish = _M_buffers._M_static_buf + (__s._M_finish - __s._M_buffers._M_static_buf); - __s._M_buffers._M_end_of_storage = __tmp_end_data; - __s._M_start_of_storage._M_data = __tmp; - __s._M_finish = __tmp_finish; - } - else { - _STLP_STD::swap(_M_buffers._M_end_of_storage, __s._M_buffers._M_end_of_storage); - _M_start_of_storage.swap(__s._M_start_of_storage); - _STLP_STD::swap(_M_finish, __s._M_finish); - } -#else - _STLP_STD::swap(_M_end_of_storage, __s._M_end_of_storage); - _M_start_of_storage.swap(__s._M_start_of_storage); - _STLP_STD::swap(_M_finish, __s._M_finish); -#endif - } - - void _STLP_FUNCTION_THROWS _M_throw_length_error() const; - void _STLP_FUNCTION_THROWS _M_throw_out_of_range() const; -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS _String_base >; -# if defined (_STLP_HAS_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS _String_base >; -# endif -#endif /* _STLP_USE_TEMPLATE_EXPORT */ - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_STRING_BASE_H */ - -/* - * Local Variables: - * mode:C++ - * End: - */ diff --git a/build/stlport/stlport/stl/_string_fwd.h b/build/stlport/stlport/stl/_string_fwd.h deleted file mode 100644 index fe65385e6eb1..000000000000 --- a/build/stlport/stlport/stl/_string_fwd.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STRING_FWD_H -#define _STLP_STRING_FWD_H - -#ifndef _STLP_INTERNAL_IOSFWD -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if !defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template , - class _Alloc = allocator<_CharT> > -class basic_string; -#else -template -class basic_string; -#endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */ - -typedef basic_string, allocator > string; - -#if defined (_STLP_HAS_WCHAR_T) -typedef basic_string, allocator > wstring; -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -//This function limits header dependency between exception and string -//implementation. It is implemented in _string.h -const char* _STLP_CALL __get_c_string(const string& __str); - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_STRING_FWD_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_string_hash.h b/build/stlport/stlport/stl/_string_hash.h deleted file mode 100644 index 87f2d9fbeabf..000000000000 --- a/build/stlport/stlport/stl/_string_hash.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STRING_HASH_H -#define _STLP_STRING_HASH_H - -#ifndef _STLP_HASH_FUN_H -# include -#endif - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -_STLP_INLINE_LOOP size_t -__stl_string_hash(const basic_string<_CharT,_Traits,_Alloc>& __s) { - unsigned long __h = 0; - size_t __len = __s.size(); - const _CharT* __data = __s.data(); - for ( size_t __i = 0; __i < __len; ++__i) - __h = /* 5 *__h */(__h << 2) + __h + __data[__i]; - return size_t(__h); -} - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && \ - (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x560)) -template -struct hash > { - size_t operator()(const basic_string<_CharT,_Traits,_Alloc>& __s) const - { return __stl_string_hash(__s); } -}; - -#else - -_STLP_TEMPLATE_NULL -struct _STLP_CLASS_DECLSPEC hash { - size_t operator()(const string& __s) const - { return __stl_string_hash(__s); } -}; - -# if defined (_STLP_HAS_WCHAR_T) -_STLP_TEMPLATE_NULL -struct _STLP_CLASS_DECLSPEC hash { - size_t operator()(const wstring& __s) const - { return __stl_string_hash(__s); } -}; -# endif - -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -_STLP_END_NAMESPACE - -#endif diff --git a/build/stlport/stlport/stl/_string_io.c b/build/stlport/stlport/stl/_string_io.c deleted file mode 100644 index 84b18736b573..000000000000 --- a/build/stlport/stlport/stl/_string_io.c +++ /dev/null @@ -1,172 +0,0 @@ -#ifndef _STLP_STRING_IO_C -#define _STLP_STRING_IO_C - -#ifndef _STLP_STRING_IO_H -# include -#endif - -#ifndef _STLP_INTERNAL_CTYPE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -bool _STLP_CALL -__stlp_string_fill(basic_ostream<_CharT, _Traits>& __os, - basic_streambuf<_CharT, _Traits>* __buf, - streamsize __n) { - _CharT __f = __os.fill(); - for (streamsize __i = 0; __i < __n; ++__i) { - if (_Traits::eq_int_type(__buf->sputc(__f), _Traits::eof())) - return false; - } - return true; -} - - -template -basic_ostream<_CharT, _Traits>& _STLP_CALL -operator << (basic_ostream<_CharT, _Traits>& __os, - const basic_string<_CharT,_Traits,_Alloc>& __s) { - typedef basic_ostream<_CharT, _Traits> __ostream; - typedef typename basic_string<_CharT, _Traits, _Alloc>::size_type size_type; - - // The hypothesis of this implementation is that size_type is unsigned: - _STLP_STATIC_ASSERT(__STATIC_CAST(size_type, -1) > 0) - - typename __ostream::sentry __sentry(__os); - bool __ok = false; - - if (__sentry) { - __ok = true; - size_type __n = __s.size(); - const bool __left = (__os.flags() & __ostream::left) != 0; - const streamsize __w = __os.width(0); - basic_streambuf<_CharT, _Traits>* __buf = __os.rdbuf(); - - const bool __need_pad = (((sizeof(streamsize) > sizeof(size_t)) && (__STATIC_CAST(streamsize, __n) < __w)) || - ((sizeof(streamsize) <= sizeof(size_t)) && (__n < __STATIC_CAST(size_t, __w)))); - streamsize __pad_len = __need_pad ? __w - __n : 0; - - if (!__left) - __ok = __stlp_string_fill(__os, __buf, __pad_len); - - __ok = __ok && (__buf->sputn(__s.data(), streamsize(__n)) == streamsize(__n)); - - if (__left) - __ok = __ok && __stlp_string_fill(__os, __buf, __pad_len); - } - - if (!__ok) - __os.setstate(__ostream::failbit); - - return __os; -} - -template -basic_istream<_CharT, _Traits>& _STLP_CALL -operator >> (basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT,_Traits, _Alloc>& __s) { - typedef basic_istream<_CharT, _Traits> __istream; - typedef typename basic_string<_CharT, _Traits, _Alloc>::size_type size_type; - - // The hypothesis of this implementation is that size_type is unsigned: - _STLP_STATIC_ASSERT(__STATIC_CAST(size_type, -1) > 0) - - typename __istream::sentry __sentry(__is); - - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf(); - typedef ctype<_CharT> _C_type; - - const locale& __loc = __is.getloc(); - const _C_type& _Ctype = use_facet<_C_type>(__loc); - __s.clear(); - streamsize __width = __is.width(0); - size_type __n; - if (__width <= 0) - __n = __s.max_size(); - /* __width can only overflow size_type if sizeof(streamsize) > sizeof(size_type) - * because here we know that __width is positive and the stattic assertion check - * that size_type is unsigned. - */ - else if (sizeof(streamsize) > sizeof(size_type) && - (__width > __STATIC_CAST(streamsize, __s.max_size()))) - __n = 0; - else { - __n = __STATIC_CAST(size_type, __width); - __s.reserve(__n); - } - - while (__n-- > 0) { - typename _Traits::int_type __c1 = __buf->sbumpc(); - if (_Traits::eq_int_type(__c1, _Traits::eof())) { - __is.setstate(__istream::eofbit); - break; - } - else { - _CharT __c = _Traits::to_char_type(__c1); - - if (_Ctype.is(_C_type::space, __c)) { - if (_Traits::eq_int_type(__buf->sputbackc(__c), _Traits::eof())) - __is.setstate(__istream::failbit); - break; - } - else - __s.push_back(__c); - } - } - - // If we have read no characters, then set failbit. - if (__s.empty()) - __is.setstate(__istream::failbit); - } - else - __is.setstate(__istream::failbit); - - return __is; -} - -template -basic_istream<_CharT, _Traits>& _STLP_CALL -getline(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT,_Traits,_Alloc>& __s, - _CharT __delim) { - typedef basic_istream<_CharT, _Traits> __istream; - typedef typename basic_string<_CharT, _Traits, _Alloc>::size_type size_type; - size_type __nread = 0; - typename basic_istream<_CharT, _Traits>::sentry __sentry(__is, true); - if (__sentry) { - basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf(); - __s.clear(); - - while (__nread < __s.max_size()) { - int __c1 = __buf->sbumpc(); - if (_Traits::eq_int_type(__c1, _Traits::eof())) { - __is.setstate(__istream::eofbit); - break; - } - else { - ++__nread; - _CharT __c = _Traits::to_char_type(__c1); - if (!_Traits::eq(__c, __delim)) - __s.push_back(__c); - else - break; // Character is extracted but not appended. - } - } - } - if (__nread == 0 || __nread >= __s.max_size()) - __is.setstate(__istream::failbit); - - return __is; -} - -_STLP_END_NAMESPACE - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_string_io.h b/build/stlport/stlport/stl/_string_io.h deleted file mode 100644 index fe549fef6492..000000000000 --- a/build/stlport/stlport/stl/_string_io.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STRING_IO_H -#define _STLP_STRING_IO_H - -#ifndef _STLP_INTERNAL_OSTREAM_H -# include -#endif - -#ifndef _STLP_INTERNAL_ISTREAM -# include -#endif - -// I/O. -_STLP_BEGIN_NAMESPACE - -template -basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, - const basic_string<_CharT,_Traits,_Alloc>& __s); - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) - -template -basic_ostream<_CharT, _Traits>& _STLP_CALL -operator<<(basic_ostream<_CharT, _Traits>& __os, - const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __sum) { - basic_string<_CharT, _Traits, _Alloc> __tmp(__sum); - return __os << __tmp; -} - -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -template -basic_istream<_CharT, _Traits>& _STLP_CALL -operator>>(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT,_Traits,_Alloc>& __s); - -template -basic_istream<_CharT, _Traits>& _STLP_CALL -getline(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT,_Traits,_Alloc>& __s, - _CharT __delim); - -#if !(defined (__BORLANDC__) && !defined (_STLP_USE_OWN_NAMESPACE)) - -template -inline basic_istream<_CharT, _Traits>& _STLP_CALL -getline(basic_istream<_CharT, _Traits>& __is, - basic_string<_CharT,_Traits,_Alloc>& __s) { - return getline(__is, __s, __is.widen('\n')); -} -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_STRING_IO_H */ diff --git a/build/stlport/stlport/stl/_string_npos.h b/build/stlport/stlport/stl/_string_npos.h deleted file mode 100644 index faa9c6272837..000000000000 --- a/build/stlport/stlport/stl/_string_npos.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2005 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - */ - -/* This header contains npos definition used in basic_string and rope - * implementation. It do not have to be guarded as files including it - * are already guarded and it has sometimes to be included several times. - */ - -#if defined (_STLP_STATIC_CONST_INIT_BUG) - enum { npos = -1 }; -#elif defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96) - // inline initializer conflicts with 'extern template' - static const size_t npos; -#else - static const size_t npos = ~(size_t)0; -#endif diff --git a/build/stlport/stlport/stl/_string_operators.h b/build/stlport/stlport/stl/_string_operators.h deleted file mode 100644 index cff13af01c22..000000000000 --- a/build/stlport/stlport/stl/_string_operators.h +++ /dev/null @@ -1,602 +0,0 @@ -/* - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STRING_OPERATORS_H -#define _STLP_STRING_OPERATORS_H - -_STLP_BEGIN_NAMESPACE - -#if !defined (_STLP_USE_TEMPLATE_EXPRESSION) - -# if defined (__GNUC__) || defined (__MLCCPP__) -# define _STLP_INIT_AMBIGUITY 1 -# endif - -template -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL -operator+(const basic_string<_CharT,_Traits,_Alloc>& __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - typedef basic_string<_CharT,_Traits,_Alloc> _Str; - typedef typename _Str::_Reserve_t _Reserve_t; -# if defined (_STLP_INIT_AMBIGUITY) - // gcc counts this as a function - _Str __result = _Str(_Reserve_t(), __s.size() + __y.size(), __s.get_allocator()); -# else - _Str __result(_Reserve_t(), __s.size() + __y.size(), __s.get_allocator()); -# endif - __result.append(__s); - __result.append(__y); - return __result; -} - -template -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL -operator+(const _CharT* __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - typedef basic_string<_CharT,_Traits,_Alloc> _Str; - typedef typename _Str::_Reserve_t _Reserve_t; - const size_t __n = _Traits::length(__s); -# if defined (_STLP_INIT_AMBIGUITY) - _Str __result = _Str(_Reserve_t(), __n + __y.size(), __y.get_allocator()); -# else - _Str __result(_Reserve_t(), __n + __y.size(), __y.get_allocator()); -# endif - __result.append(__s, __s + __n); - __result.append(__y); - return __result; -} - -template -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL -operator+(_CharT __c, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - typedef basic_string<_CharT,_Traits,_Alloc> _Str; - typedef typename _Str::_Reserve_t _Reserve_t; -# if defined (_STLP_INIT_AMBIGUITY) - _Str __result = _Str(_Reserve_t(), 1 + __y.size(), __y.get_allocator()); -# else - _Str __result(_Reserve_t(), 1 + __y.size(), __y.get_allocator()); -# endif - __result.push_back(__c); - __result.append(__y); - return __result; -} - -template -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL -operator+(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - typedef basic_string<_CharT,_Traits,_Alloc> _Str; - typedef typename _Str::_Reserve_t _Reserve_t; - const size_t __n = _Traits::length(__s); -# if defined (_STLP_INIT_AMBIGUITY) - _Str __result = _Str(_Reserve_t(), __x.size() + __n, __x.get_allocator()); -# else - _Str __result(_Reserve_t(), __x.size() + __n, __x.get_allocator()); -# endif - __result.append(__x); - __result.append(__s, __s + __n); - return __result; -} - -template -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL -operator+(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT __c) { - typedef basic_string<_CharT,_Traits,_Alloc> _Str; - typedef typename _Str::_Reserve_t _Reserve_t; -# if defined (_STLP_INIT_AMBIGUITY) - _Str __result = _Str(_Reserve_t(), __x.size() + 1, __x.get_allocator()); -# else - _Str __result(_Reserve_t(), __x.size() + 1, __x.get_allocator()); -# endif - __result.append(__x); - __result.push_back(__c); - return __result; -} - -# undef _STLP_INIT_AMBIGUITY - -#else /* _STLP_USE_TEMPLATE_EXPRESSION */ - -// addition with basic_string -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right>, - _STLP_PRIV __on_right> _STLP_CALL -operator+(const basic_string<_CharT,_Traits,_Alloc>& __lhs, - const basic_string<_CharT,_Traits,_Alloc>& __rhs) { - typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right> __root_type; - __root_type __root(__rhs, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__lhs.get_allocator())); - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - __root_type, - _STLP_PRIV __on_right>(__lhs, __root); -} - -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __on_right> _STLP_CALL -operator+(const basic_string<_CharT,_Traits,_Alloc>& __lhs, - const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __rhs) { - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __on_right>(__lhs, __rhs); -} - -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __on_left> _STLP_CALL -operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __lhs, - const basic_string<_CharT,_Traits,_Alloc>& __rhs) { - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __on_left>(__lhs, __rhs); -} - -// addition with C string -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __cstr_wrapper<_CharT>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right>, - _STLP_PRIV __on_right> _STLP_CALL -operator+(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT* __s) { - const size_t __n = _Traits::length(__s); - typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right> __root_type; - __root_type __root(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator())); - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - __root_type, _STLP_PRIV __on_right>(__x, __root); -} - -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __cstr_wrapper<_CharT>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right>, - _STLP_PRIV __on_right> _STLP_CALL -operator+(const _CharT* __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - const size_t __n = _Traits::length(__s); - typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right> __root_type; - __root_type __root(__y, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__y.get_allocator())); - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>, - __root_type, - _STLP_PRIV __on_right>(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), __root); -} - -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __cstr_wrapper<_CharT>, - _STLP_PRIV __on_left> _STLP_CALL -operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x, - const _CharT* __s) { - const size_t __n = _Traits::length(__s); - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __cstr_wrapper<_CharT>, - _STLP_PRIV __on_left>(__x, _STLP_PRIV __cstr_wrapper<_CharT>(__s, __n)); -} - -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __cstr_wrapper<_CharT>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __on_right> _STLP_CALL -operator+(const _CharT* __s, - const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __y) { - const size_t __n = _Traits::length(__s); - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __on_right>(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), __y); -} - -// addition with char -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __char_wrapper<_CharT>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right>, - _STLP_PRIV __on_right> _STLP_CALL -operator+(const basic_string<_CharT,_Traits,_Alloc>& __x, const _CharT __c) { - typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right> __root_type; - __root_type __root(__c, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator())); - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - __root_type, _STLP_PRIV __on_right>(__x, __root); -} - -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __char_wrapper<_CharT>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right>, - _STLP_PRIV __on_right> _STLP_CALL -operator+(const _CharT __c, const basic_string<_CharT,_Traits,_Alloc>& __x) { - typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>, - _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>, - _STLP_PRIV __on_right> __root_type; - __root_type __root(__x, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator())); - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>, - __root_type, _STLP_PRIV __on_right>(__c, __root); -} - -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __char_wrapper<_CharT>, - _STLP_PRIV __on_left> _STLP_CALL -operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x, const _CharT __c) { - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __char_wrapper<_CharT>, _STLP_PRIV __on_left>(__x, __c); -} - -template -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __on_right> _STLP_CALL -operator+(const _CharT __c, const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x) { - return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>, - _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>, - _STLP_PRIV __on_right>(__c, __x); -} - -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -// Operator== and operator!= - -template -inline bool _STLP_CALL -operator==(const basic_string<_CharT,_Traits,_Alloc>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0; -} - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator==(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0; -} - -template -inline bool _STLP_CALL -operator==(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) { - return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0; -} -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - - -template -inline bool _STLP_CALL -operator==(const _CharT* __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - size_t __n = _Traits::length(__s); - return __n == __y.size() && _Traits::compare(__s, __y.data(), __n) == 0; -} - -template -inline bool _STLP_CALL -operator==(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - size_t __n = _Traits::length(__s); - return __x.size() == __n && _Traits::compare(__x.data(), __s, __n) == 0; -} - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator==(const _CharT* __s, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - size_t __n = _Traits::length(__s); - return __n == __y.size() && _Traits::compare(__s, __y.data(), __n) == 0; -} - -template -inline bool _STLP_CALL -operator==(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - size_t __n = _Traits::length(__s); - return __x.size() == __n && _Traits::compare(__x.data(), __s, __n) == 0; -} -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -// Operator< (and also >, <=, and >=). - -template -inline bool _STLP_CALL -operator<(const basic_string<_CharT,_Traits,_Alloc>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(), - __y.begin(), __y.end()) < 0; -} - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator<(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(), - __y.begin(), __y.end()) < 0; -} - -template -inline bool _STLP_CALL -operator<(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) { - return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(), - __y.begin(), __y.end()) < 0; -} -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -template -inline bool _STLP_CALL -operator<(const _CharT* __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - size_t __n = _Traits::length(__s); - return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__s, __s + __n, - __y.begin(), __y.end()) < 0; -} - -template -inline bool _STLP_CALL -operator<(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - size_t __n = _Traits::length(__s); - return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(), - __s, __s + __n) < 0; -} - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator<(const _CharT* __s, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - size_t __n = _Traits::length(__s); - return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__s, __s + __n, - __y.begin(), __y.end()) < 0; -} - -template -inline bool _STLP_CALL -operator<(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - size_t __n = _Traits::length(__s); - return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(), - __s, __s + __n) < 0; -} -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -#if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) - -/* Only defined if _STLP_USE_SEPARATE_RELOPS_NAMESPACE is defined otherwise - * it might introduce ambiguity with pure template relational operators - * from rel_ops namespace. - */ -template -inline bool _STLP_CALL -operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) -{ return !(__x == __y); } - -template -inline bool _STLP_CALL -operator>(const basic_string<_CharT,_Traits,_Alloc>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) -{ return __y < __x; } - -template -inline bool _STLP_CALL -operator<=(const basic_string<_CharT,_Traits,_Alloc>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) -{ return !(__y < __x); } - -template -inline bool _STLP_CALL -operator>=(const basic_string<_CharT,_Traits,_Alloc>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) -{ return !(__x < __y); } - -# if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator!=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const basic_string<_CharT,_Traits,_Alloc>& __y) -{ return !(__x==__y); } - -template -inline bool _STLP_CALL -operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) -{ return !(__x==__y); } -# endif - -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - -template -inline bool _STLP_CALL -operator!=(const _CharT* __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__s == __y); -} - -template -inline bool _STLP_CALL -operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__x == __s); -} - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator!=(const _CharT* __s, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__s == __y); -} - -template -inline bool _STLP_CALL -operator!=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__x == __s); -} -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -template -inline bool _STLP_CALL -operator>(const _CharT* __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - return __y < __s; -} - -template -inline bool _STLP_CALL -operator>(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return __s < __x; -} - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator>(const _CharT* __s, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - return __y < __s; -} - -template -inline bool _STLP_CALL -operator>(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return __s < __x; -} -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -template -inline bool _STLP_CALL -operator<=(const _CharT* __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__y < __s); -} - -template -inline bool _STLP_CALL -operator<=(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__s < __x); -} - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator<=(const _CharT* __s, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__y < __s); -} - -template -inline bool _STLP_CALL -operator<=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__s < __x); -} -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -template -inline bool _STLP_CALL -operator>=(const _CharT* __s, - const basic_string<_CharT,_Traits,_Alloc>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__s < __y); -} - -template -inline bool _STLP_CALL -operator>=(const basic_string<_CharT,_Traits,_Alloc>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__x < __s); -} - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -template -inline bool _STLP_CALL -operator>=(const _CharT* __s, - const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__s < __y); -} - -template -inline bool _STLP_CALL -operator>=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - return !(__x < __s); -} -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_STRING_OPERATORS_H */ - diff --git a/build/stlport/stlport/stl/_string_sum.h b/build/stlport/stlport/stl/_string_sum.h deleted file mode 100644 index 739d2884f09f..000000000000 --- a/build/stlport/stlport/stl/_string_sum.h +++ /dev/null @@ -1,414 +0,0 @@ -/* - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STRING_SUM_H -#define _STLP_STRING_SUM_H - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -/*char wrapper to simulate basic_string*/ -template -struct __char_wrapper { - typedef const _CharT& const_reference; - - __char_wrapper(_CharT __val) : _Val(__val) {} - - _CharT getValue() const { return _Val; } - size_t size() const { return 1; } - - const_reference operator[] (size_t __n) const { - //To avoid a check on __n we use this strange implementation - return (&_Val)[__n]; - } - -private: - _CharT _Val; -}; - -/*C string wrapper to simulate basic_string*/ -template -struct __cstr_wrapper { - typedef const _CharT& const_reference; - - __cstr_wrapper(const _CharT *__cstr, size_t __size) : - _CStr(__cstr), _Size(__size) {} - - const _CharT* c_str() const { return _CStr; } - - size_t size() const { return _Size; } - - const_reference operator[] (size_t __n) const { return _CStr[__n]; } - -private: - const _CharT *_CStr; - size_t _Size; -}; - -/*basic_string wrapper to ensure that we only store a reference to the original string and not copy it*/ -template -struct __bstr_wrapper { - typedef const _CharT& const_reference; - typedef basic_string<_CharT, _Traits, _Alloc> _BString; - - __bstr_wrapper (_BString const& __s) : - _BStr(__s) {} - - size_t size() const { return _BStr.size(); } - - const_reference operator[] (size_t __n) const { return _BStr[__n]; } - - _BString const& b_str() const { return _BStr; } - -private: - _BString const& _BStr; -}; - -struct __on_left {}; -struct __on_right {}; - -template -class __bstr_sum { -public: - typedef basic_string<_CharT, _Traits, _Alloc> _BString; - typedef typename _BString::const_reference const_reference; - typedef typename _BString::const_iterator const_iterator; - typedef typename _BString::const_reverse_iterator const_reverse_iterator; - typedef typename _BString::size_type size_type; - typedef typename _BString::allocator_type allocator_type; - typedef __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDirection> _Self; - - __bstr_sum (_Left const& lhs, _Right const& rhs) : - _lhs(lhs), _rhs(rhs) {} - - _Left const& getLhs() const { return _lhs; } - _Right const& getRhs() const { return _rhs; } - - allocator_type get_allocator() const { return _M_get_storage(false).get_allocator(); } - - const_iterator begin() const { return _M_get_storage().begin(); } - const_iterator end() const { return _M_get_storage().end(); } - const_reverse_iterator rbegin() const { return _M_get_storage().rbegin(); } - const_reverse_iterator rend() const { return _M_get_storage().rend(); } - - size_type size() const { return _lhs.size() + _rhs.size(); } - size_type length() const { return size(); } - - size_t max_size() const { return _M_get_storage().max_size(); } - size_type capacity() const { return size(); } - bool empty() const { return size() == 0; } - - const_reference operator[](size_t __n) const - { return (__n < _lhs.size())?_lhs[__n]:_rhs[__n - _lhs.size()]; } - - const_reference at(size_type __n) const - { return _M_get_storage().at(__n); } - - //operator += - typedef __bstr_sum<_CharT, _Traits, _Alloc, _Self, __bstr_wrapper<_CharT, _Traits, _Alloc>, __on_left> _BStrOnLeft; - _BStrOnLeft operator += (const _BString& __s) { return append(__s); } - - typedef __bstr_sum<_CharT, _Traits, _Alloc, _Self, __cstr_wrapper<_CharT>, __on_left> _CStrOnLeft; - _CStrOnLeft operator += (const _CharT* __s) { return append(__s); } - - typedef __bstr_sum<_CharT, _Traits, _Alloc, _Self, __char_wrapper<_CharT>, __on_left> _CharOnLeft; - _CharOnLeft operator += (_CharT __c) { return _CharOnLeft(*this, __c); } - - //append - _BStrOnLeft append (const _BString& __s) - { return _BStrOnLeft(*this, __s); } - _BString& append(const _BString& __s, size_type __pos, size_type __n) - { return _M_get_storage().append(__s, __pos, __n); } - _CStrOnLeft append(const _CharT* __s) { - const size_type __n = _Traits::length(__s); - return _CStrOnLeft(*this, __cstr_wrapper<_CharT>(__s, __n)); - } - _CStrOnLeft append(const _CharT* __s, size_type __n) - { return _CStrOnLeft(*this, __cstr_wrapper<_CharT>(__s, __n)); } - _BString& append(size_type __n, _CharT __c) - {return _M_get_storage().append(__n, __c);} - template - _BString& append(_InputIter __first, _InputIter __last) - {return _M_get_storage().append(__first, __last);} - - //assign - _BString& assign(const _BString& __s) {return _M_get_storage().assign(__s);} - _BString& assign(const _BString& __s, size_type __pos, size_type __n) {return _M_get_storage().assign(__s, __pos, __n);} - _BString& assign(const _CharT* __s, size_type __n) {return _M_get_storage().assign(__s, __n);} - _BString& assign(const _CharT* __s) {return _M_get_storage().assign(__s); } - _BString& assign(size_type __n, _CharT __c) {return _M_get_storage().assign(__n, __c);} - - //insert - _BString& insert(size_type __pos, const _BString& __s) {return _M_get_storage().insert(__pos, __s);} - _BString& insert(size_type __pos, const _BString& __s, size_type __beg, size_type __n) - {return _M_get_storage().insert(__pos, __s, __beg, __n);} - _BString& insert(size_type __pos, const _CharT* __s, size_type __n) {return _M_get_storage().insert(__pos, __s, __n);} - _BString& insert(size_type __pos, const _CharT* __s) {return _M_get_storage().insert(__pos, __s);} - _BString& insert(size_type __pos, size_type __n, _CharT __c) {return _M_get_storage().insert(__pos, __n, __c);} - - //erase - _BString& erase(size_type __pos = 0, size_type __n =_BString::npos) {return _M_get_storage().erase(__pos, __n);} - - //replace - _BString& replace(size_type __pos, size_type __n, const _BString& __s) - {return _M_get_storage().replace(__pos, __n, __s);} - _BString& replace(size_type __pos1, size_type __n1, const _BString& __s, size_type __pos2, size_type __n2) - {return _M_get_storage().replace(__pos1, __n1, __s, __pos2, __n2);} - _BString& replace(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) - {return _M_get_storage().replace(__pos, __n1, __s, __n2);} - _BString& replace(size_type __pos, size_type __n1, const _CharT* __s) - {return _M_get_storage().replace(__pos, __n1, __s);} - _BString& replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) - {return _M_get_storage().replace(__pos, __n1, __n2, __c);} - - size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const - {return _M_get_storage().copy(__s, __n, __pos);} - - void swap(_BString& __s) - {_M_get_storage().swap(__s);} - - const _CharT* c_str() const { return _M_get_storage().c_str(); } - const _CharT* data() const { return _M_get_storage().data(); } - - //find family - size_type find(const _BString& __s, size_type __pos = 0) const { return _M_get_storage().find(__s, __pos); } - size_type find(const _CharT* __s, size_type __pos = 0) const { return _M_get_storage().find(__s, __pos); } - size_type find(const _CharT* __s, size_type __pos, size_type __n) const { return _M_get_storage().find(__s, __pos, __n); } - size_type find(_CharT __c, size_type __pos = 0) const { return _M_get_storage().find(__c, __pos); } - - size_type rfind(const _BString& __s, size_type __pos = _BString::npos) const { return _M_get_storage().rfind(__s, __pos); } - size_type rfind(const _CharT* __s, size_type __pos = _BString::npos) const { return _M_get_storage().rfind(__s, __pos); } - size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const { return _M_get_storage().rfind(__s, __pos, __n); } - size_type rfind(_CharT __c, size_type __pos = _BString::npos) const { return _M_get_storage().rfind(__c, __pos); } - - size_type find_first_of(const _BString& __s, size_type __pos = 0) const - { return _M_get_storage().find_first_of(__s, __pos); } - size_type find_first_of(const _CharT* __s, size_type __pos = 0) const - { return _M_get_storage().find_first_of(__s, __pos); } - size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const - { return _M_get_storage().find_first_of(__s, __pos, __n); } - size_type find_first_of(_CharT __c, size_type __pos = 0) const - { return _M_get_storage().find(__c, __pos); } - - size_type find_last_of(const _BString& __s, size_type __pos = _BString::npos) const - { return _M_get_storage().find_last_of(__s, __pos); } - size_type find_last_of(const _CharT* __s, size_type __pos = _BString::npos) const - { return _M_get_storage().find_last_of(__s, __pos); } - size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const - { return _M_get_storage().find_last_of(__s, __pos, __n); } - size_type find_last_of(_CharT __c, size_type __pos = _BString::npos) const - { return _M_get_storage().rfind(__c, __pos); } - - size_type find_first_not_of(const _BString& __s, size_type __pos = 0) const - { return _M_get_storage().find_first_not_of(__s, __pos); } - size_type find_first_not_of(const _CharT* __s, size_type __pos = 0) const - { return _M_get_storage().find_first_not_of(__s, __pos); } - size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const - { return _M_get_storage().find_first_not_of(__s, __pos, __n); } - size_type find_first_not_of(_CharT __c, size_type __pos = 0) const - { return _M_get_storage().find_first_not_of(__c, __pos); } - - size_type find_last_not_of(const _BString& __s, size_type __pos = _BString::npos) const - { return _M_get_storage().find_last_not_of(__s, __pos); } - size_type find_last_not_of(const _CharT* __s, size_type __pos =_BString:: npos) const - { return _M_get_storage().find_last_not_of(__s, __pos); } - size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const - { return _M_get_storage().find_last_not_of(__s, __pos, __n); } - size_type find_last_not_of(_CharT __c, size_type __pos = _BString::npos) const - { return _M_get_storage().find_last_not_of(__c, __pos); } - - _BString substr(size_type __pos = 0, size_type __n = _BString::npos) const - { return _M_get_storage().substr(__pos, __n); } - - //compare - int compare(const _BString& __s) const - { return _M_get_storage().compare(__s); } - int compare(size_type __pos1, size_type __n1, const _Self& __s) const - { return _M_get_storage().compare(__pos1, __n1, __s); } - int compare(size_type __pos1, size_type __n1, const _Self& __s, size_type __pos2, size_type __n2) const - { return _M_get_storage().compare(__pos1, __n1, __s, __pos2, __n2); } - int compare(const _CharT* __s) const - { return _M_get_storage().compare(__s); } - int compare(size_type __pos1, size_type __n1, const _CharT* __s) const - { return _M_get_storage().compare(__pos1, __n1, __s); } - int compare(size_type __pos1, size_type __n1, const _CharT* __s, size_type __n2) const - { return _M_get_storage().compare(__pos1, __n1, __s, __n2); } - - //Returns the underlying basic_string representation of the template expression - //The non const method will always initialise it. - _BString& _M_get_storage() - { return _rhs._M_get_storage(*this, _StorageDirection()); } - - template - _BString& _M_get_storage(__bstr_sum<_CharT, _Traits, _Alloc, _Lhs, _Rhs, _StorageDir> const& __ref, - __on_left const& /*StorageDir*/) - { return _lhs._M_get_storage(__ref); } - - template - _BString& _M_get_storage(__bstr_sum<_CharT, _Traits, _Alloc, _Lhs, _Rhs, _StorageDir> const& __ref, - __on_right const& /*StorageDir*/) - { return _rhs._M_get_storage(__ref); } - - template - _BString& _M_get_storage(__bstr_sum<_CharT, _Traits, _Alloc, _Lhs, _Rhs, _StorageDir> const& __ref) - { return _M_get_storage(__ref, _StorageDirection()); } - - //The const method can be invoked without initialising the basic_string so avoiding dynamic allocation. - _BString const& _M_get_storage(bool __do_init = true) const - { return _M_get_storage(*this, __do_init, _StorageDirection()); } - - template - _BString const& _M_get_storage(__bstr_sum<_CharT, _Traits, _Alloc, _Lhs, _Rhs, _StorageDir> const& __ref, - bool __do_init, __on_left const& /*StorageDir*/) const - { return _lhs._M_get_storage(__ref, __do_init); } - - template - _BString const& _M_get_storage(__bstr_sum<_CharT, _Traits, _Alloc, _Lhs, _Rhs, _StorageDir> const& __ref, - bool __do_init, __on_right const& /*StorageDir*/) const - { return _rhs._M_get_storage(__ref, __do_init); } - - template - _BString const& _M_get_storage(__bstr_sum<_CharT, _Traits, _Alloc, _Lhs, _Rhs, _StorageDir> const& __ref, - bool __do_init) const - { return _M_get_storage(__ref, __do_init, _StorageDirection()); } - -private: - _Left _lhs; - _Right _rhs; -}; - -/* - * For this operator we choose to use the right part as the storage part - */ -template -inline __bstr_sum<_CharT, _Traits, _Alloc, - __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1>, - __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2>, - __on_right> _STLP_CALL -operator + (const __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1> &__lhs, - const __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2> &__rhs) { - return __bstr_sum<_CharT, _Traits, _Alloc, - __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1>, - __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2>, - __on_right>(__lhs, __rhs); -} - -template -inline bool _STLP_CALL -operator == (const __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1> &__lhs, - const __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2> &__rhs) -{ return (__lhs.size() == __rhs.size()) && (__lhs._M_get_storage() == __rhs._M_get_storage()); } - -template -inline bool _STLP_CALL -operator < (const __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1> &__lhs, - const __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2> &__rhs) -{ return __lhs._M_get_storage() < __rhs._M_get_storage(); } - -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE - -template -inline bool _STLP_CALL -operator != (const __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1> &__lhs, - const __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2> &__rhs) -{ return !(__lhs == __rhs); } - -template -inline bool _STLP_CALL -operator > (const __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1> &__lhs, - const __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2> &__rhs) -{ return __rhs < __lhs; } - -template -inline bool _STLP_CALL -operator <= (const __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1> &__lhs, - const __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2> &__rhs) -{ return !(__rhs < __lhs); } - -template -inline bool _STLP_CALL -operator >= (const __bstr_sum<_CharT, _Traits, _Alloc, _Lh1, _Rh1, _StoreDir1> &__lhs, - const __bstr_sum<_CharT, _Traits, _Alloc, _Lh2, _Rh2, _StoreDir2> &__rhs) -{ return !(__lhs < __rhs); } - -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ - - -/* - * This class will be used to simulate a temporary string that is required for - * a call to the c_str method on the __bstr_sum class. - */ - -template -struct __sum_storage_elem { - typedef __sum_storage_elem<_CharT, _Traits, _Alloc> _Self; - typedef basic_string<_CharT, _Traits, _Alloc> _BString; - - __sum_storage_elem(_Alloc __alloc) : _M_init(false), _M_storage(__alloc) - {} - - template - void _M_Init(__bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __ref) const { - if (!_M_init) { - _STLP_MUTABLE(_Self, _M_storage) = __ref; - _STLP_MUTABLE(_Self, _M_init) = true; - } - } - - template - _BString const& _M_get_storage(__bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __ref, - bool __do_init) const { - if (__do_init) { - _M_Init(__ref); - } - return _M_storage; - } - template - _BString& _M_get_storage(__bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __ref) { - _M_Init(__ref); - return _M_storage; - } - - size_t size() const { return 0; } - _CharT const& operator[](size_t __n) const - { return __STATIC_CAST(_CharT*, 0)[__n]; } - -private: - mutable bool _M_init; - mutable basic_string<_CharT, _Traits, _Alloc> _M_storage; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /*_STLP_STRING_SUM_H*/ diff --git a/build/stlport/stlport/stl/_string_sum_methods.h b/build/stlport/stlport/stl/_string_sum_methods.h deleted file mode 100644 index 305608e50e63..000000000000 --- a/build/stlport/stlport/stl/_string_sum_methods.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* - * All the necessary methods used for template expressions with basic_string - * This file do not have to be macro guarded as it is only used in the _string.h - * file and it is a part of the basic_string definition. - */ - -public: - template - basic_string(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s) - : _STLP_STRING_SUM_BASE(_Reserve_t(), __s.size(), __s.get_allocator()) - { _M_append_sum(__s); } - - template - basic_string(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, - size_type __pos, size_type __n = npos, - const allocator_type& __a = allocator_type()) - : _STLP_STRING_SUM_BASE(_Reserve_t(), (__pos <= __s.size()) ? ((min) (__n, __s.size() - __pos)) : 0, __a) { - size_type __size = __s.size(); - if (__pos > __size) - this->_M_throw_out_of_range(); - else - _M_append_sum_pos(__s, __pos, (min) (__n, __size - __pos)); - } - -private: - _CharT* _M_append_fast(_STLP_PRIV __char_wrapper<_CharT> __c, _CharT *__buf) { - _STLP_STD::_Copy_Construct(__buf, __c.getValue()); - return __buf + 1; - } - _CharT* _M_append_fast(_CharT const* __s, size_type __s_size, _CharT *__buf) - { return uninitialized_copy(__s, __s + __s_size, __buf); } - _CharT* _M_append_fast(_STLP_PRIV __cstr_wrapper<_CharT> const& __s, _CharT *__buf) - { return _M_append_fast(__s.c_str(), __s.size(), __buf); } - _CharT* _M_append_fast(_STLP_PRIV __bstr_wrapper<_CharT, _Traits, _Alloc> __s, _CharT *__buf) - { return _M_append_fast(__s.b_str(), __buf); } - _CharT* _M_append_fast(_Self const& __s, _CharT *__buf) - { return _M_append_fast(__s.data(), __s.size(), __buf); } - _CharT* _M_append_fast(_STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc> const&, _CharT *__buf) - { return __buf; } - template - _CharT* _M_append_fast(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, _CharT *__buf) - { return _M_append_fast(__s.getRhs(), _M_append_fast(__s.getLhs(), __buf)); } - - _CharT* _M_append_fast_pos(_STLP_PRIV __char_wrapper<_CharT> __c, _CharT *__buf, size_type /*__pos*/, size_type __n) { - if (__n == 0) - return __buf; - _STLP_STD::_Copy_Construct(__buf, __c.getValue()); - return __buf + 1; - } - _CharT* _M_append_fast_pos(_CharT const* __s, size_type __s_size, _CharT *__buf, - size_type __pos, size_type __n) - { return uninitialized_copy(__s + __pos, __s + __pos + (min)(__n, __s_size - __pos), __buf); } - _CharT* _M_append_fast_pos(_STLP_PRIV __cstr_wrapper<_CharT> const& __s, _CharT *__buf, - size_type __pos, size_type __n) - { return _M_append_fast_pos(__s.c_str(), __s.size(), __buf, __pos, __n); } - _CharT* _M_append_fast_pos(_STLP_PRIV __bstr_wrapper<_CharT, _Traits, _Alloc> __s, _CharT *__buf, - size_type __pos, size_type __n) - { return _M_append_fast_pos(__s.b_str(), __buf, __pos, __n); } - _CharT* _M_append_fast_pos(_Self const& __s, _CharT *__buf, - size_type __pos, size_type __n) - { return _M_append_fast_pos(__s.data(), __s.size(), __buf, __pos, __n); } - _CharT* _M_append_fast_pos(_STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc> const&, _CharT *__buf, - size_type, size_type) - { return __buf; } - - template - _CharT* _M_append_fast_pos(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, - _CharT *__buf, size_type __pos, size_type __n) { - if (__n == 0) { - return __buf; - } - size_type __lhs_size = __s.getLhs().size(); - if (__pos < __lhs_size) { - if (__n < (__lhs_size - __pos)) { - return _M_append_fast_pos(__s.getLhs(), __buf, __pos, __n); - } else { - return _M_append_fast_pos(__s.getRhs(), _M_append_fast_pos(__s.getLhs(), __buf, __pos, __n), - 0, __n - (__lhs_size - __pos)); - } - } else { - return _M_append_fast_pos(__s.getRhs(), __buf, __pos - __lhs_size, __n); - } - } - - template - _Self& _M_append_sum (_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s) { - size_type __s_size = __s.size(); - if (__s_size == 0) - return *this; - const size_type __old_size = this->size(); - if (__s_size > this->max_size() || __old_size > (this->max_size() - __s_size)) - this->_M_throw_length_error(); - if (__old_size + __s_size > this->capacity()) { - const size_type __len = __old_size + (max)(__old_size, __s_size) + 1; - pointer __new_start = this->_M_start_of_storage.allocate(__len); - pointer __new_finish = uninitialized_copy(this->_M_Start(), this->_M_Finish(), __new_start); - __new_finish = this->_M_append_fast(__s, __new_finish); - this->_M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - else { - _M_append_sum_no_overflow(__s, 0, __s_size); - } - return *this; - } - - template - _Self& _M_append_sum_pos(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, - size_type __pos, size_type __n) { - size_type __s_size = (min)(__s.size() - __pos, __n); - if (__s_size == 0) - return *this; - const size_type __old_size = this->size(); - if (__s_size > this->max_size() || __old_size > (this->max_size() - __s_size)) - this->_M_throw_length_error(); - if (__old_size + __s_size > this->capacity()) { - const size_type __len = __old_size + (max)(__old_size, __s_size) + 1; - pointer __new_start = this->_M_start_of_storage.allocate(__len); - pointer __new_finish = uninitialized_copy(this->_M_Start(), this->_M_Finish(), __new_start); - __new_finish = _M_append_fast_pos(__s, __new_finish, __pos, __s_size); - this->_M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - else { - _M_append_sum_no_overflow(__s, __pos, __s_size); - } - return *this; - } - - template - void _M_append_sum_no_overflow(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, - size_type __pos, size_type __n) { - pointer __finish = this->_M_Finish(); - _M_append_fast_pos(__s, __finish + 1, __pos + 1, __n - 1); - this->_M_construct_null(__finish + __n); - _Traits::assign(*this->_M_finish, __s[__pos]); - this->_M_finish += __n; - } diff --git a/build/stlport/stlport/stl/_string_workaround.h b/build/stlport/stlport/stl/_string_workaround.h deleted file mode 100644 index d77e32015561..000000000000 --- a/build/stlport/stlport/stl/_string_workaround.h +++ /dev/null @@ -1,599 +0,0 @@ -/* - * Copyright (c) 2004 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -//Included from _string.h, no need for macro guarding. - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_DEBUG) -# define basic_string _STLP_NON_DBG_NAME(str) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -#define _STLP_NO_MEM_T_STRING_BASE _STLP_PRIV _STLP_NO_MEM_T_NAME(str)<_CharT, _Traits, _Alloc> - -template -class basic_string : public _STLP_NO_MEM_T_STRING_BASE -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (basic_string) - , public __stlport_class > -#endif -{ -private: // Protected members inherited from base. - typedef basic_string<_CharT, _Traits, _Alloc> _Self; - typedef _STLP_NO_MEM_T_STRING_BASE _Base; - typedef typename _Base::_CalledFromWorkaround_t _CalledFromWorkaround_t; -public: - - __IMPORT_WITH_REVERSE_ITERATORS(_Base) - - typedef typename _Base::_Iterator_category _Iterator_category; - typedef typename _Base::traits_type traits_type; - typedef typename _Base::_Reserve_t _Reserve_t; - -#include - -public: // Constructor, destructor, assignment. - explicit basic_string(const allocator_type& __a = allocator_type()) - : _STLP_NO_MEM_T_STRING_BASE(__a) {} - - basic_string(_Reserve_t __r, size_t __n, - const allocator_type& __a = allocator_type()) - : _STLP_NO_MEM_T_STRING_BASE(__r, __n, __a) {} - - basic_string(const _Self& __s) - : _STLP_NO_MEM_T_STRING_BASE(__s) {} - - basic_string(const _Self& __s, size_type __pos, size_type __n = npos, - const allocator_type& __a = allocator_type()) - : _STLP_NO_MEM_T_STRING_BASE(__s, __pos, __n, __a) {} - - basic_string(const _CharT* __s, size_type __n, - const allocator_type& __a = allocator_type()) - : _STLP_NO_MEM_T_STRING_BASE(__s, __n, __a) {} - - basic_string(const _CharT* __s, - const allocator_type& __a = allocator_type()) - : _STLP_NO_MEM_T_STRING_BASE(__s, __a) {} - - basic_string(size_type __n, _CharT __c, - const allocator_type& __a = allocator_type()) - : _STLP_NO_MEM_T_STRING_BASE(__n, __c, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - basic_string(__move_source<_Self> src) - : _STLP_NO_MEM_T_STRING_BASE(__move_source<_Base>(src.get())) {} -#endif - - // Check to see if _InputIterator is an integer type. If so, then - // it can't be an iterator. - template - basic_string(_InputIterator __f, _InputIterator __l, - const allocator_type & __a _STLP_ALLOCATOR_TYPE_DFL) - : _STLP_NO_MEM_T_STRING_BASE(_CalledFromWorkaround_t(), __a) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_dispatch(__f, __l, _Integral()); - } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - basic_string(_InputIterator __f, _InputIterator __l) - : _STLP_NO_MEM_T_STRING_BASE(_CalledFromWorkaround_t(), allocator_type()) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_dispatch(__f, __l, _Integral()); - } -# endif - - _Self& operator=(const _Self& __s) { - _Base::operator=(__s); - return *this; - } - - _Self& operator=(const _CharT* __s) { - _Base::operator=(__s); - return *this; - } - - _Self& operator=(_CharT __c) { - _Base::operator=(__c); - return *this; - } - -private: - template - void _M_range_initialize(_InputIter __f, _InputIter __l, - const input_iterator_tag &__tag) { - this->_M_allocate_block(); - this->_M_construct_null(this->_M_Finish()); - _M_appendT(__f, __l, __tag); - } - - template - void _M_range_initialize(_ForwardIter __f, _ForwardIter __l, - const forward_iterator_tag &) { - difference_type __n = _STLP_STD::distance(__f, __l); - this->_M_allocate_block(__n + 1); - this->_M_finish = uninitialized_copy(__f, __l, this->_M_Start()); - this->_M_terminate_string(); - } - - template - void _M_range_initializeT(_InputIter __f, _InputIter __l) { - _M_range_initialize(__f, __l, _STLP_ITERATOR_CATEGORY(__f, _InputIter)); - } - - template - void _M_initialize_dispatch(_Integer __n, _Integer __x, const __true_type& /*_Integral*/) { - this->_M_allocate_block(__n + 1); - this->_M_finish = uninitialized_fill_n(this->_M_Start(), __n, __x); - this->_M_terminate_string(); - } - - template - void _M_initialize_dispatch(_InputIter __f, _InputIter __l, const __false_type& /*_Integral*/) { - _M_range_initializeT(__f, __l); - } - -public: // Append, operator+=, push_back. - _Self& operator+=(const _Self& __s) { - _Base::operator+=(__s); - return *this; - } - _Self& operator+=(const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::operator+=(__s); - return *this; - } - _Self& operator+=(_CharT __c) { - _Base::operator+=(__c); - return *this; - } - - _Self& append(const _Self& __s) { - _Base::append(__s); - return *this; - } - - _Self& append(const _Self& __s, - size_type __pos, size_type __n) { - _Base::append(__s, __pos, __n); - return *this; - } - - _Self& append(const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::append(__s, __n); - return *this; - } - _Self& append(const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::append(__s); - return *this; - } - _Self& append(size_type __n, _CharT __c) { - _Base::append(__n, __c); - return *this; - } - - // Check to see if _InputIterator is an integer type. If so, then - // it can't be an iterator. - template - _Self& append(_InputIter __first, _InputIter __last) { - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - return _M_append_dispatch(__first, __last, _Integral()); - } - -#if !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) - //See equivalent assign method remark. - _Self& append(const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) - _Base::append(__f, __l); - return *this; - } -#endif - -private: // Helper functions for append. - - template - _Self& _M_appendT(_InputIter __first, _InputIter __last, - const input_iterator_tag &) { - for ( ; __first != __last ; ++__first) - _Base::push_back(*__first); - return *this; - } - - template - _Self& _M_appendT(_ForwardIter __first, _ForwardIter __last, - const forward_iterator_tag &) { - if (__first != __last) { - const size_type __n = __STATIC_CAST(size_type, _STLP_STD::distance(__first, __last)); - if (__n >= this->_M_rest()) { - size_type __len = this->_M_compute_next_size(__n); - pointer __new_start = this->_M_start_of_storage.allocate(__len, __len); - pointer __new_finish = uninitialized_copy(this->_M_Start(), this->_M_Finish(), __new_start); - __new_finish = uninitialized_copy(__first, __last, __new_finish); - this->_M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - else { - _Traits::assign(*this->_M_finish, *__first++); - uninitialized_copy(__first, __last, this->_M_Finish() + 1); - this->_M_construct_null(this->_M_Finish() + __n); - this->_M_finish += __n; - } - } - return *this; - } - - template - _Self& _M_append_dispatch(_Integer __n, _Integer __x, const __true_type& /*Integral*/) - { return append((size_type) __n, (_CharT) __x); } - - template - _Self& _M_append_dispatch(_InputIter __f, _InputIter __l, const __false_type& /*Integral*/) - { return _M_appendT(__f, __l, _STLP_ITERATOR_CATEGORY(__f, _InputIter)); } - -public: // Assign - _Self& assign(const _Self& __s) { - _Base::assign(__s); - return *this; - } - - _Self& assign(const _Self& __s, - size_type __pos, size_type __n) { - _Base::assign(__s, __pos, __n); - return *this; - } - - _Self& assign(const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::assign(__s, __n); - return *this; - } - - _Self& assign(const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::assign(__s); - return *this; - } - - _Self& assign(size_type __n, _CharT __c) { - _Base::assign(__n, __c); - return *this; - } - -private: // Helper functions for assign. - - template - _Self& _M_assign_dispatch(_Integer __n, _Integer __x, const __true_type& /*_Integral*/) - { return assign((size_type) __n, (_CharT) __x); } - - template - _Self& _M_assign_dispatch(_InputIter __f, _InputIter __l, const __false_type& /*_Integral*/) { - pointer __cur = this->_M_Start(); - while (__f != __l && __cur != this->_M_Finish()) { - _Traits::assign(*__cur, *__f); - ++__f; - ++__cur; - } - if (__f == __l) - _Base::erase(__cur, this->_M_Finish()); - else - _M_appendT(__f, __l, _STLP_ITERATOR_CATEGORY(__f, _InputIter)); - return *this; - } - -public: - // Check to see if _InputIterator is an integer type. If so, then - // it can't be an iterator. - template - _Self& assign(_InputIter __first, _InputIter __last) { - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - return _M_assign_dispatch(__first, __last, _Integral()); - } - -#if !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) - /* This method is not part of the standard and is a specialization of the - * template method assign. It is only granted for convenience to call assign - * with mixed parameters iterator and const_iterator. - */ - _Self& assign(const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) - _Base::assign(__f, __l); - return *this; - } -#endif - -public: // Insert - _Self& insert(size_type __pos, const _Self& __s) { - _Base::insert(__pos, __s); - return *this; - } - - _Self& insert(size_type __pos, const _Self& __s, - size_type __beg, size_type __n) { - _Base::insert(__pos, __s, __beg, __n); - return *this; - } - _Self& insert(size_type __pos, const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::insert(__pos, __s, __n); - return *this; - } - - _Self& insert(size_type __pos, const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::insert(__pos, __s); - return *this; - } - - _Self& insert(size_type __pos, size_type __n, _CharT __c) { - _Base::insert(__pos, __n, __c); - return *this; - } - - iterator insert(iterator __p, _CharT __c) - { return _Base::insert(__p, __c); } - - void insert(iterator __p, size_t __n, _CharT __c) - { _Base::insert(__p, __n, __c); } - - // Check to see if _InputIterator is an integer type. If so, then - // it can't be an iterator. - template - void insert(iterator __p, _InputIter __first, _InputIter __last) { - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - _M_insert_dispatch(__p, __first, __last, _Integral()); - } - -#if !defined (_STLP_NO_METHOD_SPECIALIZATION) -public: - void insert(iterator __p, const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _M_insert(__p, __f, __l, this->_M_inside(__f)); - } -#endif - -private: // Helper functions for insert. - void _M_insert(iterator __p, const _CharT* __f, const _CharT* __l, bool __self_ref) { - _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) - _Base::_M_insert(__p, __f, __l, __self_ref); - } - - template - void _M_insert_overflow(iterator __pos, _ForwardIter __first, _ForwardIter __last, - size_type __n) { - size_type __len = this->_M_compute_next_size(__n); - pointer __new_start = this->_M_start_of_storage.allocate(__len, __len); - pointer __new_finish = uninitialized_copy(this->_M_Start(), __pos, __new_start); - __new_finish = uninitialized_copy(__first, __last, __new_finish); - __new_finish = uninitialized_copy(__pos, this->_M_Finish(), __new_finish); - this->_M_construct_null(__new_finish); - this->_M_deallocate_block(); - this->_M_reset(__new_start, __new_finish, __new_start + __len); - } - - template - void _M_insertT(iterator __p, _InputIter __first, _InputIter __last, - const input_iterator_tag &) { - for ( ; __first != __last; ++__first) { - __p = insert(__p, *__first); - ++__p; - } - } - - template - void _M_insertT(iterator __pos, _ForwardIter __first, _ForwardIter __last, - const forward_iterator_tag &) { - if (__first != __last) { - size_type __n = __STATIC_CAST(size_type, _STLP_STD::distance(__first, __last)); - if (__n < this->_M_rest()) { - const size_type __elems_after = this->_M_finish - __pos; - if (__elems_after >= __n) { - uninitialized_copy((this->_M_Finish() - __n) + 1, this->_M_Finish() + 1, this->_M_Finish() + 1); - this->_M_finish += __n; - _Traits::move(__pos + __n, __pos, (__elems_after - __n) + 1); - _M_copyT(__first, __last, __pos); - } - else { - pointer __old_finish = this->_M_Finish(); - _ForwardIter __mid = __first; - _STLP_STD::advance(__mid, __elems_after + 1); - _STLP_STD::uninitialized_copy(__mid, __last, this->_M_Finish() + 1); - this->_M_finish += __n - __elems_after; - uninitialized_copy(__pos, __old_finish + 1, this->_M_Finish()); - this->_M_finish += __elems_after; - _M_copyT(__first, __mid, __pos); - } - } - else { - _M_insert_overflow(__pos, __first, __last, __n); - } - } - } - - template - void _M_insert_dispatch(iterator __p, _Integer __n, _Integer __x, - const __true_type& /*Integral*/) - { insert(__p, (size_type) __n, (_CharT) __x); } - - template - void _M_insert_dispatch(iterator __p, _InputIter __first, _InputIter __last, - const __false_type& /*Integral*/) { - _STLP_FIX_LITERAL_BUG(__p) - /* We are forced to do a temporary string to avoid the self referencing issue. */ - const _Self __self(__first, __last, this->get_allocator()); - _M_insertT(__p, __self.begin(), __self.end(), _STLP_ITERATOR_CATEGORY(__first, _InputIter)); - } - - template - void _M_copyT(_InputIterator __first, _InputIterator __last, pointer __result) { - _STLP_FIX_LITERAL_BUG(__p) - for ( ; __first != __last; ++__first, ++__result) - _Traits::assign(*__result, *__first); - } - -#if !defined (_STLP_NO_METHOD_SPECIALIZATION) - void _M_copyT(const _CharT* __f, const _CharT* __l, _CharT* __res) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) _STLP_FIX_LITERAL_BUG(__res) - _Base::_M_copy(__f, __l, __res); - } -#endif - -public: // Erase. - _Self& erase(size_type __pos = 0, size_type __n = npos) { - _Base::erase(__pos, __n); - return *this; - } - - iterator erase(iterator __pos) { - _STLP_FIX_LITERAL_BUG(__pos) - return _Base::erase(__pos); - } - - iterator erase(iterator __first, iterator __last) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - return _Base::erase(__first, __last); - } - -public: // Replace. (Conceptually equivalent - // to erase followed by insert.) - _Self& replace(size_type __pos, size_type __n, const _Self& __s) { - _Base::replace(__pos, __n, __s); - return *this; - } - - _Self& replace(size_type __pos1, size_type __n1, const _Self& __s, - size_type __pos2, size_type __n2) { - _Base::replace(__pos1, __n1, __s, __pos2, __n2); - return *this; - } - - _Self& replace(size_type __pos, size_type __n1, - const _CharT* __s, size_type __n2) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::replace(__pos, __n1, __s, __n2); - return *this; - } - - _Self& replace(size_type __pos, size_type __n1, const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _Base::replace(__pos, __n1, __s); - return *this; - } - - _Self& replace(size_type __pos, size_type __n1, - size_type __n2, _CharT __c) { - _Base::replace(__pos, __n1, __n2, __c); - return *this; - } - - _Self& replace(iterator __first, iterator __last, const _Self& __s) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - _Base::replace(__first, __last, __s); - return *this; - } - - _Self& replace(iterator __first, iterator __last, - const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - _STLP_FIX_LITERAL_BUG(__s) - _Base::replace(__first, __last, __s, __n); - return *this; - } - - _Self& replace(iterator __first, iterator __last, - const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - _STLP_FIX_LITERAL_BUG(__s) - _Base::replace(__first, __last, __s); - return *this; - } - - _Self& replace(iterator __first, iterator __last, - size_type __n, _CharT __c) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - _Base::replace(__first, __last, __n, __c); - return *this; - } - - // Check to see if _InputIter is an integer type. If so, then - // it can't be an iterator. - template - _Self& replace(iterator __first, iterator __last, - _InputIter __f, _InputIter __l) { - _STLP_FIX_LITERAL_BUG(__first)_STLP_FIX_LITERAL_BUG(__last) - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - return _M_replace_dispatch(__first, __last, __f, __l, _Integral()); - } - -#if !defined (_STLP_NO_METHOD_SPECIALIZATION) - _Self& replace(iterator __first, iterator __last, - const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - return _M_replace(__first, __last, __f, __l, this->_M_inside(__f)); - } -#endif - -private: // Helper functions for replace. - _Self& _M_replace(iterator __first, iterator __last, - const _CharT* __f, const _CharT* __l, bool __self_ref) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _Base::_M_replace(__first, __last, __f, __l, __self_ref); - return *this; - } - - template - _Self& _M_replace_dispatch(iterator __first, iterator __last, - _Integer __n, _Integer __x, const __true_type& /*IsIntegral*/) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - return replace(__first, __last, (size_type) __n, (_CharT) __x); - } - - template - _Self& _M_replace_dispatch(iterator __first, iterator __last, - _InputIter __f, _InputIter __l, const __false_type& /*IsIntegral*/) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - /* We are forced to do a temporary string to avoid the self referencing issue. */ - const _Self __self(__f, __l, this->get_allocator()); - return _M_replace(__first, __last, __self._M_Start(), __self._M_Finish(), false); - } - -public: // Other modifier member functions. - void swap(_Self& __s) { _Base::swap(__s); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -public: // Substring. - _Self substr(size_type __pos = 0, size_type __n = npos) const - { return _Self(*this, __pos, __n, this->get_allocator()); } - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) && !defined (_STLP_DEBUG) -# define _STLP_STRING_SUM_BASE _STLP_NO_MEM_T_STRING_BASE -# include -# undef _STLP_STRING_SUM_BASE -#endif -}; - -#undef _STLP_NO_MEM_T_STRING_BASE - -#if defined (basic_string) -_STLP_MOVE_TO_STD_NAMESPACE -# undef basic_string -#endif - -_STLP_END_NAMESPACE diff --git a/build/stlport/stlport/stl/_strstream.h b/build/stlport/stlport/stl/_strstream.h deleted file mode 100644 index 5e3d4c37dcc5..000000000000 --- a/build/stlport/stlport/stl/_strstream.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_INTERNAL_STRSTREAM -#define _STLP_INTERNAL_STRSTREAM - -#ifndef _STLP_INTERNAL_STREAMBUF -# include -#endif - -#ifndef _STLP_INTERNAL_ISTREAM -# include // Includes , , -#endif - -#ifndef _STLP_INTERNAL_STRING_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#ifndef _STLP_USE_NAMESPACES -# define strstream _STLP_strstream -# define ostrstream _STLP_ostrstream -# define istrstream _STLP_istrstream -# define strstreambuf _STLP_strstreambuf -#endif - -//---------------------------------------------------------------------- -// Class strstreambuf, a streambuf class that manages an array of char. -// Note that this class is not a template. - -class _STLP_CLASS_DECLSPEC strstreambuf : public basic_streambuf > { -public: // Types. - typedef char_traits _Traits; - typedef basic_streambuf > _Base; - typedef void* (*__alloc_fn)(size_t); - typedef void (*__free_fn)(void*); -public: // Constructor, destructor - - explicit strstreambuf(streamsize _Initial_capacity = 0); - - strstreambuf(__alloc_fn, __free_fn); - - strstreambuf(char* __get, streamsize __n, char* __put = 0); - strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0); - strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0); - - strstreambuf(const char* __get, streamsize __n); - strstreambuf(const signed char* __get, streamsize __n); - strstreambuf(const unsigned char* __get, streamsize __n); - - virtual ~strstreambuf(); - -public: // strstreambuf operations. - void freeze(bool = true); - char* str(); - int pcount() const; - -protected: // Overridden virtual member functions. - virtual int_type overflow(int_type __c = _Traits::eof()); - virtual int_type pbackfail(int_type __c = _Traits::eof()); - virtual int_type underflow(); - virtual _Base* setbuf(char* __buf, streamsize __n); - virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir, - ios_base::openmode __mode - = ios_base::in | ios_base::out); - virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode - = ios_base::in | ios_base::out); - -private: // Helper functions. - // Dynamic allocation, possibly using _M_alloc_fun and _M_free_fun. - char* _M_alloc(size_t); - void _M_free(char*); - - // Helper function used in constructors. - void _M_setup(char* __get, char* __put, streamsize __n); -private: // Data members. - __alloc_fn _M_alloc_fun; - __free_fn _M_free_fun; - bool _M_dynamic : 1; - bool _M_frozen : 1; - bool _M_constant : 1; -}; - -//---------------------------------------------------------------------- -// Class istrstream, an istream that manages a strstreambuf. - -class _STLP_CLASS_DECLSPEC istrstream : public basic_istream > { -public: - explicit istrstream(char*); - explicit istrstream(const char*); - istrstream(char* , streamsize); - istrstream(const char*, streamsize); - virtual ~istrstream(); - - strstreambuf* rdbuf() const; - char* str(); - -private: - strstreambuf _M_buf; -}; - -//---------------------------------------------------------------------- -// Class ostrstream - -class _STLP_CLASS_DECLSPEC ostrstream : public basic_ostream > -{ -public: - ostrstream(); - ostrstream(char*, int, ios_base::openmode = ios_base::out); - virtual ~ostrstream(); - - strstreambuf* rdbuf() const; - void freeze(bool = true); - char* str(); - int pcount() const; - -private: - strstreambuf _M_buf; -}; - -//---------------------------------------------------------------------- -// Class strstream - -class _STLP_CLASS_DECLSPEC strstream : public basic_iostream > { -public: - typedef char char_type; - typedef char_traits::int_type int_type; - typedef char_traits::pos_type pos_type; - typedef char_traits::off_type off_type; - - strstream(); - strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out); - virtual ~strstream(); - - strstreambuf* rdbuf() const; - void freeze(bool = true); - int pcount() const; - char* str(); - -private: - strstreambuf _M_buf; - - //explicitely defined as private to avoid warnings: - strstream(strstream const&); - strstream& operator = (strstream const&); -}; - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_STRSTREAM */ diff --git a/build/stlport/stlport/stl/_tempbuf.c b/build/stlport/stlport/stl/_tempbuf.c deleted file mode 100644 index 179b4725cb0f..000000000000 --- a/build/stlport/stlport/stl/_tempbuf.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_TEMPBUF_C -#define _STLP_TEMPBUF_C - -#ifndef _STLP_INTERNAL_TEMPBUF_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -pair<_Tp*, ptrdiff_t> _STLP_CALL -__get_temporary_buffer(ptrdiff_t __len, _Tp*) -{ - if (__len > ptrdiff_t(INT_MAX / sizeof(_Tp))) - __len = INT_MAX / sizeof(_Tp); - - while (__len > 0) { - _Tp* __tmp = (_Tp*) malloc((size_t)__len * sizeof(_Tp)); - if (__tmp != 0) - return pair<_Tp*, ptrdiff_t>(__tmp, __len); - __len /= 2; - } - - return pair<_Tp*, ptrdiff_t>((_Tp*)0, 0); -} -_STLP_END_NAMESPACE - -#endif /* _STLP_TEMPBUF_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_tempbuf.h b/build/stlport/stlport/stl/_tempbuf.h deleted file mode 100644 index 0e0a74785816..000000000000 --- a/build/stlport/stlport/stl/_tempbuf.h +++ /dev/null @@ -1,167 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_TEMPBUF_H -#define _STLP_INTERNAL_TEMPBUF_H - -#ifndef _STLP_CLIMITS -# include -#endif - -#ifndef _STLP_INTERNAL_CSTDLIB -# include -#endif - -#ifndef _STLP_INTERNAL_UNINITIALIZED_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -pair<_Tp*, ptrdiff_t> _STLP_CALL -__get_temporary_buffer(ptrdiff_t __len, _Tp*); - -#ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS - -template -inline pair<_Tp*, ptrdiff_t> _STLP_CALL get_temporary_buffer(ptrdiff_t __len) { - return __get_temporary_buffer(__len, (_Tp*) 0); -} - -# if ! defined(_STLP_NO_EXTENSIONS) -// This overload is not required by the standard; it is an extension. -// It is supported for backward compatibility with the HP STL, and -// because not all compilers support the language feature (explicit -// function template arguments) that is required for the standard -// version of get_temporary_buffer. -template -inline pair<_Tp*, ptrdiff_t> _STLP_CALL -get_temporary_buffer(ptrdiff_t __len, _Tp*) { - return __get_temporary_buffer(__len, (_Tp*) 0); -} -# endif -#endif - -template -inline void _STLP_CALL return_temporary_buffer(_Tp* __p) { -// SunPro brain damage - free((char*)__p); -} - -template -class _Temporary_buffer { -private: - ptrdiff_t _M_original_len; - ptrdiff_t _M_len; - _Tp* _M_buffer; - - void _M_allocate_buffer() { - _M_original_len = _M_len; - _M_buffer = 0; - - if (_M_len > (ptrdiff_t)(INT_MAX / sizeof(_Tp))) - _M_len = INT_MAX / sizeof(_Tp); - - while (_M_len > 0) { - _M_buffer = (_Tp*) malloc(_M_len * sizeof(_Tp)); - if (_M_buffer) - break; - _M_len /= 2; - } - } - - void _M_initialize_buffer(const _Tp&, const __true_type&) {} - void _M_initialize_buffer(const _Tp& val, const __false_type&) { - uninitialized_fill_n(_M_buffer, _M_len, val); - } - -public: - ptrdiff_t size() const { return _M_len; } - ptrdiff_t requested_size() const { return _M_original_len; } - _Tp* begin() { return _M_buffer; } - _Tp* end() { return _M_buffer + _M_len; } - - _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) { - // Workaround for a __type_traits bug in the pre-7.3 compiler. -# if defined(__sgi) && !defined(__GNUC__) && _COMPILER_VERSION < 730 - typedef typename __type_traits<_Tp>::is_POD_type _Trivial; -# else - typedef typename __type_traits<_Tp>::has_trivial_default_constructor _Trivial; -# endif - _STLP_TRY { - _M_len = _STLP_STD::distance(__first, __last); - _M_allocate_buffer(); - if (_M_len > 0) - _M_initialize_buffer(*__first, _Trivial()); - } - _STLP_UNWIND(free(_M_buffer); _M_buffer = 0; _M_len = 0) - } - - ~_Temporary_buffer() { - _STLP_STD::_Destroy_Range(_M_buffer, _M_buffer + _M_len); - free(_M_buffer); - } - -private: - // Disable copy constructor and assignment operator. - _Temporary_buffer(const _Temporary_buffer<_ForwardIterator, _Tp>&) {} - void operator=(const _Temporary_buffer<_ForwardIterator, _Tp>&) {} -}; - -# ifndef _STLP_NO_EXTENSIONS - -// Class temporary_buffer is not part of the standard. It is an extension. - -template ::value_type -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - > -struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp> -{ - temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) - : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) {} - ~temporary_buffer() {} -}; - -# endif /* _STLP_NO_EXTENSIONS */ - -_STLP_END_NAMESPACE - -# ifndef _STLP_LINK_TIME_INSTANTIATION -# include -# endif - -#endif /* _STLP_INTERNAL_TEMPBUF_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_threads.c b/build/stlport/stlport/stl/_threads.c deleted file mode 100644 index ea3c0b9c6152..000000000000 --- a/build/stlport/stlport/stl/_threads.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_THREADS_C -#define _STLP_THREADS_C - -#ifndef _STLP_INTERNAL_THREADS_H -# include -#endif - -#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) - -#if defined (_STLP_SGI_THREADS) -# include -#elif defined (_STLP_UNIX) -# ifndef _STLP_INTERNAL_CTIME -# include -# endif -# if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_VENDOR_GLOBAL_CSTD) -using _STLP_VENDOR_CSTD::time_t; -# endif -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_USE_ATOMIC_SWAP_MUTEX) -template -_STLP_STATIC_MUTEX -_Atomic_swap_struct<__32bits>::_S_swap_lock _STLP_MUTEX_INITIALIZER; -# undef _STLP_USE_ATOMIC_SWAP_MUTEX -#endif - -#if defined (_STLP_THREADS) && !defined (_STLP_USE_PTHREAD_SPINLOCK) -template -unsigned _STLP_mutex_spin<__inst>::__max = _STLP_mutex_spin<__inst>::__low_max; - -template -unsigned _STLP_mutex_spin<__inst>::__last = 0; -#endif // _STLP_USE_PTHREAD_SPINLOCK - -#if defined (_STLP_THREADS) && !defined (_STLP_USE_PTHREAD_SPINLOCK) - -# if defined (_STLP_SPARC_SOLARIS_THREADS) -// underground function in libc.so; we do not want dependance on librt -extern "C" int __nanosleep(const struct timespec*, struct timespec*); -# define _STLP_NANOSLEEP __nanosleep -# else -# define _STLP_NANOSLEEP nanosleep -# endif - -template -void _STLP_CALL -_STLP_mutex_spin<__inst>::_S_nsec_sleep(int __log_nsec, unsigned int& __iteration) { -# if defined (_STLP_WIN32THREADS) -# if defined (_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400) - if (__iteration <= 4000) { - // Use SwitchToThread because - // 1) Sleep(1) often takes ~15 ms - // 2) SwitchToThread yields to lower-priority threads - // 4000 is enough to avoid Sleep and is used just to prevent infinite looping - // This number is advised spin count for Heap management by Microsoft - SwitchToThread(); - } else { -# endif - if (__log_nsec <= 21) { - /* Note from boost (www.boost.org): - * Changed from Sleep(0) to Sleep(1). - * According to MSDN, Sleep(0) will never yield to a lower-priority thread, - * whereas Sleep(1) will. Performance seems not to be affected. */ - Sleep(1); - } else { - Sleep(1 << (__log_nsec - 20)); - } -# if defined (_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400) - __iteration = 0; //reset to avoid sleeps sequence - } -# endif -# elif defined(_STLP_OS2THREADS) - if (__log_nsec <= 20) { - DosSleep(0); - } else { - DosSleep(1 << (__log_nsec - 20)); - } -# elif defined (_STLP_UNIX) - timespec __ts; - /* Max sleep is 2**27nsec ~ 60msec */ - __ts.tv_sec = 0; - __ts.tv_nsec = 1 << __log_nsec; - _STLP_NANOSLEEP(&__ts, 0); -# endif -} - -template -void _STLP_CALL -_STLP_mutex_spin<__inst>::_M_do_lock(volatile __stl_atomic_t* __lock) { -# if defined(_STLP_ATOMIC_EXCHANGE) - if (_Atomic_swap(__lock, 1)) { - unsigned __my_spin_max = _STLP_mutex_spin<0>::__max; - unsigned __my_last_spins = _STLP_mutex_spin<0>::__last; - volatile unsigned __junk = 17; // Value doesn't matter. - unsigned __i; - - for (__i = 0; __i < __my_spin_max; ++__i) { - if (__i < __my_last_spins/2 || *__lock) { - __junk *= __junk; __junk *= __junk; - __junk *= __junk; __junk *= __junk; - } else { - if (!_Atomic_swap(__lock, 1)) { - // got it! - // Spinning worked. Thus we're probably not being scheduled - // against the other process with which we were contending. - // Thus it makes sense to spin longer the next time. - _STLP_mutex_spin<0>::__last = __i; - _STLP_mutex_spin<0>::__max = _STLP_mutex_spin<0>::__high_max; - return; - } - } - } - - // We are probably being scheduled against the other process. Sleep. - _STLP_mutex_spin<0>::__max = _STLP_mutex_spin<0>::__low_max; - - for (__i = 0 ;; ++__i) { - int __log_nsec = __i + 6; - - if (__log_nsec > 27) __log_nsec = 27; - if (!_Atomic_swap(__lock, 1)) { - break; - } - _S_nsec_sleep(__log_nsec, __i); - } - } /* first _Atomic_swap */ -# endif -} -#endif // _STLP_USE_PTHREAD_SPINLOCK - -_STLP_END_NAMESPACE - -#endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */ -#endif /* _STLP_THREADS_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_threads.h b/build/stlport/stlport/stl/_threads.h deleted file mode 100644 index fe381d838a1d..000000000000 --- a/build/stlport/stlport/stl/_threads.h +++ /dev/null @@ -1,687 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_THREADS_H -#define _STLP_INTERNAL_THREADS_H - -// Supported threading models are native SGI, pthreads, uithreads -// (similar to pthreads, but based on an earlier draft of the Posix -// threads standard), and Win32 threads. Uithread support by Jochen -// Schlick, 1999, and Solaris threads generalized to them. - -#ifndef _STLP_INTERNAL_CSTDDEF -# include -#endif - -#ifndef _STLP_INTERNAL_CSTDLIB -# include -#endif - -// On SUN and Mac OS X gcc, zero-initialization works just fine... -#if defined (__sun) || (defined (__GNUC__) && defined(__APPLE__)) -# define _STLP_MUTEX_INITIALIZER -#endif - -/* This header defines the following atomic operation that platform should - * try to support as much as possible. Atomic operation are exposed as macro - * in order to easily test for their existance. They are: - * __stl_atomic_t _STLP_ATOMIC_INCREMENT(volatile __stl_atomic_t* __ptr) : - * increment *__ptr by 1 and returns the new value - * __stl_atomic_t _STLP_ATOMIC_DECREMENT(volatile __stl_atomic_t* __ptr) : - * decrement *__ptr by 1 and returns the new value - * __stl_atomic_t _STLP_ATOMIC_EXCHANGE(volatile __stl_atomic_t* __target, __stl_atomic_t __val) : - * assign __val to *__target and returns former *__target value - * void* _STLP_ATOMIC_EXCHANGE_PTR(void* volatile* __target, void* __ptr) : - * assign __ptr to *__target and returns former *__target value - */ - -#if defined (_STLP_THREADS) - -# if defined (_STLP_SGI_THREADS) - -# include -// Hack for SGI o32 compilers. -# if !defined(__add_and_fetch) && \ - (__mips < 3 || !(defined (_ABIN32) || defined(_ABI64))) -# define __add_and_fetch(__l,__v) add_then_test((unsigned long*)__l,__v) -# define __test_and_set(__l,__v) test_and_set(__l,__v) -# endif /* o32 */ - -# if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) -# define _STLP_ATOMIC_EXCHANGE(__p, __q) test_and_set(__p, __q) -# else -# define _STLP_ATOMIC_EXCHANGE(__p, __q) __test_and_set((unsigned long*)__p, (unsigned long)__q) -# endif - -# define _STLP_ATOMIC_INCREMENT(__x) __add_and_fetch(__x, 1) -# define _STLP_ATOMIC_DECREMENT(__x) __add_and_fetch(__x, (size_t) -1) -typedef long __stl_atomic_t; - -# elif defined (_STLP_PTHREADS) - -# include -# if !defined (_STLP_USE_PTHREAD_SPINLOCK) -# if defined (PTHREAD_MUTEX_INITIALIZER) && !defined (_STLP_MUTEX_INITIALIZER) && defined (_REENTRANT) -# define _STLP_MUTEX_INITIALIZER = { PTHREAD_MUTEX_INITIALIZER } -# endif -//HPUX variants have (on some platforms optional) non-standard "DCE" pthreads impl -# if defined (_DECTHREADS_) && (defined (_PTHREAD_USE_D4) || defined (__hpux)) && !defined (_CMA_SUPPRESS_EXTERNALS_) -# define _STLP_PTHREAD_ATTR_DEFAULT pthread_mutexattr_default -# else -# define _STLP_PTHREAD_ATTR_DEFAULT 0 -# endif -# else -# if defined (__OpenBSD__) -# include -# endif -# endif - -# if defined (__GNUC__) && defined (__i386__) -# if !defined (_STLP_ATOMIC_INCREMENT) -inline long _STLP_atomic_increment_gcc_x86(long volatile* p) { - long result; - __asm__ __volatile__ - ("lock; xaddl %1, %0;" - :"=m" (*p), "=r" (result) - :"m" (*p), "1" (1) - :"cc"); - return result + 1; -} -# define _STLP_ATOMIC_INCREMENT(__x) (_STLP_atomic_increment_gcc_x86((long volatile*)__x)) -# endif - -# if !defined (_STLP_ATOMIC_DECREMENT) -inline long _STLP_atomic_decrement_gcc_x86(long volatile* p) { - long result; - __asm__ __volatile__ - ("lock; xaddl %1, %0;" - :"=m" (*p), "=r" (result) - :"m" (*p), "1" (-1) - :"cc"); - return result - 1; -} -# define _STLP_ATOMIC_DECREMENT(__x) (_STLP_atomic_decrement_gcc_x86((long volatile*)__x)) -# endif -typedef long __stl_atomic_t; -# else -typedef size_t __stl_atomic_t; -# endif /* if defined(__GNUC__) && defined(__i386__) */ - -# elif defined (_STLP_WIN32THREADS) - -# if !defined (_STLP_ATOMIC_INCREMENT) -# if !defined (_STLP_NEW_PLATFORM_SDK) -# define _STLP_ATOMIC_INCREMENT(__x) InterlockedIncrement(__CONST_CAST(long*, __x)) -# define _STLP_ATOMIC_DECREMENT(__x) InterlockedDecrement(__CONST_CAST(long*, __x)) -# define _STLP_ATOMIC_EXCHANGE(__x, __y) InterlockedExchange(__CONST_CAST(long*, __x), __y) -# else -# define _STLP_ATOMIC_INCREMENT(__x) InterlockedIncrement(__x) -# define _STLP_ATOMIC_DECREMENT(__x) InterlockedDecrement(__x) -# define _STLP_ATOMIC_EXCHANGE(__x, __y) InterlockedExchange(__x, __y) -# endif -# define _STLP_ATOMIC_EXCHANGE_PTR(__x, __y) STLPInterlockedExchangePointer(__x, __y) -# endif -typedef long __stl_atomic_t; - -# elif defined (__DECC) || defined (__DECCXX) - -# include -# define _STLP_ATOMIC_EXCHANGE __ATOMIC_EXCH_LONG -# define _STLP_ATOMIC_INCREMENT(__x) __ATOMIC_ADD_LONG(__x, 1) -# define _STLP_ATOMIC_DECREMENT(__x) __ATOMIC_ADD_LONG(__x, -1) -typedef long __stl_atomic_t; - -# elif defined (_STLP_SPARC_SOLARIS_THREADS) - -typedef long __stl_atomic_t; -# include - -# elif defined (_STLP_UITHREADS) - -// this inclusion is potential hazard to bring up all sorts -// of old-style headers. Let's assume vendor already know how -// to deal with that. -# ifndef _STLP_INTERNAL_CTIME -# include -# endif -# if defined (_STLP_USE_NAMESPACES) && ! defined (_STLP_VENDOR_GLOBAL_CSTD) -using _STLP_VENDOR_CSTD::time_t; -# endif -# include -# ifndef _STLP_INTERNAL_CSTDIO -# include -# endif -# ifndef _STLP_INTERNAL_CWCHAR -# include -# endif -typedef size_t __stl_atomic_t; - -# elif defined (_STLP_BETHREADS) - -# include -# include -# include -# define _STLP_MUTEX_INITIALIZER = { 0 } -typedef size_t __stl_atomic_t; - -# elif defined (_STLP_NWTHREADS) - -# include -# include -typedef size_t __stl_atomic_t; - -# elif defined(_STLP_OS2THREADS) - -# if defined (__GNUC__) -# define INCL_DOSSEMAPHORES -# include -# else -// This section serves to replace os2.h for VisualAge C++ - typedef unsigned long ULONG; -# if !defined (__HEV__) /* INCL_SEMAPHORE may also define HEV */ -# define __HEV__ - typedef ULONG HEV; - typedef HEV* PHEV; -# endif - typedef ULONG APIRET; - typedef ULONG HMTX; - typedef HMTX* PHMTX; - typedef const char* PCSZ; - typedef ULONG BOOL32; - APIRET _System DosCreateMutexSem(PCSZ pszName, PHEV phev, ULONG flAttr, BOOL32 fState); - APIRET _System DosRequestMutexSem(HMTX hmtx, ULONG ulTimeout); - APIRET _System DosReleaseMutexSem(HMTX hmtx); - APIRET _System DosCloseMutexSem(HMTX hmtx); -# define _STLP_MUTEX_INITIALIZER = { 0 } -# endif /* GNUC */ -typedef size_t __stl_atomic_t; - -# else - -typedef size_t __stl_atomic_t; - -# endif - -#else -/* no threads */ -# define _STLP_ATOMIC_INCREMENT(__x) ++(*__x) -# define _STLP_ATOMIC_DECREMENT(__x) --(*__x) -/* We do not grant other atomic operations as they are useless if STLport do not have - * to be thread safe - */ -typedef size_t __stl_atomic_t; -#endif - -#if !defined (_STLP_MUTEX_INITIALIZER) -# if defined(_STLP_ATOMIC_EXCHANGE) -# define _STLP_MUTEX_INITIALIZER = { 0 } -# elif defined(_STLP_UITHREADS) -# define _STLP_MUTEX_INITIALIZER = { DEFAULTMUTEX } -# else -# define _STLP_MUTEX_INITIALIZER -# endif -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_THREADS) && !defined (_STLP_USE_PTHREAD_SPINLOCK) -// Helper struct. This is a workaround for various compilers that don't -// handle static variables in inline functions properly. -template -struct _STLP_mutex_spin { - enum { __low_max = 30, __high_max = 1000 }; - // Low if we suspect uniprocessor, high for multiprocessor. - static unsigned __max; - static unsigned __last; - static void _STLP_CALL _M_do_lock(volatile __stl_atomic_t* __lock); - static void _STLP_CALL _S_nsec_sleep(int __log_nsec, unsigned int& __iteration); -}; -#endif // !_STLP_USE_PTHREAD_SPINLOCK - -// Locking class. Note that this class *does not have a constructor*. -// It must be initialized either statically, with _STLP_MUTEX_INITIALIZER, -// or dynamically, by explicitly calling the _M_initialize member function. -// (This is similar to the ways that a pthreads mutex can be initialized.) -// There are explicit member functions for acquiring and releasing the lock. - -// There is no constructor because static initialization is essential for -// some uses, and only a class aggregate (see section 8.5.1 of the C++ -// standard) can be initialized that way. That means we must have no -// constructors, no base classes, no virtual functions, and no private or -// protected members. - -// For non-static cases, clients should use _STLP_mutex. - -struct _STLP_CLASS_DECLSPEC _STLP_mutex_base { -#if defined (_STLP_ATOMIC_EXCHANGE) || defined (_STLP_SGI_THREADS) - // It should be relatively easy to get this to work on any modern Unix. - volatile __stl_atomic_t _M_lock; -#endif - -#if defined (_STLP_THREADS) -# if defined (_STLP_ATOMIC_EXCHANGE) - inline void _M_initialize() { _M_lock = 0; } - inline void _M_destroy() {} - - void _M_acquire_lock() { - _STLP_mutex_spin<0>::_M_do_lock(&_M_lock); - } - - inline void _M_release_lock() { - volatile __stl_atomic_t* __lock = &_M_lock; -# if defined(_STLP_SGI_THREADS) && defined(__GNUC__) && __mips >= 3 - asm("sync"); - *__lock = 0; -# elif defined(_STLP_SGI_THREADS) && __mips >= 3 && \ - (defined (_ABIN32) || defined(_ABI64)) - __lock_release(__lock); -# elif defined (_STLP_SPARC_SOLARIS_THREADS) -# if defined (__WORD64) || defined (__arch64__) || defined (__sparcv9) || defined (__sparcv8plus) - asm("membar #StoreStore ; membar #LoadStore"); -# else - asm(" stbar "); -# endif - *__lock = 0; -# else - *__lock = 0; - // This is not sufficient on many multiprocessors, since - // writes to protected variables and the lock may be reordered. -# endif - } -# elif defined (_STLP_PTHREADS) -# if defined (_STLP_USE_PTHREAD_SPINLOCK) -# if !defined (__OpenBSD__) - pthread_spinlock_t _M_lock; - inline void _M_initialize() { pthread_spin_init( &_M_lock, 0 ); } - inline void _M_destroy() { pthread_spin_destroy( &_M_lock ); } - - // sorry, but no static initializer for pthread_spinlock_t; - // this will not work for compilers that has problems with call - // constructor of static object... - - // _STLP_mutex_base() - // { pthread_spin_init( &_M_lock, 0 ); } - - // ~_STLP_mutex_base() - // { pthread_spin_destroy( &_M_lock ); } - - inline void _M_acquire_lock() { pthread_spin_lock( &_M_lock ); } - inline void _M_release_lock() { pthread_spin_unlock( &_M_lock ); } -# else // __OpenBSD__ - spinlock_t _M_lock; - inline void _M_initialize() { _SPINLOCK_INIT( &_M_lock ); } - inline void _M_destroy() { } - inline void _M_acquire_lock() { _SPINLOCK( &_M_lock ); } - inline void _M_release_lock() { _SPINUNLOCK( &_M_lock ); } -# endif // __OpenBSD__ -# else // !_STLP_USE_PTHREAD_SPINLOCK - pthread_mutex_t _M_lock; - inline void _M_initialize() - { pthread_mutex_init(&_M_lock,_STLP_PTHREAD_ATTR_DEFAULT); } - inline void _M_destroy() - { pthread_mutex_destroy(&_M_lock); } - inline void _M_acquire_lock() { -# if defined ( __hpux ) && ! defined (PTHREAD_MUTEX_INITIALIZER) - if (!_M_lock.field1) _M_initialize(); -# endif - pthread_mutex_lock(&_M_lock); - } - inline void _M_release_lock() { pthread_mutex_unlock(&_M_lock); } -# endif // !_STLP_USE_PTHREAD_SPINLOCK - -# elif defined (_STLP_UITHREADS) - mutex_t _M_lock; - inline void _M_initialize() - { mutex_init(&_M_lock, 0, NULL); } - inline void _M_destroy() - { mutex_destroy(&_M_lock); } - inline void _M_acquire_lock() { mutex_lock(&_M_lock); } - inline void _M_release_lock() { mutex_unlock(&_M_lock); } - -# elif defined (_STLP_OS2THREADS) - HMTX _M_lock; - inline void _M_initialize() { DosCreateMutexSem(NULL, &_M_lock, 0, false); } - inline void _M_destroy() { DosCloseMutexSem(_M_lock); } - inline void _M_acquire_lock() { - if (!_M_lock) _M_initialize(); - DosRequestMutexSem(_M_lock, SEM_INDEFINITE_WAIT); - } - inline void _M_release_lock() { DosReleaseMutexSem(_M_lock); } -# elif defined (_STLP_BETHREADS) - sem_id sem; - inline void _M_initialize() { - sem = create_sem(1, "STLPort"); - assert(sem > 0); - } - inline void _M_destroy() { - int t = delete_sem(sem); - assert(t == B_NO_ERROR); - } - inline void _M_acquire_lock(); - inline void _M_release_lock() { - status_t t = release_sem(sem); - assert(t == B_NO_ERROR); - } -# elif defined (_STLP_NWTHREADS) - LONG _M_lock; - inline void _M_initialize() - { _M_lock = OpenLocalSemaphore(1); } - inline void _M_destroy() - { CloseLocalSemaphore(_M_lock); } - inline void _M_acquire_lock() - { WaitOnLocalSemaphore(_M_lock); } - inline void _M_release_lock() { SignalLocalSemaphore(_M_lock); } -# else //*ty 11/24/2001 - added configuration check -# error "Unknown thread facility configuration" -# endif -#else /* No threads */ - inline void _M_initialize() {} - inline void _M_destroy() {} - inline void _M_acquire_lock() {} - inline void _M_release_lock() {} -#endif // _STLP_PTHREADS -}; - -// Locking class. The constructor initializes the lock, the destructor destroys it. -// Well - behaving class, does not need static initializer - -class _STLP_CLASS_DECLSPEC _STLP_mutex : public _STLP_mutex_base { - public: - inline _STLP_mutex () { _M_initialize(); } - inline ~_STLP_mutex () { _M_destroy(); } - private: - _STLP_mutex(const _STLP_mutex&); - void operator=(const _STLP_mutex&); -}; - -// A locking class that uses _STLP_STATIC_MUTEX. The constructor takes -// a reference to an _STLP_STATIC_MUTEX, and acquires a lock. The destructor -// releases the lock. -// It's not clear that this is exactly the right functionality. -// It will probably change in the future. - -struct _STLP_CLASS_DECLSPEC _STLP_auto_lock { - _STLP_auto_lock(_STLP_STATIC_MUTEX& __lock) : _M_lock(__lock) - { _M_lock._M_acquire_lock(); } - ~_STLP_auto_lock() - { _M_lock._M_release_lock(); } - -private: - _STLP_STATIC_MUTEX& _M_lock; - void operator=(const _STLP_auto_lock&); - _STLP_auto_lock(const _STLP_auto_lock&); -}; - -/* - * Class _Refcount_Base provides a type, __stl_atomic_t, a data member, - * _M_ref_count, and member functions _M_incr and _M_decr, which perform - * atomic preincrement/predecrement. The constructor initializes - * _M_ref_count. - */ -class _STLP_CLASS_DECLSPEC _Refcount_Base { - // The data member _M_ref_count -#if defined (__DMC__) -public: -#endif - _STLP_VOLATILE __stl_atomic_t _M_ref_count; - -#if defined (_STLP_THREADS) && \ - (!defined (_STLP_ATOMIC_INCREMENT) || !defined (_STLP_ATOMIC_DECREMENT) || \ - defined (_STLP_WIN95_LIKE)) -# define _STLP_USE_MUTEX - _STLP_mutex _M_mutex; -#endif - - public: - // Constructor - _Refcount_Base(__stl_atomic_t __n) : _M_ref_count(__n) {} -#if defined (__BORLANDC__) - ~_Refcount_Base(){}; -#endif - - // _M_incr and _M_decr -#if defined (_STLP_THREADS) -# if !defined (_STLP_USE_MUTEX) - __stl_atomic_t _M_incr() { return _STLP_ATOMIC_INCREMENT(&_M_ref_count); } - __stl_atomic_t _M_decr() { return _STLP_ATOMIC_DECREMENT(&_M_ref_count); } -# else -# undef _STLP_USE_MUTEX - __stl_atomic_t _M_incr() { - _STLP_auto_lock l(_M_mutex); - return ++_M_ref_count; - } - __stl_atomic_t _M_decr() { - _STLP_auto_lock l(_M_mutex); - return --_M_ref_count; - } -# endif -#else /* No threads */ - __stl_atomic_t _M_incr() { return ++_M_ref_count; } - __stl_atomic_t _M_decr() { return --_M_ref_count; } -#endif -}; - -/* Atomic swap on __stl_atomic_t - * This is guaranteed to behave as though it were atomic only if all - * possibly concurrent updates use _Atomic_swap. - * In some cases the operation is emulated with a lock. - * Idem for _Atomic_swap_ptr - */ -/* Helper struct to handle following cases: - * - on platforms where sizeof(__stl_atomic_t) == sizeof(void*) atomic - * exchange can be done on pointers - * - on platform without atomic operation swap is done in a critical section, - * portable but inefficient. - */ -template -class _Atomic_swap_struct { -public: -#if defined (_STLP_THREADS) && \ - !defined (_STLP_ATOMIC_EXCHANGE) && \ - (defined (_STLP_PTHREADS) || defined (_STLP_UITHREADS) || defined (_STLP_OS2THREADS) || \ - defined (_STLP_USE_PTHREAD_SPINLOCK) || defined (_STLP_NWTHREADS)) -# define _STLP_USE_ATOMIC_SWAP_MUTEX - static _STLP_STATIC_MUTEX _S_swap_lock; -#endif - - static __stl_atomic_t _S_swap(_STLP_VOLATILE __stl_atomic_t* __p, __stl_atomic_t __q) { -#if defined (_STLP_THREADS) -# if defined (_STLP_ATOMIC_EXCHANGE) - return _STLP_ATOMIC_EXCHANGE(__p, __q); -# elif defined (_STLP_USE_ATOMIC_SWAP_MUTEX) - _S_swap_lock._M_acquire_lock(); - __stl_atomic_t __result = *__p; - *__p = __q; - _S_swap_lock._M_release_lock(); - return __result; -# else -# error Missing atomic swap implementation -# endif -#else - /* no threads */ - __stl_atomic_t __result = *__p; - *__p = __q; - return __result; -#endif // _STLP_THREADS - } - - static void* _S_swap_ptr(void* _STLP_VOLATILE* __p, void* __q) { -#if defined (_STLP_THREADS) -# if defined (_STLP_ATOMIC_EXCHANGE_PTR) - return _STLP_ATOMIC_EXCHANGE_PTR(__p, __q); -# elif defined (_STLP_ATOMIC_EXCHANGE) - _STLP_STATIC_ASSERT(sizeof(__stl_atomic_t) == sizeof(void*)) - return __REINTERPRET_CAST(void*, _STLP_ATOMIC_EXCHANGE(__REINTERPRET_CAST(volatile __stl_atomic_t*, __p), - __REINTERPRET_CAST(__stl_atomic_t, __q)) - ); -# elif defined (_STLP_USE_ATOMIC_SWAP_MUTEX) - _S_swap_lock._M_acquire_lock(); - void *__result = *__p; - *__p = __q; - _S_swap_lock._M_release_lock(); - return __result; -# else -# error Missing pointer atomic swap implementation -# endif -#else - /* no thread */ - void *__result = *__p; - *__p = __q; - return __result; -#endif - } -}; - -_STLP_TEMPLATE_NULL -class _Atomic_swap_struct<0> { -public: -#if defined (_STLP_THREADS) && \ - (!defined (_STLP_ATOMIC_EXCHANGE) || !defined (_STLP_ATOMIC_EXCHANGE_PTR)) && \ - (defined (_STLP_PTHREADS) || defined (_STLP_UITHREADS) || defined (_STLP_OS2THREADS) || \ - defined (_STLP_USE_PTHREAD_SPINLOCK) || defined (_STLP_NWTHREADS)) -# define _STLP_USE_ATOMIC_SWAP_MUTEX - static _STLP_STATIC_MUTEX _S_swap_lock; -#endif - - static __stl_atomic_t _S_swap(_STLP_VOLATILE __stl_atomic_t* __p, __stl_atomic_t __q) { -#if defined (_STLP_THREADS) -# if defined (_STLP_ATOMIC_EXCHANGE) - return _STLP_ATOMIC_EXCHANGE(__p, __q); -# elif defined (_STLP_USE_ATOMIC_SWAP_MUTEX) - /* This should be portable, but performance is expected - * to be quite awful. This really needs platform specific - * code. - */ - _S_swap_lock._M_acquire_lock(); - __stl_atomic_t __result = *__p; - *__p = __q; - _S_swap_lock._M_release_lock(); - return __result; -# else -# error Missing atomic swap implementation -# endif -#else - /* no threads */ - __stl_atomic_t __result = *__p; - *__p = __q; - return __result; -#endif // _STLP_THREADS - } - - static void* _S_swap_ptr(void* _STLP_VOLATILE* __p, void* __q) { -#if defined (_STLP_THREADS) -# if defined (_STLP_ATOMIC_EXCHANGE_PTR) - return _STLP_ATOMIC_EXCHANGE_PTR(__p, __q); -# elif defined (_STLP_ATOMIC_EXCHANGE) - _STLP_STATIC_ASSERT(sizeof(__stl_atomic_t) == sizeof(void*)) - return __REINTERPRET_CAST(void*, _STLP_ATOMIC_EXCHANGE(__REINTERPRET_CAST(volatile __stl_atomic_t*, __p), - __REINTERPRET_CAST(__stl_atomic_t, __q)) - ); -# elif defined (_STLP_USE_ATOMIC_SWAP_MUTEX) - _S_swap_lock._M_acquire_lock(); - void *__result = *__p; - *__p = __q; - _S_swap_lock._M_release_lock(); - return __result; -# else -# error Missing pointer atomic swap implementation -# endif -#else - /* no thread */ - void *__result = *__p; - *__p = __q; - return __result; -#endif - } -}; - -#if defined (_STLP_MSVC) && (_STLP_MSVC == 1300) -# pragma warning (push) -# pragma warning (disable : 4189) //__use_ptr_atomic_swap initialized but not used -#endif - -inline __stl_atomic_t _STLP_CALL _Atomic_swap(_STLP_VOLATILE __stl_atomic_t * __p, __stl_atomic_t __q) { - const int __use_ptr_atomic_swap = sizeof(__stl_atomic_t) == sizeof(void*); - return _Atomic_swap_struct<__use_ptr_atomic_swap>::_S_swap(__p, __q); -} - -inline void* _STLP_CALL _Atomic_swap_ptr(void* _STLP_VOLATILE* __p, void* __q) { - const int __use_ptr_atomic_swap = sizeof(__stl_atomic_t) == sizeof(void*); - return _Atomic_swap_struct<__use_ptr_atomic_swap>::_S_swap_ptr(__p, __q); -} - -#if defined (_STLP_MSVC) && (_STLP_MSVC == 1300) -# pragma warning (pop) -#endif - -#if defined (_STLP_BETHREADS) -template -struct _STLP_beos_static_lock_data { - static bool is_init; - struct mutex_t : public _STLP_mutex { - mutex_t() - { _STLP_beos_static_lock_data<0>::is_init = true; } - ~mutex_t() - { _STLP_beos_static_lock_data<0>::is_init = false; } - }; - static mutex_t mut; -}; - -template -bool _STLP_beos_static_lock_data<__inst>::is_init = false; -template -typename _STLP_beos_static_lock_data<__inst>::mutex_t _STLP_beos_static_lock_data<__inst>::mut; - -inline void _STLP_mutex_base::_M_acquire_lock() { - if (sem == 0) { - // we need to initialise on demand here - // to prevent race conditions use our global - // mutex if it's available: - if (_STLP_beos_static_lock_data<0>::is_init) { - _STLP_auto_lock al(_STLP_beos_static_lock_data<0>::mut); - if (sem == 0) _M_initialize(); - } - else { - // no lock available, we must still be - // in startup code, THERE MUST BE ONE THREAD - // ONLY active at this point. - _M_initialize(); - } - } - status_t t; - t = acquire_sem(sem); - assert(t == B_NO_ERROR); -} -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_THREADS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_time_facets.c b/build/stlport/stlport/stl/_time_facets.c deleted file mode 100644 index a907ad53dd2d..000000000000 --- a/build/stlport/stlport/stl/_time_facets.c +++ /dev/null @@ -1,440 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_TIME_FACETS_C -#define _STLP_TIME_FACETS_C - -#ifndef _STLP_INTERNAL_TIME_FACETS_H -# include -#endif - -#ifndef _STLP_INTERNAL_NUM_PUT_H -# include -#endif - -#ifndef _STLP_INTERNAL_NUM_GET_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//---------------------------------------------------------------------- -// Declarations of static template members. - -template -locale::id time_get<_CharT, _InputIterator>::id; - -template -locale::id time_put<_CharT, _OutputIterator>::id; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -/* Matching input against a list of names - - * Alphabetic input of the names of months and the names - * of weekdays requires matching input against a list of names. - * We use a simple generic algorithm to accomplish this. This - * algorithm is not very efficient, especially for longer lists - * of names, but it probably does not matter for the initial - * implementation and it may never matter, since we do not expect - * this kind of input to be used very often. The algorithm - * could be improved fairly simply by creating a new list of - * names still in the running at each iteration. A more sophisticated - * approach would be to build a tree to do the matching. - * - * We compare each character of the input to the corresponding - * character of each name on the list that has not been eliminated, - * either because every character in the name has already been - * matched, or because some character has not been matched. We - * continue only as long as there are some names that have not been - * eliminated. - - * We do not really need a random access iterator (a forward iterator - * would do), but the extra generality makes the notation clumsier, - * and we don't really need it. - - * We can recognize a failed match by the fact that the return value - * will be __name_end. - */ - -#define _MAXNAMES 24 - -template -size_t _STLP_CALL -__match(_InIt& __first, _InIt& __last, _NameIt __name, _NameIt __name_end) { - typedef ptrdiff_t difference_type; - difference_type __n = __name_end - __name; - difference_type __i, __start = 0; - size_t __pos = 0; - difference_type __check_count = __n; - bool __do_not_check[_MAXNAMES]; - size_t __matching_name_index = __n; - - memset(__do_not_check, 0, sizeof(__do_not_check)); - - while (__first != __last) { - difference_type __new_n = __n; - for (__i = __start; __i < __n; ++__i) { - if (!__do_not_check[__i]) { - if (*__first == __name[__i][__pos]) { - if (__pos == (__name[__i].size() - 1)) { - __matching_name_index = __i; - __do_not_check[__i] = true; - if (__i == __start) ++__start; - --__check_count; - if (__check_count == 0) { - ++__first; - return __matching_name_index; - } - } - __new_n = __i + 1; - } - else { - __do_not_check[__i] = true; - if (__i == __start) ++__start; - --__check_count; - if (__check_count == 0) - return __matching_name_index; - } - } - else { - if (__i == __start) ++ __start; - } - } - - __n = __new_n; - ++__first; ++__pos; - } - - return __matching_name_index; -} - -// __get_formatted_time reads input that is assumed to be formatted -// according to the rules for the C strftime function (C standard, -// 7.12.3.5). This function is used to implement the do_get_time -// and do_get_date virtual functions, which depend on the locale -// specifications for the time and day formats respectively. -// Note the catchall default case, intended mainly for the '%Z' -// format designator, which does not make sense here since the -// representation of timezones is not part of the locale. -// -// The case branches are implemented either by doing a match using -// the appopriate name table or by doing a __get_integer_nogroup. -// -// 'y' format is assumed to mean that the input represents years -// since 1900. That is, 2002 should be represented as 102. There -// is no century-guessing. -// -// The match is successful if and only if the second component of the -// return value is format_end. - -// Note that the antepenultimate parameter is being used only to determine -// the correct overloading for the calls to __get_integer_nogroup. -template -string::const_iterator _STLP_CALL -__get_formatted_time _STLP_WEAK (_InIt1 __first, _InIt1 __last, - string::const_iterator __format, string::const_iterator __format_end, - _Ch*, const _TimeInfo& __table, - const ios_base& __s, ios_base::iostate& __err, tm* __t) { - const ctype<_Ch>& __ct = use_facet >(__s.getloc()); - size_t offset; - - while (__first != __last && __format != __format_end) { - offset = 0; - if (*__format == '%') { - ++__format; - char __c = *__format; - if (__c == '#') { //MS extension - ++__format; - __c = *__format; - } - - switch (__c) { - case 'A': - offset = 7; - case 'a': { - size_t __index = __match(__first, __last, - __table._M_dayname + offset, __table._M_dayname + offset + 7); - if (__index == 7) - return __format; - __t->tm_wday = __STATIC_CAST(int, __index); - break; - } - - case 'B': - offset = 12; - case 'b': { - size_t __index = __match(__first, __last, - __table._M_monthname + offset, __table._M_monthname + offset + 12); - if (__index == 12) - return __format; - __t->tm_mon = __STATIC_CAST(int, __index); - break; - } - - case 'd': { - bool __pr = __get_decimal_integer(__first, __last, __t->tm_mday, __STATIC_CAST(_Ch*, 0)); - if (!__pr || __t->tm_mday < 1 || __t->tm_mday > 31) { - __err |= ios_base::failbit; - return __format; - } - break; - } - - case 'H': case 'I': { - bool __pr = __get_decimal_integer(__first, __last, __t->tm_hour, __STATIC_CAST(_Ch*, 0)); - if (!__pr) - return __format; - break; - } - - case 'j': { - bool __pr = __get_decimal_integer(__first, __last, __t->tm_yday, __STATIC_CAST(_Ch*, 0)); - if (!__pr) - return __format; - break; - } - - case 'm': { - bool __pr = __get_decimal_integer(__first, __last, __t->tm_mon, __STATIC_CAST(_Ch*, 0)); - --__t->tm_mon; - if (!__pr || __t->tm_mon < 0 || __t->tm_mon > 11) { - __err |= ios_base::failbit; - return __format; - } - break; - } - - case 'M': { - bool __pr = __get_decimal_integer(__first, __last, __t->tm_min, __STATIC_CAST(_Ch*, 0)); - if (!__pr) - return __format; - break; - } - - case 'p': { - size_t __index = __match(__first, __last, - __table._M_am_pm + 0, __table._M_am_pm + 2); - if (__index == 2) - return __format; - // 12:00 PM <=> 12:00, 12:00 AM <=> 00:00 - if (__index == 1 && __t->tm_hour != 12 ) - __t->tm_hour += 12; - if (__index == 0 && __t->tm_hour == 12 ) - __t->tm_hour = 0; - break; - } - - case 'S': { - bool __pr = __get_decimal_integer(__first, __last, __t->tm_sec, __STATIC_CAST(_Ch*, 0)); - if (!__pr) - return __format; - break; - } - - case 'y': { - bool __pr = __get_decimal_integer(__first, __last, __t->tm_year, __STATIC_CAST(_Ch*, 0)); - if (!__pr) - return __format; - break; - } - - case 'Y': { - bool __pr = __get_decimal_integer(__first, __last, __t->tm_year, __STATIC_CAST(_Ch*, 0)); - __t->tm_year -= 1900; - if (!__pr) - return __format; - break; - } - - default: - break; - } - } - else { - if (*__first++ != __ct.widen(*__format)) break; - } - - ++__format; - } - - return __format; -} - -template -bool _STLP_CALL -__get_short_or_long_dayname(_InIt& __first, _InIt& __last, const _TimeInfo& __table, tm* __t) { - size_t __index = __match(__first, __last, __table._M_dayname + 0, __table._M_dayname + 14); - if (__index != 14) { - __t->tm_wday = __STATIC_CAST(int, __index % 7); - return true; - } - return false; -} - -template -bool _STLP_CALL -__get_short_or_long_monthname(_InIt& __first, _InIt& __last, const _TimeInfo& __table, tm* __t) { - size_t __index = __match(__first, __last, __table._M_monthname + 0, __table._M_monthname + 24); - if (__index != 24) { - __t->tm_mon = __STATIC_CAST(int, __index % 12); - return true; - } - return false; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -_InIt -time_get<_Ch, _InIt>::do_get_date(_InIt __s, _InIt __end, - ios_base& __str, ios_base::iostate& __err, - tm* __t) const { - typedef string::const_iterator string_iterator; - - string_iterator __format = this->_M_timeinfo._M_date_format.begin(); - string_iterator __format_end = this->_M_timeinfo._M_date_format.end(); - - string_iterator __result - = _STLP_PRIV __get_formatted_time(__s, __end, __format, __format_end, - __STATIC_CAST(_Ch*, 0), this->_M_timeinfo, - __str, __err, __t); - if (__result == __format_end) - __err = ios_base::goodbit; - else { - __err = ios_base::failbit; - if (__s == __end) - __err |= ios_base::eofbit; - } - return __s; -} - -template -_InIt -time_get<_Ch, _InIt>::do_get_time(_InIt __s, _InIt __end, - ios_base& __str, ios_base::iostate& __err, - tm* __t) const { - typedef string::const_iterator string_iterator; - string_iterator __format = this->_M_timeinfo._M_time_format.begin(); - string_iterator __format_end = this->_M_timeinfo._M_time_format.end(); - - string_iterator __result - = _STLP_PRIV __get_formatted_time(__s, __end, __format, __format_end, - __STATIC_CAST(_Ch*, 0), this->_M_timeinfo, - __str, __err, __t); - __err = __result == __format_end ? ios_base::goodbit - : ios_base::failbit; - if (__s == __end) - __err |= ios_base::eofbit; - return __s; -} - -template -_InIt -time_get<_Ch, _InIt>::do_get_year(_InIt __s, _InIt __end, - ios_base&, ios_base::iostate& __err, - tm* __t) const { - if (__s == __end) { - __err = ios_base::failbit | ios_base::eofbit; - return __s; - } - - bool __pr = _STLP_PRIV __get_decimal_integer(__s, __end, __t->tm_year, __STATIC_CAST(_Ch*, 0)); - __t->tm_year -= 1900; - __err = __pr ? ios_base::goodbit : ios_base::failbit; - if (__s == __end) - __err |= ios_base::eofbit; - - return __s; -} - -template -_InIt -time_get<_Ch, _InIt>::do_get_weekday(_InIt __s, _InIt __end, - ios_base &__str, ios_base::iostate &__err, - tm *__t) const { - bool __result = - _STLP_PRIV __get_short_or_long_dayname(__s, __end, this->_M_timeinfo, __t); - if (__result) - __err = ios_base::goodbit; - else { - __err = ios_base::failbit; - if (__s == __end) - __err |= ios_base::eofbit; - } - return __s; -} - -template -_InIt -time_get<_Ch, _InIt>::do_get_monthname(_InIt __s, _InIt __end, - ios_base &__str, ios_base::iostate &__err, - tm *__t) const { - bool __result = - _STLP_PRIV __get_short_or_long_monthname(__s, __end, this->_M_timeinfo, __t); - if (__result) - __err = ios_base::goodbit; - else { - __err = ios_base::failbit; - if (__s == __end) - __err |= ios_base::eofbit; - } - return __s; -} - -template -_OutputIter -time_put<_Ch,_OutputIter>::put(_OutputIter __s, ios_base& __f, _Ch __fill, - const tm* __tmb, const _Ch* __pat, - const _Ch* __pat_end) const { - const ctype<_Ch>& _Ct = use_facet >(__f.getloc()); - while (__pat != __pat_end) { - char __c = _Ct.narrow(*__pat, 0); - if (__c == '%') { - char __mod = 0; - ++__pat; - __c = _Ct.narrow(*__pat++, 0); - if (__c == '#') { // MS extension - __mod = __c; - __c = _Ct.narrow(*__pat++, 0); - } - __s = do_put(__s, __f, __fill, __tmb, __c, __mod); - } - else - *__s++ = *__pat++; - } - return __s; -} - -template -_OutputIter -time_put<_Ch,_OutputIter>::do_put(_OutputIter __s, ios_base& __f, _Ch /* __fill */, - const tm* __tmb, char __format, - char __modifier ) const { - const ctype<_Ch>& __ct = use_facet >(__f.getloc()); - _STLP_BASIC_IOSTRING(_Ch) __buf; - _STLP_PRIV __write_formatted_time(__buf, __ct, __format, __modifier, this->_M_timeinfo, __tmb); - return copy(__buf.begin(), __buf.end(), __s); -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_TIME_FACETS_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_time_facets.h b/build/stlport/stlport/stl/_time_facets.h deleted file mode 100644 index e67c2f47a46a..000000000000 --- a/build/stlport/stlport/stl/_time_facets.h +++ /dev/null @@ -1,329 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: This is an internal header file, included by other C++ -// standard library headers. You should not attempt to use this header -// file directly. - - -#ifndef _STLP_INTERNAL_TIME_FACETS_H -#define _STLP_INTERNAL_TIME_FACETS_H - -#ifndef _STLP_INTERNAL_CTIME -# include // Needed (for struct tm) by time facets -#endif - -#ifndef _STLP_C_LOCALE_H -# include -#endif - -#ifndef _STLP_IOS_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_IOSTREAM_STRING_H -# include -#endif - -#ifndef _STLP_FACETS_FWD_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// Template functions used by time_get - -/* Both time_get and time_put need a structure of type _Time_Info - * to provide names and abbreviated names for months and days, - * as well as the am/pm designator. The month and weekday tables - * have the all the abbreviated names before all the full names. - * The _Time_Info tables are initialized using the non-template - * time_base class, which has a default constructor and two protected. - * The default one initialize _Time_Info with "C" time info. The - * protected initialize _time_Info using a _Locale_time instance - * or using a name( in fact the name is used to build a _Locale_time - * instance that is then used for initialization). */ - -class _STLP_CLASS_DECLSPEC _Time_Info_Base { -public: - string _M_time_format; - string _M_date_format; - string _M_date_time_format; - string _M_long_date_format; - string _M_long_date_time_format; -}; - -class _STLP_CLASS_DECLSPEC _Time_Info : public _Time_Info_Base { -public: - string _M_dayname[14]; - string _M_monthname[24]; - string _M_am_pm[2]; -}; - -#ifndef _STLP_NO_WCHAR_T -class _STLP_CLASS_DECLSPEC _WTime_Info : public _Time_Info_Base { -public: - wstring _M_dayname[14]; - wstring _M_monthname[24]; - wstring _M_am_pm[2]; -}; -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -class _STLP_CLASS_DECLSPEC time_base { -public: - enum dateorder {no_order, dmy, mdy, ymd, ydm}; -}; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -class time_init; - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC time_init { -protected: - time_init(); - time_init(const char *name); - time_init(_Locale_time*); -#if defined (__BORLANDC__) - static -#endif - _Time_Info _M_timeinfo; - time_base::dateorder _M_dateorder; -}; - -#ifndef _STLP_NO_WCHAR_T -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC time_init { -protected: - time_init(); - time_init(const char *name); - time_init(_Locale_time*); -#if defined (__BORLANDC__) - static -#endif - _WTime_Info _M_timeinfo; - time_base::dateorder _M_dateorder; -}; -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -template -class time_get : public locale::facet, public time_base, public _STLP_PRIV time_init<_Ch> { -public: - typedef _Ch char_type; - typedef _InIt iter_type; - - explicit time_get(size_t __refs = 0) : locale::facet(__refs) - {} - - dateorder date_order() const { return do_date_order(); } - iter_type get_time(iter_type __s, iter_type __end, ios_base& __str, - ios_base::iostate& __err, tm* __t) const - { return do_get_time(__s, __end, __str, __err, __t); } - iter_type get_date(iter_type __s, iter_type __end, ios_base& __str, - ios_base::iostate& __err, tm* __t) const - { return do_get_date(__s, __end, __str, __err, __t); } - iter_type get_weekday(iter_type __s, iter_type __end, ios_base& __str, - ios_base::iostate& __err, tm* __t) const - { return do_get_weekday(__s, __end, __str, __err, __t); } - iter_type get_monthname(iter_type __s, iter_type __end, ios_base& __str, - ios_base::iostate& __err, tm* __t) const - { return do_get_monthname(__s, __end, __str, __err, __t); } - iter_type get_year(iter_type __s, iter_type __end, ios_base& __str, - ios_base::iostate& __err, tm* __t) const - { return do_get_year(__s, __end, __str, __err, __t); } - - static locale::id id; - -protected: - time_get(const char* __name, size_t __refs) - : locale::facet(__refs), _STLP_PRIV time_init<_Ch>(__name) - {} - time_get(_Locale_time *__time) - : _STLP_PRIV time_init<_Ch>(__time) - {} - - ~time_get() {} - - virtual dateorder do_date_order() const { return this->_M_dateorder; } - - virtual iter_type do_get_time(iter_type __s, iter_type __end, - ios_base&, ios_base::iostate& __err, - tm* __t) const; - - virtual iter_type do_get_date(iter_type __s, iter_type __end, - ios_base&, ios_base::iostate& __err, - tm* __t) const; - - virtual iter_type do_get_weekday(iter_type __s, iter_type __end, - ios_base&, - ios_base::iostate& __err, - tm* __t) const; - virtual iter_type do_get_monthname(iter_type __s, iter_type __end, - ios_base&, - ios_base::iostate& __err, - tm* __t) const; - - virtual iter_type do_get_year(iter_type __s, iter_type __end, - ios_base&, ios_base::iostate& __err, - tm* __t) const; -}; - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -#else -template > > -#endif -class time_get_byname : public time_get<_Ch, _InIt> { - friend class _Locale_impl; -public: - typedef time_base::dateorder dateorder; - typedef _InIt iter_type; - - explicit time_get_byname(const char* __name, size_t __refs = 0) - : time_get<_Ch, _InIt>(__name, __refs) {} - -protected: - ~time_get_byname() {} - dateorder do_date_order() const { return this->_M_dateorder; } - -private: - time_get_byname(_Locale_time *__time) - : time_get<_Ch, _InIt>(__time) - {} - - typedef time_get_byname<_Ch, _InIt> _Self; - //explicitely defined as private to avoid warnings: - time_get_byname(_Self const&); - _Self& operator = (_Self const&); -}; - -// time_put facet - -// For the formats 'x, 'X', and 'c', do_put calls the first form of -// put with the pattern obtained from _M_timeinfo._M_date_format or -// _M_timeinfo._M_time_format. - -// Helper function: __ takes a single-character -// format. As indicated by the foregoing remark, this will never be -// 'x', 'X', or 'c'. - -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_DECLSPEC void _STLP_CALL -__write_formatted_time(__iostring&, const ctype& __ct, - char __format, char __modifier, - const _Time_Info& __table, const tm* __t); - -#ifndef _STLP_NO_WCHAR_T -_STLP_DECLSPEC void _STLP_CALL -__write_formatted_time(__iowstring&, const ctype& __ct, - char __format, char __modifier, - const _WTime_Info& __table, const tm* __t); -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -template -class time_put : public locale::facet, public time_base, public _STLP_PRIV time_init<_Ch> { -public: - typedef _Ch char_type; - typedef _OutIt iter_type; - - explicit time_put(size_t __refs = 0) : locale::facet(__refs) - {} - - _OutIt put(iter_type __s, ios_base& __f, _Ch __fill, - const tm* __tmb, - const _Ch* __pat, const _Ch* __pat_end) const; - - _OutIt put(iter_type __s, ios_base& __f, _Ch __fill, - const tm* __tmb, char __format, char __modifier = 0) const - { return do_put(__s, __f, __fill, __tmb, __format, __modifier); } - - static locale::id id; - -protected: - time_put(const char* __name, size_t __refs) - : locale::facet(__refs), _STLP_PRIV time_init<_Ch>(__name) - {} - time_put(_Locale_time *__time) - : _STLP_PRIV time_init<_Ch>(__time) - {} - ~time_put() {} - virtual iter_type do_put(iter_type __s, ios_base& __f, - char_type /* __fill */, const tm* __tmb, - char __format, char /* __modifier */) const; -}; - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -template -#else -template > > -#endif -class time_put_byname : public time_put<_Ch, _OutIt> { - friend class _Locale_impl; -public: - typedef time_base::dateorder dateorder; - typedef _OutIt iter_type; - typedef _Ch char_type; - - explicit time_put_byname(const char * __name, size_t __refs = 0) - : time_put<_Ch, _OutIt>(__name, __refs) - {} - -protected: - ~time_put_byname() {} - -private: - time_put_byname(_Locale_time *__time) - : time_put<_Ch, _OutIt>(__time) - {} - - typedef time_put_byname<_Ch, _OutIt> _Self; - //explicitely defined as private to avoid warnings: - time_put_byname(_Self const&); - _Self& operator = (_Self const&); -}; - -#if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS time_get > >; -_STLP_EXPORT_TEMPLATE_CLASS time_put > >; -# if !defined (_STLP_NO_WCHAR_T) -_STLP_EXPORT_TEMPLATE_CLASS time_get > >; -_STLP_EXPORT_TEMPLATE_CLASS time_put > >; -# endif - -#endif - -_STLP_END_NAMESPACE - -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* _STLP_INTERNAL_TIME_FACETS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_tree.c b/build/stlport/stlport/stl/_tree.c deleted file mode 100644 index 818fcc4acdf8..000000000000 --- a/build/stlport/stlport/stl/_tree.c +++ /dev/null @@ -1,730 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - * Modified CRP 7/10/00 for improved conformance / efficiency on insert_unique / - * insert_equal with valid hint -- efficiency is improved all around, and it is - * should now be standard conforming for complexity on insert point immediately - * after hint (amortized constant time). - * - */ -#ifndef _STLP_TREE_C -#define _STLP_TREE_C - -#ifndef _STLP_INTERNAL_TREE_H -# include -#endif - -#if defined (_STLP_DEBUG) -# define _Rb_tree _STLP_NON_DBG_NAME(Rb_tree) -#endif - -// fbp: these defines are for outline methods definitions. -// needed for definitions to be portable. Should not be used in method bodies. -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -# define __iterator__ _Rb_tree_iterator<_Value, _STLP_HEADER_TYPENAME _Traits::_NonConstTraits> -# define __size_type__ size_t -# define iterator __iterator__ -#else -# define __iterator__ _STLP_TYPENAME_ON_RETURN_TYPE _Rb_tree<_Key, _Compare, _Value, _KeyOfValue, _Traits, _Alloc>::iterator -# define __size_type__ _STLP_TYPENAME_ON_RETURN_TYPE _Rb_tree<_Key, _Compare, _Value, _KeyOfValue, _Traits, _Alloc>::size_type -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) - -template void _STLP_CALL -_Rb_global<_Dummy>::_Rotate_left(_Rb_tree_node_base* __x, - _Rb_tree_node_base*& __root) { - _Rb_tree_node_base* __y = __x->_M_right; - __x->_M_right = __y->_M_left; - if (__y->_M_left != 0) - __y->_M_left->_M_parent = __x; - __y->_M_parent = __x->_M_parent; - - if (__x == __root) - __root = __y; - else if (__x == __x->_M_parent->_M_left) - __x->_M_parent->_M_left = __y; - else - __x->_M_parent->_M_right = __y; - __y->_M_left = __x; - __x->_M_parent = __y; -} - -template void _STLP_CALL -_Rb_global<_Dummy>::_Rotate_right(_Rb_tree_node_base* __x, - _Rb_tree_node_base*& __root) { - _Rb_tree_node_base* __y = __x->_M_left; - __x->_M_left = __y->_M_right; - if (__y->_M_right != 0) - __y->_M_right->_M_parent = __x; - __y->_M_parent = __x->_M_parent; - - if (__x == __root) - __root = __y; - else if (__x == __x->_M_parent->_M_right) - __x->_M_parent->_M_right = __y; - else - __x->_M_parent->_M_left = __y; - __y->_M_right = __x; - __x->_M_parent = __y; -} - -template void _STLP_CALL -_Rb_global<_Dummy>::_Rebalance(_Rb_tree_node_base* __x, - _Rb_tree_node_base*& __root) { - __x->_M_color = _S_rb_tree_red; - while (__x != __root && __x->_M_parent->_M_color == _S_rb_tree_red) { - if (__x->_M_parent == __x->_M_parent->_M_parent->_M_left) { - _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_right; - if (__y && __y->_M_color == _S_rb_tree_red) { - __x->_M_parent->_M_color = _S_rb_tree_black; - __y->_M_color = _S_rb_tree_black; - __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red; - __x = __x->_M_parent->_M_parent; - } - else { - if (__x == __x->_M_parent->_M_right) { - __x = __x->_M_parent; - _Rotate_left(__x, __root); - } - __x->_M_parent->_M_color = _S_rb_tree_black; - __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red; - _Rotate_right(__x->_M_parent->_M_parent, __root); - } - } - else { - _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_left; - if (__y && __y->_M_color == _S_rb_tree_red) { - __x->_M_parent->_M_color = _S_rb_tree_black; - __y->_M_color = _S_rb_tree_black; - __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red; - __x = __x->_M_parent->_M_parent; - } - else { - if (__x == __x->_M_parent->_M_left) { - __x = __x->_M_parent; - _Rotate_right(__x, __root); - } - __x->_M_parent->_M_color = _S_rb_tree_black; - __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red; - _Rotate_left(__x->_M_parent->_M_parent, __root); - } - } - } - __root->_M_color = _S_rb_tree_black; -} - -template _Rb_tree_node_base* _STLP_CALL -_Rb_global<_Dummy>::_Rebalance_for_erase(_Rb_tree_node_base* __z, - _Rb_tree_node_base*& __root, - _Rb_tree_node_base*& __leftmost, - _Rb_tree_node_base*& __rightmost) { - _Rb_tree_node_base* __y = __z; - _Rb_tree_node_base* __x; - _Rb_tree_node_base* __x_parent; - - if (__y->_M_left == 0) // __z has at most one non-null child. y == z. - __x = __y->_M_right; // __x might be null. - else { - if (__y->_M_right == 0) // __z has exactly one non-null child. y == z. - __x = __y->_M_left; // __x is not null. - else { // __z has two non-null children. Set __y to - __y = _Rb_tree_node_base::_S_minimum(__y->_M_right); // __z's successor. __x might be null. - __x = __y->_M_right; - } - } - - if (__y != __z) { // relink y in place of z. y is z's successor - __z->_M_left->_M_parent = __y; - __y->_M_left = __z->_M_left; - if (__y != __z->_M_right) { - __x_parent = __y->_M_parent; - if (__x) __x->_M_parent = __y->_M_parent; - __y->_M_parent->_M_left = __x; // __y must be a child of _M_left - __y->_M_right = __z->_M_right; - __z->_M_right->_M_parent = __y; - } - else - __x_parent = __y; - if (__root == __z) - __root = __y; - else if (__z->_M_parent->_M_left == __z) - __z->_M_parent->_M_left = __y; - else - __z->_M_parent->_M_right = __y; - __y->_M_parent = __z->_M_parent; - _STLP_STD::swap(__y->_M_color, __z->_M_color); - __y = __z; - // __y now points to node to be actually deleted - } - else { // __y == __z - __x_parent = __y->_M_parent; - if (__x) __x->_M_parent = __y->_M_parent; - if (__root == __z) - __root = __x; - else { - if (__z->_M_parent->_M_left == __z) - __z->_M_parent->_M_left = __x; - else - __z->_M_parent->_M_right = __x; - } - - if (__leftmost == __z) { - if (__z->_M_right == 0) // __z->_M_left must be null also - __leftmost = __z->_M_parent; - // makes __leftmost == _M_header if __z == __root - else - __leftmost = _Rb_tree_node_base::_S_minimum(__x); - } - if (__rightmost == __z) { - if (__z->_M_left == 0) // __z->_M_right must be null also - __rightmost = __z->_M_parent; - // makes __rightmost == _M_header if __z == __root - else // __x == __z->_M_left - __rightmost = _Rb_tree_node_base::_S_maximum(__x); - } - } - - if (__y->_M_color != _S_rb_tree_red) { - while (__x != __root && (__x == 0 || __x->_M_color == _S_rb_tree_black)) - if (__x == __x_parent->_M_left) { - _Rb_tree_node_base* __w = __x_parent->_M_right; - if (__w->_M_color == _S_rb_tree_red) { - __w->_M_color = _S_rb_tree_black; - __x_parent->_M_color = _S_rb_tree_red; - _Rotate_left(__x_parent, __root); - __w = __x_parent->_M_right; - } - if ((__w->_M_left == 0 || - __w->_M_left->_M_color == _S_rb_tree_black) && (__w->_M_right == 0 || - __w->_M_right->_M_color == _S_rb_tree_black)) { - __w->_M_color = _S_rb_tree_red; - __x = __x_parent; - __x_parent = __x_parent->_M_parent; - } else { - if (__w->_M_right == 0 || - __w->_M_right->_M_color == _S_rb_tree_black) { - if (__w->_M_left) __w->_M_left->_M_color = _S_rb_tree_black; - __w->_M_color = _S_rb_tree_red; - _Rotate_right(__w, __root); - __w = __x_parent->_M_right; - } - __w->_M_color = __x_parent->_M_color; - __x_parent->_M_color = _S_rb_tree_black; - if (__w->_M_right) __w->_M_right->_M_color = _S_rb_tree_black; - _Rotate_left(__x_parent, __root); - break; - } - } else { // same as above, with _M_right <-> _M_left. - _Rb_tree_node_base* __w = __x_parent->_M_left; - if (__w->_M_color == _S_rb_tree_red) { - __w->_M_color = _S_rb_tree_black; - __x_parent->_M_color = _S_rb_tree_red; - _Rotate_right(__x_parent, __root); - __w = __x_parent->_M_left; - } - if ((__w->_M_right == 0 || - __w->_M_right->_M_color == _S_rb_tree_black) && (__w->_M_left == 0 || - __w->_M_left->_M_color == _S_rb_tree_black)) { - __w->_M_color = _S_rb_tree_red; - __x = __x_parent; - __x_parent = __x_parent->_M_parent; - } else { - if (__w->_M_left == 0 || - __w->_M_left->_M_color == _S_rb_tree_black) { - if (__w->_M_right) __w->_M_right->_M_color = _S_rb_tree_black; - __w->_M_color = _S_rb_tree_red; - _Rotate_left(__w, __root); - __w = __x_parent->_M_left; - } - __w->_M_color = __x_parent->_M_color; - __x_parent->_M_color = _S_rb_tree_black; - if (__w->_M_left) __w->_M_left->_M_color = _S_rb_tree_black; - _Rotate_right(__x_parent, __root); - break; - } - } - if (__x) __x->_M_color = _S_rb_tree_black; - } - return __y; -} - -template _Rb_tree_node_base* _STLP_CALL -_Rb_global<_Dummy>::_M_decrement(_Rb_tree_node_base* _M_node) { - if (_M_node->_M_color == _S_rb_tree_red && _M_node->_M_parent->_M_parent == _M_node) - _M_node = _M_node->_M_right; - else if (_M_node->_M_left != 0) { - _M_node = _Rb_tree_node_base::_S_maximum(_M_node->_M_left); - } - else { - _Base_ptr __y = _M_node->_M_parent; - while (_M_node == __y->_M_left) { - _M_node = __y; - __y = __y->_M_parent; - } - _M_node = __y; - } - return _M_node; -} - -template _Rb_tree_node_base* _STLP_CALL -_Rb_global<_Dummy>::_M_increment(_Rb_tree_node_base* _M_node) { - if (_M_node->_M_right != 0) { - _M_node = _Rb_tree_node_base::_S_minimum(_M_node->_M_right); - } - else { - _Base_ptr __y = _M_node->_M_parent; - while (_M_node == __y->_M_right) { - _M_node = __y; - __y = __y->_M_parent; - } - // check special case: This is necessary if _M_node is the - // _M_head and the tree contains only a single node __y. In - // that case parent, left and right all point to __y! - if (_M_node->_M_right != __y) - _M_node = __y; - } - return _M_node; -} - -#endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */ - - -template -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc>& -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc> ::operator=( - const _Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc>& __x) { - if (this != &__x) { - // Note that _Key may be a constant type. - clear(); - _M_node_count = 0; - _M_key_compare = __x._M_key_compare; - if (__x._M_root() == 0) { - _M_root() = 0; - _M_leftmost() = &this->_M_header._M_data; - _M_rightmost() = &this->_M_header._M_data; - } - else { - _M_root() = _M_copy(__x._M_root(), &this->_M_header._M_data); - _M_leftmost() = _S_minimum(_M_root()); - _M_rightmost() = _S_maximum(_M_root()); - _M_node_count = __x._M_node_count; - } - } - return *this; -} - -// CRP 7/10/00 inserted argument __on_right, which is another hint (meant to -// act like __on_left and ignore a portion of the if conditions -- specify -// __on_right != 0 to bypass comparison as false or __on_left != 0 to bypass -// comparison as true) -template -__iterator__ -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc> ::_M_insert(_Rb_tree_node_base * __parent, - const _Value& __val, - _Rb_tree_node_base * __on_left, - _Rb_tree_node_base * __on_right) { - // We do not create the node here as, depending on tests, we might call - // _M_key_compare that can throw an exception. - _Base_ptr __new_node; - - if ( __parent == &this->_M_header._M_data ) { - __new_node = _M_create_node(__val); - _S_left(__parent) = __new_node; // also makes _M_leftmost() = __new_node - _M_root() = __new_node; - _M_rightmost() = __new_node; - } - else if ( __on_right == 0 && // If __on_right != 0, the remainder fails to false - ( __on_left != 0 || // If __on_left != 0, the remainder succeeds to true - _M_key_compare( _KeyOfValue()(__val), _S_key(__parent) ) ) ) { - __new_node = _M_create_node(__val); - _S_left(__parent) = __new_node; - if (__parent == _M_leftmost()) - _M_leftmost() = __new_node; // maintain _M_leftmost() pointing to min node - } - else { - __new_node = _M_create_node(__val); - _S_right(__parent) = __new_node; - if (__parent == _M_rightmost()) - _M_rightmost() = __new_node; // maintain _M_rightmost() pointing to max node - } - _S_parent(__new_node) = __parent; - _Rb_global_inst::_Rebalance(__new_node, this->_M_header._M_data._M_parent); - ++_M_node_count; - return iterator(__new_node); -} - -template -__iterator__ -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc> ::insert_equal(const _Value& __val) { - _Base_ptr __y = &this->_M_header._M_data; - _Base_ptr __x = _M_root(); - while (__x != 0) { - __y = __x; - if (_M_key_compare(_KeyOfValue()(__val), _S_key(__x))) { - __x = _S_left(__x); - } - else - __x = _S_right(__x); - } - return _M_insert(__y, __val, __x); -} - - -template -pair<__iterator__, bool> -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc> ::insert_unique(const _Value& __val) { - _Base_ptr __y = &this->_M_header._M_data; - _Base_ptr __x = _M_root(); - bool __comp = true; - while (__x != 0) { - __y = __x; - __comp = _M_key_compare(_KeyOfValue()(__val), _S_key(__x)); - __x = __comp ? _S_left(__x) : _S_right(__x); - } - iterator __j = iterator(__y); - if (__comp) { - if (__j == begin()) - return pair(_M_insert(__y, __val, /* __x*/ __y), true); - else - --__j; - } - if (_M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__val))) { - return pair(_M_insert(__y, __val, __x), true); - } - return pair(__j, false); -} - -// Modifications CRP 7/10/00 as noted to improve conformance and -// efficiency. -template -__iterator__ -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc> ::insert_unique(iterator __position, - const _Value& __val) { - if (__position._M_node == this->_M_header._M_data._M_left) { // begin() - - // if the container is empty, fall back on insert_unique. - if (empty()) - return insert_unique(__val).first; - - if (_M_key_compare(_KeyOfValue()(__val), _S_key(__position._M_node))) { - return _M_insert(__position._M_node, __val, __position._M_node); - } - // first argument just needs to be non-null - else { - bool __comp_pos_v = _M_key_compare( _S_key(__position._M_node), _KeyOfValue()(__val) ); - - if (__comp_pos_v == false) // compare > and compare < both false so compare equal - return __position; - //Below __comp_pos_v == true - - // Standard-conformance - does the insertion point fall immediately AFTER - // the hint? - iterator __after = __position; - ++__after; - - // Check for only one member -- in that case, __position points to itself, - // and attempting to increment will cause an infinite loop. - if (__after._M_node == &this->_M_header._M_data) - // Check guarantees exactly one member, so comparison was already - // performed and we know the result; skip repeating it in _M_insert - // by specifying a non-zero fourth argument. - return _M_insert(__position._M_node, __val, 0, __position._M_node); - - // All other cases: - - // Optimization to catch insert-equivalent -- save comparison results, - // and we get this for free. - if (_M_key_compare( _KeyOfValue()(__val), _S_key(__after._M_node) )) { - if (_S_right(__position._M_node) == 0) - return _M_insert(__position._M_node, __val, 0, __position._M_node); - else - return _M_insert(__after._M_node, __val, __after._M_node); - } - else { - return insert_unique(__val).first; - } - } - } - else if (__position._M_node == &this->_M_header._M_data) { // end() - if (_M_key_compare(_S_key(_M_rightmost()), _KeyOfValue()(__val))) { - // pass along to _M_insert that it can skip comparing - // v, Key ; since compare Key, v was true, compare v, Key must be false. - return _M_insert(_M_rightmost(), __val, 0, __position._M_node); // Last argument only needs to be non-null - } - else - return insert_unique(__val).first; - } - else { - iterator __before = __position; - --__before; - - bool __comp_v_pos = _M_key_compare(_KeyOfValue()(__val), _S_key(__position._M_node)); - - if (__comp_v_pos - && _M_key_compare( _S_key(__before._M_node), _KeyOfValue()(__val) )) { - - if (_S_right(__before._M_node) == 0) - return _M_insert(__before._M_node, __val, 0, __before._M_node); // Last argument only needs to be non-null - else - return _M_insert(__position._M_node, __val, __position._M_node); - // first argument just needs to be non-null - } - else { - // Does the insertion point fall immediately AFTER the hint? - iterator __after = __position; - ++__after; - // Optimization to catch equivalent cases and avoid unnecessary comparisons - bool __comp_pos_v = !__comp_v_pos; // Stored this result earlier - // If the earlier comparison was true, this comparison doesn't need to be - // performed because it must be false. However, if the earlier comparison - // was false, we need to perform this one because in the equal case, both will - // be false. - if (!__comp_v_pos) { - __comp_pos_v = _M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__val)); - } - - if ( (!__comp_v_pos) // comp_v_pos true implies comp_v_pos false - && __comp_pos_v - && (__after._M_node == &this->_M_header._M_data || - _M_key_compare( _KeyOfValue()(__val), _S_key(__after._M_node) ))) { - if (_S_right(__position._M_node) == 0) - return _M_insert(__position._M_node, __val, 0, __position._M_node); - else - return _M_insert(__after._M_node, __val, __after._M_node); - } else { - // Test for equivalent case - if (__comp_v_pos == __comp_pos_v) - return __position; - else - return insert_unique(__val).first; - } - } - } -} - -template -__iterator__ -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc> ::insert_equal(iterator __position, - const _Value& __val) { - if (__position._M_node == this->_M_header._M_data._M_left) { // begin() - - // Check for zero members - if (size() <= 0) - return insert_equal(__val); - - if (!_M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__val))) - return _M_insert(__position._M_node, __val, __position._M_node); - else { - // Check for only one member - if (__position._M_node->_M_left == __position._M_node) - // Unlike insert_unique, can't avoid doing a comparison here. - return _M_insert(__position._M_node, __val); - - // All other cases: - // Standard-conformance - does the insertion point fall immediately AFTER - // the hint? - iterator __after = __position; - ++__after; - - // Already know that compare(pos, v) must be true! - // Therefore, we want to know if compare(after, v) is false. - // (i.e., we now pos < v, now we want to know if v <= after) - // If not, invalid hint. - if ( __after._M_node == &this->_M_header._M_data || - !_M_key_compare( _S_key(__after._M_node), _KeyOfValue()(__val) ) ) { - if (_S_right(__position._M_node) == 0) - return _M_insert(__position._M_node, __val, 0, __position._M_node); - else - return _M_insert(__after._M_node, __val, __after._M_node); - } - else { // Invalid hint - return insert_equal(__val); - } - } - } - else if (__position._M_node == &this->_M_header._M_data) { // end() - if (!_M_key_compare(_KeyOfValue()(__val), _S_key(_M_rightmost()))) - return _M_insert(_M_rightmost(), __val, 0, __position._M_node); // Last argument only needs to be non-null - else { - return insert_equal(__val); - } - } - else { - iterator __before = __position; - --__before; - // store the result of the comparison between pos and v so - // that we don't have to do it again later. Note that this reverses the shortcut - // on the if, possibly harming efficiency in comparisons; I think the harm will - // be negligible, and to do what I want to do (save the result of a comparison so - // that it can be re-used) there is no alternative. Test here is for before <= v <= pos. - bool __comp_pos_v = _M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__val)); - if (!__comp_pos_v && - !_M_key_compare(_KeyOfValue()(__val), _S_key(__before._M_node))) { - if (_S_right(__before._M_node) == 0) - return _M_insert(__before._M_node, __val, 0, __before._M_node); // Last argument only needs to be non-null - else - return _M_insert(__position._M_node, __val, __position._M_node); - } - else { - // Does the insertion point fall immediately AFTER the hint? - // Test for pos < v <= after - iterator __after = __position; - ++__after; - - if (__comp_pos_v && - ( __after._M_node == &this->_M_header._M_data || - !_M_key_compare( _S_key(__after._M_node), _KeyOfValue()(__val) ) ) ) { - if (_S_right(__position._M_node) == 0) - return _M_insert(__position._M_node, __val, 0, __position._M_node); - else - return _M_insert(__after._M_node, __val, __after._M_node); - } - else { // Invalid hint - return insert_equal(__val); - } - } - } -} - -template -_Rb_tree_node_base* -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc> ::_M_copy(_Rb_tree_node_base* __x, - _Rb_tree_node_base* __p) { - // structural copy. __x and __p must be non-null. - _Base_ptr __top = _M_clone_node(__x); - _S_parent(__top) = __p; - - _STLP_TRY { - if (_S_right(__x)) - _S_right(__top) = _M_copy(_S_right(__x), __top); - __p = __top; - __x = _S_left(__x); - - while (__x != 0) { - _Base_ptr __y = _M_clone_node(__x); - _S_left(__p) = __y; - _S_parent(__y) = __p; - if (_S_right(__x)) - _S_right(__y) = _M_copy(_S_right(__x), __y); - __p = __y; - __x = _S_left(__x); - } - } - _STLP_UNWIND(_M_erase(__top)) - - return __top; -} - -// this has to stay out-of-line : it's recursive -template -void -_Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc>::_M_erase(_Rb_tree_node_base *__x) { - // erase without rebalancing - while (__x != 0) { - _M_erase(_S_right(__x)); - _Base_ptr __y = _S_left(__x); - _STLP_STD::_Destroy(&_S_value(__x)); - this->_M_header.deallocate(__STATIC_CAST(_Link_type, __x),1); - __x = __y; - } -} - -#if defined (_STLP_DEBUG) -inline int -__black_count(_Rb_tree_node_base* __node, _Rb_tree_node_base* __root) { - if (__node == 0) - return 0; - else { - int __bc = __node->_M_color == _S_rb_tree_black ? 1 : 0; - if (__node == __root) - return __bc; - else - return __bc + __black_count(__node->_M_parent, __root); - } -} - -template -bool _Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc>::__rb_verify() const { - if (_M_node_count == 0 || begin() == end()) - return ((_M_node_count == 0) && - (begin() == end()) && - (this->_M_header._M_data._M_left == &this->_M_header._M_data) && - (this->_M_header._M_data._M_right == &this->_M_header._M_data)); - - int __len = __black_count(_M_leftmost(), _M_root()); - for (const_iterator __it = begin(); __it != end(); ++__it) { - _Base_ptr __x = __it._M_node; - _Base_ptr __L = _S_left(__x); - _Base_ptr __R = _S_right(__x); - - if (__x->_M_color == _S_rb_tree_red) - if ((__L && __L->_M_color == _S_rb_tree_red) || - (__R && __R->_M_color == _S_rb_tree_red)) - return false; - - if (__L && _M_key_compare(_S_key(__x), _S_key(__L))) - return false; - if (__R && _M_key_compare(_S_key(__R), _S_key(__x))) - return false; - - if (!__L && !__R && __black_count(__x, _M_root()) != __len) - return false; - } - - if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root())) - return false; - if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root())) - return false; - - return true; -} -#endif /* _STLP_DEBUG */ - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -#undef _Rb_tree -#undef __iterator__ -#undef iterator -#undef __size_type__ - -#endif /* _STLP_TREE_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_tree.h b/build/stlport/stlport/stl/_tree.h deleted file mode 100644 index bf059015e9fa..000000000000 --- a/build/stlport/stlport/stl/_tree.h +++ /dev/null @@ -1,684 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_TREE_H -#define _STLP_INTERNAL_TREE_H - -/* - -Red-black tree class, designed for use in implementing STL -associative containers (set, multiset, map, and multimap). The -insertion and deletion algorithms are based on those in Cormen, -Leiserson, and Rivest, Introduction to Algorithms (MIT Press, 1990), -except that - -(1) the header cell is maintained with links not only to the root -but also to the leftmost node of the tree, to enable constant time -begin(), and to the rightmost node of the tree, to enable linear time -performance when used with the generic set algorithms (set_union, -etc.); - -(2) when a node being deleted has two children its successor node is -relinked into its place, rather than copied, so that the only -iterators invalidated are those referring to the deleted node. - -*/ - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_CONSTRUCT_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -typedef bool _Rb_tree_Color_type; -//const _Rb_tree_Color_type _S_rb_tree_red = false; -//const _Rb_tree_Color_type _S_rb_tree_black = true; - -#define _S_rb_tree_red false -#define _S_rb_tree_black true - -struct _Rb_tree_node_base { - typedef _Rb_tree_Color_type _Color_type; - typedef _Rb_tree_node_base* _Base_ptr; - - _Color_type _M_color; - _Base_ptr _M_parent; - _Base_ptr _M_left; - _Base_ptr _M_right; - - static _Base_ptr _STLP_CALL _S_minimum(_Base_ptr __x) { - while (__x->_M_left != 0) __x = __x->_M_left; - return __x; - } - - static _Base_ptr _STLP_CALL _S_maximum(_Base_ptr __x) { - while (__x->_M_right != 0) __x = __x->_M_right; - return __x; - } -}; - -template -struct _Rb_tree_node : public _Rb_tree_node_base { - _Value _M_value_field; - __TRIVIAL_STUFF(_Rb_tree_node) -}; - -struct _Rb_tree_base_iterator; - -template -class _Rb_global { -public: - typedef _Rb_tree_node_base* _Base_ptr; - // those used to be global functions - static void _STLP_CALL _Rebalance(_Base_ptr __x, _Base_ptr& __root); - static _Base_ptr _STLP_CALL _Rebalance_for_erase(_Base_ptr __z, - _Base_ptr& __root, - _Base_ptr& __leftmost, - _Base_ptr& __rightmost); - // those are from _Rb_tree_base_iterator - moved here to reduce code bloat - // moved here to reduce code bloat without templatizing _Rb_tree_base_iterator - static _Base_ptr _STLP_CALL _M_increment (_Base_ptr); - static _Base_ptr _STLP_CALL _M_decrement (_Base_ptr); - static void _STLP_CALL _Rotate_left (_Base_ptr __x, _Base_ptr& __root); - static void _STLP_CALL _Rotate_right(_Base_ptr __x, _Base_ptr& __root); -}; - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS _Rb_global; -# endif - -typedef _Rb_global _Rb_global_inst; - -struct _Rb_tree_base_iterator { - typedef _Rb_tree_node_base* _Base_ptr; - typedef bidirectional_iterator_tag iterator_category; - typedef ptrdiff_t difference_type; - _Base_ptr _M_node; - _Rb_tree_base_iterator() : _M_node(0) {} - _Rb_tree_base_iterator(_Base_ptr __x) : _M_node(__x) {} -}; - -template -struct _Rb_tree_iterator : public _Rb_tree_base_iterator { - typedef _Value value_type; - typedef typename _Traits::reference reference; - typedef typename _Traits::pointer pointer; - typedef _Rb_tree_iterator<_Value, _Traits> _Self; - typedef _Rb_tree_node_base* _Base_ptr; - typedef _Rb_tree_node<_Value>* _Link_type; - - typedef typename _Traits::_NonConstTraits _NonConstTraits; - typedef _Rb_tree_iterator<_Value, _NonConstTraits> iterator; - typedef typename _Traits::_ConstTraits _ConstTraits; - typedef _Rb_tree_iterator<_Value, _ConstTraits> const_iterator; - - _Rb_tree_iterator() {} -#if !defined (_STLP_DEBUG) - /* In STL debug mode we need this constructor implicit for the pointer - * specialization implementation. - */ - explicit -#endif - _Rb_tree_iterator(_Base_ptr __x) : _Rb_tree_base_iterator(__x) {} - //copy constructor for iterator and constructor from iterator for const_iterator - _Rb_tree_iterator(const iterator& __it) : _Rb_tree_base_iterator(__it._M_node) {} - - reference operator*() const { - return __STATIC_CAST(_Link_type, _M_node)->_M_value_field; - } - - _STLP_DEFINE_ARROW_OPERATOR - - _Self& operator++() { - _M_node = _Rb_global_inst::_M_increment(_M_node); - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - ++(*this); - return __tmp; - } - - _Self& operator--() { - _M_node = _Rb_global_inst::_M_decrement(_M_node); - return *this; - } - _Self operator--(int) { - _Self __tmp = *this; - --(*this); - return __tmp; - } - - bool operator == (const_iterator __rhs) const { - return _M_node == __rhs._M_node; - } - bool operator != (const_iterator __rhs) const { - return _M_node != __rhs._M_node; - } -}; - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -_STLP_MOVE_TO_STD_NAMESPACE -template -struct __type_traits<_STLP_PRIV _Rb_tree_iterator<_Value, _Traits> > { - typedef __false_type has_trivial_default_constructor; - typedef __true_type has_trivial_copy_constructor; - typedef __true_type has_trivial_assignment_operator; - typedef __true_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -_STLP_MOVE_TO_STD_NAMESPACE -template -inline _Value* value_type(const _STLP_PRIV _Rb_tree_iterator<_Value, _Traits>&) -{ return (_Value*)0; } -inline bidirectional_iterator_tag iterator_category(const _STLP_PRIV _Rb_tree_base_iterator&) -{ return bidirectional_iterator_tag(); } -inline ptrdiff_t* distance_type(const _STLP_PRIV _Rb_tree_base_iterator&) -{ return (ptrdiff_t*) 0; } -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -// Base class to help EH - -template -class _Rb_tree_base { -public: - typedef _Rb_tree_node_base _Node_base; - typedef _Rb_tree_node<_Tp> _Node; - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef _Alloc allocator_type; -private: - typedef _Rb_tree_base<_Tp, _Alloc> _Self; - typedef typename _Alloc_traits<_Node, _Alloc>::allocator_type _M_node_allocator_type; - typedef _STLP_alloc_proxy<_Node_base, _Node, _M_node_allocator_type> _AllocProxy; - -public: - allocator_type get_allocator() const { - return _STLP_CONVERT_ALLOCATOR(_M_header, _Tp); - } - -protected: - _Rb_tree_base(const allocator_type& __a) : - _M_header(_STLP_CONVERT_ALLOCATOR(__a, _Node), _Node_base() ) { - _M_empty_initialize(); - } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _Rb_tree_base(__move_source<_Self> src) : - _M_header(__move_source<_AllocProxy>(src.get()._M_header)) { - _M_rebind(&src.get()._M_header._M_data); - src.get()._M_empty_initialize(); - } -#endif - - void _M_empty_initialize() { - _M_header._M_data._M_color = _S_rb_tree_red; // used to distinguish header from - // __root, in iterator.operator++ - _M_header._M_data._M_parent = 0; - _M_header._M_data._M_left = &_M_header._M_data; - _M_header._M_data._M_right = &_M_header._M_data; - } - - void _M_rebind(_Node_base *__static_node) { - if (_M_header._M_data._M_parent != 0) { - _M_header._M_data._M_parent->_M_parent = &_M_header._M_data; - } - if (_M_header._M_data._M_right == __static_node) { - _M_header._M_data._M_right = &_M_header._M_data; - } - if (_M_header._M_data._M_left == __static_node) { - _M_header._M_data._M_left = &_M_header._M_data; - } - } - - _AllocProxy _M_header; -}; - -#if defined (_STLP_DEBUG) -# define _Rb_tree _STLP_NON_DBG_NAME(Rb_tree) -#endif - -template ) > -class _Rb_tree : public _Rb_tree_base<_Value, _Alloc> { - typedef _Rb_tree_base<_Value, _Alloc> _Base; - typedef _Rb_tree<_Key, _Compare, _Value, _KeyOfValue, _Traits, _Alloc> _Self; -protected: - typedef _Rb_tree_node_base * _Base_ptr; - typedef _Rb_tree_node<_Value> _Node; - typedef _Node* _Link_type; - typedef _Rb_tree_Color_type _Color_type; -public: - typedef _Key key_type; - typedef _Value value_type; - typedef typename _Traits::pointer pointer; - typedef const value_type* const_pointer; - typedef typename _Traits::reference reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef bidirectional_iterator_tag _Iterator_category; - typedef typename _Base::allocator_type allocator_type; - -protected: - - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - _Base_ptr _M_create_node(const value_type& __x) { - _Link_type __tmp = this->_M_header.allocate(1); - _STLP_TRY { - _Copy_Construct(&__tmp->_M_value_field, __x); - } - _STLP_UNWIND(this->_M_header.deallocate(__tmp,1)) - _S_left(__tmp) = 0; - _S_right(__tmp) = 0; - return __tmp; - } - - _Base_ptr _M_clone_node(_Base_ptr __x) { - _Base_ptr __tmp = _M_create_node(_S_value(__x)); - _S_color(__tmp) = _S_color(__x); - return __tmp; - } - - size_type _M_node_count; // keeps track of size of tree - _Compare _M_key_compare; - - _Base_ptr _M_root() const - { return this->_M_header._M_data._M_parent; } - _Base_ptr _M_leftmost() const - { return this->_M_header._M_data._M_left; } - _Base_ptr _M_rightmost() const - { return this->_M_header._M_data._M_right; } - - _Base_ptr& _M_root() - { return this->_M_header._M_data._M_parent; } - _Base_ptr& _M_leftmost() - { return this->_M_header._M_data._M_left; } - _Base_ptr& _M_rightmost() - { return this->_M_header._M_data._M_right; } - - static _Base_ptr& _STLP_CALL _S_left(_Base_ptr __x) - { return __x->_M_left; } - static _Base_ptr& _STLP_CALL _S_right(_Base_ptr __x) - { return __x->_M_right; } - static _Base_ptr& _STLP_CALL _S_parent(_Base_ptr __x) - { return __x->_M_parent; } - static value_type& _STLP_CALL _S_value(_Base_ptr __x) - { return __STATIC_CAST(_Link_type, __x)->_M_value_field; } - static const _Key& _STLP_CALL _S_key(_Base_ptr __x) - { return _KeyOfValue()(_S_value(__x));} - static _Color_type& _STLP_CALL _S_color(_Base_ptr __x) - { return (_Color_type&)(__x->_M_color); } - - static _Base_ptr _STLP_CALL _S_minimum(_Base_ptr __x) - { return _Rb_tree_node_base::_S_minimum(__x); } - - static _Base_ptr _STLP_CALL _S_maximum(_Base_ptr __x) - { return _Rb_tree_node_base::_S_maximum(__x); } - -public: - typedef typename _Traits::_NonConstTraits _NonConstTraits; - typedef typename _Traits::_ConstTraits _ConstTraits; - typedef _Rb_tree_iterator iterator; - typedef _Rb_tree_iterator const_iterator; - _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS; - -private: - iterator _M_insert(_Base_ptr __parent, const value_type& __val, _Base_ptr __on_left = 0, _Base_ptr __on_right = 0); - _Base_ptr _M_copy(_Base_ptr __x, _Base_ptr __p); - void _M_erase(_Base_ptr __x); - -public: - // allocation/deallocation - _Rb_tree() - : _Rb_tree_base<_Value, _Alloc>(allocator_type()), _M_node_count(0), _M_key_compare(_Compare()) - {} - - _Rb_tree(const _Compare& __comp) - : _Rb_tree_base<_Value, _Alloc>(allocator_type()), _M_node_count(0), _M_key_compare(__comp) - {} - - _Rb_tree(const _Compare& __comp, const allocator_type& __a) - : _Rb_tree_base<_Value, _Alloc>(__a), _M_node_count(0), _M_key_compare(__comp) - {} - - _Rb_tree(const _Self& __x) - : _Rb_tree_base<_Value, _Alloc>(__x.get_allocator()), - _M_node_count(0), _M_key_compare(__x._M_key_compare) { - if (__x._M_root() != 0) { - _S_color(&this->_M_header._M_data) = _S_rb_tree_red; - _M_root() = _M_copy(__x._M_root(), &this->_M_header._M_data); - _M_leftmost() = _S_minimum(_M_root()); - _M_rightmost() = _S_maximum(_M_root()); - } - _M_node_count = __x._M_node_count; - } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _Rb_tree(__move_source<_Self> src) - : _Rb_tree_base<_Value, _Alloc>(__move_source<_Base>(src.get())), - _M_node_count(src.get()._M_node_count), - _M_key_compare(_AsMoveSource(src.get()._M_key_compare)) - { src.get()._M_node_count = 0; } -#endif - - ~_Rb_tree() { clear(); } - _Self& operator=(const _Self& __x); - -public: - // accessors: - _Compare key_comp() const { return _M_key_compare; } - - iterator begin() { return iterator(_M_leftmost()); } - const_iterator begin() const { return const_iterator(_M_leftmost()); } - iterator end() { return iterator(&this->_M_header._M_data); } - const_iterator end() const { return const_iterator(__CONST_CAST(_Base_ptr, &this->_M_header._M_data)); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const - { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const - { return const_reverse_iterator(begin()); } - bool empty() const { return _M_node_count == 0; } - size_type size() const { return _M_node_count; } - size_type max_size() const { return size_type(-1); } - - void swap(_Self& __t) { - if (__t.empty()) { - if (this->empty()) return; - __t._M_header.swap(this->_M_header); - __t._M_rebind(&this->_M_header._M_data); - this->_M_empty_initialize(); - } - else if (this->empty()) { - __t.swap(*this); - return; - } - else { - this->_M_header.swap(__t._M_header); - this->_M_rebind(&__t._M_header._M_data); - __t._M_rebind(&this->_M_header._M_data); - } - _STLP_STD::swap(_M_node_count, __t._M_node_count); - _STLP_STD::swap(_M_key_compare, __t._M_key_compare); - } - -public: - // insert/erase - pair insert_unique(const value_type& __x); - iterator insert_equal(const value_type& __x); - - iterator insert_unique(iterator __pos, const value_type& __x); - iterator insert_equal(iterator __pos, const value_type& __x); - -#if defined (_STLP_MEMBER_TEMPLATES) - template void insert_equal(_II __first, _II __last) { - for ( ; __first != __last; ++__first) - insert_equal(*__first); - } - template void insert_unique(_II __first, _II __last) { - for ( ; __first != __last; ++__first) - insert_unique(*__first); - } -#else - void insert_unique(const_iterator __first, const_iterator __last) { - for ( ; __first != __last; ++__first) - insert_unique(*__first); - } - void insert_unique(const value_type* __first, const value_type* __last) { - for ( ; __first != __last; ++__first) - insert_unique(*__first); - } - void insert_equal(const_iterator __first, const_iterator __last) { - for ( ; __first != __last; ++__first) - insert_equal(*__first); - } - void insert_equal(const value_type* __first, const value_type* __last) { - for ( ; __first != __last; ++__first) - insert_equal(*__first); - } -#endif - - void erase(iterator __pos) { - _Base_ptr __x = _Rb_global_inst::_Rebalance_for_erase(__pos._M_node, - this->_M_header._M_data._M_parent, - this->_M_header._M_data._M_left, - this->_M_header._M_data._M_right); - _STLP_STD::_Destroy(&_S_value(__x)); - this->_M_header.deallocate(__STATIC_CAST(_Link_type, __x), 1); - --_M_node_count; - } - - size_type erase(const key_type& __x) { - pair __p = equal_range(__x); - size_type __n = _STLP_STD::distance(__p.first, __p.second); - erase(__p.first, __p.second); - return __n; - } - - size_type erase_unique(const key_type& __x) { - iterator __i = find(__x); - if (__i._M_node != &this->_M_header._M_data) { - erase(__i); - return 1; - } - return 0; - } - - void erase(iterator __first, iterator __last) { - if (__first._M_node == this->_M_header._M_data._M_left && // begin() - __last._M_node == &this->_M_header._M_data) // end() - clear(); - else - while (__first != __last) erase(__first++); - } - - void erase(const key_type* __first, const key_type* __last) { - while (__first != __last) erase(*__first++); - } - - void clear() { - if (_M_node_count != 0) { - _M_erase(_M_root()); - _M_leftmost() = &this->_M_header._M_data; - _M_root() = 0; - _M_rightmost() = &this->_M_header._M_data; - _M_node_count = 0; - } - } - -public: - // set operations: - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __k) { return iterator(_M_find(__k)); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __k) const { return const_iterator(_M_find(__k)); } -private: - _STLP_TEMPLATE_FOR_CONT_EXT - _Base_ptr _M_find(const _KT& __k) const { - _Base_ptr __y = __CONST_CAST(_Base_ptr, &this->_M_header._M_data); // Last node which is not less than __k. - _Base_ptr __x = _M_root(); // Current node. - - while (__x != 0) - if (!_M_key_compare(_S_key(__x), __k)) - __y = __x, __x = _S_left(__x); - else - __x = _S_right(__x); - - if (__y != &this->_M_header._M_data) { - if (_M_key_compare(__k, _S_key(__y))) { - __y = __CONST_CAST(_Base_ptr, &this->_M_header._M_data); - } - } - return __y; - } - - _STLP_TEMPLATE_FOR_CONT_EXT - _Base_ptr _M_lower_bound(const _KT& __k) const { - _Base_ptr __y = __CONST_CAST(_Base_ptr, &this->_M_header._M_data); /* Last node which is not less than __k. */ - _Base_ptr __x = _M_root(); /* Current node. */ - - while (__x != 0) - if (!_M_key_compare(_S_key(__x), __k)) - __y = __x, __x = _S_left(__x); - else - __x = _S_right(__x); - - return __y; - } - - _STLP_TEMPLATE_FOR_CONT_EXT - _Base_ptr _M_upper_bound(const _KT& __k) const { - _Base_ptr __y = __CONST_CAST(_Base_ptr, &this->_M_header._M_data); /* Last node which is greater than __k. */ - _Base_ptr __x = _M_root(); /* Current node. */ - - while (__x != 0) - if (_M_key_compare(__k, _S_key(__x))) - __y = __x, __x = _S_left(__x); - else - __x = _S_right(__x); - - return __y; - } - -public: - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __x) const { - pair __p = equal_range(__x); - return _STLP_STD::distance(__p.first, __p.second); - } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator lower_bound(const _KT& __x) { return iterator(_M_lower_bound(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator lower_bound(const _KT& __x) const { return const_iterator(_M_lower_bound(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator upper_bound(const _KT& __x) { return iterator(_M_upper_bound(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator upper_bound(const _KT& __x) const { return const_iterator(_M_upper_bound(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) - { return pair(lower_bound(__x), upper_bound(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) const - { return pair(lower_bound(__x), upper_bound(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range_unique(const _KT& __x) { - pair __p; - __p.second = lower_bound(__x); - if (__p.second._M_node != &this->_M_header._M_data && - !_M_key_compare(__x, _S_key(__p.second._M_node))) { - __p.first = __p.second++; - } - else { - __p.first = __p.second; - } - return __p; - } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range_unique(const _KT& __x) const { - pair __p; - __p.second = lower_bound(__x); - if (__p.second._M_node != &this->_M_header._M_data && - !_M_key_compare(__x, _S_key(__p.second._M_node))) { - __p.first = __p.second++; - } - else { - __p.first = __p.second; - } - return __p; - } - -#if defined (_STLP_DEBUG) -public: - // Debugging. - bool __rb_verify() const; -#endif //_STLP_DEBUG -}; - -#if defined (_STLP_DEBUG) -# undef _Rb_tree -#endif - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#if defined (_STLP_DEBUG) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER _STLP_PRIV _Rb_tree<_Key,_Compare,_Value,_KeyOfValue,_Traits,_Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits<_STLP_PRIV _Rb_tree<_Key, _Compare, _Value, _KeyOfValue, _Traits, _Alloc> > - : _STLP_PRIV __move_traits_help2<_Compare, _Alloc> {}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_TREE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_typeinfo.h b/build/stlport/stlport/stl/_typeinfo.h deleted file mode 100644 index 843ba566c88f..000000000000 --- a/build/stlport/stlport/stl/_typeinfo.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_INTERNAL_TYPEINFO -#define _STLP_INTERNAL_TYPEINFO - -#if !defined (_STLP_NO_TYPEINFO) - -# if defined (_STLP_NO_NEW_NEW_HEADER) -# include -# else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(typeinfo) -# endif -# endif - -# if (defined(_STLP_MSVC) && (_STLP_MSVC >= 1300)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) -// In .NET, actually includes -# undef _STLP_OLDSTD_typeinfo -# endif - -// if already included, do not import anything -# if defined(_STLP_USE_NAMESPACES) && !defined(_STLP_OLDSTD_typeinfo) && \ - (defined(_STLP_VENDOR_GLOBAL_EXCEPT_STD) || \ - defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_DEBUG)) -# if defined(_STLP_MSVC) && (_STLP_MSVC < 1300) && !defined(_STLP_WCE_NET) -class bad_cast : public exception {}; -# endif - -_STLP_BEGIN_NAMESPACE -// VC 6 and eVC 4 have type_info in the global namespace -# if (defined(_STLP_MSVC) && (_STLP_MSVC < 1300)) || defined(_STLP_WCE_NET) -using ::type_info; -# else -using _STLP_VENDOR_EXCEPT_STD::type_info; -# endif - -# if !defined (__DMC__) -using _STLP_VENDOR_EXCEPT_STD::bad_typeid; -# endif - -# if defined (_STLP_MSVC) && (_STLP_MSVC < 1300) && !defined (_STLP_WCE_NET) -using ::bad_cast; -# else -using _STLP_VENDOR_EXCEPT_STD::bad_cast; -# endif - -_STLP_END_NAMESPACE - -# endif - -#else - -# ifndef _STLP_INTERNAL_EXCEPTION -# include -# endif - -_STLP_BEGIN_NAMESPACE -# if !defined (__DMC__) -struct bad_cast : exception {}; -# endif -_STLP_END_NAMESPACE -#endif - -#endif diff --git a/build/stlport/stlport/stl/_uninitialized.h b/build/stlport/stlport/stl/_uninitialized.h deleted file mode 100644 index 5489a94a1375..000000000000 --- a/build/stlport/stlport/stl/_uninitialized.h +++ /dev/null @@ -1,443 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_UNINITIALIZED_H -#define _STLP_INTERNAL_UNINITIALIZED_H - -#ifndef _STLP_INTERNAL_CSTRING -# include -#endif - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_CONSTRUCT_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -// uninitialized_copy - -template -inline _OutputIter __ucopy(_InputIter __first, _InputIter __last, - _OutputIter __result, _Distance*) { - _OutputIter __cur = __result; - _STLP_TRY { - for ( ; __first != __last; ++__first, ++__cur) - _Param_Construct(&*__cur, *__first); - return __cur; - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__result, __cur)) - _STLP_RET_AFTER_THROW(__cur) -} - -template -inline _OutputIter __ucopy(_InputIter __first, _InputIter __last, - _OutputIter __result, const input_iterator_tag &, _Distance* __d) -{ return __ucopy(__first, __last, __result, __d); } - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline _OutputIter __ucopy(_InputIter __first, _InputIter __last, - _OutputIter __result, const forward_iterator_tag &, _Distance* __d) -{ return __ucopy(__first, __last, __result, __d); } - -template -inline _OutputIter __ucopy(_InputIter __first, _InputIter __last, - _OutputIter __result, const bidirectional_iterator_tag &, _Distance* __d) -{ return __ucopy(__first, __last, __result, __d); } -#endif - -template -inline _OutputIter __ucopy(_RandomAccessIter __first, _RandomAccessIter __last, - _OutputIter __result, const random_access_iterator_tag &, _Distance*) { - _OutputIter __cur = __result; - _STLP_TRY { - for (_Distance __n = __last - __first; __n > 0; --__n) { - _Param_Construct(&*__cur, *__first); - ++__first; - ++__cur; - } - return __cur; - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__result, __cur)) - _STLP_RET_AFTER_THROW(__cur) -} - -//Used internaly -template -inline _OutputIter __ucopy(_RandomAccessIter __first, _RandomAccessIter __last, _OutputIter __result) -{ return __ucopy(__first, __last, __result, random_access_iterator_tag(), (ptrdiff_t*)0); } - -inline void* -__ucopy_trivial(const void* __first, const void* __last, void* __result) { - //dums: this version can use memcpy (__copy_trivial can't) - return (__last == __first) ? __result : - ((char*)memcpy(__result, __first, ((const char*)__last - (const char*)__first))) + - ((const char*)__last - (const char*)__first); -} - -template -inline _OutputIter __ucopy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, - const __false_type& /*TrivialUCopy*/) -{ return __ucopy(__first, __last, __result, random_access_iterator_tag(), (ptrdiff_t*)0); } - -template -inline _OutputIter __ucopy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, - const __true_type& /*TrivialUCopy*/) { - // we know they all pointers, so this cast is OK - // return (_OutputIter)__copy_trivial(&(*__first), &(*__last), &(*__result)); - return (_OutputIter)__ucopy_trivial(__first, __last, __result); -} - -template -inline _OutputIter __ucopy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, - const __true_type& /*BothPtrType*/) { - return __ucopy_ptrs(__first, __last, __result, - _UseTrivialUCopy(_STLP_VALUE_TYPE(__first, _InputIter), - _STLP_VALUE_TYPE(__result, _OutputIter))._Answer()); -} - -template -inline _OutputIter __ucopy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, - const __false_type& /*BothPtrType*/) { - return __ucopy(__first, __last, __result, - _STLP_ITERATOR_CATEGORY(__first, _InputIter), - _STLP_DISTANCE_TYPE(__first, _InputIter)); -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline _ForwardIter -uninitialized_copy(_InputIter __first, _InputIter __last, _ForwardIter __result) -{ return _STLP_PRIV __ucopy_aux(__first, __last, __result, _BothPtrType< _InputIter, _ForwardIter>::_Answer()); } - -inline char* -uninitialized_copy(const char* __first, const char* __last, char* __result) -{ return (char*)_STLP_PRIV __ucopy_trivial(__first, __last, __result); } - -# if defined (_STLP_HAS_WCHAR_T) // dwa 8/15/97 -inline wchar_t* -uninitialized_copy(const wchar_t* __first, const wchar_t* __last, wchar_t* __result) -{ return (wchar_t*)_STLP_PRIV __ucopy_trivial (__first, __last, __result); } -# endif - -// uninitialized_copy_n (not part of the C++ standard) -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -_STLP_INLINE_LOOP -pair<_InputIter, _ForwardIter> -__ucopy_n(_InputIter __first, _Size __count, _ForwardIter __result, - const input_iterator_tag &) { - _ForwardIter __cur = __result; - _STLP_TRY { - for ( ; __count > 0 ; --__count, ++__first, ++__cur) - _Param_Construct(&*__cur, *__first); - return pair<_InputIter, _ForwardIter>(__first, __cur); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__result, __cur)) - _STLP_RET_AFTER_THROW((pair<_InputIter, _ForwardIter>(__first, __cur))) -} - -# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline pair<_InputIter, _ForwardIterator> -__ucopy_n(_InputIter __first, _Size __count, - _ForwardIterator __result, - const forward_iterator_tag &) -{ return __ucopy_n(__first, __count, __result, input_iterator_tag()); } - -template -inline pair<_InputIter, _ForwardIterator> -__ucopy_n(_InputIter __first, _Size __count, - _ForwardIterator __result, - const bidirectional_iterator_tag &) -{ return __ucopy_n(__first, __count, __result, input_iterator_tag()); } -# endif - -template -inline pair<_RandomAccessIter, _ForwardIter> -__ucopy_n(_RandomAccessIter __first, _Size __count, _ForwardIter __result, - const random_access_iterator_tag &) { - _RandomAccessIter __last = __first + __count; - return pair<_RandomAccessIter, _ForwardIter>(__last, uninitialized_copy(__first, __last, __result)); -} - -// This is used internally in , which is extension itself. -template -inline pair<_InputIter, _ForwardIter> -__ucopy_n(_InputIter __first, _Size __count, _ForwardIter __result) -{ return _STLP_PRIV __ucopy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); } - -#if !defined (_STLP_NO_EXTENSIONS) - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline pair<_InputIter, _ForwardIter> -uninitialized_copy_n(_InputIter __first, _Size __count, _ForwardIter __result) -{ return _STLP_PRIV __ucopy_n(__first, __count, __result); } - -_STLP_MOVE_TO_PRIV_NAMESPACE - -#endif - -template -inline void __ufill(_ForwardIter __first, _ForwardIter __last, const _Tp& __x, _Distance*) { - _ForwardIter __cur = __first; - _STLP_TRY { - for ( ; __cur != __last; ++__cur) - _Param_Construct(&*__cur, __x); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__first, __cur)) -} - -template -inline void __ufill(_ForwardIter __first, _ForwardIter __last, - const _Tp& __x, const input_iterator_tag &, _Distance* __d) -{ __ufill(__first, __last, __x, __d); } - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline void __ufill(_ForwardIter __first, _ForwardIter __last, - const _Tp& __x, const forward_iterator_tag &, _Distance* __d) -{ __ufill(__first, __last, __x, __d); } - -template -inline void __ufill(_ForwardIter __first, _ForwardIter __last, - const _Tp& __x, const bidirectional_iterator_tag &, _Distance* __d) -{ __ufill(__first, __last, __x, __d); } -#endif - -template -inline void __ufill(_ForwardIter __first, _ForwardIter __last, - const _Tp& __x, const random_access_iterator_tag &, _Distance*) { - _ForwardIter __cur = __first; - _STLP_TRY { - for (_Distance __n = __last - __first; __n > 0; --__n, ++__cur) - _Param_Construct(&*__cur, __x); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__first, __cur)) -} - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline void uninitialized_fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __x) { - _STLP_PRIV __ufill(__first, __last, __x, - _STLP_ITERATOR_CATEGORY(__first, _ForwardIter), - _STLP_DISTANCE_TYPE(__first, _ForwardIter)); -} - -// Specialization: for one-byte types we can use memset. -inline void uninitialized_fill(unsigned char* __first, unsigned char* __last, - const unsigned char& __val) { - unsigned char __tmp = __val; - memset(__first, __tmp, __last - __first); -} -#if !defined (_STLP_NO_SIGNED_BUILTINS) -inline void uninitialized_fill(signed char* __first, signed char* __last, - const signed char& __val) { - signed char __tmp = __val; - memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first); -} -#endif -inline void uninitialized_fill(char* __first, char* __last, const char& __val) { - char __tmp = __val; - memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first); -} - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline _ForwardIter __ufill_n(_ForwardIter __first, _Size __n, const _Tp& __x) { - _ForwardIter __cur = __first; - _STLP_TRY { - for ( ; __n > 0; --__n, ++__cur) - _Param_Construct(&*__cur, __x); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__first, __cur)) - return __cur; -} - -template -inline _ForwardIter __ufill_n(_ForwardIter __first, _Size __n, const _Tp& __x, - const input_iterator_tag &) -{ return __ufill_n(__first, __n, __x); } - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline _ForwardIter __ufill_n(_ForwardIter __first, _Size __n, const _Tp& __x, - const forward_iterator_tag &) -{ return __ufill_n(__first, __n, __x); } - -template -inline _ForwardIter __ufill_n(_ForwardIter __first, _Size __n, const _Tp& __x, - const bidirectional_iterator_tag &) -{ return __ufill_n(__first, __n, __x); } -#endif - -template -inline _ForwardIter __uninitialized_fill_n(_ForwardIter __first, _Size __n, const _Tp& __x) { - _ForwardIter __last = __first + __n; - __ufill(__first, __last, __x, random_access_iterator_tag(), (ptrdiff_t*)0); - return __last; -} - -template -inline _ForwardIter __ufill_n(_ForwardIter __first, _Size __n, const _Tp& __x, - const random_access_iterator_tag &) -{ return __uninitialized_fill_n(__first, __n, __x); } - -/* __uninitialized_init is an internal algo to init a range with a value - * built using default constructor. It is only called with pointer as - * iterator. - */ -template -inline _ForwardIter __uinit_aux_aux(_ForwardIter __first, _Size __n, const _Tp& __val, - const __false_type& /*_HasDefaultZero*/) -{ return __uninitialized_fill_n(__first, __n, __val); } - -template -inline _ForwardIter __uinit_aux_aux(_ForwardIter __first, _Size __n, const _Tp& /* __val */, - const __true_type& /*_HasDefaultZero*/) { - memset((unsigned char*)__first, 0, __n * sizeof(_Tp)); - return __first + __n; -} - -template -inline _ForwardIter __uinit_aux(_ForwardIter __first, _Size __n, const _Tp&, - const __true_type& /*_TrivialInit*/) -{ return __first + __n; } - -template -inline _ForwardIter __uinit_aux(_ForwardIter __first, _Size __n, const _Tp& __val, - const __false_type& /*_TrivialInit*/) -{ return __uinit_aux_aux(__first, __n, __val, _HasDefaultZeroValue(__first)._Answer()); } - -template -inline _ForwardIter __uninitialized_init(_ForwardIter __first, _Size __n, const _Tp& __val) -{ return __uinit_aux(__first, __n, __val, _UseTrivialInit(__first)._Answer()); } - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline void -uninitialized_fill_n(_ForwardIter __first, _Size __n, const _Tp& __x) -{ _STLP_PRIV __ufill_n(__first, __n, __x, _STLP_ITERATOR_CATEGORY(__first, _ForwardIter)); } - -// Extensions: __uninitialized_copy_copy, __uninitialized_copy_fill, -// __uninitialized_fill_copy. - -// __uninitialized_copy_copy -// Copies [first1, last1) into [result, result + (last1 - first1)), and -// copies [first2, last2) into -// [result + (last1 - first1), result + (last1 - first1) + (last2 - first2)). - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -inline _ForwardIter -__uninitialized_copy_copy(_InputIter1 __first1, _InputIter1 __last1, - _InputIter2 __first2, _InputIter2 __last2, - _ForwardIter __result) { - _ForwardIter __new_result = uninitialized_copy(__first1, __last1, __result); - _STLP_TRY { - return uninitialized_copy(__first2, __last2, __new_result); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__result, __new_result)) - _STLP_RET_AFTER_THROW(__result) -} - -// __uninitialized_fill_copy -// Fills [result, mid) with x, and copies [first, last) into -// [mid, mid + (last - first)). -template -inline _ForwardIter -__uninitialized_fill_copy(_ForwardIter __result, _ForwardIter __mid, const _Tp& __x, - _InputIter __first, _InputIter __last) { - uninitialized_fill(__result, __mid, __x); - _STLP_TRY { - return uninitialized_copy(__first, __last, __mid); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__result, __mid)) - _STLP_RET_AFTER_THROW(__result) -} - -// __uninitialized_copy_fill -// Copies [first1, last1) into [first2, first2 + (last1 - first1)), and -// fills [first2 + (last1 - first1), last2) with x. -template -inline void -__uninitialized_copy_fill(_Iter __first1, _Iter __last1, _Iter __first2, _Iter __last2, - const _Tp& __x) { - _Iter __mid2 = uninitialized_copy(__first1, __last1, __first2); - _STLP_TRY { - uninitialized_fill(__mid2, __last2, __x); - } - _STLP_UNWIND(_STLP_STD::_Destroy_Range(__first2, __mid2)) -} - -/* __uninitialized_move: - * This function is used internaly and only with pointers as iterators. - */ -template -inline _ForwardIter -__uninitialized_move(_InputIter __first, _InputIter __last, _ForwardIter __result, - _TrivialUCpy __trivial_ucpy, const __false_type& /*_Movable*/) -{ return __ucopy_ptrs(__first, __last, __result, __trivial_ucpy); } - -template -_STLP_INLINE_LOOP -_ForwardIter -__uninitialized_move(_InputIter __first, _InputIter __last, _ForwardIter __result, - _TrivialUCpy , const __true_type& /*_Movable*/) { - //Move constructor should not throw so we do not need to take care of exceptions here. - for (ptrdiff_t __n = __last - __first ; __n > 0; --__n) { - _Move_Construct(&*__result, *__first); - ++__first; ++__result; - } - return __result; -} - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_UNINITIALIZED_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_unordered_map.h b/build/stlport/stlport/stl/_unordered_map.h deleted file mode 100644 index f2b017ddf986..000000000000 --- a/build/stlport/stlport/stl/_unordered_map.h +++ /dev/null @@ -1,443 +0,0 @@ -/* - * Copyright (c) 2004 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_UNORDERED_MAP_H -#define _STLP_INTERNAL_UNORDERED_MAP_H - -#ifndef _STLP_INTERNAL_HASHTABLE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//Specific iterator traits creation -_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMapTraitsT, traits) - -_STLP_BEGIN_TR1_NAMESPACE - -template ), - _STLP_DFL_TMPL_PARAM(_EqualKey, equal_to<_Key>), - _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_STLP_CONST _Key, _Tp) > -class unordered_map -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ -private: - typedef unordered_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> _Self; -public: - typedef _Key key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef pair<_STLP_CONST key_type, data_type> value_type; -private: - //Specific iterator traits creation - typedef _STLP_PRIV _UnorderedMapTraitsT _UnorderedMapTraits; - -public: - typedef hashtable _Ht; - - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - typedef typename _Ht::local_iterator local_iterator; - typedef typename _Ht::const_local_iterator const_local_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher hash_function() const { return _M_ht.hash_funct(); } - key_equal key_eq() const { return _M_ht.key_eq(); } - allocator_type get_allocator() const { return _M_ht.get_allocator(); } - -private: - _Ht _M_ht; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - explicit unordered_map(size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - unordered_map(__move_source<_Self> src) - : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {} -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - unordered_map(_InputIterator __f, _InputIterator __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } -#else - unordered_map(const value_type* __f, const value_type* __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - - unordered_map(const_iterator __f, const_iterator __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - - _Self& operator = (const _Self& __other) - { _M_ht = __other._M_ht; return *this; } - - size_type size() const { return _M_ht.size(); } - size_type max_size() const { return _M_ht.max_size(); } - bool empty() const { return _M_ht.empty(); } - void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - iterator begin() { return _M_ht.begin(); } - iterator end() { return _M_ht.end(); } - const_iterator begin() const { return _M_ht.begin(); } - const_iterator end() const { return _M_ht.end(); } - - pair insert(const value_type& __obj) - { return _M_ht.insert_unique(__obj); } - iterator insert(const_iterator /*__hint*/, const value_type& __obj) - { return _M_ht.insert_unique(__obj); } -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __f, _InputIterator __l) -#else - void insert(const value_type* __f, const value_type* __l) - { _M_ht.insert_unique(__f,__l); } - void insert(const_iterator __f, const_iterator __l) -#endif /*_STLP_MEMBER_TEMPLATES */ - { _M_ht.insert_unique(__f, __l); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_ht.find(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - _Tp& operator[](const _KT& __key) { - iterator __it = _M_ht.find(__key); - return (__it == _M_ht.end() ? - _M_ht._M_insert(value_type(__key, _STLP_DEFAULT_CONSTRUCTED(_Tp))).second : - (*__it).second ); - } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_ht.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) - { return _M_ht.equal_range(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const - { return _M_ht.equal_range(__key); } - - size_type erase(const key_type& __key) {return _M_ht.erase(__key); } - void erase(const_iterator __it) { _M_ht.erase(__it); } - void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); } - void clear() { _M_ht.clear(); } - - size_type bucket_count() const { return _M_ht.bucket_count(); } - size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } - size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); } - local_iterator begin(size_type __n) { return _M_ht.begin(__n); } - local_iterator end(size_type __n) { return _M_ht.end(__n); } - const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); } - const_local_iterator end(size_type __n) const { return _M_ht.end(__n); } - - float load_factor() const { return _M_ht.load_factor(); } - float max_load_factor() const { return _M_ht.max_load_factor(); } - void max_load_factor(float __val) { _M_ht.max_load_factor(__val); } - void rehash(size_type __hint) { _M_ht.rehash(__hint); } - -#if defined (__DMC__) // disable operator==(pair, pair) - bool operator==(const _Self&) const; -#endif -}; - -_STLP_END_NAMESPACE - -//Specific iterator traits creation -_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMultimapTraitsT, traits) - -_STLP_BEGIN_TR1_NAMESPACE - -template ), - _STLP_DFL_TMPL_PARAM(_EqualKey, equal_to<_Key>), - _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_STLP_CONST _Key, _Tp) > -class unordered_multimap -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ -private: - typedef unordered_multimap<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> _Self; -public: - typedef _Key key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef pair<_STLP_CONST key_type, data_type> value_type; -private: - //Specific iterator traits creation - typedef _STLP_PRIV _UnorderedMultimapTraitsT _UnorderedMultimapTraits; - -public: - typedef hashtable _Ht; - - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - typedef typename _Ht::local_iterator local_iterator; - typedef typename _Ht::const_local_iterator const_local_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher hash_function() const { return _M_ht.hash_funct(); } - key_equal key_eq() const { return _M_ht.key_eq(); } - allocator_type get_allocator() const { return _M_ht.get_allocator(); } - -private: - _Ht _M_ht; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - explicit unordered_multimap(size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - unordered_multimap(__move_source<_Self> src) - : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {} -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - unordered_multimap(_InputIterator __f, _InputIterator __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } -#else - unordered_multimap(const value_type* __f, const value_type* __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - - unordered_multimap(const_iterator __f, const_iterator __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - - _Self& operator = (const _Self& __other) - { _M_ht = __other._M_ht; return *this; } - - size_type size() const { return _M_ht.size(); } - size_type max_size() const { return _M_ht.max_size(); } - bool empty() const { return _M_ht.empty(); } - void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - iterator begin() { return _M_ht.begin(); } - iterator end() { return _M_ht.end(); } - const_iterator begin() const { return _M_ht.begin(); } - const_iterator end() const { return _M_ht.end(); } - - iterator insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } - iterator insert(const_iterator /*__hint*/, const value_type& __obj) - { return _M_ht.insert_equal(__obj); } -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __f, _InputIterator __l) -#else - void insert(const value_type* __f, const value_type* __l) - { _M_ht.insert_equal(__f,__l); } - void insert(const_iterator __f, const_iterator __l) -#endif /*_STLP_MEMBER_TEMPLATES */ - { _M_ht.insert_equal(__f, __l); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_ht.find(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_ht.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) - { return _M_ht.equal_range(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const - { return _M_ht.equal_range(__key); } - - size_type erase(const key_type& __key) {return _M_ht.erase(__key); } - void erase(const_iterator __it) { _M_ht.erase(__it); } - void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); } - void clear() { _M_ht.clear(); } - - size_type bucket_count() const { return _M_ht.bucket_count(); } - size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } - size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); } - local_iterator begin(size_type __n) { return _M_ht.begin(__n); } - local_iterator end(size_type __n) { return _M_ht.end(__n); } - const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); } - const_local_iterator end(size_type __n) const { return _M_ht.end(__n); } - - float load_factor() const { return _M_ht.load_factor(); } - float max_load_factor() const { return _M_ht.max_load_factor(); } - void max_load_factor(float __val) { _M_ht.max_load_factor(__val); } - void rehash(size_type __hint) { _M_ht.rehash(__hint); } -}; - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER unordered_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc> - -#include - -#undef _STLP_TEMPLATE_CONTAINER -#define _STLP_TEMPLATE_CONTAINER unordered_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc> - -#include - -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -_STLP_END_NAMESPACE - -// Specialization of insert_iterator so that it will work for unordered_map -// and unordered_multimap. - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# if !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits<_STLP_TR1 unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> > : - _STLP_PRIV __move_traits_help::_Ht> -{}; - -template -struct __move_traits<_STLP_TR1 unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> > : - _STLP_PRIV __move_traits_help::_Ht> -{}; -# endif - -template -class insert_iterator<_STLP_TR1 unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> > { -protected: - typedef _STLP_TR1 unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container; - _Container* container; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) : container(&__x) {} - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __val) { - container->insert(__val); - return *this; - } - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; - -template -class insert_iterator<_STLP_TR1 unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> > { -protected: - typedef _STLP_TR1 unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container; - _Container* container; - typename _Container::iterator iter; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) : container(&__x) {} - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __val) { - container->insert(__val); - return *this; - } - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; - -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_UNORDERED_MAP_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_unordered_set.h b/build/stlport/stlport/stl/_unordered_set.h deleted file mode 100644 index ef5f5fe78b77..000000000000 --- a/build/stlport/stlport/stl/_unordered_set.h +++ /dev/null @@ -1,418 +0,0 @@ -/* - * Copyright (c) 2004 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_UNORDERED_SET_H -#define _STLP_INTERNAL_UNORDERED_SET_H - -#ifndef _STLP_INTERNAL_HASHTABLE_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//Specific iterator traits creation -_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedSetTraitsT, Const_traits) - -_STLP_BEGIN_TR1_NAMESPACE - -template ), - _STLP_DFL_TMPL_PARAM(_EqualKey, equal_to<_Value>), - _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Value>) > -class unordered_set -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> _Self; - //Specific iterator traits creation - typedef _STLP_PRIV _UnorderedSetTraitsT<_Value> _UnorderedSetTraits; -public: - typedef hashtable<_Value, _Value, _HashFcn, - _UnorderedSetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht; -public: - typedef typename _Ht::key_type key_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - typedef typename _Ht::local_iterator local_iterator; - typedef typename _Ht::const_local_iterator const_local_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher hash_function() const { return _M_ht.hash_funct(); } - key_equal key_eq() const { return _M_ht.key_eq(); } - allocator_type get_allocator() const { return _M_ht.get_allocator(); } - -private: - _Ht _M_ht; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - explicit unordered_set(size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - unordered_set(__move_source<_Self> src) - : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {} -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - unordered_set(_InputIterator __f, _InputIterator __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } -#else - unordered_set(const value_type* __f, const value_type* __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - - unordered_set(const_iterator __f, const_iterator __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - - _Self& operator = (const _Self& __other) - { _M_ht = __other._M_ht; return *this; } - - size_type size() const { return _M_ht.size(); } - size_type max_size() const { return _M_ht.max_size(); } - bool empty() const { return _M_ht.empty(); } - void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - iterator begin() { return _M_ht.begin(); } - iterator end() { return _M_ht.end(); } - const_iterator begin() const { return _M_ht.begin(); } - const_iterator end() const { return _M_ht.end(); } - - pair insert(const value_type& __obj) - { return _M_ht.insert_unique(__obj); } - iterator insert(const_iterator /*__hint*/, const value_type& __obj) - { return _M_ht.insert_unique(__obj); } -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __f, _InputIterator __l) -#else - void insert(const_iterator __f, const_iterator __l) - {_M_ht.insert_unique(__f, __l); } - void insert(const value_type* __f, const value_type* __l) -#endif - { _M_ht.insert_unique(__f,__l); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_ht.find(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_ht.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) - { return _M_ht.equal_range(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const - { return _M_ht.equal_range(__key); } - - size_type erase(const key_type& __key) {return _M_ht.erase(__key); } - void erase(const_iterator __it) { _M_ht.erase(__it); } - void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); } - void clear() { _M_ht.clear(); } - - size_type bucket_count() const { return _M_ht.bucket_count(); } - size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } - size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); } - local_iterator begin(size_type __n) { return _M_ht.begin(__n); } - local_iterator end(size_type __n) { return _M_ht.end(__n); } - const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); } - const_local_iterator end(size_type __n) const { return _M_ht.end(__n); } - - float load_factor() const { return _M_ht.load_factor(); } - float max_load_factor() const { return _M_ht.max_load_factor(); } - void max_load_factor(float __val) { _M_ht.max_load_factor(__val); } - void rehash(size_type __hint) { _M_ht.rehash(__hint); } -}; - -_STLP_END_NAMESPACE - -//Specific iterator traits creation -_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMultisetTraitsT, Const_traits) - -_STLP_BEGIN_TR1_NAMESPACE - -template ), - _STLP_DFL_TMPL_PARAM(_EqualKey, equal_to<_Value>), - _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Value>) > -class unordered_multiset -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ - typedef unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Self; - //Specific iterator traits creation - typedef _STLP_PRIV _UnorderedMultisetTraitsT<_Value> _UnorderedMultisetTraits; -public: - typedef hashtable<_Value, _Value, _HashFcn, - _UnorderedMultisetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht; - - typedef typename _Ht::key_type key_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - typedef typename _Ht::local_iterator local_iterator; - typedef typename _Ht::const_local_iterator const_local_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher hash_function() const { return _M_ht.hash_funct(); } - key_equal key_eq() const { return _M_ht.key_eq(); } - allocator_type get_allocator() const { return _M_ht.get_allocator(); } - -private: - _Ht _M_ht; - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - explicit unordered_multiset(size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - unordered_multiset(__move_source<_Self> src) - : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {} -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - unordered_multiset(_InputIterator __f, _InputIterator __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } -#else - unordered_multiset(const value_type* __f, const value_type* __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - - unordered_multiset(const_iterator __f, const_iterator __l, - size_type __n = 0, const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } -#endif /*_STLP_MEMBER_TEMPLATES */ - - _Self& operator = (const _Self& __other) - { _M_ht = __other._M_ht; return *this; } - - size_type size() const { return _M_ht.size(); } - size_type max_size() const { return _M_ht.max_size(); } - bool empty() const { return _M_ht.empty(); } - void swap(_Self& hs) { _M_ht.swap(hs._M_ht); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - iterator begin() { return _M_ht.begin(); } - iterator end() { return _M_ht.end(); } - const_iterator begin() const { return _M_ht.begin(); } - const_iterator end() const { return _M_ht.end(); } - - iterator insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } - iterator insert(const_iterator /*__hint*/, const value_type& __obj) - { return _M_ht.insert_equal(__obj); } -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __f, _InputIterator __l) -#else - void insert(const value_type* __f, const value_type* __l) - { _M_ht.insert_equal(__f,__l); } - void insert(const_iterator __f, const_iterator __l) -#endif /*_STLP_MEMBER_TEMPLATES */ - { _M_ht.insert_equal(__f, __l); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) { return _M_ht.find(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const { return _M_ht.find(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_ht.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) - { return _M_ht.equal_range(__key); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const - { return _M_ht.equal_range(__key); } - - size_type erase(const key_type& __key) {return _M_ht.erase(__key); } - void erase(const_iterator __it) { _M_ht.erase(__it); } - void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); } - void clear() { _M_ht.clear(); } - - size_type bucket_count() const { return _M_ht.bucket_count(); } - size_type max_bucket_count() const { return _M_ht.max_bucket_count(); } - size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); } - local_iterator begin(size_type __n) { return _M_ht.begin(__n); } - local_iterator end(size_type __n) { return _M_ht.end(__n); } - const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); } - const_local_iterator end(size_type __n) const { return _M_ht.end(__n); } - - float load_factor() const { return _M_ht.load_factor(); } - float max_load_factor() const { return _M_ht.max_load_factor(); } - void max_load_factor(float __val) { _M_ht.max_load_factor(__val); } - void rehash(size_type __hint) { _M_ht.rehash(__hint); } -}; - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER unordered_set<_Value,_HashFcn,_EqualKey,_Alloc> - -#include - -#undef _STLP_TEMPLATE_CONTAINER -#define _STLP_TEMPLATE_CONTAINER unordered_multiset<_Value,_HashFcn,_EqualKey,_Alloc> -#include - -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -_STLP_END_NAMESPACE - -// Specialization of insert_iterator so that it will work for unordered_set -// and unordered_multiset. - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# if !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits<_STLP_TR1 unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> > : - _STLP_PRIV __move_traits_aux::_Ht> -{}; - -template -struct __move_traits<_STLP_TR1 unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > : - _STLP_PRIV __move_traits_aux::_Ht> -{}; -# endif - -template -class insert_iterator<_STLP_TR1 unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> > { -protected: - typedef _STLP_TR1 unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> _Container; - _Container* container; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) : container(&__x) {} - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __val) { - container->insert(__val); - return *this; - } - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; - -template -class insert_iterator<_STLP_TR1 unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > { -protected: - typedef _STLP_TR1 unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Container; - _Container* container; - typename _Container::iterator iter; -public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) : container(&__x) {} - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __val) { - container->insert(__val); - return *this; - } - insert_iterator<_Container>& operator*() { return *this; } - insert_iterator<_Container>& operator++() { return *this; } - insert_iterator<_Container>& operator++(int) { return *this; } -}; -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_INTERNAL_UNORDERED_SET_H */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/stl/_valarray.c b/build/stlport/stlport/stl/_valarray.c deleted file mode 100644 index ee534a9ac781..000000000000 --- a/build/stlport/stlport/stl/_valarray.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_VALARRAY_C -#define _STLP_VALARRAY_C - -#ifndef _STLP_VALARRAY_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template -_Valarray_bool valarray<_Tp>:: operator!() const { - _Valarray_bool __tmp(this->size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < this->size(); ++__i) - __tmp[__i] = !(*this)[__i]; - return __tmp; -} - -// Behavior is undefined if __x and *this have different sizes -template -valarray<_Tp>& valarray<_Tp>::operator=(const slice_array<_Tp>& __x) { - _STLP_ASSERT(__x._M_slice.size() == this->size()) - size_t __index = __x._M_slice.start(); - for (size_t __i = 0; - __i < __x._M_slice.size(); - ++__i, __index += __x._M_slice.stride()) - (*this)[__i] = __x._M_array[__index]; - return *this; -} - -template -valarray<_Tp> valarray<_Tp>::operator[](slice __slice) const { - valarray<_Tp> __tmp(__slice.size(), _NoInit()); - size_t __index = __slice.start(); - for (size_t __i = 0; - __i < __slice.size(); - ++__i, __index += __slice.stride()) - __tmp[__i] = (*this)[__index]; - return __tmp; -} - -template -bool _Gslice_Iter_tmpl<_Size>::_M_incr() { - size_t __dim = _M_indices.size() - 1; - ++_M_step; - for (;;) { - _M_1d_idx += _M_gslice._M_strides[__dim]; - if (++_M_indices[__dim] != _M_gslice._M_lengths[__dim]) - return true; - else if (__dim != 0) { - _M_1d_idx -= _M_gslice._M_strides[__dim] * _M_gslice._M_lengths[__dim]; - _M_indices[__dim] = 0; - --__dim; - } - else - return false; - } -} - -// Behavior is undefined if __x and *this have different sizes, or if -// __x was constructed from a degenerate gslice. -template -valarray<_Tp>& valarray<_Tp>::operator=(const gslice_array<_Tp>& __x) { - if (this->size() != 0) { - _Gslice_Iter __i(__x._M_gslice); - do - (*this)[__i._M_step] = __x._M_array[__i._M_1d_idx]; - while(__i._M_incr()); - } - return *this; -} - -template -valarray<_Tp> valarray<_Tp>::operator[](const gslice& __slice) const { - valarray<_Tp> __tmp(__slice._M_size(), _NoInit()); - if (__tmp.size() != 0) { - _Gslice_Iter __i(__slice); - do __tmp[__i._M_step] = (*this)[__i._M_1d_idx]; while(__i._M_incr()); - } - return __tmp; -} - -template -valarray<_Tp> valarray<_Tp>::operator[](const _Valarray_bool& __mask) const { - size_t _p_size = 0; - { - for (size_t __i = 0; __i < __mask.size(); ++__i) - if (__mask[__i]) ++_p_size; - } - - valarray<_Tp> __tmp(_p_size, _NoInit()); - size_t __idx = 0; - { - for (size_t __i = 0; __i < __mask.size(); ++__i) - if (__mask[__i]) __tmp[__idx++] = (*this)[__i]; - } - - return __tmp; -} - -template -valarray<_Tp>& valarray<_Tp>::operator=(const indirect_array<_Tp>& __x) { - _STLP_ASSERT(__x._M_addr.size() == this->size()) - for (size_t __i = 0; __i < __x._M_addr.size(); ++__i) - (*this)[__i] = __x._M_array[__x._M_addr[__i]]; - return *this; -} - -template -valarray<_Tp> -valarray<_Tp>::operator[](const _Valarray_size_t& __addr) const { - valarray<_Tp> __tmp(__addr.size(), _NoInit()); - for (size_t __i = 0; __i < __addr.size(); ++__i) - __tmp[__i] = (*this)[__addr[__i]]; - return __tmp; -} - -//---------------------------------------------------------------------- -// Other valarray noninline member functions - -// Shift and cshift - -template -valarray<_Tp> valarray<_Tp>::shift(int __n) const { - valarray<_Tp> __tmp(this->size()); - - if (__n >= 0) { - if (__n < this->size()) - copy(this->_M_first + __n, this->_M_first + this->size(), - __tmp._M_first); - } - else { - if (-__n < this->size()) - copy(this->_M_first, this->_M_first + this->size() + __n, - __tmp._M_first - __n); - } - return __tmp; -} - -template -valarray<_Tp> valarray<_Tp>::cshift(int __m) const { - valarray<_Tp> __tmp(this->size()); - - // Reduce __m to an equivalent number in the range [0, size()). We - // have to be careful with negative numbers, since the sign of a % b - // is unspecified when a < 0. - long __n = __m; - if (this->size() < (numeric_limits::max)()) - __n %= long(this->size()); - if (__n < 0) - __n += this->size(); - - copy(this->_M_first, this->_M_first + __n, - __tmp._M_first + (this->size() - __n)); - copy(this->_M_first + __n, this->_M_first + this->size(), - __tmp._M_first); - - return __tmp; -} - -_STLP_END_NAMESPACE - -#endif /* _STLP_VALARRAY_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_valarray.h b/build/stlport/stlport/stl/_valarray.h deleted file mode 100644 index cd9641ab4a66..000000000000 --- a/build/stlport/stlport/stl/_valarray.h +++ /dev/null @@ -1,1684 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_VALARRAY_H -#define _STLP_VALARRAY_H - -#ifndef _STLP_INTERNAL_CMATH -# include -#endif - -#ifndef _STLP_INTERNAL_NEW -# include -#endif - -#ifndef _STLP_INTERNAL_ALGO_H -# include -#endif - -#ifndef _STLP_INTERNAL_NUMERIC_H -# include -#endif - -#ifndef _STLP_INTERNAL_LIMITS -# include -#endif - -_STLP_BEGIN_NAMESPACE - -class slice; -class gslice; - -template class valarray; -typedef valarray _Valarray_bool; -typedef valarray _Valarray_size_t; - -template class slice_array; -template class gslice_array; -template class mask_array; -template class indirect_array; - -//---------------------------------------------------------------------- -// class valarray - -// Base class to handle memory allocation and deallocation. We can't just -// use vector<>, because vector would be unsuitable as an internal -// representation for valarray. - -template -struct _Valarray_base { - _Tp* _M_first; - size_t _M_size; - - _Valarray_base() : _M_first(0), _M_size(0) {} - _Valarray_base(size_t __n) : _M_first(0), _M_size(0) { _M_allocate(__n); } - ~_Valarray_base() { _M_deallocate(); } - - void _M_allocate(size_t __n) { - if (__n != 0) { - _M_first = __STATIC_CAST(_Tp*, __stl_new(__n * sizeof(_Tp))); - _M_size = __n; - } - else { - _M_first = 0; - _M_size = 0; - } - } - - void _M_deallocate() { - __stl_delete(_M_first); - _M_first = 0; - _M_size = 0; - } -}; - -template -class valarray : private _Valarray_base<_Tp> -{ - friend class gslice; - -public: - typedef _Tp value_type; - - // Basic constructors - valarray() : _Valarray_base<_Tp>() {} - explicit valarray(size_t __n) : _Valarray_base<_Tp>(__n) - { uninitialized_fill_n(this->_M_first, this->_M_size, _STLP_DEFAULT_CONSTRUCTED(value_type)); } - valarray(const value_type& __x, size_t __n) : _Valarray_base<_Tp>(__n) - { uninitialized_fill_n(this->_M_first, this->_M_size, __x); } - valarray(const value_type* __p, size_t __n) : _Valarray_base<_Tp>(__n) - { uninitialized_copy(__p, __p + __n, this->_M_first); } - valarray(const valarray<_Tp>& __x) : _Valarray_base<_Tp>(__x._M_size) { - uninitialized_copy(__x._M_first, __x._M_first + __x._M_size, - this->_M_first); - } - - // Constructors from auxiliary array types - valarray(const slice_array<_Tp>&); - valarray(const gslice_array<_Tp>&); - valarray(const mask_array<_Tp>&); - valarray(const indirect_array<_Tp>&); - - // Destructor - ~valarray() { _STLP_STD::_Destroy_Range(this->_M_first, this->_M_first + this->_M_size); } - - // Extension: constructor that doesn't initialize valarray elements to a - // specific value. This is faster for types such as int and double. -private: - void _M_initialize(const __true_type&) {} - void _M_initialize(const __false_type&) - { uninitialized_fill_n(this->_M_first, this->_M_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } - -public: - struct _NoInit {}; - valarray(size_t __n, _NoInit) : _Valarray_base<_Tp>(__n) { - typedef typename __type_traits<_Tp>::has_trivial_default_constructor _Is_Trivial; - _M_initialize(_Is_Trivial()); - } - -public: // Assignment - // Basic assignment. Note that 'x = y' is undefined if x.size() != y.size() - valarray<_Tp>& operator=(const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - if (this != &__x) - copy(__x._M_first, __x._M_first + __x._M_size, this->_M_first); - return *this; - } - - // Scalar assignment - valarray<_Tp>& operator=(const value_type& __x) { - fill_n(this->_M_first, this->_M_size, __x); - return *this; - } - - // Assignment of auxiliary array types - valarray<_Tp>& operator=(const slice_array<_Tp>&); - valarray<_Tp>& operator=(const gslice_array<_Tp>&); - valarray<_Tp>& operator=(const mask_array<_Tp>&); - valarray<_Tp>& operator=(const indirect_array<_Tp>&); - -public: // Element access - value_type operator[](size_t __n) const { - _STLP_ASSERT(__n < this->size()) - return this->_M_first[__n]; - } - value_type& operator[](size_t __n) { - _STLP_ASSERT(__n < this->size()) - return this->_M_first[__n]; - } - size_t size() const { return this->_M_size; } - -public: // Subsetting operations with auxiliary type - valarray<_Tp> operator[](slice) const; - slice_array<_Tp> operator[](slice); - valarray<_Tp> operator[](const gslice&) const; - gslice_array<_Tp> operator[](const gslice&); - valarray<_Tp> operator[](const _Valarray_bool&) const; - mask_array<_Tp> operator[](const _Valarray_bool&); - valarray<_Tp> operator[](const _Valarray_size_t&) const; - indirect_array<_Tp> operator[](const _Valarray_size_t&); - -public: // Unary operators. - valarray<_Tp> operator+() const { return *this; } - - valarray<_Tp> operator-() const { - valarray<_Tp> __tmp(this->size(), _NoInit()); - for (size_t __i = 0; __i < this->size(); ++__i) - __tmp[__i] = -(*this)[__i]; - return __tmp; - } - - valarray<_Tp> operator~() const { - valarray<_Tp> __tmp(this->size(), _NoInit()); - for (size_t __i = 0; __i < this->size(); ++__i) - __tmp[__i] = ~(*this)[__i]; - return __tmp; - } - - _Valarray_bool operator!() const; - -public: // Scalar computed assignment. - valarray<_Tp>& operator*= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] *= __x; - return *this; - } - - valarray<_Tp>& operator/= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] /= __x; - return *this; - } - - valarray<_Tp>& operator%= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] %= __x; - return *this; - } - - valarray<_Tp>& operator+= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] += __x; - return *this; - } - - valarray<_Tp>& operator-= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] -= __x; - return *this; - } - - valarray<_Tp>& operator^= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] ^= __x; - return *this; - } - - valarray<_Tp>& operator&= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] &= __x; - return *this; - } - - valarray<_Tp>& operator|= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] |= __x; - return *this; - } - - valarray<_Tp>& operator<<= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] <<= __x; - return *this; - } - - valarray<_Tp>& operator>>= (const value_type& __x) { - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] >>= __x; - return *this; - } - -public: // Array computed assignment. - valarray<_Tp>& operator*= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] *= __x[__i]; - return *this; - } - - valarray<_Tp>& operator/= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] /= __x[__i]; - return *this; - } - - valarray<_Tp>& operator%= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] %= __x[__i]; - return *this; - } - - valarray<_Tp>& operator+= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] += __x[__i]; - return *this; - } - - valarray<_Tp>& operator-= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] -= __x[__i]; - return *this; - } - - valarray<_Tp>& operator^= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] ^= __x[__i]; - return *this; - } - - valarray<_Tp>& operator&= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] &= __x[__i]; - return *this; - } - - valarray<_Tp>& operator|= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] |= __x[__i]; - return *this; - } - - valarray<_Tp>& operator<<= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] <<= __x[__i]; - return *this; - } - - valarray<_Tp>& operator>>= (const valarray<_Tp>& __x) { - _STLP_ASSERT(__x.size() == this->size()) - for (size_t __i = 0; __i < this->size(); ++__i) - (*this)[__i] >>= __x[__i]; - return *this; - } - -public: // Other member functions. - - // The result is undefined for zero-length arrays - value_type sum() const { - _STLP_ASSERT(this->size() != 0) - return accumulate(this->_M_first + 1, this->_M_first + this->_M_size, - (*this)[0]); - } - - // The result is undefined for zero-length arrays - value_type (min) () const { - _STLP_ASSERT(this->size() != 0) - return *min_element(this->_M_first + 0, this->_M_first + this->_M_size); - } - - value_type (max) () const { - _STLP_ASSERT(this->size() != 0) - return *max_element(this->_M_first + 0, this->_M_first + this->_M_size); - } - - valarray<_Tp> shift(int __n) const; - valarray<_Tp> cshift(int __n) const; - - valarray<_Tp> apply(value_type __f(value_type)) const { - valarray<_Tp> __tmp(this->size()); - transform(this->_M_first + 0, this->_M_first + this->_M_size, __tmp._M_first, - __f); - return __tmp; - } - valarray<_Tp> apply(value_type __f(const value_type&)) const { - valarray<_Tp> __tmp(this->size()); - transform(this->_M_first + 0, this->_M_first + this->_M_size, __tmp._M_first, - __f); - return __tmp; - } - - void resize(size_t __n, value_type __x = value_type()) { - _STLP_STD::_Destroy_Range(this->_M_first, this->_M_first + this->_M_size); - _Valarray_base<_Tp>::_M_deallocate(); - _Valarray_base<_Tp>::_M_allocate(__n); - uninitialized_fill_n(this->_M_first, this->_M_size, __x); - } -}; - -//---------------------------------------------------------------------- -// valarray non-member functions. - -// Binary arithmetic operations between two arrays. Behavior is -// undefined if the two arrays do not have the same length. - -template -inline valarray<_Tp> _STLP_CALL operator*(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] * __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator/(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] / __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator%(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] % __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator+(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] + __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator-(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] - __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator^(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] ^ __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator&(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] & __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator|(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] | __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator<<(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] << __y[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator>>(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] >> __y[__i]; - return __tmp; -} - -// Binary arithmetic operations between an array and a scalar. - -template -inline valarray<_Tp> _STLP_CALL operator*(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] * __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator*(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c * __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator/(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] / __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator/(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c / __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator%(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] % __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator%(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c % __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator+(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] + __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator+(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c + __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator-(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] - __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator-(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c - __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator^(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] ^ __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator^(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c ^ __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator&(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] & __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator&(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c & __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator|(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] | __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator|(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c | __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator<<(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] << __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator<<(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c << __x[__i]; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator>>(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] >> __c; - return __tmp; -} - -template -inline valarray<_Tp> _STLP_CALL operator>>(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c >> __x[__i]; - return __tmp; -} - -// Binary logical operations between two arrays. Behavior is undefined -// if the two arrays have different lengths. Note that operator== does -// not do what you might at first expect. - -template -inline _Valarray_bool _STLP_CALL operator==(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] == __y[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator<(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] < __y[__i]; - return __tmp; -} - -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE - -template -inline _Valarray_bool _STLP_CALL operator!=(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] != __y[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator>(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] > __y[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator<=(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] <= __y[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator>=(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] >= __y[__i]; - return __tmp; -} - -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */ -// fbp : swap ? - -template -inline _Valarray_bool _STLP_CALL operator&&(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] && __y[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator||(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - _STLP_ASSERT(__x.size() == __y.size()) - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] || __y[__i]; - return __tmp; -} - -// Logical operations between an array and a scalar. - -template -inline _Valarray_bool _STLP_CALL operator==(const valarray<_Tp>& __x, const _Tp& __c) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] == __c; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator==(const _Tp& __c, const valarray<_Tp>& __x) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c == __x[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator!=(const valarray<_Tp>& __x, const _Tp& __c) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] != __c; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator!=(const _Tp& __c, const valarray<_Tp>& __x) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c != __x[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator<(const valarray<_Tp>& __x, const _Tp& __c) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] < __c; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator<(const _Tp& __c, const valarray<_Tp>& __x) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c < __x[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator>(const valarray<_Tp>& __x, const _Tp& __c) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] > __c; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator>(const _Tp& __c, const valarray<_Tp>& __x) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c > __x[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator<=(const valarray<_Tp>& __x, const _Tp& __c) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] <= __c; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator<=(const _Tp& __c, const valarray<_Tp>& __x) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c <= __x[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator>=(const valarray<_Tp>& __x, const _Tp& __c) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] >= __c; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator>=(const _Tp& __c, const valarray<_Tp>& __x) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c >= __x[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator&&(const valarray<_Tp>& __x, const _Tp& __c) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] && __c; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator&&(const _Tp& __c, const valarray<_Tp>& __x) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c && __x[__i]; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator||(const valarray<_Tp>& __x, const _Tp& __c) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __x[__i] || __c; - return __tmp; -} - -template -inline _Valarray_bool _STLP_CALL operator||(const _Tp& __c, const valarray<_Tp>& __x) { - _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = __c || __x[__i]; - return __tmp; -} - -// valarray "transcendentals" (the list includes abs and sqrt, which, -// of course, are not transcendental). - -template -inline valarray<_Tp> abs(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::abs(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> acos(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::acos(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> asin(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::asin(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> atan(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::atan(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> atan2(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::atan2(__x[__i], __y[__i]); - return __tmp; -} - -template -inline valarray<_Tp> atan2(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::atan2(__x[__i], __c); - return __tmp; -} - -template -inline valarray<_Tp> atan2(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::atan2(__c, __x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> cos(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::cos(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> cosh(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::cosh(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> exp(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::exp(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> log(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::log(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> log10(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::log10(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> pow(const valarray<_Tp>& __x, - const valarray<_Tp>& __y) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::pow(__x[__i], __y[__i]); - return __tmp; -} - -template -inline valarray<_Tp> pow(const valarray<_Tp>& __x, const _Tp& __c) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::pow(__x[__i], __c); - return __tmp; -} - -template -inline valarray<_Tp> pow(const _Tp& __c, const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::pow(__c, __x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> sin(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::sin(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> sinh(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::sinh(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> sqrt(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::sqrt(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> tan(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::tan(__x[__i]); - return __tmp; -} - -template -inline valarray<_Tp> tanh(const valarray<_Tp>& __x) { - typedef typename valarray<_Tp>::_NoInit _NoInit; - valarray<_Tp> __tmp(__x.size(), _NoInit()); - for (size_t __i = 0; __i < __x.size(); ++__i) - __tmp[__i] = ::tanh(__x[__i]); - return __tmp; -} - -//---------------------------------------------------------------------- -// slice and slice_array - -class slice { -public: - slice() : _M_start(0), _M_length(0), _M_stride(0) {} - slice(size_t __start, size_t __length, size_t __stride) - : _M_start(__start), _M_length(__length), _M_stride(__stride) - {} - __TRIVIAL_DESTRUCTOR(slice) - - size_t start() const { return _M_start; } - size_t size() const { return _M_length; } - size_t stride() const { return _M_stride; } - -private: - size_t _M_start; - size_t _M_length; - size_t _M_stride; -}; - -template -class slice_array { - friend class valarray<_Tp>; -public: - typedef _Tp value_type; - - void operator=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] = __x[__i]; - } - - void operator*=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] *= __x[__i]; - } - - void operator/=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] /= __x[__i]; - } - - void operator%=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] %= __x[__i]; - } - - void operator+=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] += __x[__i]; - } - - void operator-=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] -= __x[__i]; - } - - void operator^=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] ^= __x[__i]; - } - - void operator&=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] &= __x[__i]; - } - - void operator|=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] |= __x[__i]; - } - - void operator<<=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] <<= __x[__i]; - } - - void operator>>=(const valarray& __x) const { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] >>= __x[__i]; - } - - void operator=(const value_type& __c) /*const could be const but standard says NO (26.3.5.4-1)*/ { - size_t __index = _M_slice.start(); - for (size_t __i = 0; - __i < _M_slice.size(); - ++__i, __index += _M_slice.stride()) - _M_array[__index] = __c; - } - - // C++ Standard defect 253, copy constructor must be public. - slice_array(const slice_array &__x) - : _M_slice(__x._M_slice), _M_array(__x._M_array) - {} - - ~slice_array() {} - -private: - slice_array(const slice& __slice, valarray<_Tp> &__array) - : _M_slice(__slice), _M_array(__array) - {} - - slice _M_slice; - valarray<_Tp>& _M_array; - -private: - // Disable default constructor and assignment - slice_array(); - slice_array& operator=(const slice_array&); -}; - -// valarray member functions dealing with slice and slice_array - -template -inline valarray<_Tp>::valarray(const slice_array<_Tp>& __x) - : _Valarray_base<_Tp>(__x._M_slice.size()) { - typedef typename __type_traits<_Tp>::has_trivial_default_constructor - _Is_Trivial; - _M_initialize(_Is_Trivial()); - *this = __x; -} - - -template -inline slice_array<_Tp> valarray<_Tp>::operator[](slice __slice) -{ return slice_array<_Tp>(__slice, *this); } - -//---------------------------------------------------------------------- -// gslice and gslice_array - -template -struct _Gslice_Iter_tmpl; - -class gslice { - friend struct _Gslice_Iter_tmpl; -public: - gslice() : _M_start(0), _M_lengths(), _M_strides() {} - gslice(size_t __start, - const _Valarray_size_t& __lengths, const _Valarray_size_t& __strides) - : _M_start(__start), _M_lengths(__lengths), _M_strides(__strides) - {} - __TRIVIAL_DESTRUCTOR(gslice) - - size_t start() const { return _M_start; } - _Valarray_size_t size() const { return _M_lengths; } - _Valarray_size_t stride() const { return _M_strides; } - - // Extension: check for an empty gslice. - bool _M_empty() const { return _M_lengths.size() == 0; } - - // Extension: number of indices this gslice represents. (For a degenerate - // gslice, they're not necessarily all distinct.) - size_t _M_size() const { - return !this->_M_empty() - ? accumulate(_M_lengths._M_first + 1, - _M_lengths._M_first + _M_lengths._M_size, - _M_lengths[0], - multiplies()) - : 0; - } - -# ifndef __HP_aCC -private: -# endif - - size_t _M_start; - _Valarray_size_t _M_lengths; - _Valarray_size_t _M_strides; -}; - -// This is not an STL iterator. It is constructed from a gslice, and it -// steps through the gslice indices in sequence. See 23.3.6 of the C++ -// standard, paragraphs 2-3, for an explanation of the sequence. At -// each step we get two things: the ordinal (i.e. number of steps taken), -// and the one-dimensional index. - -template -struct _Gslice_Iter_tmpl { - _Gslice_Iter_tmpl(const gslice& __gslice) - : _M_step(0), _M_1d_idx(__gslice.start()), - _M_indices(size_t(0), __gslice._M_lengths.size()), - _M_gslice(__gslice) - {} - - bool _M_done() const { return _M_indices[0] == _M_gslice._M_lengths[0]; } - - bool _M_incr(); - - _Size _M_step; - _Size _M_1d_idx; - - valarray<_Size> _M_indices; - const gslice& _M_gslice; -}; - -typedef _Gslice_Iter_tmpl _Gslice_Iter; - -template -class gslice_array { - friend class valarray<_Tp>; -public: - typedef _Tp value_type; - - void operator= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] = __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator*= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] *= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator/= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] /= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator%= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] %= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator+= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] += __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator-= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] -= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator^= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] ^= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator&= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] &= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator|= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] |= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator<<= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] <<= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator>>= (const valarray& __x) const { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] >>= __x[__i._M_step]; while(__i._M_incr()); - } - } - - void operator= (const value_type& __c) /*const could be const but standard says NO (26.3.7.4-1)*/ { - if (!_M_gslice._M_empty()) { - _Gslice_Iter __i(_M_gslice); - do _M_array[__i._M_1d_idx] = __c; while(__i._M_incr()); - } - } - - // C++ Standard defect 253, copy constructor must be public. - gslice_array(const gslice_array& __x) - : _M_gslice(__x._M_gslice), _M_array(__x._M_array) - {} - - ~gslice_array() {} - -private: - gslice_array(const gslice &__gslice, valarray<_Tp> &__array) - : _M_gslice(__gslice), _M_array(__array) - {} - - gslice _M_gslice; - valarray& _M_array; - -private: - // Disable default constructor and assignment - gslice_array(); - void operator=(const gslice_array<_Tp>&); -}; - -// valarray member functions dealing with gslice and gslice_array. Note -// that it is illegal (behavior is undefined) to construct a gslice_array -// from a degenerate gslice. - -template -inline valarray<_Tp>::valarray(const gslice_array<_Tp>& __x) - : _Valarray_base<_Tp>(__x._M_gslice._M_size()) { - typedef typename __type_traits<_Tp>::has_trivial_default_constructor - _Is_Trivial; - _M_initialize(_Is_Trivial()); - *this = __x; -} - -template -inline gslice_array<_Tp> valarray<_Tp>::operator[](const gslice& __slice) -{ return gslice_array<_Tp>(__slice, *this); } - - -//---------------------------------------------------------------------- -// mask_array - -template -class mask_array { - friend class valarray<_Tp>; -public: - typedef _Tp value_type; - - void operator=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] = __x[__idx++]; - } - - void operator*=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] *= __x[__idx++]; - } - - void operator/=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] /= __x[__idx++]; - } - - void operator%=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] %= __x[__idx++]; - } - - void operator+=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] += __x[__idx++]; - } - - void operator-=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] -= __x[__idx++]; - } - - void operator^=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] ^= __x[__idx++]; - } - - void operator&=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] &= __x[__idx++]; - } - - void operator|=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] |= __x[__idx++]; - } - - void operator<<=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] <<= __x[__idx++]; - } - - void operator>>=(const valarray& __x) const { - size_t __idx = 0; - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] >>= __x[__idx++]; - } - - void operator=(const value_type& __c) const { - for (size_t __i = 0; __i < _M_array.size(); ++__i) - if (_M_mask[__i]) _M_array[__i] = __c; - } - - // Extension: number of true values in the mask - size_t _M_num_true() const { - size_t __result = 0; - for (size_t __i = 0; __i < _M_mask.size(); ++__i) - if (_M_mask[__i]) ++__result; - return __result; - } - - // C++ Standard defect 253, copy constructor must be public. - mask_array(const mask_array& __x) - : _M_mask(__x._M_mask), _M_array(__x._M_array) - {} - - ~mask_array() {} - -private: - mask_array(const _Valarray_bool& __mask, valarray<_Tp>& __array) - : _M_mask(__mask), _M_array(__array) - {} - _Valarray_bool _M_mask; - valarray<_Tp>& _M_array; - -private: - // Disable default constructor and assignment - mask_array(); - void operator=(const mask_array<_Tp>&); -}; - -// valarray member functions dealing with mask_array - -template -inline valarray<_Tp>::valarray(const mask_array<_Tp>& __x) - : _Valarray_base<_Tp>(__x._M_num_true()) { - typedef typename __type_traits<_Tp>::has_trivial_default_constructor - _Is_Trivial; - _M_initialize(_Is_Trivial()); - *this = __x; -} - -// Behavior is undefined if __x._M_num_true() != this->size() -template -inline valarray<_Tp>& valarray<_Tp>::operator=(const mask_array<_Tp>& __x) { - size_t __idx = 0; - for (size_t __i = 0; __i < __x._M_array.size(); ++__i) - if (__x._M_mask[__i]) (*this)[__idx++] = __x._M_array[__i]; - return *this; -} - -template -inline mask_array<_Tp> valarray<_Tp>::operator[](const _Valarray_bool& __mask) { - _STLP_ASSERT(__mask.size() == this->size()) - return mask_array<_Tp>(__mask, *this); -} - -//---------------------------------------------------------------------- -// indirect_array - -template -class indirect_array { - friend class valarray<_Tp>; -public: - typedef _Tp value_type; - - void operator=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] = __x[__i]; - } - - void operator*=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] *= __x[__i]; - } - - void operator/=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] /= __x[__i]; - } - - void operator%=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] %= __x[__i]; - } - - void operator+=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] += __x[__i]; - } - - void operator-=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] -= __x[__i]; - } - - void operator^=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] ^= __x[__i]; - } - - void operator&=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] &= __x[__i]; - } - - void operator|=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] |= __x[__i]; - } - - void operator<<=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] <<= __x[__i]; - } - - void operator>>=(const valarray& __x) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] >>= __x[__i]; - } - - void operator=(const value_type& __c) const { - for (size_t __i = 0; __i < _M_addr.size(); ++__i) - _M_array[_M_addr[__i]] = __c; - } - - // C++ Standard defect 253, copy constructor must be public. - indirect_array(const indirect_array& __x) - : _M_addr(__x._M_addr), _M_array(__x._M_array) - {} - - ~indirect_array() {} - -private: - indirect_array(const _Valarray_size_t& __addr, valarray<_Tp>& __array) - : _M_addr(__addr), _M_array(__array) - {} - - _Valarray_size_t _M_addr; - valarray<_Tp>& _M_array; - -private: - // Disable default constructor and assignment - indirect_array(); - void operator=(const indirect_array<_Tp>&); -}; - -// valarray member functions dealing with indirect_array - -template -inline valarray<_Tp>::valarray(const indirect_array<_Tp>& __x) - : _Valarray_base<_Tp>(__x._M_addr.size()) { - typedef typename __type_traits<_Tp>::has_trivial_default_constructor - _Is_Trivial; - _M_initialize(_Is_Trivial()); - *this = __x; -} - - -template -inline indirect_array<_Tp> -valarray<_Tp>::operator[](const _Valarray_size_t& __addr) -{ return indirect_array<_Tp>(__addr, *this); } - -_STLP_END_NAMESPACE - -# if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -# endif - -#endif /* _STLP_VALARRAY */ - - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_vector.c b/build/stlport/stlport/stl/_vector.c deleted file mode 100644 index 705f786006fc..000000000000 --- a/build/stlport/stlport/stl/_vector.c +++ /dev/null @@ -1,242 +0,0 @@ -/* - * - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_VECTOR_C -#define _STLP_VECTOR_C - -#if !defined (_STLP_INTERNAL_VECTOR_H) -# include -#endif - -#include - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void _Vector_base<_Tp,_Alloc>::_M_throw_length_error() const -{ __stl_throw_length_error("vector"); } - -template -void _Vector_base<_Tp, _Alloc>::_M_throw_out_of_range() const -{ __stl_throw_out_of_range("vector"); } - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define vector _STLP_PTR_IMPL_NAME(vector) -#elif defined (_STLP_DEBUG) -# define vector _STLP_NON_DBG_NAME(vector) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -# define __iterator__ _Tp* -#else -# define __iterator__ _STLP_TYPENAME_ON_RETURN_TYPE vector<_Tp, _Alloc>::iterator -#endif - -template -void vector<_Tp, _Alloc>::reserve(size_type __n) { - if (capacity() < __n) { - if (max_size() < __n) { - this->_M_throw_length_error(); - } - - const size_type __old_size = size(); - pointer __tmp; - if (this->_M_start) { - __tmp = _M_allocate_and_copy(__n, this->_M_start, this->_M_finish); - _M_clear(); - } else { - __tmp = this->_M_end_of_storage.allocate(__n, __n); - } - _M_set(__tmp, __tmp + __old_size, __tmp + __n); - } -} - -template -void vector<_Tp, _Alloc>::_M_insert_overflow_aux(pointer __pos, const _Tp& __x, const __false_type& /*DO NOT USE!!*/, - size_type __fill_len, bool __atend ) { - typedef typename __type_traits<_Tp>::has_trivial_copy_constructor _TrivialUCopy; -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - size_type __len = _M_compute_next_size(__fill_len); - pointer __new_start = this->_M_end_of_storage.allocate(__len, __len); - pointer __new_finish = __new_start; - _STLP_TRY { - __new_finish = _STLP_PRIV __uninitialized_move(this->_M_start, __pos, __new_start, _TrivialUCopy(), _Movable()); - // handle insertion - if (__fill_len == 1) { - _Copy_Construct(__new_finish, __x); - ++__new_finish; - } else - __new_finish = _STLP_PRIV __uninitialized_fill_n(__new_finish, __fill_len, __x); - if (!__atend) - __new_finish = _STLP_PRIV __uninitialized_move(__pos, this->_M_finish, __new_finish, _TrivialUCopy(), _Movable()); // copy remainder - } - _STLP_UNWIND((_STLP_STD::_Destroy_Range(__new_start,__new_finish), - this->_M_end_of_storage.deallocate(__new_start,__len))) - _M_clear_after_move(); - _M_set(__new_start, __new_finish, __new_start + __len); -} - -template -void vector<_Tp, _Alloc>::_M_insert_overflow(pointer __pos, const _Tp& __x, const __true_type& /*_TrivialCopy*/, - size_type __fill_len, bool __atend ) { - size_type __len = _M_compute_next_size(__fill_len); - pointer __new_start = this->_M_end_of_storage.allocate(__len, __len); - pointer __new_finish = __STATIC_CAST(pointer, _STLP_PRIV __copy_trivial(this->_M_start, __pos, __new_start)); - // handle insertion - __new_finish = _STLP_PRIV __fill_n(__new_finish, __fill_len, __x); - if (!__atend) - __new_finish = __STATIC_CAST(pointer, _STLP_PRIV __copy_trivial(__pos, this->_M_finish, __new_finish)); // copy remainder - _M_clear(); - _M_set(__new_start, __new_finish, __new_start + __len); -} - -template -void vector<_Tp, _Alloc>::_M_fill_insert_aux(iterator __pos, size_type __n, - const _Tp& __x, const __true_type& /*_Movable*/) { - if (_M_is_inside(__x)) { - _Tp __x_copy = __x; - _M_fill_insert_aux(__pos, __n, __x_copy, __true_type()); - return; - } - iterator __src = this->_M_finish - 1; - iterator __dst = __src + __n; - for (; __src >= __pos; --__dst, --__src) { - _STLP_STD::_Move_Construct(__dst, *__src); - _STLP_STD::_Destroy_Moved(__src); - } - _STLP_PRIV __uninitialized_fill_n(__pos, __n, __x); - this->_M_finish += __n; -} - -template -void vector<_Tp, _Alloc>::_M_fill_insert_aux (iterator __pos, size_type __n, - const _Tp& __x, const __false_type& /*_Movable*/) { - typedef typename __type_traits<_Tp>::has_trivial_copy_constructor _TrivialUCopy; - typedef typename __type_traits<_Tp>::has_trivial_assignment_operator _TrivialCopy; - //Here self referencing needs to be checked even for non movable types. - if (_M_is_inside(__x)) { - _Tp __x_copy = __x; - _M_fill_insert_aux(__pos, __n, __x_copy, __false_type()); - return; - } - const size_type __elems_after = this->_M_finish - __pos; - pointer __old_finish = this->_M_finish; - if (__elems_after > __n) { - _STLP_PRIV __ucopy_ptrs(this->_M_finish - __n, this->_M_finish, this->_M_finish, _TrivialUCopy()); - this->_M_finish += __n; - _STLP_PRIV __copy_backward_ptrs(__pos, __old_finish - __n, __old_finish, _TrivialCopy()); - _STLP_STD::fill(__pos, __pos + __n, __x); - } else { - this->_M_finish = _STLP_PRIV __uninitialized_fill_n(this->_M_finish, __n - __elems_after, __x); - _STLP_PRIV __ucopy_ptrs(__pos, __old_finish, this->_M_finish, _TrivialUCopy()); - this->_M_finish += __elems_after; - _STLP_STD::fill(__pos, __old_finish, __x); - } -} - -template -void vector<_Tp, _Alloc>::_M_fill_insert(iterator __pos, - size_type __n, const _Tp& __x) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - if (__n != 0) { - if (size_type(this->_M_end_of_storage._M_data - this->_M_finish) >= __n) { - _M_fill_insert_aux(__pos, __n, __x, _Movable()); - } else { - typedef typename __type_traits<_Tp>::has_trivial_assignment_operator _TrivialCopy; - _M_insert_overflow(__pos, __x, _TrivialCopy(), __n); - } - } -} - -template -vector<_Tp, _Alloc>& vector<_Tp, _Alloc>::operator = (const vector<_Tp, _Alloc>& __x) { - typedef typename __type_traits<_Tp>::has_trivial_assignment_operator _TrivialCopy; - typedef typename __type_traits<_Tp>::has_trivial_copy_constructor _TrivialUCopy; - if (&__x != this) { - const size_type __xlen = __x.size(); - if (__xlen > capacity()) { - size_type __len = __xlen; - pointer __tmp = _M_allocate_and_copy(__len, __CONST_CAST(const_pointer, __x._M_start) + 0, - __CONST_CAST(const_pointer, __x._M_finish) + 0); - _M_clear(); - this->_M_start = __tmp; - this->_M_end_of_storage._M_data = this->_M_start + __len; - } else if (size() >= __xlen) { - pointer __i = _STLP_PRIV __copy_ptrs(__CONST_CAST(const_pointer, __x._M_start) + 0, - __CONST_CAST(const_pointer, __x._M_finish) + 0, this->_M_start, _TrivialCopy()); - _STLP_STD::_Destroy_Range(__i, this->_M_finish); - } else { - _STLP_PRIV __copy_ptrs(__CONST_CAST(const_pointer, __x._M_start), - __CONST_CAST(const_pointer, __x._M_start) + size(), this->_M_start, _TrivialCopy()); - _STLP_PRIV __ucopy_ptrs(__CONST_CAST(const_pointer, __x._M_start) + size(), - __CONST_CAST(const_pointer, __x._M_finish) + 0, this->_M_finish, _TrivialUCopy()); - } - this->_M_finish = this->_M_start + __xlen; - } - return *this; -} - -template -void vector<_Tp, _Alloc>::_M_fill_assign(size_t __n, const _Tp& __val) { - if (__n > capacity()) { - vector<_Tp, _Alloc> __tmp(__n, __val, get_allocator()); - __tmp.swap(*this); - } else if (__n > size()) { - fill(begin(), end(), __val); - this->_M_finish = _STLP_PRIV __uninitialized_fill_n(this->_M_finish, __n - size(), __val); - } else - erase(_STLP_PRIV __fill_n(begin(), __n, __val), end()); -} - -template -__iterator__ -vector<_Tp, _Alloc>::insert(iterator __pos, const _Tp& __x) { - size_type __n = __pos - begin(); - _M_fill_insert(__pos, 1, __x); - return begin() + __n; -} - -#undef __iterator__ - -#if defined (vector) -# undef vector -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_VECTOR_C */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/_vector.h b/build/stlport/stlport/stl/_vector.h deleted file mode 100644 index ed243ef3749c..000000000000 --- a/build/stlport/stlport/stl/_vector.h +++ /dev/null @@ -1,773 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_VECTOR_H -#define _STLP_INTERNAL_VECTOR_H - -#ifndef _STLP_INTERNAL_ALGOBASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -#ifndef _STLP_INTERNAL_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_UNINITIALIZED_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -// The vector base class serves one purpose, its constructor and -// destructor allocate (but don't initialize) storage. This makes -// exception safety easier. - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -class _Vector_base { -public: - typedef _Vector_base<_Tp, _Alloc> _Self; - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef _Alloc allocator_type; - typedef _Tp* pointer; - typedef _STLP_alloc_proxy _AllocProxy; - - _Vector_base(const _Alloc& __a) - : _M_start(0), _M_finish(0), _M_end_of_storage(__a, 0) {} - - _Vector_base(size_t __n, const _Alloc& __a) - : _M_start(0), _M_finish(0), _M_end_of_storage(__a, 0) { - _M_start = _M_end_of_storage.allocate(__n, __n); - _M_finish = _M_start; - _M_end_of_storage._M_data = _M_start + __n; - _STLP_MPWFIX_TRY _STLP_MPWFIX_CATCH - } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _Vector_base(__move_source<_Self> src) - : _M_start(src.get()._M_start), _M_finish(src.get()._M_finish), - _M_end_of_storage(__move_source<_AllocProxy>(src.get()._M_end_of_storage)) { - //Set the source as empty: - src.get()._M_finish = src.get()._M_end_of_storage._M_data = src.get()._M_start = 0; - } -#endif - - ~_Vector_base() { - if (_M_start != _STLP_DEFAULT_CONSTRUCTED(pointer)) - _M_end_of_storage.deallocate(_M_start, _M_end_of_storage._M_data - _M_start); - } - -protected: - void _STLP_FUNCTION_THROWS _M_throw_length_error() const; - void _STLP_FUNCTION_THROWS _M_throw_out_of_range() const; - - pointer _M_start; - pointer _M_finish; - _AllocProxy _M_end_of_storage; -}; - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define vector _STLP_PTR_IMPL_NAME(vector) -#elif defined (_STLP_DEBUG) -# define vector _STLP_NON_DBG_NAME(vector) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template ) > -class vector : protected _STLP_PRIV _Vector_base<_Tp, _Alloc> -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (vector) - , public __stlport_class > -#endif -{ -private: - typedef _STLP_PRIV _Vector_base<_Tp, _Alloc> _Base; - typedef vector<_Tp, _Alloc> _Self; -public: - _STLP_FORCE_ALLOCATORS(_Tp, _Alloc) - typedef typename _Base::allocator_type allocator_type; - - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type* iterator; - typedef const value_type* const_iterator; - - typedef value_type& reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef random_access_iterator_tag _Iterator_category; - - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR((const allocator_type&)this->_M_end_of_storage, _Tp); } - -private: -#if defined (_STLP_NO_MOVE_SEMANTIC) - typedef __false_type _Movable; -#endif - - // handles insertions on overflow - void _M_insert_overflow_aux(pointer __pos, const _Tp& __x, const __false_type& /*_Movable*/, - size_type __fill_len, bool __atend); - void _M_insert_overflow_aux(pointer __pos, const _Tp& __x, const __true_type& /*_Movable*/, - size_type __fill_len, bool __atend) { - //We need to take care of self referencing here: - if (_M_is_inside(__x)) { - value_type __x_copy = __x; - _M_insert_overflow_aux(__pos, __x_copy, __false_type(), __fill_len, __atend); - return; - } - _M_insert_overflow_aux(__pos, __x, __false_type(), __fill_len, __atend); - } - - void _M_insert_overflow(pointer __pos, const _Tp& __x, const __false_type& /*_TrivialCopy*/, - size_type __fill_len, bool __atend = false) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - _M_insert_overflow_aux(__pos, __x, _Movable(), __fill_len, __atend); - } - void _M_insert_overflow(pointer __pos, const _Tp& __x, const __true_type& /*_TrivialCopy*/, - size_type __fill_len, bool __atend = false); - void _M_range_check(size_type __n) const { - if (__n >= size_type(this->_M_finish - this->_M_start)) - this->_M_throw_out_of_range(); - } - - size_type _M_compute_next_size(size_type __n) { - const size_type __size = size(); - if (__n > max_size() - __size) - this->_M_throw_length_error(); - size_type __len = __size + (max)(__n, __size); - if (__len > max_size() || __len < __size) - __len = max_size(); // overflow - return __len; - } - -public: - iterator begin() { return this->_M_start; } - const_iterator begin() const { return this->_M_start; } - iterator end() { return this->_M_finish; } - const_iterator end() const { return this->_M_finish; } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - size_type size() const { return size_type(this->_M_finish - this->_M_start); } - size_type max_size() const { - size_type __vector_max_size = size_type(-1) / sizeof(_Tp); - typename allocator_type::size_type __alloc_max_size = this->_M_end_of_storage.max_size(); - return (__alloc_max_size < __vector_max_size)?__alloc_max_size:__vector_max_size; - } - - size_type capacity() const { return size_type(this->_M_end_of_storage._M_data - this->_M_start); } - bool empty() const { return this->_M_start == this->_M_finish; } - - reference operator[](size_type __n) { return *(begin() + __n); } - const_reference operator[](size_type __n) const { return *(begin() + __n); } - - reference front() { return *begin(); } - const_reference front() const { return *begin(); } - reference back() { return *(end() - 1); } - const_reference back() const { return *(end() - 1); } - - reference at(size_type __n) { _M_range_check(__n); return (*this)[__n]; } - const_reference at(size_type __n) const { _M_range_check(__n); return (*this)[__n]; } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit vector(const allocator_type& __a = allocator_type()) -#else - vector() - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(allocator_type()) {} - vector(const allocator_type& __a) -#endif - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__a) {} - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) -private: - //We always call _M_initialize with only 1 parameter. Default parameter - //is used to allow explicit instanciation of vector with types with no - //default constructor. - void _M_initialize(size_type __n, const _Tp& __val = _STLP_DEFAULT_CONSTRUCTED(_Tp)) - { this->_M_finish = _STLP_PRIV __uninitialized_init(this->_M_start, __n, __val); } -public: - explicit vector(size_type __n) - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__n, allocator_type()) - { _M_initialize(__n); } - vector(size_type __n, const _Tp& __val, const allocator_type& __a = allocator_type()) -#else - explicit vector(size_type __n) - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__n, allocator_type()) - { this->_M_finish = _STLP_PRIV __uninitialized_init(this->_M_start, __n, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } - vector(size_type __n, const _Tp& __val) - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__n, allocator_type()) - { this->_M_finish = _STLP_PRIV __uninitialized_fill_n(this->_M_start, __n, __val); } - vector(size_type __n, const _Tp& __val, const allocator_type& __a) -#endif - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__n, __a) - { this->_M_finish = _STLP_PRIV __uninitialized_fill_n(this->_M_start, __n, __val); } - - vector(const _Self& __x) - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__x.size(), __x.get_allocator()) { - typedef typename __type_traits<_Tp>::has_trivial_copy_constructor _TrivialUCopy; - this->_M_finish = _STLP_PRIV __ucopy_ptrs(__x.begin(), __x.end(), this->_M_start, _TrivialUCopy()); - } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - vector(__move_source<_Self> src) - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__move_source<_Base>(src.get())) - {} -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) -private: - template - void _M_initialize_aux(_Integer __n, _Integer __val, - const __true_type& /*_IsIntegral*/) { - size_type __real_n = __n; - this->_M_start = this->_M_end_of_storage.allocate(__n, __real_n); - this->_M_end_of_storage._M_data = this->_M_start + __real_n; - this->_M_finish = _STLP_PRIV __uninitialized_fill_n(this->_M_start, __n, __val); - } - - template - void _M_initialize_aux(_InputIterator __first, _InputIterator __last, - const __false_type& /*_IsIntegral*/) - { _M_range_initialize(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator)); } - -public: - // Check whether it's an integral type. If so, it's not an iterator. - template - vector(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL ) - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__a) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_aux(__first, __last, _Integral()); - } - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - vector(_InputIterator __first, _InputIterator __last) - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(allocator_type()) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_initialize_aux(__first, __last, _Integral()); - } -# endif /* _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS */ - -#else /* _STLP_MEMBER_TEMPLATES */ - vector(const _Tp* __first, const _Tp* __last, - const allocator_type& __a = allocator_type()) - : _STLP_PRIV _Vector_base<_Tp, _Alloc>(__last - __first, __a) { - typedef typename __type_traits<_Tp>::has_trivial_copy_constructor _TrivialUCopy; - this->_M_finish = _STLP_PRIV __ucopy_ptrs(__first, __last, this->_M_start, _TrivialUCopy()); - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - //As the vector container is a back insert oriented container it - //seems rather logical to destroy elements in reverse order. - ~vector() { _STLP_STD::_Destroy_Range(rbegin(), rend()); } - - _Self& operator=(const _Self& __x); - - void reserve(size_type __n); - - // assign(), a generalized assignment member function. Two - // versions: one that takes a count, and one that takes a range. - // The range version is a member template, so we dispatch on whether - // or not the type is an integer. - - void assign(size_type __n, const _Tp& __val) { _M_fill_assign(__n, __val); } - void _M_fill_assign(size_type __n, const _Tp& __val); - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_assign_aux(_ForwardIter __first, _ForwardIter __last, const forward_iterator_tag &) { -#else - void assign(const_iterator __first, const_iterator __last) { - typedef const_iterator _ForwardIter; -#endif - const size_type __len = _STLP_STD::distance(__first, __last); - if (__len > capacity()) { - size_type __n = __len; - iterator __tmp = _M_allocate_and_copy(__n, __first, __last); - _M_clear(); - _M_set(__tmp, __tmp + __len, __tmp + __n); - } - else if (size() >= __len) { - iterator __new_finish = copy(__first, __last, this->_M_start); - _STLP_STD::_Destroy_Range(__new_finish, this->_M_finish); - this->_M_finish = __new_finish; - } - else { - _ForwardIter __mid = __first; - _STLP_STD::advance(__mid, size()); - _STLP_STD::copy(__first, __mid, this->_M_start); - this->_M_finish = _STLP_STD::uninitialized_copy(__mid, __last, this->_M_finish); - } - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_assign_aux(_InputIter __first, _InputIter __last, - const input_iterator_tag &) { - iterator __cur = begin(); - for ( ; __first != __last && __cur != end(); ++__cur, ++__first) - *__cur = *__first; - if (__first == __last) - erase(__cur, end()); - else - insert(end(), __first, __last); - } - - template - void _M_assign_dispatch(_Integer __n, _Integer __val, - const __true_type& /*_IsIntegral*/) - { _M_fill_assign(__n, __val); } - - template - void _M_assign_dispatch(_InputIter __first, _InputIter __last, - const __false_type& /*_IsIntegral*/) - { _M_assign_aux(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); } - - template - void assign(_InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } -#endif - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_back(const _Tp& __x = _STLP_DEFAULT_CONSTRUCTED(_Tp)) { -#else - void push_back(const _Tp& __x) { -#endif - if (this->_M_finish != this->_M_end_of_storage._M_data) { - _Copy_Construct(this->_M_finish, __x); - ++this->_M_finish; - } - else { - typedef typename __type_traits<_Tp>::has_trivial_assignment_operator _TrivialCopy; - _M_insert_overflow(this->_M_finish, __x, _TrivialCopy(), 1, true); - } - } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos, const _Tp& __x = _STLP_DEFAULT_CONSTRUCTED(_Tp)); -#else - iterator insert(iterator __pos, const _Tp& __x); -#endif - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - void push_back() { push_back(_STLP_DEFAULT_CONSTRUCTED(_Tp)); } - iterator insert(iterator __pos) { return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif - - void swap(_Self& __x) { - _STLP_STD::swap(this->_M_start, __x._M_start); - _STLP_STD::swap(this->_M_finish, __x._M_finish); - this->_M_end_of_storage.swap(__x._M_end_of_storage); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -private: - void _M_fill_insert_aux (iterator __pos, size_type __n, const _Tp& __x, const __true_type& /*_Movable*/); - void _M_fill_insert_aux (iterator __pos, size_type __n, const _Tp& __x, const __false_type& /*_Movable*/); - void _M_fill_insert (iterator __pos, size_type __n, const _Tp& __x); - - bool _M_is_inside(const value_type& __x) const { - return (&__x >= this->_M_start && &__x < this->_M_finish); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_range_insert_realloc(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, -#else - void _M_range_insert_realloc(iterator __pos, - const_iterator __first, const_iterator __last, -#endif - size_type __n) { - typedef typename __type_traits<_Tp>::has_trivial_copy_constructor _TrivialUCopy; -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - size_type __len = _M_compute_next_size(__n); - pointer __new_start = this->_M_end_of_storage.allocate(__len, __len); - pointer __new_finish = __new_start; - _STLP_TRY { - __new_finish = _STLP_PRIV __uninitialized_move(this->_M_start, __pos, __new_start, _TrivialUCopy(), _Movable()); - __new_finish = uninitialized_copy(__first, __last, __new_finish); - __new_finish = _STLP_PRIV __uninitialized_move(__pos, this->_M_finish, __new_finish, _TrivialUCopy(), _Movable()); - } - _STLP_UNWIND((_STLP_STD::_Destroy_Range(__new_start,__new_finish), - this->_M_end_of_storage.deallocate(__new_start,__len))) - _M_clear_after_move(); - _M_set(__new_start, __new_finish, __new_start + __len); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_range_insert_aux(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, -#else - void _M_range_insert_aux(iterator __pos, - const_iterator __first, const_iterator __last, -#endif - size_type __n, const __true_type& /*_Movable*/) { - iterator __src = this->_M_finish - 1; - iterator __dst = __src + __n; - for (; __src >= __pos; --__dst, --__src) { - _STLP_STD::_Move_Construct(__dst, *__src); - _STLP_STD::_Destroy_Moved(__src); - } - uninitialized_copy(__first, __last, __pos); - this->_M_finish += __n; - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_range_insert_aux(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, -#else - void _M_range_insert_aux(iterator __pos, - const_iterator __first, const_iterator __last, -#endif - size_type __n, const __false_type& /*_Movable*/) { - typedef typename __type_traits<_Tp>::has_trivial_copy_constructor _TrivialUCopy; - typedef typename __type_traits<_Tp>::has_trivial_assignment_operator _TrivialCopy; - const size_type __elems_after = this->_M_finish - __pos; - pointer __old_finish = this->_M_finish; - if (__elems_after > __n) { - _STLP_PRIV __ucopy_ptrs(this->_M_finish - __n, this->_M_finish, this->_M_finish, _TrivialUCopy()); - this->_M_finish += __n; - _STLP_PRIV __copy_backward_ptrs(__pos, __old_finish - __n, __old_finish, _TrivialCopy()); - copy(__first, __last, __pos); - } - else { -#if defined ( _STLP_MEMBER_TEMPLATES ) - _ForwardIterator __mid = __first; - _STLP_STD::advance(__mid, __elems_after); -#else - const_pointer __mid = __first + __elems_after; -#endif - uninitialized_copy(__mid, __last, this->_M_finish); - this->_M_finish += __n - __elems_after; - _STLP_PRIV __ucopy_ptrs(__pos, __old_finish, this->_M_finish, _TrivialUCopy()); - this->_M_finish += __elems_after; - copy(__first, __mid, __pos); - } /* elems_after */ - } - - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, - const __true_type&) - { _M_fill_insert(__pos, (size_type) __n, (_Tp) __val); } - - template - void _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - const __false_type&) - { _M_range_insert(__pos, __first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator)); } - -public: - // Check whether it's an integral type. If so, it's not an iterator. - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_insert_dispatch(__pos, __first, __last, _Integral()); - } - -private: - template - void _M_range_insert(iterator __pos, - _InputIterator __first, _InputIterator __last, - const input_iterator_tag &) { - for ( ; __first != __last; ++__first) { - __pos = insert(__pos, *__first); - ++__pos; - } - } - - template - void _M_range_insert(iterator __pos, - _ForwardIterator __first, _ForwardIterator __last, - const forward_iterator_tag &) { -#else -public: - void insert(iterator __pos, - const_iterator __first, const_iterator __last) { -#endif -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - /* This method do not check self referencing. - * Standard forbids it, checked by the debug mode. - */ - if (__first != __last) { - size_type __n = _STLP_STD::distance(__first, __last); - - if (size_type(this->_M_end_of_storage._M_data - this->_M_finish) >= __n) { - _M_range_insert_aux(__pos, __first, __last, __n, _Movable()); - } - else { - _M_range_insert_realloc(__pos, __first, __last, __n); - } - } - } - -public: - void insert (iterator __pos, size_type __n, const _Tp& __x) - { _M_fill_insert(__pos, __n, __x); } - - void pop_back() { - --this->_M_finish; - _STLP_STD::_Destroy(this->_M_finish); - } - -private: - iterator _M_erase(iterator __pos, const __true_type& /*_Movable*/) { - _STLP_STD::_Destroy(__pos); - iterator __dst = __pos, __src = __dst + 1; - iterator __end = end(); - for (; __src != __end; ++__dst, ++__src) { - _STLP_STD::_Move_Construct(__dst, *__src); - _STLP_STD::_Destroy_Moved(__src); - } - this->_M_finish = __dst; - return __pos; - } - iterator _M_erase(iterator __pos, const __false_type& /*_Movable*/) { - if (__pos + 1 != end()) { - typedef typename __type_traits<_Tp>::has_trivial_assignment_operator _TrivialCopy; - _STLP_PRIV __copy_ptrs(__pos + 1, this->_M_finish, __pos, _TrivialCopy()); - } - --this->_M_finish; - _STLP_STD::_Destroy(this->_M_finish); - return __pos; - } - iterator _M_erase(iterator __first, iterator __last, const __true_type& /*_Movable*/) { - iterator __dst = __first, __src = __last; - iterator __end = end(); - for (; __dst != __last && __src != __end; ++__dst, ++__src) { - _STLP_STD::_Destroy(__dst); - _STLP_STD::_Move_Construct(__dst, *__src); - } - if (__dst != __last) { - //There is more elements to erase than element to move: - _STLP_STD::_Destroy_Range(__dst, __last); - _STLP_STD::_Destroy_Moved_Range(__last, __end); - } - else { - //There is more element to move than element to erase: - for (; __src != __end; ++__dst, ++__src) { - _STLP_STD::_Destroy_Moved(__dst); - _STLP_STD::_Move_Construct(__dst, *__src); - } - _STLP_STD::_Destroy_Moved_Range(__dst, __end); - } - this->_M_finish = __dst; - return __first; - } - iterator _M_erase(iterator __first, iterator __last, const __false_type& /*_Movable*/) { - typedef typename __type_traits<_Tp>::has_trivial_assignment_operator _TrivialCopy; - pointer __i = _STLP_PRIV __copy_ptrs(__last, this->_M_finish, __first, _TrivialCopy()); - _STLP_STD::_Destroy_Range(__i, this->_M_finish); - this->_M_finish = __i; - return __first; - } - -public: - iterator erase(iterator __pos) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - return _M_erase(__pos, _Movable()); - } - iterator erase(iterator __first, iterator __last) { -#if !defined (_STLP_NO_MOVE_SEMANTIC) - typedef typename __move_traits<_Tp>::implemented _Movable; -#endif - if (__first == __last) - return __first; - return _M_erase(__first, __last, _Movable()); - } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const _Tp& __x = _STLP_DEFAULT_CONSTRUCTED(_Tp)) { -#else - void resize(size_type __new_size, const _Tp& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - if (__new_size < size()) - erase(begin() + __new_size, end()); - else - insert(end(), __new_size - size(), __x); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size) { resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void clear() { - erase(begin(), end()); - } - -private: - void _M_clear() { - _STLP_STD::_Destroy_Range(rbegin(), rend()); - this->_M_end_of_storage.deallocate(this->_M_start, this->_M_end_of_storage._M_data - this->_M_start); - } - - void _M_clear_after_move() { - _STLP_STD::_Destroy_Moved_Range(rbegin(), rend()); - this->_M_end_of_storage.deallocate(this->_M_start, this->_M_end_of_storage._M_data - this->_M_start); - } - - void _M_set(pointer __s, pointer __f, pointer __e) { - this->_M_start = __s; - this->_M_finish = __f; - this->_M_end_of_storage._M_data = __e; - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - pointer _M_allocate_and_copy(size_type& __n, - _ForwardIterator __first, _ForwardIterator __last) -#else /* _STLP_MEMBER_TEMPLATES */ - pointer _M_allocate_and_copy(size_type& __n, - const_pointer __first, const_pointer __last) -#endif /* _STLP_MEMBER_TEMPLATES */ - { - pointer __result = this->_M_end_of_storage.allocate(__n, __n); - _STLP_TRY { - uninitialized_copy(__first, __last, __result); - return __result; - } - _STLP_UNWIND(this->_M_end_of_storage.deallocate(__result, __n)) - _STLP_RET_AFTER_THROW(__result) - } - - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void _M_range_initialize(_InputIterator __first, _InputIterator __last, - const input_iterator_tag &) { - for ( ; __first != __last; ++__first) - push_back(*__first); - } - // This function is only called by the constructor. - template - void _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, - const forward_iterator_tag &) { - size_type __n = _STLP_STD::distance(__first, __last); - this->_M_start = this->_M_end_of_storage.allocate(__n, __n); - this->_M_end_of_storage._M_data = this->_M_start + __n; - this->_M_finish = uninitialized_copy(__first, __last, this->_M_start); - } -#endif /* _STLP_MEMBER_TEMPLATES */ -}; - -#if defined (vector) -# undef vector -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -_STLP_END_NAMESPACE - -#if !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# include -#endif - -//We define the bool specialization before the debug interfave -//to benefit of the debug version of vector even for the bool -//specialization. -#if !defined (_STLP_NO_BOOL) || !defined (_STLP_NO_EXTENSIONS) -# if !defined (_STLP_INTERNAL_BVECTOR_H) -# include -# endif -#endif - -#if defined (_STLP_DEBUG) -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if !defined (_STLP_NO_BOOL) && !defined (_STLP_NO_EXTENSIONS) -// This typedef is non-standard. It is provided for backward compatibility. -typedef vector > bit_vector; -#endif - -#define _STLP_TEMPLATE_HEADER template -#define _STLP_TEMPLATE_CONTAINER vector<_Tp, _Alloc> -#include -#undef _STLP_TEMPLATE_CONTAINER -#undef _STLP_TEMPLATE_HEADER - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# if !defined (_STLP_NO_MOVE_SEMANTIC) -template -struct __move_traits > { - typedef __true_type implemented; - typedef typename __move_traits<_Alloc>::complete complete; -}; -# endif - -# if !defined (_STLP_DEBUG) -template -struct _DefaultZeroValue > -{ typedef typename __type_traits<_Alloc>::has_trivial_default_constructor _Ret; }; -# endif - -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -_STLP_END_NAMESPACE - -#endif /* _STLP_VECTOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/boost_type_traits.h b/build/stlport/stlport/stl/boost_type_traits.h deleted file mode 100644 index ae3a3f61d907..000000000000 --- a/build/stlport/stlport/stl/boost_type_traits.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * - * Copyright (c) 2004 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_BOOST_TYPE_TRAITS_H -#define _STLP_BOOST_TYPE_TRAITS_H - -#ifndef BOOST_CONFIG_SUFFIX_HPP -# ifdef BOOST_CONFIG_HPP -# undef BOOST_CONFIG_HPP -# endif -# include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* - * This file mostly wraps boost type_traits in the STLport type_traits. - * When checking a type traits like trivial assign operator for instance - * both the boost value and STLport values has to be taken into account - * as we don't know what the user might have prefer, specializing the boost - * type traits or the STLport one. - */ -_STLP_BEGIN_NAMESPACE - -template struct _IsRef { - enum { _Is = ::boost::is_reference<_Tp>::value }; - typedef typename __bool2type<_Is>::_Ret _Ret; -}; - -template struct _IsPtr { - enum { is_pointer = ::boost::is_pointer<_Tp>::value }; - typedef typename __bool2type::_Ret _Ret; -}; - -template struct _IsIntegral { - enum { is_integral = ::boost::is_integral<_Tp>::value }; - typedef typename __bool2type::_Ret _Ret; -}; - -template struct _IsRational { - enum { is_float = ::boost::is_float<_Tp>::value }; - typedef typename __bool2type::_Ret _Ret; -}; - -template -struct __type_traits { - enum { trivial_constructor = ::boost::has_trivial_constructor<_Tp>::value }; - typedef typename __bool2type::_Ret has_trivial_default_constructor; - - enum { trivial_copy = ::boost::has_trivial_copy<_Tp>::value }; - typedef typename __bool2type::_Ret has_trivial_copy_constructor; - - enum { trivial_assign = ::boost::has_trivial_assign<_Tp>::value }; - typedef typename __bool2type::_Ret has_trivial_assignment_operator; - - enum { trivial_destructor = ::boost::has_trivial_destructor<_Tp>::value }; - typedef typename __bool2type::_Ret has_trivial_destructor; - - enum { pod = ::boost::is_pod<_Tp>::value }; - typedef typename __bool2type::_Ret is_POD_type; -}; - -template -struct _TrivialCopy { - typedef typename ::boost::remove_cv<_Tp1>::type uncv1; - typedef typename ::boost::remove_cv<_Tp2>::type uncv2; - - enum { same = ::boost::is_same::value }; - typedef typename __bool2type::_Ret _Same; - - enum { boost_trivial_assign = ::boost::has_trivial_assign::value }; - typedef typename __bool2type::_Ret _BoostTrivialAssign; - typedef typename __type_traits::has_trivial_assignment_operator _STLPTrivialAssign; - typedef typename _Lor2<_BoostTrivialAssign, _STLPTrivialAssign>::_Ret _TrivialAssign; - - typedef typename _Land2<_Same, _TrivialAssign>::_Ret _Type; - static _Type _Answer() { return _Type(); } -}; - -template -struct _TrivialUCopy { - typedef typename ::boost::remove_cv<_Tp1>::type uncv1; - typedef typename ::boost::remove_cv<_Tp2>::type uncv2; - - enum { same = ::boost::is_same::value }; - typedef typename __bool2type::_Ret _Same; - - enum { boost_trivial_copy = ::boost::has_trivial_copy::value }; - typedef typename __bool2type::_Ret _BoostTrivialCopy; - typedef typename __type_traits::has_trivial_copy_constructor _STLPTrivialCopy; - typedef typename _Lor2<_BoostTrivialCopy, _STLPTrivialCopy>::_Ret _TrivialCopy; - - typedef typename _Land2<_Same, _TrivialCopy>::_Ret _Type; - static _Type _Answer() { return _Type(); } -}; - -template -struct _DefaultZeroValue { - enum { is_integral = ::boost::is_integral<_Tp>::value }; - typedef typename __bool2type::_Ret _IsIntegral; - enum { is_float = ::boost::is_float<_Tp>::value }; - typedef typename __bool2type::_Ret _IsFloat; - enum { is_pointer = ::boost::is_pointer<_Tp>::value }; - typedef typename __bool2type::_Ret _IsPointer; - - typedef typename _Lor3<_IsIntegral, _IsFloat, _IsPointer>::_Ret _Ret; -}; - -template -struct _TrivialInit { - typedef typename ::boost::remove_cv<_Tp>::type uncv; - - enum { boost_trivial_constructor = ::boost::has_trivial_constructor::value }; - typedef typename __bool2type::_Ret _BoostTrivialInit; - typedef typename __type_traits::has_trivial_default_constructor _STLPTrivialInit; - typedef typename _Lor2<_BoostTrivialInit, _STLPTrivialInit>::_Ret _Tr1; - - typedef typename _DefaultZeroValue<_Tp>::_Ret _Tr2; - typedef typename _Not<_Tr2>::_Ret _Tr3; - - typedef typename _Land2<_Tr1, _Tr3>::_Ret _Ret; - static _Ret _Answer() { return _Ret(); } -}; - -_STLP_END_NAMESPACE - -#endif /* _STLP_BOOST_TYPE_TRAITS_H */ diff --git a/build/stlport/stlport/stl/c_locale.h b/build/stlport/stlport/stl/c_locale.h deleted file mode 100644 index cadd2bc10237..000000000000 --- a/build/stlport/stlport/stl/c_locale.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_C_LOCALE_H -#define _STLP_C_LOCALE_H - -/* - * Implementation dependent definitions. - * Beware: This header is not a purely internal header, it is also included - * from the outside world when building the STLport library. So this header - * should not reference internal headers (stlport/stl/_*.h) directly. - */ -#if defined (__sgi) -# if defined (ROOT_65) /* IRIX 6.5.x */ -# include -# include -# include -# include -# else /* IRIX pre-6.5 */ -# include -# include -# if !defined(_SIZE_T) && !defined(_SIZE_T_) -# define _SIZE_T -# if (_MIPS_SZLONG == 32) -typedef unsigned int size_t; -# endif -# if (_MIPS_SZLONG == 64) -typedef unsigned long size_t; -# endif -# endif -# if !defined (_WCHAR_T) -# define _WCHAR_T -# if (_MIPS_SZLONG == 32) -typedef long wchar_t; -# endif -# if (_MIPS_SZLONG == 64) -typedef __int32_t wchar_t; -# endif -# endif /* _WCHAR_T */ -# if !defined (_WINT_T) -# define _WINT_T -# if (_MIPS_SZLONG == 32) -typedef long wint_t; -# endif -# if (_MIPS_SZLONG == 64) -typedef __int32_t wint_t; -# endif -# endif /* _WINT_T */ -# if !defined (_MBSTATE_T) -# define _MBSTATE_T -/* _MSC_VER check is here for historical reason and seems wrong as it is the macro defined - * by Microsoft compilers to give their version. But we are in a SGI platform section so it - * is weird. However _MSC_VER might also be a SGI compiler macro so we keep it this way.*/ -# if defined (_MSC_VER) -typedef int mbstate_t; -# else -typedef char mbstate_t; -# endif -# endif /* _MBSTATE_T */ -# endif /* ROOT65 */ -#elif defined (_STLP_USE_GLIBC) -# include -#endif - -/* - * GENERAL FRAMEWORK - */ - -/* - * Opaque types, implementation (if there is one) depends - * on platform localisation API. - */ -struct _Locale_ctype; -struct _Locale_codecvt; -struct _Locale_numeric; -struct _Locale_time; -struct _Locale_collate; -struct _Locale_monetary; -struct _Locale_messages; - -/* - Bitmask macros. -*/ - -/* - * For narrow characters, we expose the lookup table interface. - */ - -#if defined (_STLP_USE_GLIBC) -/* This section uses macros defined in the gnu libc ctype.h header */ -# define _Locale_CNTRL _IScntrl -# define _Locale_UPPER _ISupper -# define _Locale_LOWER _ISlower -# define _Locale_DIGIT _ISdigit -# define _Locale_XDIGIT _ISxdigit -# define _Locale_PUNCT _ISpunct -# define _Locale_SPACE _ISspace -# define _Locale_PRINT _ISprint -# define _Locale_ALPHA _ISalpha -#else -/* Default values based on C++ Standard 22.2.1. - * Under Windows the localisation implementation take care of mapping its - * mask values to those internal values. For other platforms without real - * localization support we are free to use the most suitable values.*/ -# define _Locale_SPACE 0x0001 -# define _Locale_PRINT 0x0002 -# define _Locale_CNTRL 0x0004 -# define _Locale_UPPER 0x0008 -# define _Locale_LOWER 0x0010 -# define _Locale_ALPHA 0x0020 -# define _Locale_DIGIT 0x0040 -# define _Locale_PUNCT 0x0080 -# define _Locale_XDIGIT 0x0100 -#endif - -#endif /* _STLP_C_LOCALE_H */ diff --git a/build/stlport/stlport/stl/char_traits.h b/build/stlport/stlport/stl/char_traits.h deleted file mode 100644 index f004a704924b..000000000000 --- a/build/stlport/stlport/stl/char_traits.h +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_CHAR_TRAITS_H -#define _STLP_CHAR_TRAITS_H - -// Define char_traits - -#ifndef _STLP_INTERNAL_CSTDDEF -# include -#endif - -#ifndef _STLP_INTERNAL_CSTRING -# include -#endif - -#if defined (__unix) -# include // For off_t -#endif /* __unix */ - -#if defined (__BORLANDC__) -# include -# include -# include <_stddef.h> -# include -#endif - -#ifndef _STLP_INTERNAL_CONSTRUCT_H -# include -#endif - -#ifndef _STLP_INTERNAL_CWCHAR -# include -#endif - -_STLP_BEGIN_NAMESPACE - -template class allocator; - -#define _STLP_NULL_CHAR_INIT(_ChT) _STLP_DEFAULT_CONSTRUCTED(_ChT) - -#if defined(_STLP_WCE) -typedef long streamoff; -#elif defined (_STLP_WIN32) -# if defined (_STLP_LONG_LONG) && !defined (__CYGWIN__) -//The Win32 file io API support 64 bits access so streamoff and streamsize -//has to reflect that. Do not change the stringbuf behavior. -typedef _STLP_LONG_LONG streamoff; -# else -typedef ptrdiff_t streamoff; -# endif -#else // __unix -# ifdef _STLP_USE_DEFAULT_FILE_OFFSET -typedef off_t streamoff; -# elif defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE) /* || defined(__USE_FILE_OFFSET64) */ \ - /* || (defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)) */ /* || defined (__sgi) && defined (_STLP_HAS_NO_NEW_C_HEADERS) */ -typedef off64_t streamoff; -# else -typedef off_t streamoff; -# endif -#endif /* __unix */ - -#if defined (_STLP_WIN32) -typedef streamoff streamsize; -#else -typedef ptrdiff_t streamsize; -#endif - -// Class fpos, which represents a position within a file. (The C++ -// standard calls for it to be defined in . This implementation -// moves it to , which is included by .) -template class fpos { -public: // From table 88 of the C++ standard. - fpos(streamoff __pos) : _M_pos(__pos), _M_st(_STLP_NULL_CHAR_INIT(_StateT)) {} - fpos() : _M_pos(0), _M_st(_STLP_NULL_CHAR_INIT(_StateT)) {} - - operator streamoff() const { return _M_pos; } - - bool operator==(const fpos& __y) const - { return _M_pos == __y._M_pos; } - bool operator!=(const fpos& __y) const - { return _M_pos != __y._M_pos; } - - fpos& operator+=(streamoff __off) { - _M_pos += __off; - return *this; - } - fpos& operator-=(streamoff __off) { - _M_pos -= __off; - return *this; - } - - fpos operator+(streamoff __off) { - fpos __tmp(*this); - __tmp += __off; - return __tmp; - } - fpos operator-(streamoff __off) { - fpos __tmp(*this); - __tmp -= __off; - return __tmp; - } - -public: // Manipulation of the state member. - _StateT state() const { return _M_st; } - void state(_StateT __st) { _M_st = __st; } -private: - streamoff _M_pos; - _StateT _M_st; -}; - -typedef fpos streampos; -typedef fpos wstreampos; - -// Class __char_traits_base. -template -class __char_traits_base { -public: - typedef _CharT char_type; - typedef _IntT int_type; - typedef streamoff off_type; - typedef streampos pos_type; - typedef mbstate_t state_type; - - static void _STLP_CALL assign(char_type& __c1, const char_type& __c2) { __c1 = __c2; } - static bool _STLP_CALL eq(const char_type& __c1, const char_type& __c2) - { return __c1 == __c2; } - static bool _STLP_CALL lt(const char_type& __c1, const char_type& __c2) - { return __c1 < __c2; } - - static int _STLP_CALL compare(const char_type* __s1, const char_type* __s2, size_t __n) { - for (size_t __i = 0; __i < __n; ++__i) - if (!eq(__s1[__i], __s2[__i])) - return __s1[__i] < __s2[__i] ? -1 : 1; - return 0; - } - - static size_t _STLP_CALL length(const char_type* __s) { - const char_type _NullChar = _STLP_DEFAULT_CONSTRUCTED(char_type); - size_t __i(0); - for (; !eq(__s[__i], _NullChar); ++__i) {} - return __i; - } - - static const char_type* _STLP_CALL find(const char_type* __s, size_t __n, const char_type& __c) { - for ( ; __n > 0 ; ++__s, --__n) - if (eq(*__s, __c)) - return __s; - return 0; - } - - static char_type* _STLP_CALL move(char_type* __s1, const char_type* __s2, size_t _Sz) - { return (_Sz == 0 ? __s1 : (char_type*)memmove(__s1, __s2, _Sz * sizeof(char_type))); } - - static char_type* _STLP_CALL copy(char_type* __s1, const char_type* __s2, size_t __n) { - return (__n == 0 ? __s1 : - (char_type*)memcpy(__s1, __s2, __n * sizeof(char_type))); - } - - static char_type* _STLP_CALL assign(char_type* __s, size_t __n, char_type __c) { - for (size_t __i = 0; __i < __n; ++__i) - __s[__i] = __c; - return __s; - } - - static int_type _STLP_CALL not_eof(const int_type& __c) - { return !eq_int_type(__c, eof()) ? __c : __STATIC_CAST(int_type, 0); } - - static char_type _STLP_CALL to_char_type(const int_type& __c) - { return (char_type)__c; } - - static int_type _STLP_CALL to_int_type(const char_type& __c) - { return (int_type)__c; } - - static bool _STLP_CALL eq_int_type(const int_type& __c1, const int_type& __c2) - { return __c1 == __c2; } - - static int_type _STLP_CALL eof() - { return (int_type)-1; } -}; - -// Generic char_traits class. Note that this class is provided only -// as a base for explicit specialization; it is unlikely to be useful -// as is for any particular user-defined type. In particular, it -// *will not work* for a non-POD type. - -template -class char_traits - : public __char_traits_base<_CharT, _CharT> {}; - -// Specialization for char. - -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC char_traits - : public __char_traits_base, - public __stlport_class > { -public: - typedef char char_type; - typedef int int_type; - typedef streamoff off_type; - typedef streampos pos_type; - typedef mbstate_t state_type; - - static char _STLP_CALL to_char_type(const int& __c) - { return (char)(unsigned char)__c; } - - static int _STLP_CALL to_int_type(const char& __c) - { return (unsigned char)__c; } - - static int _STLP_CALL compare(const char* __s1, const char* __s2, size_t __n) - { return memcmp(__s1, __s2, __n); } - - static size_t _STLP_CALL length(const char* __s) - { return strlen(__s); } - - static void _STLP_CALL assign(char& __c1, const char& __c2) - { __c1 = __c2; } - - static char* _STLP_CALL assign(char* __s, size_t __n, char __c) { - memset(__s, __c, __n); - return __s; - } -}; - -#if defined (_STLP_HAS_WCHAR_T) -// Specialization for wchar_t. -_STLP_TEMPLATE_NULL -class _STLP_CLASS_DECLSPEC char_traits - : public __char_traits_base { -# if !defined (_STLP_NO_NATIVE_WIDE_FUNCTIONS) && !defined (_STLP_WCHAR_HPACC_EXCLUDE) -public: -# if !defined (__BORLANDC__) - static wchar_t* _STLP_CALL move(wchar_t* __dest, const wchar_t* __src, size_t __n) - { return wmemmove(__dest, __src, __n); } -# endif - - static wchar_t* _STLP_CALL copy(wchar_t* __dest, const wchar_t* __src, size_t __n) - { return wmemcpy(__dest, __src, __n); } - -# if !defined (__DMC__) && !defined (__BORLANDC__) - static int _STLP_CALL compare(const wchar_t* __s1, const wchar_t* __s2, size_t __n) - { return wmemcmp(__s1, __s2, __n); } -# endif - - static wchar_t* _STLP_CALL assign(wchar_t* __s, size_t __n, wchar_t __c) - { return wmemset(__s, __c, __n); } - - static size_t _STLP_CALL length(const wchar_t* __s) - { return wcslen(__s); } - - static void _STLP_CALL assign(wchar_t& __c1, const wchar_t& __c2) - { __c1 = __c2; } -# endif -}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_CHAR_TRAITS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/concept_checks.h b/build/stlport/stlport/stl/concept_checks.h deleted file mode 100644 index 5fe02c298a45..000000000000 --- a/build/stlport/stlport/stl/concept_checks.h +++ /dev/null @@ -1,810 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -#ifndef __CONCEPT_CHECKS_H -#define __CONCEPT_CHECKS_H - -/* - Use these macro like assertions, but they assert properties - on types (usually template arguments). In technical terms they - verify whether a type "models" a "concept". - - This set of requirements and the terminology used here is derived - from the book "Generic Programming and the STL" by Matt Austern - (Addison Wesley). For further information please consult that - book. The requirements also are intended to match the ANSI/ISO C++ - standard. - - This file covers the basic concepts and the iterator concepts. - There are several other files that provide the requirements - for the STL containers: - container_concepts.h - sequence_concepts.h - assoc_container_concepts.h - - Jeremy Siek, 1999 - - TO DO: - - some issues with regards to concept classification and mutability - including AssociativeContianer -> ForwardContainer - and SortedAssociativeContainer -> ReversibleContainer - - HashedAssociativeContainer - - Allocator - - Function Object Concepts - - */ - -#ifndef _STLP_USE_CONCEPT_CHECKS - -// Some compilers lack the features that are necessary for concept checks. -// On those compilers we define the concept check macros to do nothing. -#define _STLP_REQUIRES(__type_var, __concept) do {} while(0) -#define _STLP_CLASS_REQUIRES(__type_var, __concept) \ - static int __##__type_var##_##__concept -#define _STLP_CONVERTIBLE(__type_x, __type_y) do {} while(0) -#define _STLP_REQUIRES_SAME_TYPE(__type_x, __type_y) do {} while(0) -#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \ - static int __##__type_x##__type_y##_require_same_type -#define _STLP_GENERATOR_CHECK(__func, __ret) do {} while(0) -#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) \ - static int __##__func##__ret##_generator_check -#define _STLP_UNARY_FUNCTION_CHECK(__func, __ret, __arg) do {} while(0) -#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \ - static int __##__func##__ret##__arg##_unary_function_check -#define _STLP_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \ - do {} while(0) -#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \ - static int __##__func##__ret##__first##__second##_binary_function_check -#define _STLP_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \ - do {} while(0) -#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \ - static int __##__opname##__ret##__first##__second##_require_binary_op - -#else /* _STLP_USE_CONCEPT_CHECKS */ - -// This macro tests whether the template argument "__type_var" -// satisfies the requirements of "__concept". Here is a list of concepts -// that we know how to check: -// _Allocator -// _Assignable -// _DefaultConstructible -// _EqualityComparable -// _LessThanComparable -// _TrivialIterator -// _InputIterator -// _OutputIterator -// _ForwardIterator -// _BidirectionalIterator -// _RandomAccessIterator -// _Mutable_TrivialIterator -// _Mutable_ForwardIterator -// _Mutable_BidirectionalIterator -// _Mutable_RandomAccessIterator - -#define _STLP_REQUIRES(__type_var, __concept) \ -do { \ - void (*__x)( __type_var ) = __concept##_concept_specification< __type_var >\ - ::##__concept##_requirement_violation; __x = __x; } while (0) - -// Use this to check whether type X is convertible to type Y -#define _STLP_CONVERTIBLE(__type_x, __type_y) \ -do { \ - void (*__x)( __type_x , __type_y ) = _STL_CONVERT_ERROR< __type_x , \ - __type_y >::__type_X_is_not_convertible_to_type_Y; \ - __x = __x; } while (0) - -// Use this to test whether two template arguments are the same type -#define _STLP_REQUIRES_SAME_TYPE(__type_x, __type_y) \ -do { \ - void (*__x)( __type_x , __type_y ) = _STL_SAME_TYPE_ERROR< __type_x, \ - __type_y >::__type_X_not_same_as_type_Y; \ - __x = __x; } while (0) - - -// function object checks -#define _STLP_GENERATOR_CHECK(__func, __ret) \ -do { \ - __ret (*__x)( __func&) = \ - _STL_GENERATOR_ERROR< \ - __func, __ret>::__generator_requirement_violation; \ - __x = __x; } while (0) - - -#define _STLP_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \ -do { \ - __ret (*__x)( __func&, const __arg& ) = \ - _STL_UNARY_FUNCTION_ERROR< \ - __func, __ret, __arg>::__unary_function_requirement_violation; \ - __x = __x; } while (0) - - -#define _STLP_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \ -do { \ - __ret (*__x)( __func&, const __first&, const __second& ) = \ - _STL_BINARY_FUNCTION_ERROR< \ - __func, __ret, __first, __second>::__binary_function_requirement_violation; \ - __x = __x; } while (0) - - -#define _STLP_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \ - do { \ - __ret (*__x)( __first&, __second& ) = _STL_BINARY##__opname##_ERROR< \ - __ret, __first, __second>::__binary_operator_requirement_violation; \ - __ret (*__y)( const __first&, const __second& ) = \ - _STL_BINARY##__opname##_ERROR< __ret, __first, __second>:: \ - __const_binary_operator_requirement_violation; \ - __y = __y; __x = __x; } while (0) - - -#ifdef _STLP_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE - -#define _STLP_CLASS_REQUIRES(__type_var, __concept) -#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) -#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) -#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) -#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) -#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) - -#else - -// Use this macro inside of template classes, where you would -// like to place requirements on the template arguments to the class -// Warning: do not pass pointers and such (e.g. T*) in as the __type_var, -// since the type_var is used to construct identifiers. Instead typedef -// the pointer type, then use the typedef name for the __type_var. -#define _STLP_CLASS_REQUIRES(__type_var, __concept) \ - typedef void (* __func##__type_var##__concept)( __type_var ); \ - template <__func##__type_var##__concept _Tp1> \ - struct __dummy_struct_##__type_var##__concept { }; \ - static __dummy_struct_##__type_var##__concept< \ - __concept##_concept_specification< \ - __type_var>::__concept##_requirement_violation> \ - __dummy_ptr_##__type_var##__concept - - -#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \ - typedef void (* __func_##__type_x##__type_y##same_type)( __type_x, \ - __type_y ); \ - template < __func_##__type_x##__type_y##same_type _Tp1> \ - struct __dummy_struct_##__type_x##__type_y##_same_type { }; \ - static __dummy_struct_##__type_x##__type_y##_same_type< \ - _STL_SAME_TYPE_ERROR<__type_x, __type_y>::__type_X_not_same_as_type_Y> \ - __dummy_ptr_##__type_x##__type_y##_same_type - - -#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) \ - typedef __ret (* __f_##__func##__ret##_generator)( __func& ); \ - template <__f_##__func##__ret##_generator _Tp1> \ - struct __dummy_struct_##__func##__ret##_generator { }; \ - static __dummy_struct_##__func##__ret##_generator< \ - _STL_GENERATOR_ERROR< \ - __func, __ret>::__generator_requirement_violation> \ - __dummy_ptr_##__func##__ret##_generator - - -#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \ - typedef __ret (* __f_##__func##__ret##__arg##_unary_check)( __func&, \ - const __arg& ); \ - template <__f_##__func##__ret##__arg##_unary_check _Tp1> \ - struct __dummy_struct_##__func##__ret##__arg##_unary_check { }; \ - static __dummy_struct_##__func##__ret##__arg##_unary_check< \ - _STL_UNARY_FUNCTION_ERROR< \ - __func, __ret, __arg>::__unary_function_requirement_violation> \ - __dummy_ptr_##__func##__ret##__arg##_unary_check - - -#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \ - typedef __ret (* __f_##__func##__ret##__first##__second##_binary_check)( __func&, const __first&,\ - const __second& ); \ - template <__f_##__func##__ret##__first##__second##_binary_check _Tp1> \ - struct __dummy_struct_##__func##__ret##__first##__second##_binary_check { }; \ - static __dummy_struct_##__func##__ret##__first##__second##_binary_check< \ - _STL_BINARY_FUNCTION_ERROR<__func, __ret, __first, __second>:: \ - __binary_function_requirement_violation> \ - __dummy_ptr_##__func##__ret##__first##__second##_binary_check - - -#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \ - typedef __ret (* __f_##__func##__ret##__first##__second##_binary_op)(const __first&, \ - const __second& ); \ - template <__f_##__func##__ret##__first##__second##_binary_op _Tp1> \ - struct __dummy_struct_##__func##__ret##__first##__second##_binary_op { }; \ - static __dummy_struct_##__func##__ret##__first##__second##_binary_op< \ - _STL_BINARY##__opname##_ERROR<__ret, __first, __second>:: \ - __binary_operator_requirement_violation> \ - __dummy_ptr_##__func##__ret##__first##__second##_binary_op - -#endif - -/* helper class for finding non-const version of a type. Need to have - something to assign to etc. when testing constant iterators. */ - -template -struct _Mutable_trait { - typedef _Tp _Type; -}; -template -struct _Mutable_trait { - typedef _Tp _Type; -}; - - -/* helper function for avoiding compiler warnings about unused variables */ -template -void __sink_unused_warning(_Type) { } - -template -struct _STL_CONVERT_ERROR { - static void - __type_X_is_not_convertible_to_type_Y(_TypeX __x, _TypeY) { - _TypeY __y = __x; - __sink_unused_warning(__y); - } -}; - - -template struct __check_equal { }; - -template -struct _STL_SAME_TYPE_ERROR { - static void - __type_X_not_same_as_type_Y(_TypeX , _TypeY ) { - __check_equal<_TypeX> t1 = __check_equal<_TypeY>(); - } -}; - - -// Some Functon Object Checks - -template -struct _STL_GENERATOR_ERROR { - static _Ret __generator_requirement_violation(_Func& __f) { - return __f(); - } -}; - -template -struct _STL_GENERATOR_ERROR<_Func, void> { - static void __generator_requirement_violation(_Func& __f) { - __f(); - } -}; - - -template -struct _STL_UNARY_FUNCTION_ERROR { - static _Ret - __unary_function_requirement_violation(_Func& __f, - const _Arg& __arg) { - return __f(__arg); - } -}; - -template -struct _STL_UNARY_FUNCTION_ERROR<_Func, void, _Arg> { - static void - __unary_function_requirement_violation(_Func& __f, - const _Arg& __arg) { - __f(__arg); - } -}; - -template -struct _STL_BINARY_FUNCTION_ERROR { - static _Ret - __binary_function_requirement_violation(_Func& __f, - const _First& __first, - const _Second& __second) { - return __f(__first, __second); - } -}; - -template -struct _STL_BINARY_FUNCTION_ERROR<_Func, void, _First, _Second> { - static void - __binary_function_requirement_violation(_Func& __f, - const _First& __first, - const _Second& __second) { - __f(__first, __second); - } -}; - - -#define _STLP_DEFINE_BINARY_OP_CHECK(_OP, _NAME) \ -template \ -struct _STL_BINARY##_NAME##_ERROR { \ - static _Ret \ - __const_binary_operator_requirement_violation(const _First& __first, \ - const _Second& __second) { \ - return __first _OP __second; \ - } \ - static _Ret \ - __binary_operator_requirement_violation(_First& __first, \ - _Second& __second) { \ - return __first _OP __second; \ - } \ -} - -_STLP_DEFINE_BINARY_OP_CHECK(==, _OP_EQUAL); -_STLP_DEFINE_BINARY_OP_CHECK(!=, _OP_NOT_EQUAL); -_STLP_DEFINE_BINARY_OP_CHECK(<, _OP_LESS_THAN); -_STLP_DEFINE_BINARY_OP_CHECK(<=, _OP_LESS_EQUAL); -_STLP_DEFINE_BINARY_OP_CHECK(>, _OP_GREATER_THAN); -_STLP_DEFINE_BINARY_OP_CHECK(>=, _OP_GREATER_EQUAL); -_STLP_DEFINE_BINARY_OP_CHECK(+, _OP_PLUS); -_STLP_DEFINE_BINARY_OP_CHECK(*, _OP_TIMES); -_STLP_DEFINE_BINARY_OP_CHECK(/, _OP_DIVIDE); -_STLP_DEFINE_BINARY_OP_CHECK(-, _OP_SUBTRACT); -_STLP_DEFINE_BINARY_OP_CHECK(%, _OP_MOD); -// ... - -// TODO, add unary operators (prefix and postfix) - -/* - The presence of this class is just to trick EDG into displaying - these error messages before any other errors. Without the - classes, the errors in the functions get reported after - other class errors deep inside the library. The name - choice just makes for an eye catching error message :) - */ -struct _STL_ERROR { - - template - static _Type - __default_constructor_requirement_violation(_Type) { - return _Type(); - } - template - static _Type - __assignment_operator_requirement_violation(_Type __a) { - __a = __a; - return __a; - } - template - static _Type - __copy_constructor_requirement_violation(_Type __a) { - _Type __c(__a); - return __c; - } - template - static _Type - __const_parameter_required_for_copy_constructor(_Type /* __a */, - const _Type& __b) { - _Type __c(__b); - return __c; - } - template - static _Type - __const_parameter_required_for_assignment_operator(_Type __a, - const _Type& __b) { - __a = __b; - return __a; - } - template - static _Type - __less_than_comparable_requirement_violation(_Type __a, _Type __b) { - if (__a < __b || __a > __b || __a <= __b || __a >= __b) return __a; - return __b; - } - template - static _Type - __equality_comparable_requirement_violation(_Type __a, _Type __b) { - if (__a == __b || __a != __b) return __a; - return __b; - } - template - static void - __dereference_operator_requirement_violation(_Iterator __i) { - __sink_unused_warning(*__i); - } - template - static void - __dereference_operator_and_assignment_requirement_violation(_Iterator __i) { - *__i = *__i; - } - template - static void - __preincrement_operator_requirement_violation(_Iterator __i) { - ++__i; - } - template - static void - __postincrement_operator_requirement_violation(_Iterator __i) { - __i++; - } - template - static void - __predecrement_operator_requirement_violation(_Iterator __i) { - --__i; - } - template - static void - __postdecrement_operator_requirement_violation(_Iterator __i) { - __i--; - } - template - static void - __postincrement_operator_and_assignment_requirement_violation(_Iterator __i, - _Type __t) { - *__i++ = __t; - } - template - static _Iterator - __iterator_addition_assignment_requirement_violation(_Iterator __i, - _Distance __n) { - __i += __n; - return __i; - } - template - static _Iterator - __iterator_addition_requirement_violation(_Iterator __i, _Distance __n) { - __i = __i + __n; - __i = __n + __i; - return __i; - } - template - static _Iterator - __iterator_subtraction_assignment_requirement_violation(_Iterator __i, - _Distance __n) { - __i -= __n; - return __i; - } - template - static _Iterator - __iterator_subtraction_requirement_violation(_Iterator __i, _Distance __n) { - __i = __i - __n; - return __i; - } - template - static _Distance - __difference_operator_requirement_violation(_Iterator __i, _Iterator __j, - _Distance __n) { - __n = __i - __j; - return __n; - } - template - static _Type - __element_access_operator_requirement_violation(_Exp __x, _Type*, - _Distance __n) { - return __x[__n]; - } - template - static void - __element_assignment_operator_requirement_violation(_Exp __x, - _Type* __t, - _Distance __n) { - __x[__n] = *__t; - } - -}; /* _STL_ERROR */ - -/* Associated Type Requirements */ - -_STLP_BEGIN_NAMESPACE -template struct iterator_traits; -_STLP_END_NAMESPACE - -template -struct __value_type_type_definition_requirement_violation { - typedef typename __STD::iterator_traits<_Iter>::value_type value_type; -}; - -template -struct __difference_type_type_definition_requirement_violation { - typedef typename __STD::iterator_traits<_Iter>::difference_type - difference_type; -}; - -template -struct __reference_type_definition_requirement_violation { - typedef typename __STD::iterator_traits<_Iter>::reference reference; -}; - -template -struct __pointer_type_definition_requirement_violation { - typedef typename __STD::iterator_traits<_Iter>::pointer pointer; -}; - -template -struct __iterator_category_type_definition_requirement_violation { - typedef typename __STD::iterator_traits<_Iter>::iterator_category - iterator_category; -}; - -/* Assignable Requirements */ - - -template -struct _Assignable_concept_specification { - static void _Assignable_requirement_violation(_Type __a) { - _STL_ERROR::__assignment_operator_requirement_violation(__a); - _STL_ERROR::__copy_constructor_requirement_violation(__a); - _STL_ERROR::__const_parameter_required_for_copy_constructor(__a,__a); - _STL_ERROR::__const_parameter_required_for_assignment_operator(__a,__a); - } -}; - -/* DefaultConstructible Requirements */ - - -template -struct _DefaultConstructible_concept_specification { - static void _DefaultConstructible_requirement_violation(_Type __a) { - _STL_ERROR::__default_constructor_requirement_violation(__a); - } -}; - -/* EqualityComparable Requirements */ - -template -struct _EqualityComparable_concept_specification { - static void _EqualityComparable_requirement_violation(_Type __a) { - _STL_ERROR::__equality_comparable_requirement_violation(__a, __a); - } -}; - -/* LessThanComparable Requirements */ -template -struct _LessThanComparable_concept_specification { - static void _LessThanComparable_requirement_violation(_Type __a) { - _STL_ERROR::__less_than_comparable_requirement_violation(__a, __a); - } -}; - -/* TrivialIterator Requirements */ - -template -struct _TrivialIterator_concept_specification { -static void -_TrivialIterator_requirement_violation(_TrivialIterator __i) { - typedef typename - __value_type_type_definition_requirement_violation<_TrivialIterator>:: - value_type __T; - // Refinement of Assignable - _Assignable_concept_specification<_TrivialIterator>:: - _Assignable_requirement_violation(__i); - // Refinement of DefaultConstructible - _DefaultConstructible_concept_specification<_TrivialIterator>:: - _DefaultConstructible_requirement_violation(__i); - // Refinement of EqualityComparable - _EqualityComparable_concept_specification<_TrivialIterator>:: - _EqualityComparable_requirement_violation(__i); - // Valid Expressions - _STL_ERROR::__dereference_operator_requirement_violation(__i); -} -}; - -template -struct _Mutable_TrivialIterator_concept_specification { -static void -_Mutable_TrivialIterator_requirement_violation(_TrivialIterator __i) { - _TrivialIterator_concept_specification<_TrivialIterator>:: - _TrivialIterator_requirement_violation(__i); - // Valid Expressions - _STL_ERROR::__dereference_operator_and_assignment_requirement_violation(__i); -} -}; - -/* InputIterator Requirements */ - -template -struct _InputIterator_concept_specification { -static void -_InputIterator_requirement_violation(_InputIterator __i) { - // Refinement of TrivialIterator - _TrivialIterator_concept_specification<_InputIterator>:: - _TrivialIterator_requirement_violation(__i); - // Associated Types - __difference_type_type_definition_requirement_violation<_InputIterator>(); - __reference_type_definition_requirement_violation<_InputIterator>(); - __pointer_type_definition_requirement_violation<_InputIterator>(); - __iterator_category_type_definition_requirement_violation<_InputIterator>(); - // Valid Expressions - _STL_ERROR::__preincrement_operator_requirement_violation(__i); - _STL_ERROR::__postincrement_operator_requirement_violation(__i); -} -}; - -/* OutputIterator Requirements */ - -template -struct _OutputIterator_concept_specification { -static void -_OutputIterator_requirement_violation(_OutputIterator __i) { - // Refinement of Assignable - _Assignable_concept_specification<_OutputIterator>:: - _Assignable_requirement_violation(__i); - // Associated Types - __iterator_category_type_definition_requirement_violation<_OutputIterator>(); - // Valid Expressions - _STL_ERROR::__dereference_operator_requirement_violation(__i); - _STL_ERROR::__preincrement_operator_requirement_violation(__i); - _STL_ERROR::__postincrement_operator_requirement_violation(__i); - _STL_ERROR:: - __postincrement_operator_and_assignment_requirement_violation(__i, *__i); -} -}; - -/* ForwardIterator Requirements */ - -template -struct _ForwardIterator_concept_specification { -static void -_ForwardIterator_requirement_violation(_ForwardIterator __i) { - // Refinement of InputIterator - _InputIterator_concept_specification<_ForwardIterator>:: - _InputIterator_requirement_violation(__i); -} -}; - -template -struct _Mutable_ForwardIterator_concept_specification { -static void -_Mutable_ForwardIterator_requirement_violation(_ForwardIterator __i) { - _ForwardIterator_concept_specification<_ForwardIterator>:: - _ForwardIterator_requirement_violation(__i); - // Refinement of OutputIterator - _OutputIterator_concept_specification<_ForwardIterator>:: - _OutputIterator_requirement_violation(__i); -} -}; - -/* BidirectionalIterator Requirements */ - -template -struct _BidirectionalIterator_concept_specification { -static void -_BidirectionalIterator_requirement_violation(_BidirectionalIterator __i) { - // Refinement of ForwardIterator - _ForwardIterator_concept_specification<_BidirectionalIterator>:: - _ForwardIterator_requirement_violation(__i); - // Valid Expressions - _STL_ERROR::__predecrement_operator_requirement_violation(__i); - _STL_ERROR::__postdecrement_operator_requirement_violation(__i); -} -}; - -template -struct _Mutable_BidirectionalIterator_concept_specification { -static void -_Mutable_BidirectionalIterator_requirement_violation( - _BidirectionalIterator __i) -{ - _BidirectionalIterator_concept_specification<_BidirectionalIterator>:: - _BidirectionalIterator_requirement_violation(__i); - // Refinement of mutable_ForwardIterator - _Mutable_ForwardIterator_concept_specification<_BidirectionalIterator>:: - _Mutable_ForwardIterator_requirement_violation(__i); - typedef typename - __value_type_type_definition_requirement_violation< - _BidirectionalIterator>::value_type __T; - typename _Mutable_trait<__T>::_Type* __tmp_ptr = 0; - // Valid Expressions - _STL_ERROR:: - __postincrement_operator_and_assignment_requirement_violation(__i, - *__tmp_ptr); -} -}; - -/* RandomAccessIterator Requirements */ - -template -struct _RandomAccessIterator_concept_specification { -static void -_RandomAccessIterator_requirement_violation(_RandAccIter __i) { - // Refinement of BidirectionalIterator - _BidirectionalIterator_concept_specification<_RandAccIter>:: - _BidirectionalIterator_requirement_violation(__i); - // Refinement of LessThanComparable - _LessThanComparable_concept_specification<_RandAccIter>:: - _LessThanComparable_requirement_violation(__i); - typedef typename - __value_type_type_definition_requirement_violation<_RandAccIter> - ::value_type - value_type; - typedef typename - __difference_type_type_definition_requirement_violation<_RandAccIter> - ::difference_type - _Dist; - typedef typename _Mutable_trait<_Dist>::_Type _MutDist; - - // Valid Expressions - _STL_ERROR::__iterator_addition_assignment_requirement_violation(__i, - _MutDist()); - _STL_ERROR::__iterator_addition_requirement_violation(__i, - _MutDist()); - _STL_ERROR:: - __iterator_subtraction_assignment_requirement_violation(__i, - _MutDist()); - _STL_ERROR::__iterator_subtraction_requirement_violation(__i, - _MutDist()); - _STL_ERROR::__difference_operator_requirement_violation(__i, __i, - _MutDist()); - typename _Mutable_trait::_Type* __dummy_ptr = 0; - _STL_ERROR::__element_access_operator_requirement_violation(__i, - __dummy_ptr, - _MutDist()); -} -}; - -template -struct _Mutable_RandomAccessIterator_concept_specification { -static void -_Mutable_RandomAccessIterator_requirement_violation(_RandAccIter __i) -{ - _RandomAccessIterator_concept_specification<_RandAccIter>:: - _RandomAccessIterator_requirement_violation(__i); - // Refinement of mutable_BidirectionalIterator - _Mutable_BidirectionalIterator_concept_specification<_RandAccIter>:: - _Mutable_BidirectionalIterator_requirement_violation(__i); - typedef typename - __value_type_type_definition_requirement_violation<_RandAccIter> - ::value_type - value_type; - typedef typename - __difference_type_type_definition_requirement_violation<_RandAccIter> - ::difference_type - _Dist; - - typename _Mutable_trait::_Type* __tmp_ptr = 0; - // Valid Expressions - _STL_ERROR::__element_assignment_operator_requirement_violation(__i, - __tmp_ptr, _Dist()); -} -}; - -#define _STLP_TYPEDEF_REQUIREMENT(__REQUIREMENT) \ -template \ -struct __##__REQUIREMENT##__typedef_requirement_violation { \ - typedef typename Type::__REQUIREMENT __REQUIREMENT; \ -}; - -_STLP_TYPEDEF_REQUIREMENT(value_type); -_STLP_TYPEDEF_REQUIREMENT(difference_type); -_STLP_TYPEDEF_REQUIREMENT(size_type); -_STLP_TYPEDEF_REQUIREMENT(reference); -_STLP_TYPEDEF_REQUIREMENT(const_reference); -_STLP_TYPEDEF_REQUIREMENT(pointer); -_STLP_TYPEDEF_REQUIREMENT(const_pointer); - - -template -struct _Allocator_concept_specification { -static void -_Allocator_requirement_violation(_Alloc __a) { - // Refinement of DefaultConstructible - _DefaultConstructible_concept_specification<_Alloc>:: - _DefaultConstructible_requirement_violation(__a); - // Refinement of EqualityComparable - _EqualityComparable_concept_specification<_Alloc>:: - _EqualityComparable_requirement_violation(__a); - // Associated Types - __value_type__typedef_requirement_violation<_Alloc>(); - __difference_type__typedef_requirement_violation<_Alloc>(); - __size_type__typedef_requirement_violation<_Alloc>(); - __reference__typedef_requirement_violation<_Alloc>(); - __const_reference__typedef_requirement_violation<_Alloc>(); - __pointer__typedef_requirement_violation<_Alloc>(); - __const_pointer__typedef_requirement_violation<_Alloc>(); - typedef typename _Alloc::value_type _Type; - _STLP_REQUIRES_SAME_TYPE(typename _Alloc::rebind<_Type>::other, _Alloc); -} -}; - -#endif /* _STLP_USE_CONCEPT_CHECKS */ - -#endif /* __CONCEPT_CHECKS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/config/_aix.h b/build/stlport/stlport/stl/config/_aix.h deleted file mode 100644 index 45ea8b6fd797..000000000000 --- a/build/stlport/stlport/stl/config/_aix.h +++ /dev/null @@ -1,3 +0,0 @@ -#define _STLP_PLATFORM "AIX" - -#define _STLP_USE_UNIX_IO diff --git a/build/stlport/stlport/stl/config/_android.h b/build/stlport/stlport/stl/config/_android.h deleted file mode 100644 index ac321e02c33c..000000000000 --- a/build/stlport/stlport/stl/config/_android.h +++ /dev/null @@ -1,73 +0,0 @@ -#ifndef __stl_config__android_h -#define __stl_config__android_h - -#define _STLP_PLATFORM "Android" - -// Mostly Unix-like. -#define _STLP_UNIX 1 - -// Have pthreads support. -#define _PTHREADS - -// Don't have native headers -#define _STLP_HAS_NO_NEW_C_HEADERS 1 - -// Use unix for streams -#define _STLP_USE_UNIX_IO 1 - -// We don't want rtti support -#define _STLP_NO_RTTI 1 - -// C library is in the global namespace. -#define _STLP_VENDOR_GLOBAL_CSTD 1 - -// Don't have underlying local support. -#undef _STLP_REAL_LOCALE_IMPLEMENTED - -// No pthread_spinlock_t in Android -#define _STLP_DONT_USE_PTHREAD_SPINLOCK 1 - -// Enable thread support -#undef _NOTHREADS - -// Little endian platform. -#define _STLP_LITTLE_ENDIAN 1 - -// No headers -#undef _STLP_NO_EXCEPTION_HEADER - -// No throwing exceptions -#define _STLP_NO_EXCEPTIONS 1 -#define _STLP_NO_EXCEPTION_HEADER 1 - -// No need to define our own namespace -#define _STLP_NO_OWN_NAMESPACE 1 - -// Use __new_alloc instead of __node_alloc, so we don't need static functions. -#define _STLP_USE_SIMPLE_NODE_ALLOC 1 - -// Don't use extern versions of range errors, so we don't need to -// compile as a library. -#define _STLP_USE_NO_EXTERN_RANGE_ERRORS 1 - -// The system math library doesn't have long double variants, e.g -// sinl, cosl, etc -#define _STLP_NO_VENDOR_MATH_L - -// Include most of the gcc settings. -#include - -// Do not use glibc, Android is missing some things. -#undef _STLP_USE_GLIBC - -// No exceptions. -#define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT 1 -#define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT 1 - -#define _STLP_HAS_INCLUDE_NEXT 1 - -// Use operator new instead of stlport own node allocator -#undef _STLP_USE_NEWALLOC -#define _STLP_USE_NEWALLOC 1 - -#endif /* __stl_config__android_h */ diff --git a/build/stlport/stlport/stl/config/_apcc.h b/build/stlport/stlport/stl/config/_apcc.h deleted file mode 100644 index 7b4e1397c2ab..000000000000 --- a/build/stlport/stlport/stl/config/_apcc.h +++ /dev/null @@ -1,30 +0,0 @@ -// STLport config file for Apogee 4.x - -#define _STLP_COMPILER "Apogee" - -#define _STLP_NO_NEW_NEW_HEADER 1 -#define _STLP_HAS_NO_NEW_C_HEADERS 1 - -#if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) -# define _STLP_RAND48 1 -#endif -// # define _STLP_RAND48 1 -#define _STLP_LONG_LONG long long -#define _STLP_NO_BAD_ALLOC 1 -#define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -#define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 -// # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 -#define _STLP_NO_EXCEPTION_HEADER 1 - -#undef _STLP_LINK_TIME_INSTANTIATION -#define _STLP_LINK_TIME_INSTANTIATION 1 - -#ifdef __STDLIB -# undef _STLP_NO_NEW_C_HEADERS -# undef _STLP_NO_NEW_NEW_HEADER -# undef _STLP_NO_BAD_ALLOC -# undef _STLP_LONG_LONG -#else -# undef _STLP_NO_EXCEPTION_SPEC -# define _STLP_NO_EXCEPTION_SPEC 1 -#endif diff --git a/build/stlport/stlport/stl/config/_apple.h b/build/stlport/stlport/stl/config/_apple.h deleted file mode 100644 index 899ed143acf8..000000000000 --- a/build/stlport/stlport/stl/config/_apple.h +++ /dev/null @@ -1,118 +0,0 @@ -/* STLport configuration file - * It is internal STLport header - DO NOT include it directly - */ - -/* common configuration settings for Apple MPW MrCpp / SCpp */ - -#define _STLP_COMPILER "spec me!" - -#if defined(__MRC__) && __MRC__ < 0x500 -# error Apple's MPW MrCpp v.5.0.0 or better compiler required -#endif -#if defined(__SC__) && __SC__ < 0x890 -# error Apple's MPW SCpp v.8.9.0 or better compiler required -#endif - -/* TODO: Check that this config is necessary for all compiler versions. - * It is here for historical reasons for the moment. - */ -#define _STLP_NO_CONTAINERS_EXTENSION - -#ifdef qMacApp -# ifndef __CONDITIONALMACROS__ /* skip including ConditionalMacros_AC.h if ConditionalMacros.h is already included */ -# include -# include -# include -# define _STLP_FILE__ _FILE_AC -# define _STLP_DEBUG_MESSAGE -# define __stl_debug_message ProgramBreak_AC -# include -# endif -# include -#else -# include -# include -#endif - -#define _STLP_UINT32_T UInt32 -typedef int wint_t; - -#ifndef TYPE_BOOL -# error must be included. (TYPE_BOOL) -#endif -#if !TYPE_BOOL -# define _STLP_NO_BOOL -# define _STLP_DONT_USE_BOOL_TYPEDEF -#endif - -#ifndef TYPE_LONGLONG -# error must be included. (TYPE_LONGLONG) -#endif -#if TYPE_LONGLONG -# define _STLP_LONG_LONG long long -#endif - -#if !__option(exceptions) -# define _STLP_HAS_NO_EXCEPTIONS -#endif - -#define _STLP_DEBUG_MESSAGE_POST DebugStr("\pSTL diagnosis issued. See 'stderr' for detail."); -#define _STLP_ASSERT_MSG_TRAILER " " - -#ifdef _STLP_DEBUG -# define _STLP_THROW(x) (DebugStr("\pSTL is about to throw exception: "#x),throw x) -#endif - -#if defined(__MRC__) -# ifndef __spillargs -# define __spillargs 1 // MrCpp requires this symbol to be defined as 1 to properly handle va_start; ref.[ file stdarg.h; line 26 ] -# endif -#endif - -#if defined(__SC__) -#define _STLP_VENDOR_LONG_DOUBLE_MATH //*TY 12/03/2000 - SCpp's native math type is long double -#endif - -#ifndef _STLP_NATIVE_INCLUDE_PATH -# if __option(unix_includes) -# define _STLP_NATIVE_INCLUDE_PATH ../CIncludes // expects the alias to {CIncludes} under the same folder as {STL} -# else -# define _STLP_NATIVE_INCLUDE_PATH ::CIncludes // expects the alias to {CIncludes} under the same folder as {STL} -# endif -#endif -#if !defined(_STLP_MAKE_HEADER) -# if !__option(unix_includes) -# define _STLP_MAKE_HEADER(path, header) // Mac uses ":" for directory delimiter -# endif -#endif - -# define _STLD _DBG // to keep the length of generated symbols within the compiler limitation - -#define _STLP_USE_STDIO_IO 1 //*TY 02/24/2000 - see also ; ref.[ file _fstream.h; line 36 ] -#define _STLP_NO_THREADS //*TY 12/17/2000 - multi-thread capability not explored, yet. -#undef _REENTRANT //*ty 11/24/2001 - to make sure no thread facility is activated -#define _NOTHREADS //*ty 12/07/2001 - - -// native library limitations -#define _STLP_VENDOR_GLOBAL_STD // mpw's c++ libs do not utilize namespace std yet -#define _STLP_NO_BAD_ALLOC // known limitation -#define _STLP_HAS_NO_NEW_C_HEADERS // known limitation -#define _STLP_NO_NEW_NEW_HEADER // known limitation -#define _STLP_NO_NATIVE_MBSTATE_T // known limitation -#define _STLP_NO_NATIVE_WIDE_FUNCTIONS // known limitation -#define _STLP_NO_NATIVE_WIDE_STREAMS // known limitation -#define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT // known limitation -#define _STLP_BROKEN_EXCEPTION_CLASS // known limitation - -// compiler limitations -# define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS - -# define _STLP_MPWFIX_TRY try{ //*TY 06/01/2000 - exception handling bug workaround -# define _STLP_MPWFIX_CATCH }catch(...){throw;} //*TY 06/01/2000 - exception handling bug workaround -# define _STLP_MPWFIX_CATCH_ACTION(action) }catch(...){action;throw;} //*TY 06/01/2000 - exception handling bug workaround -# define _STLP_THROW_RETURN_BUG // known limitation -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION // known limitation -# define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX // known limitation -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER // known limitation -# define _STLP_NO_RELOPS_NAMESPACE // known limitation -// end of stl_apple.h diff --git a/build/stlport/stlport/stl/config/_as400.h b/build/stlport/stlport/stl/config/_as400.h deleted file mode 100644 index 28d960b77f12..000000000000 --- a/build/stlport/stlport/stl/config/_as400.h +++ /dev/null @@ -1,55 +0,0 @@ -// STLport configuration file -// It is internal STLport header - DO NOT include it directly - -// AS/400 C++ config - -# ifdef _REENTRANT -# define _PTHREADS -# endif - -# define _STLP_NO_NEW_NEW_HEADER 1 - -# define _STLP_NO_BOOL -# define _STLP_LIMITED_DEFAULT_TEMPLATES - -# define _STLP_HAS_NO_NAMESPACES -# define _STLP_NEED_TYPENAME -# define _STLP_NEED_EXPLICIT -# define _STLP_HAS_NO_EXCEPTIONS -# define _STLP_NO_EXCEPTION_SPEC -# define _STLP_NO_ARROW_OPERATOR -# define _STLP_NO_NEW_STYLE_CASTS - -# define _STLP_NEED_MUTABLE -# define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX -# define _STLP_NO_BAD_ALLOC -# define _STLP_NO_MEMBER_TEMPLATES -# define _STLP_NO_MEMBER_TEMPLATE_CLASSES -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD -# define _STLP_NO_QUALIFIED_FRIENDS -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER - -# define _STLP_NO_METHOD_SPECIALIZATION -# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS - -// # define _STLP_NO_EXCEPTION_HEADER - -# define _STLP_HAS_NO_NEW_C_HEADERS - -# define _STLP_STATIC_CONST_INIT_BUG -# define _STLP_THROW_RETURN_BUG -# define _STLP_LINK_TIME_INSTANTIATION -# define _STLP_NO_TEMPLATE_CONVERSIONS - -# define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 -# define _STLP_TRIVIAL_DESTRUCTOR_BUG 1 - -# if defined(_LONG_LONG) -# define _STLP_LONG_LONG long long -# endif -# if defined(_PTHREADS) -# define _MULTI_THREADED -# endif -// fbp : to fix __partition() problem -# define _STLP_NONTEMPL_BASE_MATCH_BUG 1 diff --git a/build/stlport/stlport/stl/config/_auto_link.h b/build/stlport/stlport/stl/config/_auto_link.h deleted file mode 100644 index 8898c555885d..000000000000 --- a/build/stlport/stlport/stl/config/_auto_link.h +++ /dev/null @@ -1,61 +0,0 @@ -/* We do not use auto link feature when: - * - user asked not to use it (_STLP_DONT_USE_AUTO_LINK) - * - STLport is used only as a STL library (_STLP_NO_IOSTREAMS || _STLP_USE_NO_IOSTREAMS) - * - we are building a C translation unit, STLport is a C++ Standard library implementation - */ -#if !defined (__BUILDING_STLPORT) && !defined (_STLP_DONT_USE_AUTO_LINK) && \ - !defined (_STLP_NO_IOSTREAMS) && !defined (_STLP_USE_NO_IOSTREAMS) && \ - defined (__cplusplus) - -# define _STLP_STRINGIZE(X) _STLP_STRINGIZE_AUX(X) -# define _STLP_STRINGIZE_AUX(X) #X - -# if defined (_STLP_DEBUG) -# define _STLP_LIB_OPTIM_MODE "stld" -# elif defined (_DEBUG) -# define _STLP_LIB_OPTIM_MODE "d" -# else -# define _STLP_LIB_OPTIM_MODE "" -# endif - -# if defined (_STLP_LIB_NAME_MOTIF) -# define _STLP_LIB_MOTIF "_"_STLP_LIB_NAME_MOTIF -# else -# define _STLP_LIB_MOTIF "" -# endif - -# if defined (_STLP_USE_DYNAMIC_LIB) -# if defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB) -# define _STLP_LIB_TYPE "_x" -# else -# define _STLP_LIB_TYPE "" -# endif -# else -# if defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB) -# define _STLP_LIB_TYPE "_statix" -# else -# define _STLP_LIB_TYPE "_static" -# endif -# endif - -# if defined (_STLP_USE_DYNAMIC_LIB) -# define _STLP_VERSION_STR "."_STLP_STRINGIZE(_STLPORT_MAJOR)"."_STLP_STRINGIZE(_STLPORT_MINOR) -# else -# define _STLP_VERSION_STR "" -# endif - -# define _STLP_STLPORT_LIB "stlport"_STLP_LIB_OPTIM_MODE""_STLP_LIB_TYPE""_STLP_LIB_MOTIF""_STLP_VERSION_STR".lib" - -# if defined (_STLP_VERBOSE) -# pragma message ("STLport: Auto linking to "_STLP_STLPORT_LIB) -# endif -# pragma comment (lib, _STLP_STLPORT_LIB) - -# undef _STLP_STLPORT_LIB -# undef _STLP_LIB_OPTIM_MODE -# undef _STLP_LIB_TYPE -# undef _STLP_STRINGIZE_AUX -# undef _STLP_STRINGIZE - -#endif /* _STLP_DONT_USE_AUTO_LINK */ - diff --git a/build/stlport/stlport/stl/config/_bc.h b/build/stlport/stlport/stl/config/_bc.h deleted file mode 100644 index e3802dc090a2..000000000000 --- a/build/stlport/stlport/stl/config/_bc.h +++ /dev/null @@ -1,138 +0,0 @@ -/* STLport configuration file - * It is internal STLport header - DO NOT include it directly */ - -#define _STLP_COMPILER "Borland" - -#if (__BORLANDC__ < 0x551) -# error - Borland compilers below version 5.5.1 not supported. -#endif - -#pragma defineonoption _STLP_NO_RTTI -RT- - -#define _STLP_DONT_SUP_DFLT_PARAM - -#if (__BORLANDC__ >= 0x580) -# define _STLP_HAS_INCLUDE_NEXT -# define _STLP_NATIVE_HEADER(header) <../include/##header> -# define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../include/dinkumware/##header> -# define _STLP_NO_NEW_C_HEADERS -# define _STLP_NO_FORCE_INSTANTIATE -#endif - -#if (__BORLANDC__ >= 0x570) && (__BORLANDC__ < 0x580) -# define _STLP_NO_NEW_C_HEADERS -# define _STLP_NO_FORCE_INSTANTIATE -# define _STLP_DEF_CONST_DEF_PARAM_BUG -# define _STLP_USE_DEFAULT_FILE_OFFSET - -# if defined (__cplusplus) -# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../include/c++/ ## GCC_VERSION -# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include/c++/ ## GCC_VERSION -# endif - -# undef _SYS_CDEFS_H -# include - -# ifdef __MT__ -# define _PTHREADS -# if !defined (_RTLDLL) -# define _STLP_DONT_USE_PTHREAD_SPINLOCK -# endif -# else -# define _NOTHREADS -# endif - -# pragma defineonoption _CPPUNWIND -xd -# define _STLP_NO_EXCEPTION_HEADER -# define _STLP_DONT_USE_EXCEPTIONS -#endif - -#if (__BORLANDC__ >= 0x560) && (__BORLANDC__ < 0x570) -# define _USE_OLD_RW_STL -#endif - -#if (__BORLANDC__ >= 0x560) -# if !defined (__BUILDING_STLPORT) -# define NOWINBASEINTERLOCK -# endif -# define _STLP_LANG_INVARIANT_DEFINED -#endif - -#if (__BORLANDC__ < 0x590) -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER -# define _STLP_DLLEXPORT_NEEDS_PREDECLARATION - // problems -# define _STLP_MEMBER_SPECIALIZATION_BUG 1 -# ifdef __cplusplus -# define _STLP_TR1 _STLP_STD_NAME::tr1:: -# endif -#endif - -#if (__BORLANDC__ < 0x564) -# define _STLP_QUALIFIED_SPECIALIZATION_BUG -# define _STLP_NO_MOVE_SEMANTIC -#endif - -#define _STLP_DONT_USE_PRIV_NAMESPACE -#define _STLP_NO_TYPENAME_BEFORE_NAMESPACE -#define _STLP_NO_VENDOR_STDLIB_L -#define _STLP_NO_VENDOR_MATH_F -#define _STLP_DONT_USE_SHORT_STRING_OPTIM 1 - -#if (__BORLANDC__ < 0x570) || (__BORLANDC__ >= 0x580) -#define _STLP_NO_NATIVE_MBSTATE_T -#undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT -#endif - -#if (__BORLANDC__ < 0x580) && !defined (_RTLDLL) -# define _UNCAUGHT_EXCEPTION 1 -#endif - -// problem -#define _STLP_STATIC_CONST_INIT_BUG - -#define _STLP_HAS_SPECIFIC_PROLOG_EPILOG 1 - -#define _STLP_LONG_LONG __int64 - -// auto enable thread safety and exceptions: -#ifndef _CPPUNWIND -# define _STLP_HAS_NO_EXCEPTIONS -#endif - -#if defined (__MT__) && !defined (_NOTHREADS) -# define _STLP_THREADS -#endif - -#define _STLP_EXPORT_DECLSPEC __declspec(dllexport) -#define _STLP_IMPORT_DECLSPEC __declspec(dllimport) - -#define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport) -#define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport) - -#if defined (_DLL) -# define _STLP_DLL -#endif -#if defined (_RTLDLL) -# define _STLP_RUNTIME_DLL -#endif -#include -#undef _STLP_RUNTIME_DLL -#undef _STLP_DLL - -#if defined (_STLP_USE_DYNAMIC_LIB) -# define _STLP_USE_DECLSPEC 1 -# if defined (__BUILDING_STLPORT) -# define _STLP_CALL __cdecl __export -# else -# define _STLP_CALL __cdecl -# endif -#else -# define _STLP_CALL __cdecl -#endif - -#if !defined (__linux__) -# include -#endif - -#include diff --git a/build/stlport/stlport/stl/config/_como.h b/build/stlport/stlport/stl/config/_como.h deleted file mode 100644 index 6076f88084ea..000000000000 --- a/build/stlport/stlport/stl/config/_como.h +++ /dev/null @@ -1,207 +0,0 @@ - -// STLport configuration file -// It is internal STLport header - DO NOT include it directly - -#define _STLP_COMPILER "Comeau" - -#include - -#define _STLP_UINT32_T unsigned int - -#define _STLP_HAS_NO_NEW_C_HEADERS -// #define _STLP_VENDOR_GLOBAL_EXCEPT_STD -#define _STLP_LONG_LONG long long - - -// -// ADDITIONS FOR COMEAU C++, made by Comeau Computing. -// We can be reached through comeau@comeaucomputing.com -// You shouldn't need to change anything below here for Comeau C++. -// If you do, please tell us at comeau@comeaucomputing.com -// -// Changes made here, AND THROUGH ALL FILES, based upon the __COMO__ macro -// (and SIMILAR NAMES INVOLVING COMO).... no doubt some of this will -// change as SGI integrates the changes into their code base since -// some changes are not really Comeau C++ specific, but required to -// make the SGI code compliant with Standard C++). -// -// Testing was done with Comeau C++ 4.2.44 and 4.2.45.2. Changes were made for -// both Comeau relaxed mode and Comeau strict mode, especially for end user code -// (that is, some of the .cxx files cannot compile in strict mode, because they -// contain extensions to Standard C++, however their object code forms can -// be used once compiled in relaxed mode, even if the end user code uses -// strict mode). -// -// These changes may also work for some earlier versions of Comeau C++, -// though we have not tested them. -// -// Actual mods made under RedHat 6.1 LINUX, should be ok with SuSE too and -// other LINUX's, and older Caldera LINUX, Solaris/SPARC, SunOS, SCO UNIX, -// and NetBSD. Other platforms may be added. Comeau will also perform -// custom ports for you. -// -// Check libcomo details at http://www.comeaucomputing.com/libcomo and -// http://www.comeaucomputing.com -// -// History of Comeau changes (this is rough, as work was often going on in parallel): -// BETA1 July 14, 2000, Initial port for RedHat 6.1 INTEL/ELF -// BETA2 Aug 4, 2000, Stronger RedHat support -// Support for Comeau strict mode for end user code -// BETA3 Aug 22, 2000, Support for other LINUX/INTEL/ELF's, including older ones -// BETA4 Sept 2, 2000, Initial support for SCO UNIX + other UNIX x86 SVR3's -// Stronger support for end user Comeau strict mode -// BETA5 Oct 5, 2000, Initial support for Solaris/SPARC -// More SCO support (though still incomplete) -// BETA6 Feb 5, 2001, Minor mods to accomodate Comeau C++ 4.2.45.1 -// BETA7 Mar 13, 2001, Verified with Comeau C++ 4.2.45.2 -// Minor NetBSD support -// BETA8 Apr 1. 2001, Initial support for SunOS/SPARC -// BETA9 Apr 7, 2001, Stronger SCO support + other UNIX x86 SVR3's -// Mods for an fpos_t problem for some LINUXes -// Mods since Destroy did not work in strict mode -// BETA10 Apr 12. 2001, Stronger NetBSD support -// -// PLANNED: -// BETAx TBA TBA, 2001, NetBSD, UNIXWARE, and Windows support expected -// - - -#ifdef __linux__ - -# define _STLP_NO_NATIVE_MBSTATE_T 1 -# define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1 -# define _STLP_NO_NATIVE_WIDE_STREAMS 1 -# define _STLP_NO_LONG_DOUBLE 1 - -// Comeau C++ under LINUX/INTEL/ELF -// Preprocess away "long long" routines for now, even in relaxed mode -# define __wcstoull_internal_defined 1 -# define __wcstoll_internal_defined 1 - -#endif /* __COMO__ under __linux__ */ - -#ifdef __USING_x86SVR3x_WITH_COMO /* SCO et al */ -/* UNIX 386+ SVR3 mods made with __USING_x86SVR3x_WITH_COMO - in other sources, not here */ -# define atan2l atan2 -# define cosl cos -# define sinl sin -# define sqrtl sqrt -# include - inline long double expl(long double arg) { return exp(arg); } - inline long double logl(long double arg) { return log(arg); } -# define log10l log10 - -# define sinhl sinh -# define coshl cosh -# define fabsl fabs -namespace std { - inline int min(int a, int b) { return a>b ? b : a; } -} -#endif - -#ifdef sun -// Comeau C++ under Solaris/SPARC or SunOS - -#ifdef solarissparc -#define __USING_SOLARIS_SPARC_WITH_COMO /* show this in the source when grep'ing for COMO */ -// Note comowchar.h for Solaris/SPARC wchar stuff - -#include -# define sinf sin -# define sinl sin -# define sinhf sinh -# define sinhl sinh -# define cosf cos -# define cosl cos -# define coshf cosh -# define coshl cosh -# define atan2l atan2 -# define atan2f atan2 - inline float logf(float arg) { return log(arg); } - inline long double logl(long double arg) { return log(arg); } -# define log10f log10 -# define log10l log10 -# define expf exp - inline long double expl(long double arg) { return exp(arg); } -# define sqrtf sqrt -# define sqrtl sqrt -# define fabsf fabs -# define fabsl fabs -#else -#define __USING_SUNOS_WITH_COMO - -#define __unix 1 -#define __EXTENSIONS__ /* This might create undue noise somewhere */ -#endif -#endif /* sun */ - -#if defined(__NetBSD__) -// From non-como #ifdef __GNUC__ above -#undef _STLP_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE -#define __unix 1 - -#include -// Some joker #define'd __END_DECLS as }; -#undef __END_DECLS -#define __END_DECLS } - -// prob -#include -#undef __RENAME -#define __RENAME(x) - -#define wchar_t __COMO_WCHAR_T -#include -#undef wchar_t - -#include -# ifdef BORIS_DISABLED -# define atan2l atan2 -# define cosl cos -# define sinl sin -# define sqrtl sqrt - inline long double expl(long double arg) { return exp(arg); } - inline long double logl(long double arg) { return log(arg); } -# define log10l log10 -# define sinhl sinh -# define coshl cosh -# define fabsl fabs -# endif -#endif /* __NetBSD__ under __COMO__ */ - -// Shouldn't need to change anything below here for Comeau C++ -// If so, tell us at comeau@comeaucomputing.com - -#define _STLP_NO_DRAND48 - -#define _STLP_PARTIAL_SPECIALIZATION_SYNTAX -#define _STLP_NO_USING_CLAUSE_IN_CLASS - -#if __COMO_VERSION__ < 4300 -#if __COMO_VERSION__ >= 4245 -#define _STLP_NO_EXCEPTION_HEADER /**/ - // Is this needed? -# include -#endif -#define _STLP_NO_BAD_ALLOC /**/ -#define _STLP_USE_AUTO_PTR_CONVERSIONS /**/ -#endif - -// this one is true only with MS -# if defined (_MSC_VER) -# define _STLP_WCHAR_T_IS_USHORT 1 -# if _MSC_VER <= 1200 -# define _STLP_VENDOR_GLOBAL_CSTD -# endif -# if _MSC_VER < 1100 -# define _STLP_NO_BAD_ALLOC 1 -# define _STLP_NO_EXCEPTION_HEADER 1 -# define _STLP_NO_NEW_NEW_HEADER 1 -# define _STLP_USE_NO_IOSTREAMS 1 -# endif -# endif - -// # define __EDG_SWITCHES - - diff --git a/build/stlport/stlport/stl/config/_cray.h b/build/stlport/stlport/stl/config/_cray.h deleted file mode 100644 index 55327c11da6f..000000000000 --- a/build/stlport/stlport/stl/config/_cray.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#define _STLP_COMPILER "CC" - -// Mostly correct guess, change it for Alpha (and other environments -// that has 64-bit "long") -# define _STLP_UINT32_T unsigned long - -// Uncomment if long long is available -# define _STLP_LONG_LONG long long - -// Uncomment this if your compiler can't inline while(), for() -# define _STLP_LOOP_INLINE_PROBLEMS 1 - -// Uncomment this if your compiler does not support exceptions -// Cray C++ supports exceptions when '-h exceptions' option is user; -// therefore '-D_STLP_HAS_NO_EXCEPTIONS' must be used when '-h exceptions' -// is NOT used. -//# define _STLP_HAS_NO_EXCEPTIONS 1 - -// Delete? -// Define this if compiler lacks header -//# define _STLP_NO_EXCEPTION_HEADER 1 - -// Uncomment this if your C library has lrand48() function -# define _STLP_RAND48 1 - -// Uncomment if native new-style C library headers lile , etc are not available. -# define _STLP_HAS_NO_NEW_C_HEADERS 1 - -// uncomment if new-style headers is available -# define _STLP_NO_NEW_NEW_HEADER 1 - -// uncomment this if and other STD headers put their stuff in ::namespace, -// not std:: -# define _STLP_VENDOR_GLOBAL_STD - -// uncomment this if and the like put stuff in ::namespace, -// not std:: -# define _STLP_VENDOR_GLOBAL_CSTD - -# define _STLP_NATIVE_C_HEADER(__x) -// WARNING: Following is hardcoded to the system default C++ include files -# define _STLP_NATIVE_CPP_RUNTIME_HEADER(__x) - - -# define _STLP_NO_NATIVE_MBSTATE_T -# define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS -//# define _STLP_VENDOR_GLOBAL_EXCEPT_STD diff --git a/build/stlport/stlport/stl/config/_cygwin.h b/build/stlport/stlport/stl/config/_cygwin.h deleted file mode 100644 index 8610743b9979..000000000000 --- a/build/stlport/stlport/stl/config/_cygwin.h +++ /dev/null @@ -1,9 +0,0 @@ -#define _STLP_PLATFORM "Cygwin" - -#define _STLP_UNIX - -#ifndef _STLP_USE_STDIO_IO -# define _STLP_USE_UNIX_IO -#endif - -#define _STLP_LDOUBLE_96 diff --git a/build/stlport/stlport/stl/config/_dec.h b/build/stlport/stlport/stl/config/_dec.h deleted file mode 100644 index fc8ace7d62b6..000000000000 --- a/build/stlport/stlport/stl/config/_dec.h +++ /dev/null @@ -1,113 +0,0 @@ -#define _STLP_COMPILER "Dec" - -# define _STLP_HAS_SPECIFIC_PROLOG_EPILOG - -# define _STLP_NATIVE_HEADER(header) <../cxx/##header> -# define _STLP_NATIVE_C_HEADER(x) <../include/##x> - -#if (__DECCXX_VER < 60300000) -# define _STLP_NATIVE_CPP_C_HEADER(header) <../cxx/##header> -#else -# define _STLP_NATIVE_CPP_C_HEADER(header) -#endif - -# define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../cxx/##header> -# define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../cxx/##header> - -/* Alpha is little-endian */ -# define _STLP_LITTLE_ENDIAN - -// collisions -# define _STLP_DONT_PUT_STLPORT_IN_STD - -#if (__DECCXX_VER < 60000000) - -/* - automatic template instantiation does not - work with namespaces ;( -*/ -# define _STLP_HAS_NO_NAMESPACES 1 - -# define _STLP_NO_NEW_NEW_HEADER 1 - -# define _STLP_NO_WCHAR_T 1 -# define _STLP_NEED_EXPLICIT 1 - -# define _STLP_NO_BOOL 1 -# define _STLP_NEED_TYPENAME 1 -# define _STLP_NO_NEW_STYLE_CASTS 1 -# define _STLP_NEED_MUTABLE 1 -# define _STLP_NO_BAD_ALLOC 1 - - -# define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1 - -# define _STLP_NO_MEMBER_TEMPLATES 1 -# define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -# define _STLP_NO_QUALIFIED_FRIENDS 1 -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 -# define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 -# define _STLP_BROKEN_USING_DIRECTIVE 1 -# define _STLP_NO_EXCEPTION_HEADER 1 -# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 -# define _STLP_DEF_CONST_DEF_PARAM_BUG 1 - -#endif - - -#ifndef __NO_USE_STD_IOSTREAM -/* default is to use new iostreams, anyway */ -# ifndef __USE_STD_IOSTREAM -# define __USE_STD_IOSTREAM -# endif -#endif - -/* -# ifndef __STD_STRICT_ANSI_ERRORS -# endif -*/ - -#ifndef __EXCEPTIONS -# define _STLP_HAS_NO_EXCEPTIONS 1 -#endif - -# ifdef __IMPLICIT_INCLUDE_ENABLED - -/* but, works with ours ;). */ -# define _STLP_LINK_TIME_INSTANTIATION 1 -# else -# undef _STLP_LINK_TIME_INSTANTIATION -# endif - -# if defined (__IMPLICIT_USING_STD) && !defined (__NO_USE_STD_IOSTREAM) -/* - we should ban that ! - # error "STLport won't work with new iostreams and std:: being implicitly included. Please use -std strict_ansi[_errors] or specify __NO_USE_STD_IOSTREAM" -*/ -# endif - -# if (defined (__STD_STRICT_ANSI) || defined (__STD_STRICT_ANSI_ERRORS)) -# define _STLP_STRICT_ANSI 1 -# else -/* we want to enforce it */ -# define _STLP_LONG_LONG long long -# endif - -/* unsigned 32-bit integer type */ -# define _STLP_UINT32_T unsigned int -#if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) -# define _STLP_RAND48 1 -#endif -/* # define _STLP_RAND48 1 */ - -# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 - -# if (__DECCXX_VER <= 60600000) -# define _STLP_HAS_NO_NEW_C_HEADERS 1 -# endif - -#if !defined (_NOTHREADS) && !defined (_STLP_THREADS_DEFINED) -# define _STLP_DEC_THREADS -#endif diff --git a/build/stlport/stlport/stl/config/_dec_vms.h b/build/stlport/stlport/stl/config/_dec_vms.h deleted file mode 100644 index 44a0fb8b224f..000000000000 --- a/build/stlport/stlport/stl/config/_dec_vms.h +++ /dev/null @@ -1,89 +0,0 @@ -// OpenVMS version - -#define _STLP_COMPILER "Dec Vms" - -# define _STLP_NATIVE_HEADER(header) -# define _STLP_NATIVE_C_HEADER(x) -# define _STLP_NATIVE_CPP_C_HEADER(header) -# define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) - -#if (__DECCXX_VER < 60000000) - -// automatic template instantiation does not -// work with namespaces ;( -# define _STLP_HAS_NO_NAMESPACES 1 - -# define _STLP_NO_WCHAR_T 1 -# define _STLP_NEED_EXPLICIT 1 - -# define _STLP_NO_BOOL 1 -# define _STLP_NEED_TYPENAME 1 -# define _STLP_NO_NEW_STYLE_CASTS 1 -# define _STLP_NEED_MUTABLE 1 -# define _STLP_NO_BAD_ALLOC 1 - -# define _STLP_NO_NEW_NEW_HEADER 1 -# define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1 - -# define _STLP_NO_MEMBER_TEMPLATES 1 -# define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -# define _STLP_NO_QUALIFIED_FRIENDS 1 -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 -# define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 -# define _STLP_BROKEN_USING_DIRECTIVE 1 -# define _STLP_NO_EXCEPTION_HEADER 1 -# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 -# define _STLP_DEF_CONST_DEF_PARAM_BUG 1 - -#endif - - -#ifdef __NO_USE_STD_IOSTREAM -# define _STLP_USE_NO_IOSTREAMS 1 -# else -// default is to use new iostreams, anyway -# ifndef __USE_STD_IOSTREAM -# define __USE_STD_IOSTREAM -# endif -#endif - -#ifndef __EXCEPTIONS -# define _STLP_HAS_NO_EXCEPTIONS 1 -#endif - -# ifdef __IMPLICIT_INCLUDE_ENABLED - -#ifdef _STLP_USE_NO_IOSTREAMS -// implicit include introduces conflicts -// between stlport and native lib. -# undef __IMPLICIT_INCLUDE_ENABLED -#endif - -// but, works with ours ;). -# define _STLP_LINK_TIME_INSTANTIATION 1 - -# endif - -# if defined (__IMPLICIT_USING_STD) && !defined (__NO_USE_STD_IOSTREAM) -// we should ban that ! -# error "STLport won't work with new iostreams and std:: being implicitly included. Please use -std strict_ansi[_errors] or specify __NO_USE_STD_IOSTREAM" -# endif - -# if !(defined (__STD_STRICT_ANSI) || defined (__STD_STRICT_ANSI_ERRORS)) -// we want to enforce it -# define _STLP_LONG_LONG long long -# endif - -// unsigned 32-bit integer type -# define _STLP_UINT32_T unsigned int -#if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) -# define _STLP_RAND48 1 -#endif -// # define _STLP_RAND48 1 - -# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 - -#define _STLP_HAS_NO_NEW_C_HEADERS 1 - diff --git a/build/stlport/stlport/stl/config/_detect_dll_or_lib.h b/build/stlport/stlport/stl/config/_detect_dll_or_lib.h deleted file mode 100644 index a062e6929c3a..000000000000 --- a/build/stlport/stlport/stl/config/_detect_dll_or_lib.h +++ /dev/null @@ -1,74 +0,0 @@ -/* File used to define macros: - * _STLP_USE_DYNAMIC_LIB: To signal use STLport as a dll or build of the - * STLport dlls. - * _STLP_USE_STATIC_LIB: To signal use of STLport as a static lib or build of - * the STLport static libs. - * _STLP_USING_CROSS_NATIVE_RUNTIME_LIB: Signal that we are using a native runtime - * in a version different from the STLport one. - * If _STLP_USE_DYNAMIC_LIB or _STLP_USE_STATIC_LIB is alreday defined it means that - * user forces use of a specific version. In this case _STLP_USING_CROSS_NATIVE_RUNTIME_LIB - * will surely be defined otherwise there is no need to force macro defines. - * - * Before including this file the compiler must define: - * _STLP_DLL: If we are building a dll - * _STLP_RUNTIME_DLL: If we are using native runtime as a dll - */ -#if defined (__BUILDING_STLPORT) -# undef _STLP_USE_DYNAMIC_LIB -# undef _STLP_USE_STATIC_LIB -# if defined (_STLP_DLL) -/* We are building the STLport dll */ -# define _STLP_USE_DYNAMIC_LIB -# if !defined (_STLP_RUNTIME_DLL) -# define _STLP_USING_CROSS_NATIVE_RUNTIME_LIB -# endif -# else -# define _STLP_USE_STATIC_LIB -# if defined (_STLP_RUNTIME_DLL) -# define _STLP_USING_CROSS_NATIVE_RUNTIME_LIB -# endif -# endif -#else -# if !defined (_STLP_NO_IOSTREAMS) -/* STLport use only depend on _STLP_RUNTIME_DLL as we are replacing - * the native runtime. - */ -# if defined (_STLP_RUNTIME_DLL) -# if !defined (_STLP_USE_STATIC_LIB) -# if !defined (_STLP_USE_DYNAMIC_LIB) -# define _STLP_USE_DYNAMIC_LIB -# endif -# else -/* The user is forcing use of STLport as a dynamic library. We signal it so - * that the STLport namespace will be modify to report such a combination - * and force the user to link with the rebuilt STLport library. - */ -# define _STLP_USING_CROSS_NATIVE_RUNTIME_LIB -# endif -# else -# if !defined(_STLP_USE_DYNAMIC_LIB) -# if !defined (_STLP_USE_STATIC_LIB) -# define _STLP_USE_STATIC_LIB -# endif -# else -/* Idem previous remark but the user forces use of the static native runtime. - */ -# define _STLP_USING_CROSS_NATIVE_RUNTIME_LIB -# endif -# endif -# else -/* If we do not build and use STLport libs we consider that we are in a static lib - * mode as only dynamic lib needs additional export/import specifier. - */ -# define _STLP_USE_STATIC_LIB -# endif -#endif - -/* we don't have a static native runtime library on evc3/evc4 */ -#ifdef _STLP_WCE -# undef _STLP_USING_CROSS_NATIVE_RUNTIME_LIB -#endif - -#if !defined (_STLP_USE_DYNAMIC_LIB) && !defined (_STLP_USE_STATIC_LIB) -# error Unknown STLport usage config (dll/lib?) -#endif diff --git a/build/stlport/stlport/stl/config/_dm.h b/build/stlport/stlport/stl/config/_dm.h deleted file mode 100644 index 4f707323aa8b..000000000000 --- a/build/stlport/stlport/stl/config/_dm.h +++ /dev/null @@ -1,121 +0,0 @@ -// STLport configuration file for Digital Mars C++ - -#define _STLP_COMPILER __DMC_VERSION_STRING__ - -#if (__DMC__ < 0x849) -# error "Digital Mars C++ compilers before version 8.49 are not supported!" -#endif - -/* DMC goes too far in template instanciation and tries to fully instanciate - * slist > for instance. The generation of assignment - * operator fails of course so we are force to use mutable key for this compiler. - */ -#define _STLP_NO_CONST_IN_PAIR -#define _STLP_DONT_SUP_DFLT_PARAM - -#ifndef _CPPUNWIND -# define _STLP_NO_EXCEPTIONS -#endif - -#ifndef _CPPRTTI -# define _STLP_NO_RTTI -#endif - -#define _STLP_VENDOR_GLOBAL_CSTD - -//DMC prefer enum to real static const variable because it do not consider -//static const as const enough to be used in switch declaration... -#define _STLP_STATIC_CONST_INIT_BUG - -#if !defined (_WIN32) -// it's not fully supported on non-Win32 platforms -# define _STLP_NO_NATIVE_WIDE_FUNCTIONS -#endif - -/* _STLP_NO_OWN_NAMESPACE is defined because Digital Mars' linker and libarian - appear to have problems with STLport namespaces. Summary of the issues: - - STATIC: Digital Mars' librarian (lib.exe) may fail with "len <= IDMAX" error - if _STLP_DEBUG is defined. This is because Digital Mars' librarian uses - Microsoft OMF format, which limits identifier length to about 512 bytes. - With STLport namespaces, some identifiers such as Category_Map in - src/locale_catalog.cpp may exceed the maximum OMF identifier length. - - DYNAMIC: Export issues with cin, cout, cerr, clog in src/iostream.cpp. - Exports in Digital Mars 'def' file must match mangled names in iostream.cpp. - With STLport namespaces, the mangled names in the intermediate files no - longer match these pre-defined exports. To use STLport dynamic libraries - and STLport namespaces with Digital Mars, the pre-defined exports in - src/iostream.cpp and the related Digital Mars 'def' files would need to be - revised. */ -#define _STLP_NO_OWN_NAMESPACE 1 - -// select threads strategy -#if defined (_MT) && !defined (_STLP_NO_THREADS) -# define _STLP_THREADS -#endif - -#ifndef _BOOL_DEFINED -# define _STLP_NO_BOOL -#else -# define _STLP_DONT_USE_BOOL_TYPEDEF -#endif - -#if _INTEGRAL_MAX_BITS >= 64 -# define _STLP_LONG_LONG long long -#endif - -#define _STLP_MARK_PARAMETER_AS_UNUSED(X) -#define _STLP_DONT_USE_PRIV_NAMESPACE -#define _STLP_PRIV -#define _STLP_THROW_RETURN_BUG - -#if !defined (_DLL) -# undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT -#endif - -#if (__DMC__ < 0x849) -# define _STLP_NO_BAD_ALLOC -#endif - -#define _STLP_USE_ABBREVS -#define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER - -#define _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND -#define _STLP_EXPORT_DECLSPEC __declspec(dllexport) -#define _STLP_IMPORT_DECLSPEC __declspec(dllimport) - -#define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport) -#define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport) - -#define _STLP_NEED_ADDITIONAL_STATIC_DECLSPEC - -//#define _STLP_IMPORT_TEMPLATE_KEYWORD __declspec(dllimport) -//#define _STLP_EXPORT_TEMPLATE_KEYWORD __declspec(dllexport) - -#if defined (_WINDLL) -# define _STLP_DLL -#endif -#if defined (_DLL) -# define _STLP_RUNTIME_DLL -#endif -#include -#undef _STLP_RUNTIME_DLL -#undef _STLP_DLL - -#if defined (_STLP_USE_DYNAMIC_LIB) -# define _STLP_USE_DECLSPEC 1 -# if defined (__BUILDING_STLPORT) -# define _STLP_CALL __export -# else -# define _STLP_CALL -# endif -#else -# define _STLP_CALL -#endif - -#include - -#undef __SC__ - -#include diff --git a/build/stlport/stlport/stl/config/_epilog.h b/build/stlport/stlport/stl/config/_epilog.h deleted file mode 100644 index 30d1e244e774..000000000000 --- a/build/stlport/stlport/stl/config/_epilog.h +++ /dev/null @@ -1,29 +0,0 @@ -#if defined (_STLP_MSVC) || defined (__ICL) - -# pragma warning (pop) -# pragma pack (pop) - -#elif defined (__BORLANDC__) - -# pragma option pop -# pragma option -w-pow // -w-8062 Previous options and warnings not restored - -#elif defined (__sgi) && !defined (__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) - -# pragma reset woff 1174 -# pragma reset woff 1375 -# pragma reset woff 1209 -/* from iterator_base.h */ -# pragma reset woff 1183 - -#elif defined (__DECCXX) - -# ifdef __PRAGMA_ENVIRONMENT -# pragma __environment __restore -# endif - -#elif defined (__IBMCPP__) - -# pragma info(restore) - -#endif diff --git a/build/stlport/stlport/stl/config/_evc.h b/build/stlport/stlport/stl/config/_evc.h deleted file mode 100644 index c46045068952..000000000000 --- a/build/stlport/stlport/stl/config/_evc.h +++ /dev/null @@ -1,333 +0,0 @@ -/* - * File to have Microsoft eMbedded Visual C++ 3.0 and .NET working with STLport - * May 2004 - * Origin : Zdenek Nemec - zero@mapfactor.com - * Michael Fink - vividos@users.sourceforge.net - */ - -#ifndef _STLP_EVC_H -#define _STLP_EVC_H - -#define _STLP_COMPILER "eMbedded Visual C++" - -// This flag is being used by STLport to support -// old-fashioned Windows CE SDK (see stl_wince.h) -// do not use with eMebedded Visual C++ 3 or 4! -#ifdef _STLP_WINCE -# undef _STLP_WINCE -#endif - -/* Compiler dependent define. The following defines may be available: - * _STLP_WCE_EVC3 when compiling under eMbedded Visual C++ 3 - * _STLP_WCE_NET when compiling under eMbedded Visual C++ .NET - * _STLP_WCE always defined when compiling with one of the above - */ -#undef _STLP_WCE_EVC3 -#undef _STLP_WCE_NET - -#if (_WIN32_WCE > 300) -# define _STLP_WCE_NET UNDER_CE -#elif (_WIN32_WCE == 300) -# define _STLP_WCE_EVC3 UNDER_CE -#else -# error No support for Windows CE below 3.0! -#endif - -// This is defined for all platforms using Windows CE -#define _STLP_WCE - -/* All Windows CE versions up to at least version 5 are little-endian, even - * if the hardware (like e.g. MIPS) can be configured for big-endian, too. */ -#define _STLP_LITTLE_ENDIAN - -// Ensure _DEBUG is defined. -#if defined (DEBUG) && !defined (_DEBUG) -# define _DEBUG -#endif - -// inherit all msvc6 options -#include - -// CE up to at least version 5 has no C locale support -#define _STLP_NO_LOCALE_SUPPORT - -#if _WIN32_WCE >= 420 - // SDKs built with PB5 have terminate&co in namespace std... -# define _STLP_VENDOR_TERMINATE_STD _STLP_VENDOR_STD -# define _STLP_VENDOR_UNCAUGHT_EXCEPTION_STD _STLP_VENDOR_STD - // ...and new_handler/set_new_handler in the global namespace. -# define _STLP_GLOBAL_NEW_HANDLER 1 -#endif - -// Always threaded in eMbedded Visual C++ 3.0 and .NET -#ifndef _MT -# define _MT -#endif - -// we don't have a static native runtime library -#undef _STLP_USING_CROSS_NATIVE_RUNTIME_LIB - -#if _WIN32_WCE < 400 -// no long double under CE3 and older -# define _STLP_NO_LONG_DOUBLE -#endif - -// no *f and *l math functions available -#define _STLP_NO_VENDOR_MATH_F -#define _STLP_NO_VENDOR_MATH_L - -/* - * Redirect cout, cerr and clog: - * If defined redirect cout, cerr and clog to - * files stdout.txt, stderr.txt and stdlog.txt - */ -//# define _STLP_REDIRECT_STDSTREAMS - -/* - * Static class members may generate LNK1179: - * Wrong COMDAT packing may cause LNK1179 error. - * For details see http://groups.google.com/groups?th=8a05c82c4ffee280 - * example P78. This define is not used/needed at this moment - * but may came handy in future... - */ -//# define _STLP_STATIC_MEMBERS_BUG - -// Use wide-string interface of windows native functions (CreateFile...). -// Note that this should be defined all the time while under CE. -#if defined (UNICODE) -# define _STLP_USE_WIDE_INTERFACE -#endif - -// Force exception std to std instead of __std_alias. -#if defined (__cplusplus) && !defined (_STLP_HAS_NO_NAMESPACES) -# ifdef _STLP_VENDOR_EXCEPT_STD -# undef _STLP_VENDOR_EXCEPT_STD -# endif -# define _STLP_VENDOR_EXCEPT_STD std -#endif - -// short string optimization bug under evc3, evc4 using ARM compiler -#if _MSC_VER < 1400 && (defined (ARM) || defined (_ARM_)) -# define _STLP_DONT_USE_SHORT_STRING_OPTIM -#endif - -// when using MFC, disable another placement new declaration, since there is one in wcealt.h -#if !defined (__BUILDING_STLPORT) && defined (_MFC_VER) -# define __PLACEMENT_NEW_INLINE -#endif - -// threads -#undef _REENTRANT -#define _REENTRANT -#undef _NOTHREADS - -// Use old fashioned headers (ctime vs. time.h). -#undef _STLP_NO_NEW_C_HEADERS -#define _STLP_NO_NEW_C_HEADERS - -// exception handling support: only on evc4 and user added /GX to project settings -#if defined (_STLP_WCE_EVC3) || !defined (_CPPUNWIND) -# define _STLP_NO_EXCEPTION_HEADER -# define _STLP_NO_EXCEPTIONS -# undef _STLP_USE_EXCEPTIONS -# ifndef _STLP_THROW_BAD_ALLOC -# define _STLP_THROW_BAD_ALLOC { _STLP_WINCE_TRACE(L"out of memory"); ExitThread(1); } -# endif -#endif - -#define _STLP_WINCE_TRACE(msg) OutputDebugString(msg) - -/* - * eMbedded Visual C++ .NET specific settings - */ -#if defined (_STLP_WCE_NET) - -// evc4 has no locale and time support -# define _STLP_NO_LOCALE_SUPPORT -# define _STLP_NO_TIME_SUPPORT - -// ptrdiff_t is not defined in evc4 headers -# ifndef _PTRDIFF_T_DEFINED - typedef int ptrdiff_t; -# define _PTRDIFF_T_DEFINED -# endif - -/* - * Helper macros for including the native headers in cases where a file with - * the same name also exists in the STLport include folder. The idea behind - * this is that we first go up one directory and then down into a dir that - * is only present in the native install but not in STLport. - * - */ -# if !defined (_STLP_NATIVE_INCLUDE_PATH) -# if defined (_X86_) -# if defined (_STLP_WCE_TARGET_PROC_SUBTYPE_EMULATOR) -# define _STLP_NATIVE_INCLUDE_PATH ../Emulator -# else -# define _STLP_NATIVE_INCLUDE_PATH ../X86 -# endif -# elif defined (_ARM_) -# if _MSC_VER < 1400 - // eVC3/4 -# if defined (ARMV4) -# define _STLP_NATIVE_INCLUDE_PATH ../Armv4 -# elif defined (ARMV4I) -# define _STLP_NATIVE_INCLUDE_PATH ../Armv4i -# elif defined (ARMV4T) -# define _STLP_NATIVE_INCLUDE_PATH ../Armv4t -# else -# error Unknown ARM SDK. -# endif -# else - // VC8 crosscompiling for CE -# if defined (ARMV4) - // VC8 bundled Pocket PC 2003 SDK don't have a target CPU subfolder. -# if defined(WIN32_PLATFORM_PSPC) -# define _STLP_NATIVE_INCLUDE_PATH ../Include -# else -# define _STLP_NATIVE_INCLUDE_PATH ../Armv4 -# endif -# elif defined(ARMV4I) || defined(ARMV4T) -# define _STLP_NATIVE_INCLUDE_PATH ../Armv4i -# else -# error Unknown ARM SDK. -# endif -# endif -# elif defined (_MIPS_) -# if defined (MIPS16) -# define _STLP_NATIVE_INCLUDE_PATH ../mips16 -# elif defined (MIPSII) -# define _STLP_NATIVE_INCLUDE_PATH ../mipsII -# elif defined (MIPSII_FP) -# define _STLP_NATIVE_INCLUDE_PATH ../mipsII_fp -# elif defined (MIPSIV) -# define _STLP_NATIVE_INCLUDE_PATH ../mipsIV -# elif defined (MIPSIV_FP) -# define _STLP_NATIVE_INCLUDE_PATH ../mipsIV_fp -# else -# error Unknown MIPS SDK. -# endif -# elif defined (SHx) -# if defined (SH3) -# define _STLP_NATIVE_INCLUDE_PATH ../sh3 -# elif defined (SH4) -# define _STLP_NATIVE_INCLUDE_PATH ../sh4 -# else -# error Unknown SHx SDK. -# endif -# else -# error Unknown SDK. -# endif -# endif /* !_STLP_NATIVE_INCLUDE_PATH */ - -/* Workaround when using MFCCE and using together: MFCCE's wcealt.h doesn't - * check for __PLACEMENT_NEW_INLINE before defining operator new, so when - * defines the operatore before, there will be an error C2084: - * "function 'void *__cdecl operator new(unsigned int,void *)' already has a body". - */ -# ifdef _STLP_USE_MFC -# define __PLACEMENT_NEW_INLINE -# endif - -#endif /* _STLP_WCE_NET */ - -/* - * eMbedded Visual C++ 3.0 specific settings - */ -#if defined (_STLP_WCE_EVC3) - -# define _STLP_NO_NATIVE_MBSTATE_T - -// evc3 has no locale and time support -# define _STLP_NO_LOCALE_SUPPORT -# define _STLP_NO_TIME_SUPPORT - -// evc3 has new, but no explicit header -# define _STLP_NO_NEW_HEADER -# define _STLP_NO_NEW_NEW_HEADER - -// evc3 has no bad_alloc and no typeinfo -# undef _STLP_NO_BAD_ALLOC -# define _STLP_NO_BAD_ALLOC - -# undef _STLP_NO_TYPEINFO -# define _STLP_NO_TYPEINFO - -// missing things in eMbedded Visual C++ 3.0 headers -# ifndef _SIZE_T_DEFINED - typedef unsigned int size_t; -# define _SIZE_T_DEFINED -# endif - -# ifndef _WCHAR_T_DEFINED - typedef unsigned short wchar_t; -# define _WCHAR_T_DEFINED -# endif - -// ptrdiff_t is not defined in evc3 headers -# ifndef _PTRDIFF_T_DEFINED - typedef int ptrdiff_t; -# define _PTRDIFF_T_DEFINED -# endif - -// clock_t is not defined in evc3 headers -# ifndef _CLOCK_T_DEFINED - typedef long clock_t; -# define _CLOCK_T_DEFINED -# endif - -// Struct tm is not defined in evc3 headers -# ifndef _TM_DEFINED -struct tm { - int tm_sec; /* seconds after the minute - [0,59] */ - int tm_min; /* minutes after the hour - [0,59] */ - int tm_hour; /* hours since midnight - [0,23] */ - int tm_mday; /* day of the month - [1,31] */ - int tm_mon; /* months since January - [0,11] */ - int tm_year; /* years since 1900 */ - int tm_wday; /* days since Sunday - [0,6] */ - int tm_yday; /* days since January 1 - [0,365] */ - int tm_isdst; /* daylight savings time flag */ -}; -# define _TM_DEFINED -# endif - -// define placement new and delete operator -// note: when MFCCE headers are included first, don't define the new operator, -// since it was already defined in wcealt.h -# ifdef __cplusplus -# ifndef __PLACEMENT_NEW_INLINE -# ifndef _MFC_VER -inline void *__cdecl operator new(size_t, void *_P) { return (_P); } -# endif /* _MFC_VER */ -inline void __cdecl operator delete(void *, void *) { return; } -# define __PLACEMENT_NEW_INLINE -# endif -# endif /* __cplusplus */ - -// evc3 doesn't have native wide functions, e.g. fgetwc, wmemmove -# define _STLP_NO_NATIVE_WIDE_FUNCTIONS - -// evc3 doesn't have assert.h -# ifndef _ASSERT_DEFINED -# define assert(expr) _STLP_ASSERT(expr) -# define _ASSERT_DEFINED -# endif - -#endif /* _STLP_WCE_EVC3 */ - -/* - * original call: TerminateProcess(GetCurrentProcess(), 0); - * we substitute the GetCurrentProcess() with the result of the inline function - * defined in kfuncs.h, since we then can avoid including at all. - * all needed Win32 API functions are defined in - */ -#ifndef _ABORT_DEFINED -# define _STLP_ABORT() TerminateProcess(reinterpret_cast(66), 0) -# define _ABORT_DEFINED -#endif - -// Notice: windows.h isn't included here anymore; all needed defines are in -// stl/_windows.h now - -#endif /* _STLP_EVC_H */ diff --git a/build/stlport/stlport/stl/config/_feedback.h b/build/stlport/stlport/stl/config/_feedback.h deleted file mode 100644 index 0171ca511938..000000000000 --- a/build/stlport/stlport/stl/config/_feedback.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Helper header to give feedback about build environment configuration - * thanks to #pragma message directives. - */ - -#if defined (_STLP_VERBOSE) -# define _STLP_VERBOSE_MODE_SUPPORTED - -# if defined (_STLP_COMPILER) -# pragma message (_STLP_COMPILER) -# endif - -# if defined (_STLP_NO_RTTI) -# pragma message ("STLport: RTTI support -> Disabled") -# else -# pragma message ("STLport: RTTI support -> Enabled") -# endif - -# if defined (_STLP_HAS_NO_EXCEPTIONS) -# pragma message ("STLport: Exception support -> Disabled") -# else -# pragma message ("STLport: Exception support -> Enabled") -# endif - -# if defined (_STLP_THREADS) -# pragma message ("STLport: Threading model -> Multi") -# else -# pragma message ("STLport: Threading model -> Mono") -# endif - -# if defined (_STLP_USE_DYNAMIC_LIB) -# pragma message ("STLport: Library model -> Dynamic") -# else -# pragma message ("STLport: Library model -> Static") -# endif - -# if defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB) -# if defined (_STLP_USE_DYNAMIC_LIB) -# pragma message ("STLport: Native library model -> Static") -# else -# pragma message ("STLport: Native library model -> Dynamic") -# endif -# endif -#endif diff --git a/build/stlport/stlport/stl/config/_freebsd.h b/build/stlport/stlport/stl/config/_freebsd.h deleted file mode 100644 index ab9339bd21d8..000000000000 --- a/build/stlport/stlport/stl/config/_freebsd.h +++ /dev/null @@ -1,3 +0,0 @@ -#define _STLP_PLATFORM "Free BSD" - -#define _STLP_USE_UNIX_IO diff --git a/build/stlport/stlport/stl/config/_fujitsu.h b/build/stlport/stlport/stl/config/_fujitsu.h deleted file mode 100644 index cf91e05f94ca..000000000000 --- a/build/stlport/stlport/stl/config/_fujitsu.h +++ /dev/null @@ -1,7 +0,0 @@ -/* STLport configuration for Fujitsu compiler : looks like a perfect one ! */ -#define _STLP_COMPILER "Fujitsu" - -#define _STLP_NATIVE_INCLUDE_PATH ../std -#define _STLP_UINT32_T unsigned int -#define _STLP_LONG_LONG long long -#define _STLP_WCHAR_SUNPRO_EXCLUDE 1 diff --git a/build/stlport/stlport/stl/config/_gcc.h b/build/stlport/stlport/stl/config/_gcc.h deleted file mode 100644 index 0d41863ee29a..000000000000 --- a/build/stlport/stlport/stl/config/_gcc.h +++ /dev/null @@ -1,198 +0,0 @@ -/* STLport configuration file - * It is internal STLport header - DO NOT include it directly - */ - -#define _STLP_COMPILER "gcc" - -#define _STLP_HAS_INCLUDE_NEXT 1 - -#if (__GNUC__ < 2) || ((__GNUC__ < 3) && ((__GNUC_MINOR__ < 95) || (__GNUC_MINOR__ == 96))) -/* We do not support neither the unofficial 2.96 gcc version. */ -# error GNU compilers before 2.95 are not supported anymore. -#endif - -/* Systems having GLIBC installed have different traits */ -#if defined (__linux__) -# ifndef _STLP_USE_GLIBC -# define _STLP_USE_GLIBC 1 -# endif -# if defined (__UCLIBC__) && !defined (_STLP_USE_UCLIBC) -# define _STLP_USE_UCLIBC 1 -# endif -#endif - -#if defined (__CYGWIN__) && \ - (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3) && !defined (_GLIBCPP_USE_C99) -# define _STLP_NO_VENDOR_MATH_L -# define _STLP_NO_VENDOR_STDLIB_L -#endif - -#if (__GNUC__ < 3) -# define _STLP_NO_VENDOR_STDLIB_L -#endif - -#if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4)) -/* define for gcc versions before 3.4.0. */ -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD -#endif - -#if !defined (_REENTRANT) && (defined (_THREAD_SAFE) || \ - (defined (__OpenBSD__) && defined (_POSIX_THREADS)) || \ - (defined (__MINGW32__) && defined (_MT))) -# define _REENTRANT -#endif - -#if defined (__DJGPP) -# define _STLP_RAND48 1 -# define _NOTHREADS 1 -# undef _PTHREADS -# define _STLP_LITTLE_ENDIAN -#endif - -#if defined (__MINGW32__) -/* Mingw32, egcs compiler using the Microsoft C runtime */ -# if (__GNUC__ >= 3) -/* For gcc before version 3 this macro is defined below */ -# define _STLP_VENDOR_GLOBAL_CSTD -# endif -# undef _STLP_NO_DRAND48 -# define _STLP_NO_DRAND48 -# define _STLP_CALL -#endif /* __MINGW32__ */ - -#if defined (__CYGWIN__) || defined (__MINGW32__) -# if !defined (_STLP_USE_STATIC_LIB) -# define _STLP_USE_DECLSPEC 1 -# if !defined (_STLP_USE_DYNAMIC_LIB) -# define _STLP_USE_DYNAMIC_LIB -# endif -# define _STLP_EXPORT_DECLSPEC __declspec(dllexport) -# define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport) -# define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport) -# endif -/* The following is defined independently of _STLP_USE_STATIC_LIB because it is also - * used to import symbols from PSDK under MinGW - */ -# define _STLP_IMPORT_DECLSPEC __declspec(dllimport) -#else -# if (__GNUC__ >= 4) -# if !defined (_STLP_USE_STATIC_LIB) -# if !defined (_STLP_USE_DYNAMIC_LIB) -# define _STLP_USE_DYNAMIC_LIB -# endif -# define _STLP_USE_DECLSPEC 1 -# define _STLP_EXPORT_DECLSPEC __attribute__((visibility("default"))) -# define _STLP_IMPORT_DECLSPEC __attribute__((visibility("default"))) -# define _STLP_CLASS_EXPORT_DECLSPEC __attribute__((visibility("default"))) -# define _STLP_CLASS_IMPORT_DECLSPEC __attribute__((visibility("default"))) -# endif -# endif -#endif - -#if defined (__CYGWIN__) || defined (__MINGW32__) || !(defined (_STLP_USE_GLIBC) || defined (__sun) || defined(__APPLE__)) -# if !defined (__MINGW32__) && !defined (__CYGWIN__) -# define _STLP_NO_NATIVE_MBSTATE_T 1 -# endif -# if !defined (__MINGW32__) || (__GNUC__ < 3) || (__GNUC__ == 3) && (__GNUC_MINOR__ < 4) -# define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1 -# endif -# define _STLP_NO_NATIVE_WIDE_STREAMS 1 -#endif - -#define _STLP_NORETURN_FUNCTION __attribute__((noreturn)) - -/* Mac OS X is a little different with namespaces and cannot instantiate - * static data members in template classes */ -#if defined (__APPLE__) -# if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))) -/* Mac OS X is missing a required typedef and standard macro */ -typedef unsigned int wint_t; -# endif - -# define __unix - -# define _STLP_NO_LONG_DOUBLE - -/* Mac OS X needs all "::" scope references to be "std::" */ -# define _STLP_USE_NEW_C_HEADERS - -# define _STLP_NO_VENDOR_STDLIB_L - -#endif /* __APPLE__ */ - -/* g++ 2.7.x and above */ -#define _STLP_LONG_LONG long long - -#ifdef _STLP_USE_UCLIBC - /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */ -# define _STLP_NO_VENDOR_MATH_F - /* No *l math fuctions variants (i.e. sqrtl, fabsl, etc.) */ -# define _STLP_NO_VENDOR_MATH_L -# define _STLP_NO_LONG_DOUBLE -#endif - -#if defined (__OpenBSD__) || defined (__FreeBSD__) -# define _STLP_NO_VENDOR_MATH_L -# define _STLP_NO_VENDOR_STDLIB_L /* no llabs */ -# ifndef __unix -# define __unix -# endif -#endif - -#if defined (__alpha__) -# define _STLP_NO_VENDOR_MATH_L -#endif - -#if defined (__hpux) -# define _STLP_VENDOR_GLOBAL_CSTD 1 -# define _STLP_NO_VENDOR_STDLIB_L /* no llabs */ - /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */ -# define _STLP_NO_VENDOR_MATH_F -#endif - -#if (__GNUC__ >= 3) -# ifndef _STLP_HAS_NO_NEW_C_HEADERS -/* -# ifndef _STLP_USE_UCLIBC -*/ -# define _STLP_HAS_NATIVE_FLOAT_ABS -/* -# endif -*/ -# else -# ifdef _STLP_USE_GLIBC -# define _STLP_VENDOR_LONG_DOUBLE_MATH 1 -# endif -# endif -#endif - -#if (__GNUC__ < 3) -# define _STLP_HAS_NO_NEW_C_HEADERS 1 -# define _STLP_VENDOR_GLOBAL_CSTD 1 -# define _STLP_DONT_USE_PTHREAD_SPINLOCK 1 -# ifndef __HONOR_STD -# define _STLP_VENDOR_GLOBAL_EXCEPT_STD 1 -# endif -/* egcs fails to initialize builtin types in expr. like this : new(p) char(); */ -# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 -#endif - -#undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT -#undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT - -/* strict ANSI prohibits "long long" ( gcc) */ -#if defined ( __STRICT_ANSI__ ) -# undef _STLP_LONG_LONG -#endif - -#ifndef __EXCEPTIONS -# undef _STLP_DONT_USE_EXCEPTIONS -# define _STLP_DONT_USE_EXCEPTIONS 1 -#endif - -#if (__GNUC__ >= 3) -/* Instantiation scheme that used (default) in gcc 3 made void of sense explicit - instantiation within library: nothing except increased library size. - ptr - */ -# define _STLP_NO_FORCE_INSTANTIATE -#endif diff --git a/build/stlport/stlport/stl/config/_hpacc.h b/build/stlport/stlport/stl/config/_hpacc.h deleted file mode 100644 index 920b8b417138..000000000000 --- a/build/stlport/stlport/stl/config/_hpacc.h +++ /dev/null @@ -1,129 +0,0 @@ -/* STLport configuration file - * It is internal STLport header - DO NOT include it directly - */ - -#define _STLP_COMPILER "aCC" - -/* system C-library dependent */ -#if defined (_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) -# define _STLP_RAND48 1 -#endif -/* # define _STLP_RAND48 1 */ -/* #define _STLP_NO_NATIVE_MBSTATE_T 1 */ -#define _STLP_HPACC_BROKEN_BUFEND 1 -#define _STLP_WCHAR_HPACC_EXCLUDE 1 - -/* this was reported to help, just as with SUN CC 4.2 */ -#define _STLP_INLINE_STRING_LITERAL_BUG - -/* specific prolog is needed to select correct threads impl */ -#define _STLP_HAS_SPECIFIC_PROLOG_EPILOG - -/* HP aCC with +noeh */ -#ifdef __HPACC_NOEH -# define _STLP_HAS_NO_EXCEPTIONS 1 -#endif - -#define _STLP_NO_FORCE_INSTANTIATE -#define _STLP_LONG_LONG long long -#define _STLP_NO_VENDOR_STDLIB_L - -/* The aCC6 compiler is using the EDG Front End. Unfortunately, prior to - * version A.06.12, defining the __EDG__ and __EDG_VERSION__ macros was - * disabled. It was corrected in A.06.12. - */ -#if ((__HP_aCC > 60000) && (__HP_aCC < 61200)) -# define __EDG__ -# define __EDG_VERSION__ 306 -#endif - -#if (__HP_aCC >= 32500 ) -# define _STLP_USE_NEW_C_HEADERS - -# define _STLP_FORCE_ALLOCATORS(t,a) \ - typedef typename _Alloc_traits::_Orig _STLP_dummy_type1;\ - typedef typename _STLP_dummy_type1:: _STLP_TEMPLATE rebind::other _STLP_dummy_type2; - -# if defined (_HP_NAMESPACE_STD) // option -AA -/* from now, we have a full standard lib in namespace std - * - * -AA indicates that we are compiling against Rogue Wave 2.2.1 - * STL shipped with the HP aCC compiler. -AA tells the compiler - * to use the STL defined in the include_std directory. - */ -# define _STLP_NATIVE_INCLUDE_PATH ../include_std -# else // option -Aa -# define _STLP_VENDOR_GLOBAL_STD 1 -# define _STLP_VENDOR_GLOBAL_CSTD 1 -# define _STLP_DONT_THROW_RANGE_ERRORS 1 -# endif -#endif - -#if (__HP_aCC >= 31400 && __HP_aCC < 32500) -# define _STLP_FORCE_ALLOCATORS(t,a) \ -typedef typename _Alloc_traits::_Orig _STLP_dummy_type1;\ -typedef typename _STLP_dummy_type1:: _STLP_TEMPLATE rebind::other _STLP_dummy_type2; -# define _STLP_NO_CWCHAR -# if defined (_NAMESPACE_STD) // option -AA -/* from now, we have a full standard lib in namespace std */ -# define _STLP_NATIVE_INCLUDE_PATH ../include_std -# else /* kind of compatibility mode */ -# define _STLP_VENDOR_GLOBAL_STD 1 -# define _STLP_VENDOR_GLOBAL_CSTD 1 -# define _STLP_DONT_THROW_RANGE_ERRORS 1 -# define _STLP_NO_ROPE 1 -# endif -#endif /* 314 */ - -#if ((__HP_aCC >= 30000 && __HP_aCC < 31400) || (__HP_aCC == 1)) // A.03.13: __HP_aCC == 1 - -# if (__HP_aCC != 1) -# define _STLP_HAS_NO_NEW_C_HEADERS 1 -# endif - -# define _STLP_NO_QUALIFIED_FRIENDS 1 -/* aCC bug ? need explicit args on constructors of partial specialized - * classes - */ -# define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS 1 -/* ?? fbp : maybe present in some versions ? */ -# define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -/* and stuff is in global namespace */ -# define _STLP_VENDOR_GLOBAL_EXCEPT_STD -/* fbp : moved here */ -# define _STLP_VENDOR_GLOBAL_CSTD 1 -/* # define _INCLUDE_HPUX_SOURCE */ -# define _XPG4 -# define _INCLUDE_XOPEN_SOURCE -# define _INCLUDE_AES_SOURCE -#endif - -#if (__HP_aCC <= 30000 && __HP_aCC >= 12100) -/* Special kludge to workaround bug in aCC A.01.23, CR JAGac40634 */ -# ifdef _STLP_DEBUG -static void _STLP_dummy_literal() { const char *p = "x";} -static void _STLP_dummy_literal_2() { const char *p = "123456789"; } -static void _STLP_dummy_literal_3() { const char *p = "123456700000000000000089";} -# endif - -# define _STLP_VENDOR_GLOBAL_STD 1 -# define _STLP_VENDOR_GLOBAL_CSTD 1 -# define _STLP_DONT_THROW_RANGE_ERRORS 1 -# define _STLP_STATIC_CONST_INIT_BUG 1 -# if (__HP_aCC < 12700) -/* new flag: on most HP compilers cwchar is missing */ -# define _STLP_NO_CWCHAR -# endif - -# define _STLP_FORCE_ALLOCATORS(t,a) \ - typedef typename _Alloc_traits::_Orig _STLP_dummy_type1;\ - typedef typename _STLP_dummy_type1:: _STLP_TEMPLATE rebind::other _STLP_dummy_type2; -#endif - -#if __HP_aCC == 1 -# define _STLP_BROKEN_USING_IN_CLASS -# define _STLP_USING_BASE_MEMBER -# define _STLP_NO_CWCHAR -/* # define _STLP_NO_WCHAR_T 1 */ -#endif diff --git a/build/stlport/stlport/stl/config/_hpux.h b/build/stlport/stlport/stl/config/_hpux.h deleted file mode 100644 index 385c514cc026..000000000000 --- a/build/stlport/stlport/stl/config/_hpux.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef __stl_config__hpux_h -#define __stl_config__hpux_h - -#define _STLP_PLATFORM "HP Unix" - -#define _STLP_USE_UNIX_IO - -#ifdef __GNUC__ -# define _STLP_NO_WCHAR_T -# define _STLP_NO_CWCHAR -# define _STLP_NO_LONG_DOUBLE -# ifndef _POSIX_C_SOURCE -# define _POSIX_C_SOURCE 199506 -# endif -#endif - -#endif /* __stl_config__hpux_h */ diff --git a/build/stlport/stlport/stl/config/_ibm.h b/build/stlport/stlport/stl/config/_ibm.h deleted file mode 100644 index f74f6d9be9c9..000000000000 --- a/build/stlport/stlport/stl/config/_ibm.h +++ /dev/null @@ -1,144 +0,0 @@ -/* STLport configuration file - * It is internal STLport header - DO NOT include it directly - */ - -#if defined (__IBMCPP__) || defined (__IBMC__) -# define _STLP_COMPILER "Visual Age C++" -#elif defined (__xlC__) -# define _STLP_COMPILER "xlc" -#else -# error "Unknown compiler" -#endif - -#if !defined(__IBMCPP__) || (__IBMCPP__ < 500) -# define _STLP_HAS_NO_NEW_C_HEADERS 1 -#endif - -/* string literal problem, same as with SUN and aCC */ -# define _STLP_INLINE_STRING_LITERAL_BUG 1 -# define _STLP_HAS_NATIVE_FLOAT_ABS - -# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 -# define _STLP_DEF_CONST_DEF_PARAM_BUG 1 - - -# ifdef __IBMCPP__ -# define _STLP_HAS_SPECIFIC_PROLOG_EPILOG -# endif - -/* # if ( defined (__MULTI__) && defined (__WINDOWS__)) - * # define _STLP_WIN32THREADS 1 Only Visual Age 3.5 for Windows - * # endif - */ - -# if ( defined (__MULTI__) && defined (__OS2__)) -# define _STLP_OS2THREADS 1 -# endif - -/* __TEMPINC__ is set when /Ft+ option is used */ -# ifdef __TEMPINC__ -# define _STLP_LINK_TIME_INSTANTIATION 1 -# endif - -# if defined (__MVS__) -/* long long support is buggy - reported by Tinny Ng - * # if __EXTENDED__ && __COMPILER_VER__ >= 0x22060000 - * # define _STLP_LONG_LONG long long - * # endif - */ -/* boris : hstash reported it can be treated like UNIX */ -# define _STLP_NO_TYPEINFO 1 -# undef _STLP_NATIVE_INCLUDE_PATH -# define _STLP_NATIVE_INCLUDE_PATH /usr/lpp/ioclib/include -/* same for C headers like */ -# undef _STLP_NATIVE_C_INCLUDE_PATH -# define _STLP_NATIVE_C_INCLUDE_PATH /usr/include -# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH /usr/include - -# elif (defined (__WINDOWS__) || defined (_AIX) || defined (__OS2__) ) && (__IBMCPP__ >= 350) - -# define _STLP_LONG_LONG long long - -#endif - -#if !( defined( __xlC__ ) && __xlC__ >= 0x500 ) - -/* AIX xlC 3.1 , 3.0.1 ==0x301 - * Visual Age C++ 3.x - * OS-390 C++ - * fbp : should be more version-specific! - */ - -# define _STLP_NO_BOOL 1 -# define _STLP_DONT_USE_BOOL_TYPEDEF 1 -# define _STLP_LIMITED_DEFAULT_TEMPLATES 1 -# define _STLP_HAS_NO_NAMESPACES 1 -# define _STLP_NEED_TYPENAME 1 -# define _STLP_NEED_EXPLICIT 1 -# define _STLP_NO_ARROW_OPERATOR 1 -# define _STLP_NO_NEW_STYLE_CASTS 1 -# define _STLP_NO_WCHAR_T 1 -# define _STLP_NEED_MUTABLE 1 -# define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1 -# define _STLP_NO_BAD_ALLOC 1 - -# define _STLP_NO_MEMBER_TEMPLATES 1 -# define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -# define _STLP_NO_QUALIFIED_FRIENDS 1 -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 - -# define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1 -# define _STLP_NO_METHOD_SPECIALIZATION 1 -# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 -# define _STLP_NO_EXCEPTION_HEADER 1 - -# define _STLP_NO_NEW_NEW_HEADER 1 - -# if defined (__OS2__) && (__IBMCPP__ <= 350) -# define _STLP_NO_TYPEINFO 1 -# endif -# define _STLP_NO_NEW_NEW_HEADER 1 - -# define _STLP_STATIC_CONST_INIT_BUG 1 -/* # define _STLP_THROW_RETURN_BUG 1 */ - - -# define _STLP_NO_TEMPLATE_CONVERSIONS 1 -# define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1 - -/* AIX xlC, Visual Age 3.0 for OS/2 and MS */ -# define _STLP_TRIVIAL_DESTRUCTOR_BUG - -# define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 -# define _STLP_NONTEMPL_BASE_MATCH_BUG 1 - -#if __IBMCPP__ <= 350 -# define _STLP_NEED_UNREACHABLE_RETURN 1 -#endif - -#if __IBMCPP__ < 350 -# define _STLP_NO_LONG_DOUBLE 1 -#endif - -#if __IBMCPP__ >= 365 -/* does not have new C headers, but has div() */ -# define _STLP_LDIV -#endif - -#endif /* xlC 5 */ - -/* detect xlC5 by: */ -#if defined(__IBMCPP__) && (500 <= __IBMCPP__) && (__IBMCPP__ < 700) -# define _STLP_USE_EXCEPTIONS 1 -# define _STLP_STATIC_CONST_INIT_BUG 1 -/* #pragma report(disable,CPPC1500029) - * unsigned 32-bit integer type - */ -# define _STLP_UINT32_T unsigned int -# if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) -# define _STLP_RAND48 1 -# endif -/* # define _STLP_RAND48 1 */ -#endif /* __IBMCPP__ == 500 */ diff --git a/build/stlport/stlport/stl/config/_icc.h b/build/stlport/stlport/stl/config/_icc.h deleted file mode 100644 index 1fc1bce3c240..000000000000 --- a/build/stlport/stlport/stl/config/_icc.h +++ /dev/null @@ -1,44 +0,0 @@ -// STLport configuration file -// It is internal STLport header - DO NOT include it directly -// A list of Intel compiler for Linux portion of STLport settings. - -#define _STLP_COMPILER "Intel ICC" - -#define _STLP_LONG_LONG long long - -// Edit relative path below (or put full path) to get native -// compiler headers included. Default is "../include". -// C headers may reside in different directory, so separate macro is provided. -#if (__INTEL_COMPILER < 800) -# define _STLP_NATIVE_INCLUDE_PATH ../include -# define _STLP_NATIVE_C_INCLUDE_PATH ../include -# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../include -#endif - -#if (__INTEL_COMPILER >= 800) -# define _STLP_NATIVE_INCLUDE_PATH ../include/c++ -# define _STLP_NATIVE_C_INCLUDE_PATH ../include -# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../include - -#endif /* __INTEL_COMPILER >= 800 */ - -#define _STLP_HAS_NO_NEW_C_HEADERS 1 -#define _STLP_VENDOR_GLOBAL_CSTD 1 - -/* Systems having GLIBC installed have different traits */ -#if !defined (_STLP_USE_GLIBC) && defined (__linux__) -# define _STLP_USE_GLIBC -# define _XOPEN_SOURCE 600 -#endif - -#undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT - - -#ifndef __GNUC__ -# define __GNUC__ 3 -#endif - -//#define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1 - -#define _STLP_NO_FORCE_INSTANTIATE -//#define _REENTRANT diff --git a/build/stlport/stlport/stl/config/_intel.h b/build/stlport/stlport/stl/config/_intel.h deleted file mode 100644 index 01e09d60f20d..000000000000 --- a/build/stlport/stlport/stl/config/_intel.h +++ /dev/null @@ -1,72 +0,0 @@ -// STLport configuration file -// It is internal STLport header - DO NOT include it directly - -#define _STLP_COMPILER "Intel ICL" - -#define _STLP_IMPORT_TEMPLATE_KEYWORD extern - -/* You need to undef following macro if your icl install is binded to MSVC 6 - * native lib and you are building with /Qvc7 or /Qvc7.1 or /Qvc8 option. - */ -/* #define _STLP_MSVC_LIB 1200 */ -/* You need to undef following macro if your icl install is binded to MSVC .Net 2002 - * native lib and you are building without any /Qvc* option or with /Qvc6 or /Qvc7.1 - * or /Qvc8 option. - */ -/* #define _STLP_MSVC_LIB 1300 */ -/* You need to undef following macro if your icl install is binded to MSVC .Net 2003 - * native lib and you are building without any /Qvc* option or with /Qvc6 or /Qvc7 - * or /Qvc8 option. - */ -/* #define _STLP_MSVC_LIB 1310 */ -/* You need to undef following macro if your icl install is binded to MSVC 2005 - * native lib and you are building without any /Qvc* option or with /Qvc6 or /Qvc7 - * or /Qvc7.1 option. - */ -/* #define _STLP_MSVC_LIB 1400 */ - -#include - -#if defined (_STLP_DONT_RETURN_VOID) -# undef _STLP_DONT_RETURN_VOID -#endif - -#if (__ICL < 900) -# define _STLP_NOTHROW -#endif - -#if (__ICL <= 810) -/* If method specialization is activated, compiler do not export some - * symbols anymore. - */ -# define _STLP_NO_METHOD_SPECIALIZATION 1 -#endif - -#if (__ICL >= 800 && __ICL < 900) -# define _STLP_STATIC_CONST_INIT_BUG 1 -#endif - -#if (__ICL >= 450) -# define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1 -#endif - -#if (__ICL < 450) -/* only static STLport lib works for ICL */ -# undef _STLP_USE_STATIC_LIB -# undef _STLP_USE_DYNAMIC_LIB -# define _STLP_USE_STATIC_LIB -/* disable hook which makes template symbols to be searched for in the library */ -# undef _STLP_NO_CUSTOM_IO -#endif - -#undef _STLP_LONG_LONG -#define _STLP_LONG_LONG long long - -#if defined (__cplusplus) && (__ICL >= 900) && (_STLP_MSVC_LIB < 1300) -namespace std -{ - void _STLP_CALL unexpected(); -} -#endif - -#include diff --git a/build/stlport/stlport/stl/config/_kai.h b/build/stlport/stlport/stl/config/_kai.h deleted file mode 100644 index 267158f83447..000000000000 --- a/build/stlport/stlport/stl/config/_kai.h +++ /dev/null @@ -1,43 +0,0 @@ -// STLport config file for KAI C++ compiler - -#if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) -# define _STLP_RAND48 1 -#endif - -# ifndef __KAI_STRICT /* _NO_LONGLONG */ -# define _STLP_LONG_LONG long long -# endif - -# if !defined (__EXCEPTIONS) && ! defined (_EXCEPTIONS) -# define _STLP_HAS_NO_EXCEPTIONS -# endif - -# ifndef __BUILDING_STLPORT -# define _STLP_LINK_TIME_INSTANTIATION 1 -# endif - -// two levels of macros do not work good with kcc. -# define _STLP_NATIVE_HEADER(header) <../include/##header> -# define _STLP_NATIVE_C_HEADER(header) <../include/##header> -# define _STLP_NATIVE_CPP_C_HEADER(header) <../include/##header> -# define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../include/##header> - -// KAI C++ uses EDG front-end, but apparently different switches -// # define __EDG_SWITCHES 1 - -# define _STLP_VENDOR_GLOBAL_CSTD 1 -# define _STLP_VENDOR_MB_NAMESPACE std - -// boris : some of those may also apply to KCC 3.4 -# if __KCC_VERSION < 4000 -# define _STLP_VENDOR_GLOBAL_EXCEPT_STD 1 - -# endif - -# if defined (__sgi) -// this requires some discrimination on whether we are actually on -// a system officially supported by KAI. -# define _STLP_HAS_NO_NEW_C_HEADERS 1 -# include -# endif - diff --git a/build/stlport/stlport/stl/config/_linux.h b/build/stlport/stlport/stl/config/_linux.h deleted file mode 100644 index 4e75b5c3374c..000000000000 --- a/build/stlport/stlport/stl/config/_linux.h +++ /dev/null @@ -1,126 +0,0 @@ -#ifndef __stl_config__linux_h -#define __stl_config__linux_h - -#define _STLP_PLATFORM "Linux" - -#include - -/* This is defined wether library in use is glibc or not. - This may be treated as presence of GNU libc compatible - header files (these define is not really intended to check - for the presence of a particular library, but rather is used - to define an INTERFACE.) */ -#ifndef _STLP_USE_GLIBC -# define _STLP_USE_GLIBC 1 -#endif - -#ifndef _STLP_USE_STDIO_IO -# define _STLP_USE_UNIX_IO -#endif - -/* #define _STLP_USE_STDIO_IO */ - -/* If not explicitly specified otherwise, work with threads - */ -#if !defined(_STLP_NO_THREADS) && !defined(_REENTRANT) -# define _REENTRANT -#endif - -#if defined(_REENTRANT) && !defined(_PTHREADS) -# define _PTHREADS -#endif - -#ifdef __UCLIBC__ /* uClibc 0.9.27 */ -# define _STLP_USE_UCLIBC 1 -# if !defined(__UCLIBC_HAS_WCHAR__) -# ifndef _STLP_NO_WCHAR_T -# define _STLP_NO_WCHAR_T -# endif -# ifndef _STLP_NO_NATIVE_MBSTATE_T -# define _STLP_NO_NATIVE_MBSTATE_T -# endif -# ifndef _STLP_NO_NATIVE_WIDE_STREAMS -# define _STLP_NO_NATIVE_WIDE_STREAMS -# endif -# endif /* __UCLIBC_HAS_WCHAR__ */ - /* Hmm, bogus _GLIBCPP_USE_NAMESPACES seems undefined... */ -# define _STLP_VENDOR_GLOBAL_CSTD 1 -#endif - - -#if defined(_PTHREADS) -# define _STLP_THREADS -# define _STLP_PTHREADS -/* -# ifndef __USE_UNIX98 -# define __USE_UNIX98 -# endif -*/ -/* This feature exist at least since glibc 2.2.4 */ -/* # define __FIT_XSI_THR */ /* Unix 98 or X/Open System Interfaces Extention */ -# ifdef __USE_XOPEN2K -/* The IEEE Std. 1003.1j-2000 introduces functions to implement spinlocks. */ -# ifndef __UCLIBC__ /* There are no spinlocks in uClibc 0.9.27 */ -# define _STLP_USE_PTHREAD_SPINLOCK -# else -# ifndef _STLP_DONT_USE_PTHREAD_SPINLOCK - /* in uClibc (0.9.26) pthread_spinlock* declared in headers - * but absent in library */ -# define _STLP_DONT_USE_PTHREAD_SPINLOCK -# endif -# endif -# ifndef _STLP_DONT_USE_PTHREAD_SPINLOCK -# define _STLP_USE_PTHREAD_SPINLOCK -# define _STLP_STATIC_MUTEX _STLP_mutex -# endif -/* # define __FIT_PSHARED_MUTEX */ -# endif -#endif - -/* Endiannes */ -#include -#if !defined(__BYTE_ORDER) || !defined(__LITTLE_ENDIAN) || !defined(__BIG_ENDIAN) -# error "One of __BYTE_ORDER, __LITTLE_ENDIAN and __BIG_ENDIAN undefined; Fix me!" -#endif - -#if ( __BYTE_ORDER == __LITTLE_ENDIAN ) -# define _STLP_LITTLE_ENDIAN 1 -#elif ( __BYTE_ORDER == __BIG_ENDIAN ) -# define _STLP_BIG_ENDIAN 1 -#else -# error "__BYTE_ORDER neither __BIG_ENDIAN nor __LITTLE_ENDIAN; Fix me!" -#endif - -#if defined(__GNUC__) && (__GNUC__ < 3) -# define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1 -#endif - -#ifdef __GLIBC__ -# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3) || (__GLIBC__ > 2) -/* From glibc 2.3.x default allocator is malloc_alloc, if was not defined other */ -# if !defined(_STLP_USE_MALLOC) && !defined(_STLP_USE_NEWALLOC) && !defined(_STLP_USE_PERTHREAD_ALLOC) && !defined(_STLP_USE_NODE_ALLOC) -# define _STLP_USE_MALLOC 1 -# endif -# endif -/* Following platforms has no long double: - * - Alpha - * - PowerPC - * - SPARC, 32-bits (64-bits platform has long double) - * - MIPS, 32-bits - * - ARM - * - SH4 - */ -# if defined(__alpha__) || \ - defined(__ppc__) || defined(PPC) || defined(__powerpc__) || \ - ((defined(__sparc) || defined(__sparcv9) || defined(__sparcv8plus)) && !defined ( __WORD64 ) && !defined(__arch64__)) /* ? */ || \ - (defined(_MIPS_SIM) && (_MIPS_SIM == _ABIO32)) || \ - defined(__arm__) || \ - defined(__le32__) || \ - defined(__sh__) - /* # if defined(__NO_LONG_DOUBLE_MATH) */ -# define _STLP_NO_LONG_DOUBLE -# endif -#endif - - -#endif /* __stl_config__linux_h */ diff --git a/build/stlport/stlport/stl/config/_mac.h b/build/stlport/stlport/stl/config/_mac.h deleted file mode 100644 index 575c1838165b..000000000000 --- a/build/stlport/stlport/stl/config/_mac.h +++ /dev/null @@ -1,6 +0,0 @@ -#define _STLP_PLATFORM "Mac" - -#define _STLP_MAC 1 - -#error Looks like unsupported platform -#define _STLP_USE_UNIX_EMULATION_IO diff --git a/build/stlport/stlport/stl/config/_macosx.h b/build/stlport/stlport/stl/config/_macosx.h deleted file mode 100644 index 54a922267e65..000000000000 --- a/build/stlport/stlport/stl/config/_macosx.h +++ /dev/null @@ -1,9 +0,0 @@ -#define _STLP_PLATFORM "Mac OS X" - -#if defined (__BIG_ENDIAN__) -# define _STLP_BIG_ENDIAN 1 -#elif defined (__LITTLE_ENDIAN__) -# define _STLP_LITTLE_ENDIAN 1 -#endif - -#define _STLP_USE_UNIX_IO diff --git a/build/stlport/stlport/stl/config/_mlc.h b/build/stlport/stlport/stl/config/_mlc.h deleted file mode 100644 index 8687d0bf8b9f..000000000000 --- a/build/stlport/stlport/stl/config/_mlc.h +++ /dev/null @@ -1,7 +0,0 @@ -// STLport configuration file -// It is internal STLport header - DO NOT include it directly - -#define _STLP_NO_MEMBER_TEMPLATES // Compiler does not support member templates -#define _STLP_NO_MEMBER_TEMPLATE_CLASSES // Compiler does not support member template classes - -#define _STLP_HAS_NEW_NEW_HEADER diff --git a/build/stlport/stlport/stl/config/_msvc.h b/build/stlport/stlport/stl/config/_msvc.h deleted file mode 100644 index 418d018e185b..000000000000 --- a/build/stlport/stlport/stl/config/_msvc.h +++ /dev/null @@ -1,265 +0,0 @@ -/* STLport configuration file - * It is internal STLport header - DO NOT include it directly - * Microsoft Visual C++ 6.0, 7.0, 7.1, 8.0, ICL - */ - -#if !defined (_STLP_COMPILER) -# define _STLP_COMPILER "Microsoft Visual Studio C++" -#endif - -#if !defined (__ICL) && !defined (_STLP_MSVC) -# define _STLP_MSVC _MSC_VER -#endif - -#if !defined (_STLP_MSVC_LIB) -# define _STLP_MSVC_LIB _MSC_VER -#endif - -#if defined (__BUILDING_STLPORT) && defined (_MANAGED) -/* Building a managed version of STLport is not supported because we haven't - * found a good reason to support it. However, building a managed translation - * unit using STLport _is_ supported. - */ -# error Sorry but building a managed version of STLport is not supported. -#endif - -#if defined (_STLP_USING_PLATFORM_SDK_COMPILER) -/* This is a specific section for compilers coming with platform SDKs. Native - * library coming with it is different from the one coming with commercial - * MSVC compilers so there is some specific settings. - */ -# define _STLP_NATIVE_INCLUDE_PATH ../crt -# define _STLP_VENDOR_GLOBAL_CSTD -# define _STLP_VENDOR_TERMINATE_STD -# define _STLP_GLOBAL_NEW_HANDLER -# if (_STLP_MSVC_LIB <= 1400) -/* We hope this bug will be fixed in future versions. */ -# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 -# endif -#endif - -#define _STLP_CALL __cdecl - -#ifndef _STLP_LONG_LONG -# define _STLP_LONG_LONG __int64 -#endif - -#define _STLP_PRAGMA_ONCE - -/* These switches depend on compiler flags. We are hoping here that compilers - * simulating MSVC behavior use identical macros to report compilation context. - * Otherwise those macros will have to be undef in specific compiler configuration - * files. - */ -#ifndef _CPPUNWIND -# define _STLP_DONT_USE_EXCEPTIONS 1 -#endif - -#ifndef _CPPRTTI -# define _STLP_NO_RTTI 1 -#endif - -#if defined (_MT) && !defined (_STLP_NO_THREADS) -# define _STLP_THREADS 1 -#endif - -#if !defined (_NATIVE_WCHAR_T_DEFINED) -# define _STLP_WCHAR_T_IS_USHORT 1 -#endif - -#define _STLP_NO_VENDOR_STDLIB_L 1 - -#if defined (_STLP_MSVC) - -# if (_STLP_MSVC < 1200) -# error Microsoft Visual C++ compilers before version 6 (SP5) are not supported. -# endif - -# define _STLP_NORETURN_FUNCTION __declspec(noreturn) - -/* Full compiler version comes from boost library intrinsics.hpp header. */ -# if defined (_MSC_FULL_VER) && (_MSC_FULL_VER >= 140050215) -# define _STLP_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T) -# define _STLP_HAS_TRIVIAL_COPY(T) __has_trivial_copy(T) -# define _STLP_HAS_TRIVIAL_ASSIGN(T) __has_trivial_assign(T) -# define _STLP_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T) -# define _STLP_IS_POD(T) __is_pod(T) -# define _STLP_HAS_TYPE_TRAITS_INTRINSICS -# endif - -# ifndef _STLP_MSVC50_COMPATIBILITY -# define _STLP_MSVC50_COMPATIBILITY 1 -# endif - -# define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1 -# define _STLP_HAS_SPECIFIC_PROLOG_EPILOG 1 -# define _STLP_NO_STATIC_CONST_DEFINITION 1 - -/* # ifndef __BUILDING_STLPORT - * # define _STLP_USE_TEMPLATE_EXPORT 1 - * # endif - */ - -/** Note: the macro _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT is defined -unconditionally and undef'ed here when applicable. */ -# if defined (UNDER_CE) -/* eVCx: -uncaught_exception is declared in the SDKs delivered with eVC4 (eVC3 is -unknown) and they all reside in namespace 'std' there. However, they are not -part of any lib so linking fails. When using VC8 to crosscompile for CE 5 on -an ARMV4I, the uncaught_exception test fails, the function returns the wrong -value. */ -/* All eVCs up to at least VC8/CE5 have a broken new operator that - returns null instead of throwing bad_alloc. */ -# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 -# else -/* VCx: -These are present at least since VC6, but the uncaught_exception() of VC6 is -broken, it returns the wrong value in the unittests. 7.1 and later seem to -work, 7.0 is still unknown (we assume it works until negative report). */ -# if (_STLP_MSVC >= 1300)// VC7 and later -# undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT -# endif -# if (_STLP_MSVC < 1300) -# define _STLP_NOTHROW -# endif -# endif - -# if (_STLP_MSVC <= 1300) -# define _STLP_STATIC_CONST_INIT_BUG 1 -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 -/* There is no partial spec, and MSVC breaks on simulating it for iterator_traits queries */ -# define _STLP_USE_OLD_HP_ITERATOR_QUERIES -# define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER -# define _STLP_NO_METHOD_SPECIALIZATION 1 -# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 -# define _STLP_NO_TYPENAME_ON_RETURN_TYPE 1 -/* VC++ cannot handle default allocator argument in template constructors */ -# define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS -# define _STLP_NO_QUALIFIED_FRIENDS 1 -# endif - -# if (_STLP_MSVC < 1300) /* including MSVC 6.0 */ -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -# define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1 -# endif - -# define _STLP_HAS_NATIVE_FLOAT_ABS 1 - -// TODO: some eVC4 compilers report _MSC_VER 1201 or 1202, which category do they belong to? -# if (_STLP_MSVC > 1200) && (_STLP_MSVC < 1310) -# define _STLP_NO_MOVE_SEMANTIC -# endif - -# if (_STLP_MSVC < 1300) -/* TODO: remove this if it is handled and documented elsewhere - * dums: VC6 do not handle correctly member templates of class that are explicitely - * instanciated to be exported. There is a workaround, seperate the non template methods - * from the template ones within 2 different classes and only export the non template one. - * It is implemented for basic_string and locale at the writing of this note. - * However this problem hos not been considered as important enough to remove template member - * methods for other classes. Moreover Boost (www.boost.org) required it to be granted. - * The workaround is activated thanks to the _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND macro defined - * later in this config file. - */ -/* -# if defined (_DLL) -# define _STLP_NO_MEMBER_TEMPLATES 1 -# endif -*/ - -/* Boris : not defining this macro for SP5 causes other problems */ -/*# if !defined (_MSC_FULL_VER) || (_MSC_FULL_VER < 12008804 ) */ -# define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1 -/*# endif */ -# define _STLP_DONT_USE_BOOL_TYPEDEF 1 -# define _STLP_DONT_RETURN_VOID 1 -# endif - -# if (_STLP_MSVC < 1300) /* MSVC 6.0 and earlier */ -# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 -/* defined for DEBUG and NDEBUG too, to allow user mix own debug build with STLP release library */ -# define _STLP_USE_ABBREVS -# endif - -#endif /* _STLP_MSVC */ - -/* The desktop variants starting with VC8 have a set of more secure replacements - * for the error-prone string handling functions of the C standard lib. */ -/* When user do not consider 'unsafe' string functions as deprecated using _CRT_SECURE_NO_DEPRECATE - * macro we use 'unsafe' functions for performance reasons. */ -#if (_STLP_MSVC_LIB >= 1400) && !defined (_STLP_USING_PLATFORM_SDK_COMPILER) && !defined (UNDER_CE) && \ - !defined (_CRT_SECURE_NO_DEPRECATE) -# define _STLP_USE_SAFE_STRING_FUNCTIONS 1 -#endif - -#if (_STLP_MSVC_LIB <= 1310) -# define _STLP_VENDOR_GLOBAL_CSTD -#endif - -#if (_STLP_MSVC_LIB >= 1300) && !defined(UNDER_CE) -/* Starting with MSVC 7.0 and compilers simulating it, - * we assume that the new SDK is granted: - */ -# define _STLP_NEW_PLATFORM_SDK 1 -#endif - -#if (_STLP_MSVC_LIB < 1300) /* including MSVC 6.0 */ -# define _STLP_GLOBAL_NEW_HANDLER 1 -# define _STLP_VENDOR_UNEXPECTED_STD -# define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 -#endif - -#define _STLP_EXPORT_DECLSPEC __declspec(dllexport) -#define _STLP_IMPORT_DECLSPEC __declspec(dllimport) -#define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport) -#define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport) - -#if defined (__DLL) || defined (_DLL) || defined (_RTLDLL) || defined (_AFXDLL) -# define _STLP_RUNTIME_DLL -#endif -#if defined (__BUILDING_STLPORT) && \ - (defined (_STLP_USE_DYNAMIC_LIB) || \ - defined (_STLP_RUNTIME_DLL) && !defined (_STLP_USE_STATIC_LIB)) -# define _STLP_DLL -#endif -#include -#undef _STLP_RUNTIME_DLL -#undef _STLP_DLL - -#if defined (_STLP_USE_DYNAMIC_LIB) -# undef _STLP_USE_DECLSPEC -# define _STLP_USE_DECLSPEC 1 -# if defined (_STLP_MSVC) && (_STLP_MSVC < 1300) -# define _STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND 1 -# endif -#endif - -#if !defined (_STLP_IMPORT_TEMPLATE_KEYWORD) -# if !defined (_MSC_EXTENSIONS) || defined (_STLP_MSVC) && (_STLP_MSVC >= 1300) -# define _STLP_IMPORT_TEMPLATE_KEYWORD -# else -# define _STLP_IMPORT_TEMPLATE_KEYWORD extern -# endif -#endif -#define _STLP_EXPORT_TEMPLATE_KEYWORD - -#include - -#if defined (_STLP_USING_PLATFORM_SDK_COMPILER) -/* The Windows 64 bits SDK required for the moment link to bufferoverflowU.lib for - * additional buffer overrun checks. Rather than require the STLport build system and - * users to explicitely link with it we use the MSVC auto link feature. - */ -# if !defined (_STLP_DONT_USE_AUTO_LINK) || defined (__BUILDING_STLPORT) -# pragma comment (lib, "bufferoverflowU.lib") -# if defined (_STLP_VERBOSE) -# pragma message ("STLport: Auto linking to bufferoverflowU.lib") -# endif -# endif -#endif - -#if defined (_STLP_MSVC) -# include -#endif diff --git a/build/stlport/stlport/stl/config/_mwerks.h b/build/stlport/stlport/stl/config/_mwerks.h deleted file mode 100644 index f91f3b181b16..000000000000 --- a/build/stlport/stlport/stl/config/_mwerks.h +++ /dev/null @@ -1,159 +0,0 @@ -// STLport configuration file -// It is internal STLport header - DO NOT include it directly - -#define _STLP_COMPILER "Metrowerk Codewarrior" - -// Bring in definition of __MSL__ and related items -#include -#include - -// -// Compiler features -// - - -// *** CodeWarrior Compiler Common Features *** -# if __option(longlong) -# define _STLP_LONG_LONG long long -# endif - -# define _STLP_USE_UNIX_EMULATION_IO 1 - -# define _STLP_USE_AUTO_PTR_CONVERSIONS 1 - -# ifdef __INTEL__ -# define _STLP_LITTLE_ENDIAN -# else -# define _STLP_BIG_ENDIAN -# endif - -#if defined(_MSL_NO_LOCALE) -#define _STLP_NO_IMPORT_LOCALE -#endif -#if !__option( wchar_type ) -# define _STLP_WCHAR_T_IS_USHORT -#endif - -# if __MWERKS__ < 0x3000 -// *** CodeWarrior Compiler Common Bugs *** -# define __MSL_FIX_ITERATORS__(myType) // Some MSL headers rely on this -# define _STLP_THROW_RETURN_BUG 1 -# endif - -// *** Version-specific settings *** - -# if __MWERKS__ >= 0x2405 -# define _STLP_HAS_NATIVE_FLOAT_ABS -# endif - -# if __MWERKS__ < 0x2405 -# define _STLP_STATIC_CONST_INIT_BUG -# endif - -# if __MWERKS__ <= 0x2303 -# define _STLP_NO_TEMPLATE_CONVERSIONS 1 -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -# endif - -# if __MWERKS__ < 0x2301 -# define _STLP_MEMBER_SPECIALIZATION_BUG 1 -# endif - -# if __MWERKS__ < 0x2300 // CW Pro5 features -# define _STLP_INLINE_MEMBER_TEMPLATES 1 -# define _STLP_RELOPS_IN_STD_BUG 1 -# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 -# define _STLP_DEF_CONST_DEF_PARAM_BUG 1 -# define _STLP_NO_TYPENAME_ON_RETURN_TYPE -# endif - -# if __MWERKS__ < 0x2200 // CW Pro4 features -# define _STLP_BROKEN_USING_DIRECTIVE 1 -# define _STLP_NO_MEMBER_TEMPLATES 1 -# define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -# define _STLP_NO_QUALIFIED_FRIENDS 1 -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 -# endif - -# if __MWERKS__ < 0x2100 // CW Pro3 features -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 -# define _STLP_HAS_NO_NAMESPACES 1 -# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 - -# define _STLP_NEED_TYPENAME 1 -# define _STLP_NO_ARROW_OPERATOR 1 -# define _STLP_TEMPLATE_PARAM_SUBTYPE_BUG 1 -# define _STLP_FORCED_INLINE_INSTANTIATION_BUG 1 -# define _STLP_MULTI_CONST_TEMPLATE_ARG_BUG 1 -# define _STLP_INLINE_NAME_RESOLUTION_BUG 1 -// *** Metrowerks Standard Library Bug *** -# define _STLP_MSVC50_COMPATIBILITY 1 -# endif - -# if __MWERKS__ < 0x2000 // v. 2.0 features -# define _STLP_NO_WCHAR_T 1 -# define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1 -# define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 // dwa 8/21/97 - this bug fixed for CWPro2 -# endif - -# if __MWERKS__ < 0x1900 // dwa 8/19/97 - 1.9 Compiler feature defines -# define _STLP_LIMITED_DEFAULT_TEMPLATES 1 -# define _STLP_BASE_TYPEDEF_BUG 1 -# define _STLP_BASE_MATCH_BUG 1 -# define _STLP_NONTEMPL_BASE_MATCH_BUG 1 -# define _STLP_DEFAULT_TYPE_PARAM 1 // More limited template parameters - -# if __MWERKS__ < 0x1800 - __GIVE_UP_WITH_STL(CW_18) -# endif - -# endif - - -// fixes to native inclusion wrappers. -# if __MWERKS__ >= 0x2300 // CWPro5 changes paths - dwa 2/28/99 -# define _STLP_NATIVE_INCLUDE_PATH ../include -# define _STLP_NATIVE_C_INCLUDE_PATH ../include -# define _STLP_NATIVE_HEADER(header) <../include/##header> -# define _STLP_NATIVE_CPP_C_HEADER(header) <../include/##header> -# define _STLP_NATIVE_C_HEADER(header) <../include/##header> -# define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../include/##header> -# else - -# define _STLP_NATIVE_INCLUDE_PATH Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C++:Include -# define _STLP_NATIVE_C_INCLUDE_PATH Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:MSL Common:Public Includes -# define _STLP_NATIVE_HEADER(header) -# define _STLP_NATIVE_CPP_C_HEADER(header) -# define _STLP_NATIVE_C_HEADER(header) -# define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) - -# endif - -//Following block come from boost intrinsics.hpp file: -#if defined (__MSL_CPP__) && (__MSL_CPP__ >= 0x8000) - // Metrowerks compiler is acquiring intrinsic type traits support - // post version 8. We hook into the published interface to pick up - // user defined specializations as well as compiler intrinsics as - // and when they become available: -# include -# define _STLP_HAS_TRIVIAL_CONSTRUCTOR(T) Metrowerks::has_trivial_default_ctor::value -# define _STLP_HAS_TRIVIAL_COPY(T) Metrowerks::has_trivial_copy_ctor::value -# define _STLP_HAS_TRIVIAL_ASSIGN(T) Metrowerks::has_trivial_assignment::value -# define _STLP_HAS_TRIVIAL_DESTRUCTOR(T) Metrowerks::has_trivial_dtor::value -# define _STLP_IS_POD(T) Metrowerks::is_POD::value -# define _STLP_HAS_TYPE_TRAITS_INTRINSICS -#endif - -// fbp -# if !defined( __MSL_CPP__ ) || __MSL_CPP__ <= 0x4105 -# define _STLP_NO_NATIVE_WIDE_STREAMS 1 -# endif - -# if defined(__MACH__) -# define _STLP_MAC -# define O_BINARY 0 -# elif defined(macintosh) -# define _NOTHREADS -# endif -# define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1 diff --git a/build/stlport/stlport/stl/config/_native_headers.h b/build/stlport/stlport/stl/config/_native_headers.h deleted file mode 100644 index f1f4bc932469..000000000000 --- a/build/stlport/stlport/stl/config/_native_headers.h +++ /dev/null @@ -1,50 +0,0 @@ - /* - * - * Copyright (c) 2006 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_MAKE_HEADER) -# define _STLP_MAKE_HEADER(path, header) -#endif - -#if !defined (_STLP_NATIVE_HEADER) -# if !defined (_STLP_NATIVE_INCLUDE_PATH) -# define _STLP_NATIVE_INCLUDE_PATH ../include -# endif -# define _STLP_NATIVE_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_INCLUDE_PATH,header) -#endif - -/* For some compilers, C headers like are located in separate directory */ -#if !defined (_STLP_NATIVE_C_HEADER) -# if !defined (_STLP_NATIVE_C_INCLUDE_PATH) -# define _STLP_NATIVE_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH -# endif -# define _STLP_NATIVE_C_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_C_INCLUDE_PATH,header) -#endif - -/* For some compilers, C-library headers like are located in separate directory */ -#if !defined (_STLP_NATIVE_CPP_C_HEADER) -# if !defined (_STLP_NATIVE_CPP_C_INCLUDE_PATH) -# define _STLP_NATIVE_CPP_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH -# endif -# define _STLP_NATIVE_CPP_C_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_C_INCLUDE_PATH,header) -#endif - -/* Some compilers locate basic C++ runtime support headers (, , ) in separate directory */ -#if !defined ( _STLP_NATIVE_CPP_RUNTIME_HEADER ) -# if !defined (_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH) -# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH -# endif -# define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH,header) -#endif diff --git a/build/stlport/stlport/stl/config/_openbsd.h b/build/stlport/stlport/stl/config/_openbsd.h deleted file mode 100644 index 86a19d1f3b95..000000000000 --- a/build/stlport/stlport/stl/config/_openbsd.h +++ /dev/null @@ -1,12 +0,0 @@ -#define _STLP_PLATFORM "Open BSD" - -#define _STLP_USE_UNIX_IO - -#if defined (_POSIX_THREADS) && !defined (_STLP_THREADS) -# define _STLP_THREADS -#endif - -#if defined (_POSIX_THREADS) && !defined (_STLP_DONT_USE_PTHREAD_SPINLOCK) -# define _STLP_USE_PTHREAD_SPINLOCK -# define _STLP_STATIC_MUTEX _STLP_mutex -#endif diff --git a/build/stlport/stlport/stl/config/_prolog.h b/build/stlport/stlport/stl/config/_prolog.h deleted file mode 100644 index a16a794695e5..000000000000 --- a/build/stlport/stlport/stl/config/_prolog.h +++ /dev/null @@ -1,43 +0,0 @@ - -#if defined (_STLP_MSVC) || defined (__ICL) - -# pragma warning (push) -# include -/* We are forcing the alignment to guaranty that libraries are use - * with the same alignment as the one use to build them. - */ -# if !defined (_WIN64) -# pragma pack(push, 8) -# else -# pragma pack(push, 16) -# endif - -#elif defined (__BORLANDC__) - -# pragma option push -# pragma option -Vx- -Ve- -a8 -b -pc -# include - -#elif defined (__sgi) && !defined (__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) - -# pragma set woff 1209 -# pragma set woff 1174 -# pragma set woff 1375 -/* from iterator_base.h */ -# pragma set woff 1183 - -#elif defined (__DECCXX) - -# ifdef __PRAGMA_ENVIRONMENT -# pragma __environment __save -# pragma __environment __header_defaults -# endif - -#elif defined (__IBMCPP__) -/* supress EDC3130: A constant is being used as a conditional expression */ -# pragma info(nocnd) -#elif defined (__WATCOMCPLUSPLUS__) -# pragma warning 604 10 /* must lookahead to determine... */ -# pragma warning 594 10 /* resolved as declaration/type */ -# pragma warning 595 10 /* resolved as an expression */ -#endif diff --git a/build/stlport/stlport/stl/config/_sgi.h b/build/stlport/stlport/stl/config/_sgi.h deleted file mode 100644 index 7500f3d87b42..000000000000 --- a/build/stlport/stlport/stl/config/_sgi.h +++ /dev/null @@ -1,94 +0,0 @@ -// STLport configuration file -// It is internal STLport header - DO NOT include it directly - -#define _STLP_COMPILER "CC" - -#define _STLP_HAS_SPECIFIC_PROLOG_EPILOG - -// define native include path before trying to include anything - -#define _STLP_NATIVE_HEADER(__x) -#define _STLP_NATIVE_C_HEADER(__x) -#define _STLP_NATIVE_OLD_STREAMS_HEADER(__x) -#define _STLP_NATIVE_CPP_C_HEADER(__x) -#define _STLP_NATIVE_CPP_RUNTIME_HEADER(__x) - -#define _STLP_NO_NATIVE_MBSTATE_T - -#define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS -#define _STLP_NO_NATIVE_WIDE_FUNCTIONS -#define _STLP_NO_MEMBER_TEMPLATE_CLASSES - -// #define _STLP_NO_BAD_ALLOC - -#define _STL_HAS_NAMESPACES - -#if ! defined (__EXCEPTIONS) && ! defined (_STLP_NO_EXCEPTIONS) -# define _STLP_NO_EXCEPTIONS -#endif - -#define __EDG_SWITCHES - -#define _STLP_USE_SGI_STRING 1 - -#define _STLP_HAS_NO_NEW_C_HEADERS 1 -// # define _STLP_VENDOR_GLOBAL_EXCEPT_STD - -#define _STLP_NO_POST_COMPATIBLE_SECTION - -#include - -#if !(_COMPILER_VERSION >= 730) -# define _STLP_NO_NEW_NEW_HEADER 1 -#endif - -#if (_COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS)) -# define _STLP_EXTERN_RANGE_ERRORS -#endif - -#if !defined(_BOOL) -# define _STLP_NO_BOOL -#endif -#if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32 -# define _STLP_STATIC_CONST_INIT_BUG -#endif - -#if (_COMPILER_VERSION < 720) || (defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32) -# define _STLP_DEF_CONST_PLCT_NEW_BUG -# define _STLP_DEF_CONST_DEF_PARAM_BUG -#endif -#if !((_COMPILER_VERSION >= 730) && defined(_MIPS_SIM) && _MIPS_SIM != _ABIO32) -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD -#endif -#if !defined(_STANDARD_C_PLUS_PLUS) -# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS -#endif -#if !((_COMPILER_VERSION >= 721) && defined(_NAMESPACES)) -# define _STLP_HAS_NO_NAMESPACES -#endif -#if (_COMPILER_VERSION < 721) || !defined(_STL_HAS_NAMESPACES) || defined(_STLP_NO_NAMESPACES) -# define _STLP_NO_EXCEPTION_HEADER -#endif -#if _COMPILER_VERSION < 730 || !defined(_STANDARD_C_PLUS_PLUS) || !defined(_NAMESPACES) -# define _STLP_NO_BAD_ALLOC -#endif -#if defined(_LONGLONG) && defined(_SGIAPI) && _SGIAPI -# define _STLP_LONG_LONG long long -#endif -#if !(_COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS)) -# define _STLP_USE_NO_IOSTREAMS -#endif -#if !(_COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS)) -# define _STLP_NO_AT_MEMBER_FUNCTION -#endif -// # if !(_COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS)) -#if !(_COMPILER_VERSION >= 721 && defined(_STANDARD_C_PLUS_PLUS)) -# define _STLP_NO_TEMPLATE_CONVERSIONS -#endif -#if !((_COMPILER_VERSION >= 730) && defined(_MIPS_SIM) && _MIPS_SIM != _ABIO32) -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER -#endif - -#if !defined (_NOTHREADS) && !defined (_STLP_THREADS_DEFINED) && !defined (__GNUC__) -# define _STLP_SGI_THREADS -#endif diff --git a/build/stlport/stlport/stl/config/_solaris.h b/build/stlport/stlport/stl/config/_solaris.h deleted file mode 100644 index 8756a060f7e7..000000000000 --- a/build/stlport/stlport/stl/config/_solaris.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef __stl_config__solaris_h -#define __stl_config__solaris_h - -#define _STLP_PLATFORM "Sun Solaris" - -/* include system features file */ -#include - -/* system-dependent defines */ -#define _STLP_USE_UNIX_IO - -#ifdef __GNUC__ -/* - * See comments (and configuration defines) in the host.h - */ -# if !(defined(__SunOS_5_5_1) || defined(__SunOS_5_6) || defined(__SunOS_5_7) || \ - defined(__SunOS_5_8) || defined(__SunOS_5_9) || defined(__SunOS_5_10)) -# error Uncomment one of the defines (__SunOS_5_x) in the file stlport/stl/config/host.h -# endif -#endif - -#if defined (__SunOS_5_8) && ! defined (_STLP_HAS_NO_NEW_C_HEADERS) && ( __cplusplus >= 199711L) -# define _STLP_HAS_NATIVE_FLOAT_ABS -#endif - -#if defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 >= 4) -# define _STLP_RAND48 1 -#endif - -#if (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 == 4)) || defined (__SunOS_5_6) -# define _STLP_WCHAR_SUNPRO_EXCLUDE 1 -# define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1 -#endif - -/* boris : this should always be defined for Solaris 5 & 6. Any ideas how to do it? */ -#if !(defined ( __KCC ) && __KCC_VERSION > 3400 ) && \ - ((defined(__SunOS_5_5_1) || defined(__SunOS_5_6) )) -# ifndef _STLP_NO_NATIVE_MBSTATE_T -# define _STLP_NO_NATIVE_MBSTATE_T 1 -# endif -#endif /* KCC */ - -/* For SPARC we use lightweight synchronization */ -#if defined (__sparc) /* && (defined (_REENTRANT) || defined (_PTHREADS)) */ -# if ( (defined (__GNUC__) && defined (__sparc_v9__)) || \ - defined (__sparcv9) ) \ - && !defined(_NOTHREADS) && !defined (_STLP_NO_SPARC_SOLARIS_THREADS) -# define _STLP_SPARC_SOLARIS_THREADS -# define _STLP_THREADS_DEFINED -# endif -#endif - -/* gcc does not support ELF64 yet ; however; it supports ultrasparc + v8plus. - * limits.h contains invalid values for this combination - */ -#ifdef __GNUC__ -# if (defined (__sparc_v9__) || defined (__sparcv9)) && !defined ( __WORD64 ) && !defined(__arch64__) -# define __LONG_MAX__ 2147483647L -# endif -#endif - -/* - * Attention! See comments (and configuration defines) in the host.h - * (you host may has MATH_F and MATH_L functions) - * - */ -#if !defined(__SunOS_5_10) && !defined(_STLP_SOLARIS_MATH_PATCH) -# define _STLP_NO_VENDOR_MATH_F -# define _STLP_NO_VENDOR_MATH_L -#endif - -#ifdef __GNUC__ -# define _STLP_WCHAR_BORLAND_EXCLUDE -# define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1 -#endif - -#endif /* __stl_config__solaris_h */ diff --git a/build/stlport/stlport/stl/config/_sunprocc.h b/build/stlport/stlport/stl/config/_sunprocc.h deleted file mode 100644 index 15fe5cd11bd8..000000000000 --- a/build/stlport/stlport/stl/config/_sunprocc.h +++ /dev/null @@ -1,166 +0,0 @@ -// STLport configuration file -// It is internal STLport header - DO NOT include it directly - -#define _STLP_COMPILER "Sunpro CC" - -#define _STLP_LONG_LONG long long - -// GAB: 11/09/05 -// Starting with 5.0 the STLport code expects to be -// instantiated during compile time. This is due to undefing -// a number of defines that are also used in the c versions -// of the file. When they are undefed the c version fails to -// compile. -// # define _STLP_LINK_TIME_INSTANTIATION 1 - -#if ! defined(_BOOL) -# define _STLP_NO_BOOL 1 -#endif - -// compatibility mode stuff -#if (__SUNPRO_CC >= 0x510) && (!defined (__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT == 5 )) -# define _STLP_NATIVE_INCLUDE_PATH ../CC/Cstd -# define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../CC -#elif (__SUNPRO_CC >= 0x500) && (!defined (__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT == 5 )) -# define _STLP_NATIVE_INCLUDE_PATH ../CC -#elif (defined (__SUNPRO_CC_COMPAT) && __SUNPRO_CC_COMPAT == 4) -# define _STLP_NATIVE_INCLUDE_PATH ../CC4 -#else -# define _STLP_NATIVE_INCLUDE_PATH ../CC -#endif - -#define _STLP_STATIC_CONST_INIT_BUG 1 - -#if (__SUNPRO_CC < 0x530) -// those are tested and proved not to work... -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 -# define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 -# define _STLP_USE_OLD_HP_ITERATOR_QUERIES -#endif - -#ifdef _STLP_USE_NO_IOSTREAMS -# define _STLP_HAS_NO_NEW_C_HEADERS 1 -#endif - -// those do not depend on compatibility -#if (__SUNPRO_CC < 0x510) -# define _STLP_NO_TYPENAME_ON_RETURN_TYPE 1 -# define _STLP_NONTEMPL_BASE_MATCH_BUG 1 -#endif - -#if (__SUNPRO_CC < 0x510) || (defined (__SUNPRO_CC_COMPAT) && (__SUNPRO_CC_COMPAT < 5)) - -# define _STLP_NO_QUALIFIED_FRIENDS 1 - -// no partial , just for explicit one -# define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS -# define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 - -# define _STLP_NO_MEMBER_TEMPLATES 1 - -# define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 -# define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -#endif - -// Features that depend on compatibility switch -#if ( __SUNPRO_CC < 0x500 ) || (defined (__SUNPRO_CC_COMPAT) && (__SUNPRO_CC_COMPAT < 5)) - -# ifndef _STLP_USE_NO_IOSTREAMS -# define _STLP_USE_NO_IOSTREAMS 1 -# endif -# define _STLP_NO_NEW_NEW_HEADER 1 -// # define _STLP_NO_RELOPS_NAMESPACE -# define _STLP_HAS_NO_NAMESPACES 1 -# define _STLP_NEED_MUTABLE 1 -# define _STLP_NO_BAD_ALLOC 1 -# define _STLP_NO_EXCEPTION_HEADER 1 -# define _STLP_NATIVE_C_INCLUDE_PATH ../include -#elif (__SUNPRO_CC < 0x510) -// # define _STLP_NATIVE_C_HEADER(header) <../CC/##header##.SUNWCCh> -# define _STLP_NATIVE_CPP_C_HEADER(header) <../CC/##header##.SUNWCCh> -# define _STLP_NATIVE_C_INCLUDE_PATH /usr/include -#elif defined( __SunOS_5_5_1 ) || defined( __SunOS_5_6 ) || defined( __SunOS_5_7 ) -# define _STLP_NATIVE_C_INCLUDE_PATH ../CC/std -# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../CC/std -#else -# define _STLP_NATIVE_C_INCLUDE_PATH /usr/include -# define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../CC/std -#endif - -#if ( __SUNPRO_CC < 0x500 ) - -# undef _STLP_NATIVE_C_HEADER -# undef _STLP_NATIVE_CPP_C_HEADER - -# define wint_t __wint_t -// famous CC 4.2 bug -# define _STLP_INLINE_STRING_LITERAL_BUG 1 -// /usr/include -# define _STLP_NATIVE_C_INCLUDE_PATH ../include - -// 4.2 cannot handle iterator_traits<_Tp>::iterator_category as a return type ;( -# define _STLP_USE_OLD_HP_ITERATOR_QUERIES - -// 4.2 does not like it -# undef _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS - -# define _STLP_LIMITED_DEFAULT_TEMPLATES 1 - -# define _STLP_NEED_TYPENAME 1 -# define _STLP_NEED_EXPLICIT 1 -# define _STLP_NO_BAD_ALLOC 1 -# define _STLP_NO_ARROW_OPERATOR 1 - -# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 -# define _STLP_DEF_CONST_DEF_PARAM_BUG 1 -# define _STLP_GLOBAL_NESTED_RETURN_TYPE_PARAM_BUG 1 -# undef _STLP_HAS_NO_NEW_C_HEADERS -# define _STLP_HAS_NO_NEW_C_HEADERS 1 -// # define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS - -# if ( __SUNPRO_CC < 0x420 ) -# define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1 -# define _STLP_NO_NEW_STYLE_CASTS 1 -# define _STLP_NO_METHOD_SPECIALIZATION 1 -# if ( __SUNPRO_CC > 0x401 ) -# if (__SUNPRO_CC==0x410) -# define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1 -# endif -# else - // SUNPro C++ 4.0.1 -# define _STLP_BASE_MATCH_BUG 1 -# define _STLP_BASE_TYPEDEF_BUG 1 -# if (( __SUNPRO_CC < 0x401 ) && !defined(__SUNPRO_C)) - __GIVE_UP_WITH_STL(SUNPRO_401) -# endif -# endif /* 4.0.1 */ -# endif /* 4.2 */ -#endif /* < 5.0 */ - -#ifndef _MBSTATET_H -# define _MBSTATET_H -# undef _MBSTATE_T -# define _MBSTATE_T -typedef struct __mbstate_t { -# if defined(_LP64) - long __filler[4]; -# else - int __filler[6]; -# endif -} __mbstate_t; -# ifndef _STLP_HAS_NO_NAMESPACES -namespace std { - typedef __mbstate_t mbstate_t; -} -using std::mbstate_t; -# else -typedef __mbstate_t mbstate_t; -# endif -#endif /* __MBSTATET_H */ - -#if !defined(_STLP_HAS_NO_NEW_C_HEADERS) && !defined(_STLP_NO_NEW_C_HEADERS) -/* Since Sun Studio uses , we are at its - * mercy. GCC is built on top of . */ -#define _STLP_NO_VENDOR_STDLIB_L -#endif diff --git a/build/stlport/stlport/stl/config/_system.h b/build/stlport/stlport/stl/config/_system.h deleted file mode 100644 index 1e820957e224..000000000000 --- a/build/stlport/stlport/stl/config/_system.h +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* - * Purpose of this file : - * - * To hold COMPILER-SPECIFIC portion of STLport settings. - * In general, user should not edit this file unless - * using the compiler not recognized below. - * - * If your compiler is not being recognized yet, - * please look for definitions of macros in stl_mycomp.h, - * copy stl_mycomp.h to stl_YOUR_COMPILER_NAME, - * adjust flags for your compiler, and add - * to the secton controlled by unique macro defined internaly by your compiler. - * - * To change user-definable settings, please edit - * - */ - -#ifndef __stl_config__system_h -#define __stl_config__system_h - -#if defined (__sun) -# include -# if defined (__GNUC__) -# include -# elif defined (__SUNPRO_CC) || defined (__SUNPRO_C) -# include -/* -# ifdef __KCC -# include -# endif -*/ -# elif defined (__APOGEE__) /* Apogee 4.x */ -# include -# elif defined (__FCC_VERSION) /* Fujitsu Compiler, v4.0 assumed */ -# include -# endif -#elif defined (__hpux) -# include -# if defined (__GNUC__) -# include -# elif defined (__HP_aCC) -# include -# endif -#elif defined (__ANDROID__) -/* Android mobile phone platform. Somewhat but not entirely GNU/Linux-like */ -# include -#elif defined (linux) || defined (__linux__) -# include -# if defined (__BORLANDC__) -# include /* Borland C++ 0x570 */ -/* Intel's icc define __GNUC__! */ -# elif defined (__INTEL_COMPILER) -# include -# elif defined (__GNUC__) -# include -# endif -/* -# ifdef __KCC -# include -# endif -*/ -#elif defined (__FreeBSD__) -# include -# if defined (__GNUC__) -# include -# endif -#elif defined (__OpenBSD__) -# include -# if defined (__GNUC__) -# include -# endif -#elif defined (__sgi) /* IRIX? */ -# define _STLP_PLATFORM "SGI Irix" -# if defined (__GNUC__) -# include -# else -# include -# endif -#elif defined (__OS400__) /* AS/400 C++ */ -# define _STLP_PLATFORM "OS 400" -# if defined (__GNUC__) -# include -# else -# include -# endif -#elif defined (_AIX) -# include -# if defined (__xlC__) || defined (__IBMC__) || defined ( __IBMCPP__ ) - /* AIX xlC, Visual Age C++ , OS-390 C++ */ -# include -# endif -#elif defined (_CRAY) /* Cray C++ 3.4 or 3.5 */ -# define _STLP_PLATFORM "Cray" -# include -#elif defined (__DECCXX) || defined (__DECC) -# define _STLP_PLATFORM "DECC" -# ifdef __vms -# include -# else -# include -# endif -#elif defined (macintosh) || defined (_MAC) -# include -# if defined (__MWERKS__) -# include -# endif -#elif defined (__APPLE__) -# include -# ifdef __GNUC__ -# include -# endif -#elif defined (__CYGWIN__) -# include -# if defined (__GNUC__) -# include -# endif -#elif defined (__MINGW32__) -# define _STLP_PLATFORM "MinGW" -# if defined (__GNUC__) -# include -# endif -# include -#elif defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__) || \ - defined (__WIN16) || defined (WIN16) || defined (_WIN16) -# if defined ( __BORLANDC__ ) /* Borland C++ / CodeGear C++ */ -# include -# elif defined (__WATCOM_CPLUSPLUS__) || defined (__WATCOMC__) /* Watcom C++ */ -# include -# elif defined (__COMO__) || defined (__COMO_VERSION_) -# include -# elif defined (__DMC__) /* Digital Mars C++ */ -# include -# elif defined (__ICL) /* Intel reference compiler for Win */ -# include -# elif defined (__MWERKS__) -# include -# elif defined (_MSC_VER) && (_MSC_VER >= 1200) && defined (UNDER_CE) - /* Microsoft eMbedded Visual C++ 3.0, 4.0 (.NET) */ -# include -# elif defined (_MSC_VER) - /* Microsoft Visual C++ 6.0, 7.0, 7.1, 8.0 */ -# include -# endif - -# include -#else -# error Unknown platform !! -#endif - -#if !defined (_STLP_COMPILER) -/* Unable to identify the compiler, issue error diagnostic. - * Edit to set STLport up for your compiler. */ -# include -#endif - -#endif /* __stl_config__system_h */ diff --git a/build/stlport/stlport/stl/config/_warnings_off.h b/build/stlport/stlport/stl/config/_warnings_off.h deleted file mode 100644 index 77e9815ebc4e..000000000000 --- a/build/stlport/stlport/stl/config/_warnings_off.h +++ /dev/null @@ -1,51 +0,0 @@ -/* This header turns off warnings that STLport headers generate for compiled - * user code. - */ - -#if defined (_STLP_MSVC) -# if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) || \ - defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) || defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) -/* - * 31/07/2004: dums - now that we do not export the basic_string class anymore but only a base class - * we have to disable this warning as the string are used as data members type of many iostream classes. - */ -# pragma warning ( disable : 4251 ) // ignore template classes being exported in .dll's -# endif - -# if (_STLP_MSVC < 1300) // VC6, eVC3, eVC4 -# pragma warning( disable : 4097 ) // typedef-name used as based class of (...) -# pragma warning( disable : 4231 ) // non standard extension : 'extern' before template instanciation -# pragma warning( disable : 4244 ) // implicit conversion: possible loss of data -# pragma warning( disable : 4284 ) // for -> operator -//This warning is necessary because of the native platform headers: -# pragma warning( disable : 4290 ) // c++ exception specification ignored -# pragma warning( disable : 4514 ) // unreferenced inline function has been removed -# pragma warning( disable : 4660 ) // template-class specialization '...' is already instantiated -# pragma warning( disable : 4701 ) // local variable '...' may be used without having been initialized -# pragma warning( disable : 4710 ) // function (...) not inlined -# pragma warning( disable : 4786 ) // identifier truncated to 255 characters -# endif - -# if (_STLP_MSVC < 1400) -# pragma warning( disable : 4511 ) // copy constructor cannot be generated -# endif - -//Pool of common warnings for all MSVC supported versions: -//Many are only useful if warning level is set to 4. -# pragma warning( disable : 4100 ) // unreferenced formal parameter -# pragma warning( disable : 4127 ) // conditional expression is constant -# pragma warning( disable : 4146 ) // unary minus operator applied to unsigned type, result still unsigned -# pragma warning( disable : 4245 ) // conversion from 'enum ' to 'unsigned int', signed/unsigned mismatch -# pragma warning( disable : 4355 ) // this used in base member initializer list (used in rope implementation) -# pragma warning( disable : 4510 ) // default constructor cannot be generated -# pragma warning( disable : 4512 ) // assignment operator could not be generated -# pragma warning( disable : 4571 ) // catch(...) blocks compiled with /EHs do not catch or re-throw Structured Exceptions -# pragma warning( disable : 4610 ) // struct '...' can never be instantiated - user defined construtor required -#elif defined (__BORLANDC__) -# pragma option -w-ccc // -w-8008 Condition is always true OR Condition is always false -# pragma option -w-inl // -w-8027 Functions containing reserved words are not expanded inline -# pragma option -w-ngu // -w-8041 Negating unsigned value -# pragma option -w-pow // -w-8062 Previous options and warnings not restored -# pragma option -w-rch // -w-8066 Unreachable code -# pragma option -w-par // -w-8057 Parameter 'parameter' is never used -#endif diff --git a/build/stlport/stlport/stl/config/_watcom.h b/build/stlport/stlport/stl/config/_watcom.h deleted file mode 100644 index b0d2defee4b1..000000000000 --- a/build/stlport/stlport/stl/config/_watcom.h +++ /dev/null @@ -1,151 +0,0 @@ -// STLport configuration file -// It is internal STLport header - DO NOT include it directly - -#define _STLP_COMPILER "Watcom" - -#if (__WATCOMC__ < 1250) -# error Not supported! -#endif - -#ifndef _CPPRTTI -# define _STLP_NO_RTTI 1 -#endif - -// for switches (-xs, -xss, -xst) -#if !(defined (__SW_XS) || defined (__SW_XSS) || defined(__SW_XST)) -# define _STLP_HAS_NO_EXCEPTIONS 1 -#endif - -#if defined (_MT) && !defined (_NOTHREADS) -# define _STLP_THREADS 1 -#endif - -#define _STLP_NO_VENDOR_STDLIB_L -#define _STLP_NO_VENDOR_MATH_F -#define _STLP_NO_VENDOR_MATH_L - -#define _STLP_LONG_LONG long long - -#define _STLP_CALL __cdecl -#define _STLP_IMPORT_DECLSPEC __declspec(dllimport) - -#define _STLP_NO_CONST_IN_PAIR - -//#define _STLP_DONT_USE_PRIV_NAMESPACE -//#define _STLP_NO_MOVE_SEMANTIC -//#define _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER -#define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE - -#define _STLP_NO_RELOPS_NAMESPACE - -#define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS -#define _STLP_NO_STATIC_CONST_DEFINITION - -//#define _STLP_HAS_SPECIFIC_PROLOG_EPILOG -#define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS -//#define _STLP_USE_OLD_HP_ITERATOR_QUERIES - -#define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 -#define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 -//#define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -//#define _STLP_NO_MEMBER_TEMPLATES 1 -//#define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 - -//#define _STLP_LIMITED_DEFAULT_TEMPLATES 1 -//#define _STLP_HAS_NO_NAMESPACES 1 -//#define _STLP_NEED_TYPENAME 1 - -#define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1 - -//#define _STLP_STATIC_CONST_INIT_BUG 1 -// #define _STLP_THROW_RETURN_BUG 1 -//#define _STLP_NO_TEMPLATE_CONVERSIONS 1 - -#define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1 - -#define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1 -#define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 - -//#define _STLP_NONTEMPL_BASE_MATCH_BUG -//#define _STLP_NO_EXCEPTION_HEADER 1 -#define _STLP_NO_BAD_ALLOC 1 - -//#define _STLP_NO_TYPENAME_ON_RETURN_TYPE -//#define _STLP_NESTED_TYPE_PARAM_BUG 1 - -//#define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1 - -#define _STLP_NO_ARROW_OPERATOR 1 -// This one is present in 11, but apparently has bugs (with auto_ptr). -//#define _STLP_NO_NEW_STYLE_CASTS 1 - -// Get rid of Watcom's min and max macros -#undef min -#undef max - -// On QNX, headers are supposed to be found in /usr/include, -// so default "../include" should work. -#ifndef __QNX__ -# define _STLP_NATIVE_INCLUDE_PATH ../h -#else -// boris : is this true or just the header is not in /usr/include ? -# define _STLP_NO_TYPEINFO 1 -#endif - -// Inline replacements for locking calls under Watcom -// Define _STLP_NO_WATCOM_INLINE_INTERLOCK to keep using -// standard WIN32 calls -// Define _STL_MULTIPROCESSOR to enable lock -#define _STLP_NO_WATCOM_INLINE_INTERLOCK -#if !defined(_STLP_NO_WATCOM_INLINE_INTERLOCK) - -long __stl_InterlockedIncrement( long *var ); -long __stl_InterlockedDecrement( long *var ); - -#ifdef _STL_MULTIPROCESSOR -// Multiple Processors, add lock prefix -#pragma aux __stl_InterlockedIncrement parm [ ecx ] = \ - ".586" \ - "mov eax, 1" \ - "lock xadd [ecx], eax" \ - "inc eax" \ - value [eax]; - - -#pragma aux __stl_InterlockedDecrement parm [ ecx ] = \ - ".586" \ - "mov eax, 0FFFFFFFFh" \ - "lock xadd [ecx], eax" \ - "dec eax" \ - value [eax]; -#else -// Single Processor, lock prefix not needed -#pragma aux __stl_InterlockedIncrement parm [ ecx ] = \ - ".586" \ - "mov eax, 1" \ - "xadd [ecx], eax" \ - "inc eax" \ - value [eax]; - -#pragma aux __stl_InterlockedDecrement parm [ ecx ] = \ - ".586" \ - "mov eax, 0FFFFFFFFh" \ - "xadd [ecx], eax" \ - "dec eax" \ - value [eax]; -#endif // _STL_MULTIPROCESSOR - -long __stl_InterlockedExchange( long *Destination, long Value ); - -// xchg has auto-lock -#pragma aux __stl_InterlockedExchange parm [ecx] [eax] = \ - ".586" \ - "xchg eax, [ecx]" \ - value [eax]; - -# define _STLP_ATOMIC_INCREMENT(__x) __stl_InterlockedIncrement((long*)__x) -# define _STLP_ATOMIC_DECREMENT(__x) __stl_InterlockedDecrement((long*)__x) -# define _STLP_ATOMIC_EXCHANGE(__x, __y) __stl_InterlockedExchange((long*)__x, (long)__y) -# define _STLP_ATOMIC_EXCHANGE_PTR(__x, __y) __stl_InterlockedExchange((long*)__x, (long)__y) -#endif /* INLINE INTERLOCK */ - diff --git a/build/stlport/stlport/stl/config/_windows.h b/build/stlport/stlport/stl/config/_windows.h deleted file mode 100644 index 6b42e1144141..000000000000 --- a/build/stlport/stlport/stl/config/_windows.h +++ /dev/null @@ -1,291 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_INTERNAL_WINDOWS_H -#define _STLP_INTERNAL_WINDOWS_H - -#if !defined (_STLP_PLATFORM) -# define _STLP_PLATFORM "Windows" -#endif - -#if !defined (_STLP_BIG_ENDIAN) && !defined (_STLP_LITTLE_ENDIAN) -# if defined (_MIPSEB) -# define _STLP_BIG_ENDIAN 1 -# endif -# if defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \ - defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \ - defined (__alpha__) -# define _STLP_LITTLE_ENDIAN 1 -# endif -# if defined (__ia64__) - /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */ -# if defined (__BIG_ENDIAN__) -# define _STLP_BIG_ENDIAN 1 -# else -# define _STLP_LITTLE_ENDIAN 1 -# endif -# endif -#endif /* _STLP_BIG_ENDIAN */ - -#if !defined (_STLP_WINDOWS_H_INCLUDED) -# define _STLP_WINDOWS_H_INCLUDED -# if defined (__BUILDING_STLPORT) -# include -/* Here we define _STLP_OUTERMOST_HEADER_ID to avoid indirect inclusion - * of STLport stuffs from C/C++ Standard headers exposed by STLport - * as configuration is not yet completed. */ -# if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x100 -# endif -# if !defined (WIN32_LEAN_AND_MEAN) -# define WIN32_LEAN_AND_MEAN -# endif -# if !defined (VC_EXTRALEAN) -# define VC_EXTRALEAN -# endif -/* Don't let windows.h define its min and max macros. */ -# if !defined (NOMINMAX) -# define NOMINMAX -# endif -# if !defined (STRICT) -# define STRICT -# endif -# if defined (_STLP_USE_MFC) -# include -# else -# include -# endif -# if (_STLP_OUTERMOST_HEADER_ID == 0x100) -# undef _STLP_OUTERMOST_HEADER_ID -# endif -# else -/* This section serves as a replacement for windows.h header. */ -# if defined (__cplusplus) -extern "C" { -# endif -# if (defined (_M_AMD64) || defined (_M_IA64) || (!defined (_STLP_WCE) && defined (_M_MRX000)) || defined (_M_ALPHA) || \ - (defined (_M_PPC) && (_STLP_MSVC_LIB >= 1000))) && !defined (RC_INVOKED) -# define InterlockedIncrement _InterlockedIncrement -# define InterlockedDecrement _InterlockedDecrement -# define InterlockedExchange _InterlockedExchange -# define _STLP_STDCALL -# else -# if defined (_MAC) -# define _STLP_STDCALL _cdecl -# else -# define _STLP_STDCALL __stdcall -# endif -# endif - -# if defined (_STLP_NEW_PLATFORM_SDK) -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long volatile *); -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long volatile *); -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long volatile *, long); -# if defined (_WIN64) -_STLP_IMPORT_DECLSPEC void* _STLP_STDCALL _InterlockedExchangePointer(void* volatile *, void*); -# endif -# elif !defined (_STLP_WCE) -/* boris : for the latest SDK, you may actually need the other version of the declaration (above) - * even for earlier VC++ versions. There is no way to tell SDK versions apart, sorry ... - */ -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long*); -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long*); -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long*, long); -# else -/* start of eMbedded Visual C++ specific section */ -# include - -/* Don't let windef.h define its min and max macros. */ -# if !defined (NOMINMAX) -# define NOMINMAX -# endif -# include /* needed for basic windows types */ - - /** in SDKs generated with PB5, windef.h somehow includes headers which then - define setjmp. */ -# if (_WIN32_WCE >= 0x500) -# define _STLP_NATIVE_SETJMP_H_INCLUDED -# endif - -# ifndef _WINBASE_ /* winbase.h already included? */ -long WINAPI InterlockedIncrement(long*); -long WINAPI InterlockedDecrement(long*); -long WINAPI InterlockedExchange(long*, long); -# endif - -# ifndef __WINDOWS__ /* windows.h already included? */ - -# if defined (x86) -# include /* needed for inline versions of Interlocked* functions */ -# endif - -# ifndef _MFC_VER - -# define MessageBox MessageBoxW -int WINAPI MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType); - -# define wvsprintf wvsprintfW -int WINAPI wvsprintfW(LPWSTR, LPCWSTR, va_list ArgList); - -void WINAPI ExitThread(DWORD dwExitCode); - -# if !defined (COREDLL) -# define _STLP_WCE_WINBASEAPI DECLSPEC_IMPORT -# else -# define _STLP_WCE_WINBASEAPI -# endif - -_STLP_WCE_WINBASEAPI int WINAPI -MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, - int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar); - -_STLP_WCE_WINBASEAPI UINT WINAPI GetACP(); - -_STLP_WCE_WINBASEAPI BOOL WINAPI TerminateProcess(HANDLE hProcess, DWORD uExitCode); - -# define OutputDebugString OutputDebugStringW -void WINAPI OutputDebugStringW(LPCWSTR); - -_STLP_WCE_WINBASEAPI void WINAPI Sleep(DWORD); - -# undef _STLP_WCE_WINBASEAPI - -# endif /* !_MFC_VER */ - -# endif /* !__WINDOWS__ */ - -/* end of eMbedded Visual C++ specific section */ -# endif - -# if !defined (_STLP_WCE) -_STLP_IMPORT_DECLSPEC void _STLP_STDCALL Sleep(unsigned long); -_STLP_IMPORT_DECLSPEC void _STLP_STDCALL OutputDebugStringA(const char* lpOutputString); -# endif - -# if defined (InterlockedIncrement) -# pragma intrinsic(_InterlockedIncrement) -# pragma intrinsic(_InterlockedDecrement) -# pragma intrinsic(_InterlockedExchange) -# if defined (_WIN64) -# pragma intrinsic(_InterlockedExchangePointer) -# endif -# endif -# if defined (__cplusplus) -} /* extern "C" */ -# endif - -# endif - -/* Here we use a macro different than the InterlockedExchangePointer SDK one - * to avoid macro definition conflict. */ -# if !defined (_WIN64) -/* Under 32 bits platform we rely on a simple InterlockedExchange call. */ -# if defined (__cplusplus) -/* We do not define this function if we are not in a C++ translation unit just - * because of the 'inline' keyword portability issue it would introduce. We will - * have to fix it the day we need this function for a C translation unit. - */ -inline -void* _STLP_CALL STLPInterlockedExchangePointer(void* volatile* __a, void* __b) { -# if defined (_STLP_MSVC) -/* Here MSVC produces warning if 64 bits portability issue is activated. - * MSVC do not see that _STLP_ATOMIC_EXCHANGE_PTR is a macro which content - * is based on the platform, Win32 or Win64 - */ -# pragma warning (push) -# pragma warning (disable : 4311) // pointer truncation from void* to long -# pragma warning (disable : 4312) // conversion from long to void* of greater size -# endif -# if !defined (_STLP_NO_NEW_STYLE_CASTS) - return reinterpret_cast(InterlockedExchange(reinterpret_cast(const_cast(__a)), - reinterpret_cast(__b))); -# else - return (void*)InterlockedExchange((long*)__a, (long)__b); -# endif -# if defined (_STLP_MSVC) -# pragma warning (pop) -# endif -} -# endif -# else -# define STLPInterlockedExchangePointer _InterlockedExchangePointer -# endif - -#endif /* _STLP_WINDOWS_H_INCLUDED */ - -/* _STLP_WIN95_LIKE signal the Windows 95 OS or assimilated Windows OS version that - * has Interlockeded[Increment, Decrement] Win32 API functions not returning modified - * value. - */ -#if (defined (WINVER) && (WINVER < 0x0410) && (!defined (_WIN32_WINNT) || (_WIN32_WINNT < 0x400))) || \ - (!defined (WINVER) && (defined (_WIN32_WINDOWS) && (_WIN32_WINDOWS < 0x0410) || \ - (defined (_WIN32_WINNT) && (_WIN32_WINNT < 0x400)))) -# define _STLP_WIN95_LIKE -#endif - -/* Between Windows 95 (0x400) and later Windows OSes an API enhancement forces us - * to change _Refcount_Base internal struct. As _Refcount_base member methods might - * be partially inlined we need to check that STLport build/use are coherent. To do - * so we try to generate a link time error thanks to the following macro. - * This additional check is limited to old compilers that might still be used with - * Windows 95. */ -#if (defined (_DEBUG) || defined (_STLP_DEBUG)) && \ - (defined (_STLP_MSVC) && (_STLP_MSVC < 1310) || \ - defined (__GNUC__) && (__GNUC__ < 3)) -/* We invert symbol names based on macro detection, when building for Windows - * 95 we expose a - * building_for_windows95_or_previous_but_library_built_for_windows98_or_later - * function in order to have a more obvious link error message signaling how - * the lib has been built and how it is used. */ -# if defined (__BUILDING_STLPORT) -# if defined (_STLP_WIN95_LIKE) -# define _STLP_SIGNAL_RUNTIME_COMPATIBILITY building_for_windows95_but_library_built_for_at_least_windows98 -# else -# define _STLP_SIGNAL_RUNTIME_COMPATIBILITY building_for_at_least_windows98_but_library_built_for_windows95 -# endif -# else -# if defined (_STLP_WIN95_LIKE) -# define _STLP_CHECK_RUNTIME_COMPATIBILITY building_for_windows95_but_library_built_for_at_least_windows98 -# else -# define _STLP_CHECK_RUNTIME_COMPATIBILITY building_for_at_least_windows98_but_library_built_for_windows95 -# endif -# endif -#endif - -#if defined (__WIN16) || defined (WIN16) || defined (_WIN16) -# define _STLP_WIN16 -#else -# define _STLP_WIN32 -#endif - -#if defined(_STLP_WIN32) -# define _STLP_USE_WIN32_IO /* CreateFile/ReadFile/WriteFile */ -#endif - -#if defined(__MINGW32__) && !defined(_STLP_USE_STDIO_IO) -# define _STLP_USE_WIN32_IO /* CreateFile/ReadFile/WriteFile */ -#endif /* __MINGW32__ */ - -#ifdef _STLP_WIN16 -# define _STLP_USE_UNIX_EMULATION_IO /* _open/_read/_write */ -# define _STLP_LDOUBLE_80 -#endif - -#endif /* _STLP_INTERNAL_WINDOWS_H */ diff --git a/build/stlport/stlport/stl/config/compat.h b/build/stlport/stlport/stl/config/compat.h deleted file mode 100644 index 434f314e7a61..000000000000 --- a/build/stlport/stlport/stl/config/compat.h +++ /dev/null @@ -1,80 +0,0 @@ - -/* - * Compatibility section - * This section sets new-style macros based on old-style ones, for compatibility - */ - -#if defined (__STL_DEBUG) && !defined (_STLP_DEBUG) -# define _STLP_DEBUG __STL_DEBUG -#endif -#if defined (__STL_NO_ANACHRONISMS) && !defined (_STLP_NO_ANACHRONISMS) -# define _STLP_NO_ANACHRONISMS __STL_NO_ANACHRONISMS -#endif -#if defined (__STL_NO_EXTENSIONS) && !defined (_STLP_NO_EXTENSIONS) -# define _STLP_NO_EXTENSIONS __STL_NO_EXTENSIONS -#endif -#if defined (__STL_NO_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTIONS) -# define _STLP_NO_EXCEPTIONS __STL_NO_EXCEPTIONS -#endif -#if defined (__STL_NO_NAMESPACES) && !defined (_STLP_NO_NAMESPACES) -# define _STLP_NO_NAMESPACES __STL_NO_NAMESPACES -#endif -#if defined (__STL_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) -# define _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS __STL_MINIMUM_DEFAULT_TEMPLATE_PARAMS -#endif -#if defined (__STL_NO_OWN_NAMESPACE) && !defined (_STLP_NO_OWN_NAMESPACE) -# define _STLP_NO_OWN_NAMESPACE __STL_NO_OWN_NAMESPACE -#endif - -#if defined (__STL_NO_RELOPS_NAMESPACE) && !defined (_STLP_NO_RELOPS_NAMESPACE) -# define _STLP_NO_RELOPS_NAMESPACE __STL_NO_RELOPS_NAMESPACE -#endif - -#if defined (__STL_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_UNINITIALIZED) -# define _STLP_DEBUG_UNINITIALIZED __STL_DEBUG_UNINITIALIZED -#endif -#if defined (__STL_SHRED_BYTE) && !defined (_STLP_SHRED_BYTE) -# define _STLP_SHRED_BYTE __STL_SHRED_BYTE -#endif -#if defined (__STL_USE_MFC) && !defined (_STLP_USE_MFC) -# define _STLP_USE_MFC __STL_USE_MFC -#endif - -#if defined (__STL_USE_NEWALLOC) && !defined (_STLP_USE_NEWALLOC) -# define _STLP_USE_NEWALLOC __STL_USE_NEWALLOC -#endif -#if defined (__STL_USE_MALLOC) && !defined (_STLP_USE_MALLOC) -# define _STLP_USE_MALLOC __STL_USE_MALLOC -#endif - -#if defined (__STL_DEBUG_ALLOC) && !defined (_STLP_DEBUG_ALLOC) -# define _STLP_DEBUG_ALLOC __STL_DEBUG_ALLOC -#endif - -#if defined (__STL_DEBUG_MESSAGE) && !defined (_STLP_DEBUG_MESSAGE) -# define _STLP_DEBUG_MESSAGE __STL_DEBUG_MESSAGE -#endif - -#if defined (__STL_DEBUG_TERMINATE) && !defined (_STLP_DEBUG_TERMINATE) -# define _STLP_DEBUG_TERMINATE __STL_DEBUG_TERMINATE -#endif - -#if defined (__STL_USE_ABBREVS) && !defined (_STLP_USE_ABBREVS) -# define _STLP_USE_ABBREVS __STL_USE_ABBREVS -#endif - -#if defined (__STL_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_NO_MSVC50_COMPATIBILITY) -# define _STLP_NO_MSVC50_COMPATIBILITY __STL_NO_MSVC50_COMPATIBILITY -#endif - -/* STLport do not support anymore the iostream wrapper mode so this macro should - * always been define for other libraries that was using it: - */ -#if !defined (_STLP_OWN_IOSTREAMS) -# define _STLP_OWN_IOSTREAMS -#endif - -#if defined (_STLP_NO_OWN_IOSTREAMS) -# error STLport do not support anymore the wrapper mode. If you want to use STLport \ -use its iostreams implementation or no iostreams at all. -#endif diff --git a/build/stlport/stlport/stl/config/features.h b/build/stlport/stlport/stl/config/features.h deleted file mode 100644 index dc30eccb21af..000000000000 --- a/build/stlport/stlport/stl/config/features.h +++ /dev/null @@ -1,1079 +0,0 @@ - /* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_FEATURES_H -#define _STLP_FEATURES_H - -/* - * Purpose of this file: - * - * Defines all STLport settings. - * This file is actually a wrapper : it includes compiler-specific - * settings from - * and user-defined settings from . - * See and for the description - * of those macros - * - */ - -/* Definition of the STLport version informations */ -#include - -/* Other macros defined by this file: - - * bool, true, and false, if _STLP_NO_BOOL is defined. - * typename, as a null macro if it's not already a keyword. - * explicit, as a null macro if it's not already a keyword. - * namespace-related macros (_STLP_STD, _STLP_BEGIN_NAMESPACE, etc.) - * exception-related macros (_STLP_TRY, _STLP_UNWIND, etc.) - * _STLP_ASSERT, either as a test or as a null macro, depending on - whether or not _STLP_ASSERTIONS is defined. -*/ - -/* Definition of the 2 STLport debug levels */ -#define _STLP_STLPORT_DBG_LEVEL 1 -#define _STLP_STANDARD_DBG_LEVEL 2 - -/* Placeholder for user to override settings. - * It could be also used to mask settings from - * different directories. - */ -#include - -#if defined (_STLP_DEBUG) && !defined (_STLP_DEBUG_LEVEL) -# define _STLP_DEBUG_LEVEL _STLP_STLPORT_DBG_LEVEL -#endif - -#if defined (__BUILDING_STLPORT) -/* For the STLport implementation we can use everything: - */ -# if defined (_STLP_NO_ANACHRONISMS) -# undef _STLP_NO_ANACHRONISMS -# endif -# if defined (_STLP_NO_EXTENSIONS) -# undef _STLP_NO_EXTENSIONS -# endif -/* Moreover there are things that have no sens: - */ -# if defined (_STLP_NO_IOSTREAMS) -# error If you do not use iostreams you do not need to build the STLport library. -# endif -#endif - -/* ========================================================= */ -/* This file is used for compatibility; it accepts old-style config - switches */ -#include - -/* Common configuration file for this particular installation. */ -#include - -/* Operational Environment specific */ -#include - -/* ========================================================= */ - -/* some fixes to configuration. This also includes modifications - * of STLport switches depending on compiler flags, - * or settings applicable to a group of compilers, such as - * to all who use EDG front-end. - */ -#include - -#if !defined (_STLP_NO_MEMBER_TEMPLATES) && !defined (_STLP_MEMBER_TEMPLATES) -# define _STLP_MEMBER_TEMPLATES 1 -#endif - -#if !defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_MEMBER_TEMPLATE_CLASSES) -# define _STLP_MEMBER_TEMPLATE_CLASSES 1 -#endif - -#if defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) -# define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1 -#endif - -#if !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# define _STLP_CLASS_PARTIAL_SPECIALIZATION 1 -#endif - -#if !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && !defined (_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER) -# define _STLP_FUNCTION_TMPL_PARTIAL_ORDER 1 -#endif - -#if !defined (_STLP_DONT_USE_SHORT_STRING_OPTIM) && !defined (_STLP_USE_SHORT_STRING_OPTIM) -# define _STLP_USE_SHORT_STRING_OPTIM 1 -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_NO_EXTENSIONS) && \ - !defined (_STLP_NO_CONTAINERS_EXTENSION) && !defined (_STLP_USE_CONTAINERS_EXTENSION) -# define _STLP_USE_CONTAINERS_EXTENSION -#endif - -#if defined (_STLP_USE_CONTAINERS_EXTENSION) -# define _STLP_TEMPLATE_FOR_CONT_EXT template -#else -# define _STLP_TEMPLATE_FOR_CONT_EXT -#endif - -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) && \ - (defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)) -# error Sorry but according the STLport settings your compiler can not support the pointer specialization feature. -#endif - -#if defined (_STLP_WHOLE_NATIVE_STD) && defined (_STLP_NO_OWN_NAMESPACE) -# error Sorry but asking for both STLport to be in the real std namespace and also having STLport import all native std stuff \ - is invalid, chose one or none. -#endif - -#if defined (_STLP_VERBOSE) && !defined (_STLP_VERBOSE_MODE_SUPPORTED) -# error Sorry but the verbose mode is not implemented for your compiler. -#endif - -#if defined (_STLP_NO_IOSTREAMS) && \ - !defined (_STLP_USE_NEWALLOC) && !defined (_STLP_USE_MALLOC) -# define _STLP_USE_NEWALLOC -#endif - -#if !defined (_STLP_BIG_ENDIAN) && !defined (_STLP_LITTLE_ENDIAN) -# if defined (_MIPSEB) || defined (__sparc) || defined (_AIX) || \ - defined (__hpux) || defined (macintosh) || defined (_MAC) -# define _STLP_BIG_ENDIAN 1 -# elif defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \ - defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \ - defined (__alpha__) || defined (_MIPSEL) -# define _STLP_LITTLE_ENDIAN 1 -# elif defined (__ia64__) - /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */ -# if defined (__BIG_ENDIAN__) -# define _STLP_BIG_ENDIAN 1 -# else -# define _STLP_LITTLE_ENDIAN 1 -# endif -# else -# error "can't determine endianess" -# endif -#endif /* _STLP_BIG_ENDIAN */ - -/* ========================================================== - * final workaround tuning based on given flags - * ========================================================== */ - -#ifndef _STLP_UINT32_T -# define _STLP_UINT32_T unsigned long -#endif -#ifndef _STLP_ABORT -# define _STLP_ABORT() abort() -#endif - -#if !defined (_STLP_HAS_NO_NAMESPACES) -# if defined _STLP_NO_NAMESPACES -# undef _STLP_USE_NAMESPACES -# else -/* assume it as the default, turn it off later if NO_NAMESPACES selected */ -# undef _STLP_USE_NAMESPACES -# define _STLP_USE_NAMESPACES 1 -# endif -#endif - -#if defined (_STLP_NO_IOSTREAMS) -# define _STLP_USE_NO_IOSTREAMS -#endif - -/* Operating system recognition (basic) */ -#if (defined(__unix) || defined(__linux__) || defined(__QNX__) || defined(_AIX) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__Lynx__) || defined(__hpux) || defined(__sgi)) && \ - !defined (_STLP_UNIX) -# define _STLP_UNIX 1 -#endif /* __unix */ - -#if !defined (_STLP_NO_LONG_DOUBLE) -# define _STLP_LONGEST_FLOAT_TYPE long double -#else -# define _STLP_LONGEST_FLOAT_TYPE double -#endif - -/* Native headers access macros */ -#if !defined (_STLP_HAS_INCLUDE_NEXT) -# include -#endif - -/* shared library tune-up */ - -#if defined (__BUILDING_STLPORT) -/* if we are rebuilding right now, place everything here */ -# undef _STLP_DESIGNATED_DLL -# define _STLP_DESIGNATED_DLL 1 -#endif - -/* Use own namespace always if possible and not explicitly instructed otherwise */ -#if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE) && \ - !defined (_STLP_NO_OWN_NAMESPACE) -# undef _STLP_USE_OWN_NAMESPACE -# define _STLP_USE_OWN_NAMESPACE 1 -#else -# undef _STLP_WHOLE_NATIVE_STD -#endif - -#if !defined (_NOTHREADS) && !defined (_STLP_THREADS_DEFINED) - -# if defined (_PTHREADS) -# define _STLP_PTHREADS -# define _STLP_THREADS -# endif -# if defined (_UITHREADS) -# define _STLP_UITHREADS -# define _STLP_THREADS -# endif - -# if defined (_STLP_WIN32) && !defined (_STLP_PTHREADS) -# define _STLP_WIN32THREADS 1 -# elif ((defined (__sun) && !defined (__linux__)) || defined (_UITHREADS) ) && \ - !defined(_STLP_PTHREADS) -# define _STLP_UITHREADS -# else -# define _STLP_PTHREADS -# endif /* __sgi */ -# define _STLP_THREADS_DEFINED -#endif - -#if (defined (_REENTRANT) || defined (_THREAD_SAFE)) && !defined (_STLP_THREADS) -# define _STLP_THREADS -#endif - -#ifndef _STLP_STATIC_MUTEX -# define _STLP_STATIC_MUTEX _STLP_mutex_base -#endif - -#if (defined (_MFC_VER) || defined (_AFXDLL)) && !defined (_STLP_USE_MFC) -# define _STLP_USE_MFC 1 -#endif - -#if defined (_STLP_THREADS) -# define _STLP_VOLATILE volatile -#else -# define _STLP_VOLATILE -#endif - -#if !defined (_STLP_USE_NEW_C_HEADERS) && !defined (_STLP_HAS_NO_NEW_C_HEADERS) -# define _STLP_USE_NEW_C_HEADERS -#endif -/* disable new-style headers if requested */ -#if defined (_STLP_NO_NEW_C_HEADERS) -# undef _STLP_USE_NEW_C_HEADERS -#endif - -#if defined (_STLP_BASE_TYPEDEF_BUG) -# undef _STLP_BASE_TYPEDEF_OUTSIDE_BUG -# define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1 -#endif - -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -# define _STLP_GLOBAL_NESTED_RETURN_TYPE_PARAM_BUG -#endif - -/* SUNpro 4.2 inline string literal bug */ -#ifdef _STLP_INLINE_STRING_LITERAL_BUG -# define _STLP_FIX_LITERAL_BUG(__x) __x = __x; -#else -# define _STLP_FIX_LITERAL_BUG(__x) -#endif - -#if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) -# undef _STLP_NO_DEFAULT_NON_TYPE_PARAM -# define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1 -#endif - -#if !defined (_STLP_STATIC_ASSERT) -/* Some compiler support 0 size array so we use negative size array to generate - * a compilation time error. - */ -# define _STLP_STATIC_ASSERT(expr) typedef char __static_assert[expr ? 1 : -1] __attribute__((unused)); -#endif - -/* apple mpw exception handling bug */ -#ifndef _STLP_MPWFIX_TRY -# define _STLP_MPWFIX_TRY -#endif -#ifndef _STLP_MPWFIX_CATCH -# define _STLP_MPWFIX_CATCH -#endif -#ifndef _STLP_MPWFIX_CATCH_ACTION -# define _STLP_MPWFIX_CATCH_ACTION(action) -#endif - -#if !defined (_STLP_WEAK) -# define _STLP_WEAK -#endif - -/* default parameters as template types derived from arguments ( not always supported ) */ -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -# define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname -#else -# if !defined (_STLP_DEFAULT_TYPE_PARAM) -# define _STLP_DEFAULT_TYPE_PARAM 1 -# endif -# define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname = defval -#endif - -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) -# define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) class _Alloc -#else -# define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) \ - class _Alloc = allocator< pair < _Key, _Tp > > -#endif - -/* default parameters as complete types */ -#if defined (_STLP_DEFAULT_TYPE_PARAM) -# define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname = defval -# define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name = val -#else -# define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname -# define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name -#endif - -/* SGI compatibility */ - -#ifdef _STLP_NO_WCHAR_T -# ifndef _STLP_NO_NATIVE_WIDE_STREAMS -# define _STLP_NO_NATIVE_WIDE_STREAMS 1 -# endif -#else -# define _STLP_HAS_WCHAR_T 1 -#endif - -#if !defined (_STLP_NO_AT_MEMBER_FUNCTION) -# define _STLP_CAN_THROW_RANGE_ERRORS 1 -#endif - -/* debug mode tool */ -#if defined (_STLP_DEBUG) -# define _STLP_NON_DBG_NAME(X) _NonDbg_##X -#endif - -/* pointer specialization tool */ -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) -# define _STLP_PTR_IMPL_NAME(X) _Impl_##X -#endif - -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) || \ - defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) || defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) -# define _STLP_NO_MEM_T_NAME(X) _NoMemT_##X -#endif - -/* this always mean the C library is in global namespace */ -#if defined (_STLP_HAS_NO_NEW_C_HEADERS) && !defined (_STLP_VENDOR_GLOBAL_CSTD) -# define _STLP_VENDOR_GLOBAL_CSTD 1 -#endif - -/* Depending of whether compiler supports namespaces, - * tune the parameters for vendor-supplied libraries. - * This section is guarded by _STLP_HAS_NO_NAMESPACES, not by _STLP_USE_NAMESPACES, - * since it depends only on the native features, not on user's preference whether - * to use namespace for STLport or not. - */ -#if !defined (_STLP_HAS_NO_NAMESPACES) -/* Import some vendor's headers into corresponding STLport ones if they might be needed - * (if we wrap native iostreams and use namepace other than std::) */ -# if defined (_STLP_WHOLE_NATIVE_STD) -# define _STLP_IMPORT_VENDOR_STD 1 -# endif - -/* if using stlport:: namespace or if C library stuff is not in vendor's std::, - * try importing 'em. - * MSVC has ambiguity problem when we try to import C-style std:: stuff back into global namespace */ -# if defined (_STLP_USE_NAMESPACES) && (defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_VENDOR_GLOBAL_CSTD)) -# define _STLP_IMPORT_VENDOR_CSTD 1 -# endif - -# if defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS) && !defined (_STLP_DO_IMPORT_CSTD_FUNCTIONS) -# define _STLP_NO_CSTD_FUNCTION_IMPORTS -# endif - -# define _STLP_USING_NAMESPACE(x) using namespace x ; - -namespace std { } -namespace __std_alias = std; - -/* assume std:: namespace for C++ std library if not being told otherwise */ -# if defined (_STLP_VENDOR_GLOBAL_STD) -# define _STLP_VENDOR_STD -# else -# define _STLP_VENDOR_STD std -# endif - -/* tune things that come from C library */ -# if defined (_STLP_VENDOR_GLOBAL_CSTD) || !defined(_STLP_USE_NEW_C_HEADERS) -/* in old-style headers, C functions go to global scope. */ -# define _STLP_VENDOR_CSTD -# define _STLP_USING_VENDOR_CSTD -# else -# define _STLP_VENDOR_CSTD _STLP_VENDOR_STD -# define _STLP_USING_VENDOR_CSTD _STLP_USING_NAMESPACE(_STLP_VENDOR_CSTD) -# endif /* _STLP_VENDOR_CSTD */ -/* exception, typeinfo, new - always come from the vendor */ -# if !defined (_STLP_VENDOR_EXCEPT_STD) -# if defined (_STLP_VENDOR_GLOBAL_EXCEPT_STD) -# define _STLP_VENDOR_EXCEPT_STD -# else -# define _STLP_VENDOR_EXCEPT_STD _STLP_VENDOR_STD -# endif -# endif -# define _STLP_OLD_IO_NAMESPACE -# if !defined (_STLP_VENDOR_MB_NAMESPACE) -# define _STLP_VENDOR_MB_NAMESPACE _STLP_VENDOR_CSTD -# endif -#else -/* compiler has no namespace support */ -# define _STLP_VENDOR_STD -# define _STLP_VENDOR_CSTD -# define _STLP_USING_NAMESPACE(x) -# define _STLP_USING_VENDOR_CSTD -# define _STLP_VENDOR_EXCEPT_STD -#endif - -#if defined (_STLP_USE_NAMESPACES) - -# if defined (_STLP_USE_OWN_NAMESPACE) -# if !defined (_STLP_STD_NAME) -# if !defined (_STLP_DEBUG) -# if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB) -# ifndef _STLP_THREADS -# define _STLP_STD_NAME stlpmtx_std -# else -# define _STLP_STD_NAME stlp_std -# endif -# else -# ifndef _STLP_THREADS -# define _STLP_STD_NAME stlpxmtx_std -# else -# define _STLP_STD_NAME stlpx_std -# endif -# endif -# else -/* - * The STLport debug mode is binary incompatible with the other modes, - * lets make it clear on the STLport namespace to generate link errors rather - * than runtime ones. - */ -# if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB) -# ifndef _STLP_THREADS -# define _STLP_STD_NAME stlpdmtx_std -# else -# define _STLP_STD_NAME stlpd_std -# endif -# else -# ifndef _STLP_THREADS -# define _STLP_STD_NAME stlpdxmtx_std -# else -# define _STLP_STD_NAME stlpdx_std -# endif -# endif -# endif -# endif -namespace _STLP_STD_NAME { } -# else -# define _STLP_STD_NAME std -# endif /* _STLP_USE_OWN_NAMESPACE */ - -# define _STLP_BEGIN_NAMESPACE namespace _STLP_STD_NAME { -# define _STLP_BEGIN_TR1_NAMESPACE namespace tr1 { -# define _STLP_END_NAMESPACE } - -/* decide whether or not we use separate namespace for rel ops */ -# if defined (_STLP_NO_RELOPS_NAMESPACE) -# define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {} -# define _STLP_END_RELOPS_NAMESPACE } -# else -/* Use std::rel_ops namespace */ -# define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops { -# define _STLP_END_RELOPS_NAMESPACE } } -# define _STLP_USE_SEPARATE_RELOPS_NAMESPACE -# endif /* Use std::rel_ops namespace */ - -# define _STLP_STD ::_STLP_STD_NAME -# if !defined (_STLP_TR1) -# define _STLP_TR1 _STLP_STD::tr1:: -# endif - -# if !defined (_STLP_DONT_USE_PRIV_NAMESPACE) -# define _STLP_PRIV_NAME priv -# define _STLP_PRIV _STLP_STD::_STLP_PRIV_NAME:: -# define _STLP_MOVE_TO_PRIV_NAMESPACE namespace _STLP_PRIV_NAME { -# define _STLP_MOVE_TO_STD_NAMESPACE } -# else -# if !defined (_STLP_PRIV) -# define _STLP_PRIV _STLP_STD:: -# endif -# define _STLP_MOVE_TO_PRIV_NAMESPACE -# define _STLP_MOVE_TO_STD_NAMESPACE -# endif - -/* Official STLport namespace when std is not redefined. - * Here we don't use a macro because we do not need it and because - * stlport is used as file name by boost and folder name under beos: - */ -namespace stlport = _STLP_STD_NAME; - -/* Backward compatibility: - */ -namespace _STL = _STLP_STD_NAME; -#undef __STLPORT_NAMESPACE -#define __STLPORT_NAMESPACE _STLP_STD_NAME - -#else /* _STLP_USE_NAMESPACES */ -/* STLport is being put into global namespace */ -# define _STLP_STD -# define _STLP_PRIV -# define _STLP_TR1 -# define _STLP_BEGIN_NAMESPACE -# define _STLP_BEGIN_TR1_NAMESPACE -# define _STLP_END_NAMESPACE -# define _STLP_MOVE_TO_PRIV_NAMESPACE -# define _STLP_MOVE_TO_STD_NAMESPACE - -/* boris : it was found out that _STLP_USE_SEPARATE_RELOPS_NAMESPACE - causes less problems than having relational operator templates in global namespace - Please define _STLP_NO_RELOPS_NAMESPACE in config/user_config.h if your code rely on them. */ -# if !defined (_STLP_NO_RELOPS_NAMESPACE) -# define _STLP_USE_SEPARATE_RELOPS_NAMESPACE -# endif -# define _STLP_BEGIN_RELOPS_NAMESPACE -# define _STLP_END_RELOPS_NAMESPACE -# undef _STLP_USE_OWN_NAMESPACE -#endif /* _STLP_USE_NAMESPACES */ - -#define STLPORT_CSTD _STLP_VENDOR_CSTD -#define STLPORT _STLP_STD_NAME - -#if defined(_STLP_BOGUS_TEMPLATE_TYPE_MATCHING_BUG) -# define _STLP_SIMPLE_TYPE(T) _stl_trivial_proxy -#else -# define _STLP_SIMPLE_TYPE(T) T -#endif - -#ifndef _STLP_RAND48 -# define _STLP_NO_DRAND48 -#endif - -/* advanced keywords usage */ -#define __C_CAST(__x, __y) ((__x)(__y)) -#ifndef _STLP_NO_NEW_STYLE_CASTS -# define __CONST_CAST(__x,__y) const_cast<__x>(__y) -# define __STATIC_CAST(__x,__y) static_cast<__x>(__y) -# define __REINTERPRET_CAST(__x,__y) reinterpret_cast<__x>(__y) -#else -# define __STATIC_CAST(__x,__y) __C_CAST(__x, __y) -# define __CONST_CAST(__x,__y) __C_CAST(__x, __y) -# define __REINTERPRET_CAST(__x,__y) __C_CAST(__x, __y) -#endif - -#if defined (_STLP_NEED_TYPENAME) && ! defined (typename) -# define typename -#endif - -#if defined (_STLP_NEED_TYPENAME) || defined (_STLP_NO_TYPENAME_ON_RETURN_TYPE ) -# define _STLP_TYPENAME_ON_RETURN_TYPE -#else -# define _STLP_TYPENAME_ON_RETURN_TYPE typename -#endif - -#ifdef _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER -# define _STLP_HEADER_TYPENAME -#else -# define _STLP_HEADER_TYPENAME typename -#endif - -#ifdef _STLP_NO_TYPENAME_BEFORE_NAMESPACE -# define _STLP_TYPENAME -#else -# define _STLP_TYPENAME typename -#endif - -#ifndef _STLP_NO_MEMBER_TEMPLATE_KEYWORD -# define _STLP_TEMPLATE template -#else -# define _STLP_TEMPLATE -#endif - -#if defined (_STLP_USE_CONTAINERS_EXTENSION) -# define _STLP_KEY_TYPE_FOR_CONT_EXT(type) -# define _STLP_TEMPLATE_FOR_CONT_EXT template -#else -# define _STLP_KEY_TYPE_FOR_CONT_EXT(type) typedef type _KT; -# define _STLP_TEMPLATE_FOR_CONT_EXT -#endif - -#if defined (_STLP_NEED_EXPLICIT) && !defined (explicit) -# define explicit -#endif - -#if !defined (_STLP_NEED_MUTABLE) -# define _STLP_MUTABLE(type, x) x -#else -# define _STLP_MUTABLE(type, x) __CONST_CAST(type*, this)->x -# define mutable -#endif - -#if defined (_STLP_NO_SIGNED_BUILTINS) -/* old HP-UX doesn't understand "signed" keyword */ -# define signed -#endif - -#if defined (_STLP_LOOP_INLINE_PROBLEMS) -# define _STLP_INLINE_LOOP -#else -# define _STLP_INLINE_LOOP inline -#endif - -#ifndef _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX -# define _STLP_TEMPLATE_NULL template<> -#else -# define _STLP_TEMPLATE_NULL -#endif - -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER -# define _STLP_OPERATOR_TEMPLATE -#else -# define _STLP_OPERATOR_TEMPLATE _STLP_TEMPLATE_NULL -#endif - -#ifndef _STLP_CLASS_PARTIAL_SPECIALIZATION -/* unless we have other compiler problem, try simulating partial spec here */ -# if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) -# define _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS -# endif -/* For your own iterators, please use inheritance from iterator<> instead of these obsolete queries. */ -# if (defined (_STLP_NESTED_TYPE_PARAM_BUG) || !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)) -# if ! defined ( _STLP_USE_OLD_HP_ITERATOR_QUERIES ) -# define _STLP_USE_OLD_HP_ITERATOR_QUERIES -# endif -# elif defined ( _STLP_NO_ANACHRONISMS ) -# undef _STLP_USE_OLD_HP_ITERATOR_QUERIES -# endif -#endif - -#ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS -# define _STLP_NULL_TMPL_ARGS <> -# else -# define _STLP_NULL_TMPL_ARGS -#endif - -#if !defined (_STLP_ALLOCATOR_TYPE_DFL) -# if defined (_STLP_DONT_SUP_DFLT_PARAM) -# define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS -# endif -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) -# define _STLP_ALLOCATOR_TYPE_DFL -# else -# define _STLP_ALLOCATOR_TYPE_DFL = allocator_type() -# endif -#endif - -/* When the compiler do not correctly initialized the basic types value in default parameters we prefer - * to avoid them to be able to correct this bug. - */ -#if defined (_STLP_DEF_CONST_DEF_PARAM_BUG) -# define _STLP_DONT_SUP_DFLT_PARAM 1 -#endif - -#if defined (__SGI_STL_NO_ARROW_OPERATOR) && ! defined (_STLP_NO_ARROW_OPERATOR) -# define _STLP_NO_ARROW_OPERATOR -#endif - -#if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# if !(defined (_STLP_NO_ARROW_OPERATOR)) && \ - !defined (_STLP_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_MSVC50_COMPATIBILITY) -/* this one is needed for proper reverse_iterator<> operator ->() handling */ -# define _STLP_MSVC50_COMPATIBILITY 1 -# endif -#endif - -#if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) -# if (defined(__IBMCPP__) && (500 <= __IBMCPP__) && (__IBMCPP__ < 600) ) -# define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \ - typedef typename _STLP_STD :: reverse_iterator const_reverse_iterator; \ - typedef typename _STLP_STD :: reverse_iterator reverse_iterator -# elif (defined (__sgi) && ! defined (__GNUC__)) || defined (__SUNPRO_CC) || defined (__xlC__) -# define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \ - typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator const_reverse_iterator; \ - typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator reverse_iterator -# else -# define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \ - typedef _STLP_STD::reverse_iterator const_reverse_iterator; \ - typedef _STLP_STD::reverse_iterator reverse_iterator -# endif -#else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ -# if defined (_STLP_MSVC50_COMPATIBILITY) -# define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \ - typedef _STLP_STD::__reverse_iterator const_reverse_iterator; \ - typedef _STLP_STD::__reverse_iterator \ - reverse_iterator -# else -# define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \ - typedef _STLP_STD::__reverse_iterator const_reverse_iterator; \ - typedef _STLP_STD::__reverse_iterator \ - reverse_iterator -# endif -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -#define _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS \ - _STLP_DECLARE_REVERSE_ITERATORS(reverse_bidirectional_iterator) -#define _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS \ - _STLP_DECLARE_REVERSE_ITERATORS(reverse_iterator) - -#define __IMPORT_CONTAINER_TYPEDEFS(_Super) \ - typedef typename _Super::value_type value_type; \ - typedef typename _Super::size_type size_type; \ - typedef typename _Super::difference_type difference_type; \ - typedef typename _Super::reference reference; \ - typedef typename _Super::const_reference const_reference; \ - typedef typename _Super::pointer pointer; \ - typedef typename _Super::const_pointer const_pointer; \ - typedef typename _Super::allocator_type allocator_type; - - -#define __IMPORT_ITERATORS(_Super) \ - typedef typename _Super::iterator iterator; \ - typedef typename _Super::const_iterator const_iterator; - -#define __IMPORT_REVERSE_ITERATORS(_Super) \ - typedef typename _Super::const_reverse_iterator const_reverse_iterator; \ - typedef typename _Super::reverse_iterator reverse_iterator; - -#define __IMPORT_SUPER_COPY_ASSIGNMENT(__derived_name, _Self, _SUPER) \ - __derived_name(const _Super& __x) : _SUPER(__x) {} \ - _Self& operator=(const _Super& __x) { \ - *(_Super*)this = __x; \ - return *this; \ - } \ - __derived_name(const _Self& __x) : _SUPER(__x) {} \ - _Self& operator=(const _Self& __x) { \ - *(_Super*)this = __x; \ - return *this; \ - } - -#define __IMPORT_WITH_ITERATORS(_Super) \ - __IMPORT_CONTAINER_TYPEDEFS(_Super) __IMPORT_ITERATORS(_Super) - -#define __IMPORT_WITH_REVERSE_ITERATORS(_Super) \ - __IMPORT_WITH_ITERATORS(_Super) __IMPORT_REVERSE_ITERATORS(_Super) - -#if defined (_STLP_TRIVIAL_CONSTRUCTOR_BUG) -# define __TRIVIAL_CONSTRUCTOR(__type) __type() {} -#else -# define __TRIVIAL_CONSTRUCTOR(__type) -#endif - -#if defined (_STLP_TRIVIAL_DESTRUCTOR_BUG) -# define __TRIVIAL_DESTRUCTOR(__type) ~__type() {} -#else -# define __TRIVIAL_DESTRUCTOR(__type) -#endif - -#define __TRIVIAL_STUFF(__type) \ - __TRIVIAL_CONSTRUCTOR(__type) __TRIVIAL_DESTRUCTOR(__type) - -#if defined (_STLP_STATIC_CONST_INIT_BUG) -# define _STLP_STATIC_CONSTANT(__type, __assignment) enum { __assignment } -#else -# define _STLP_STATIC_CONSTANT(__type, __assignment) static const __type __assignment -#endif - -#if defined (_STLP_HAS_NO_EXCEPTIONS) -# define _STLP_NO_EXCEPTIONS -#endif - -#if !defined (_STLP_DONT_USE_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_USE_EXCEPTIONS) -# define _STLP_USE_EXCEPTIONS -#endif - -#if defined (_STLP_USE_EXCEPTIONS) -# define _STLP_TRY try -# define _STLP_CATCH_ALL catch(...) -# ifndef _STLP_THROW -# define _STLP_THROW(x) throw x -# endif -# define _STLP_RETHROW throw - -# define _STLP_UNWIND(action) catch(...) { action; throw; } - -# ifdef _STLP_THROW_RETURN_BUG -# define _STLP_RET_AFTER_THROW(data) return data; -# else -# define _STLP_RET_AFTER_THROW(data) -# endif - -# if !defined (_STLP_THROWS) -# define _STLP_THROWS(x) throw(x) -# endif -# if !defined (_STLP_NOTHROW) -# define _STLP_NOTHROW throw() -# endif -#else -# define _STLP_TRY -# define _STLP_CATCH_ALL if (false) -# ifndef _STLP_THROW -# define _STLP_THROW(x) -# endif -# define _STLP_RETHROW {} -# define _STLP_UNWIND(action) -# define _STLP_THROWS(x) -# define _STLP_NOTHROW -# define _STLP_RET_AFTER_THROW(data) -#endif - -/* - * Here we check _STLP_NO_EXCEPTIONS which means that the compiler has no - * exception support but not the _STLP_USE_EXCEPTIONS which simply means - * that the user do not want to use them. - */ -#if !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTION_SPEC) -# define _STLP_THROWS_INHERENTLY(x) throw x -# define _STLP_NOTHROW_INHERENTLY throw() -#else -# define _STLP_THROWS_INHERENTLY(x) -# define _STLP_NOTHROW_INHERENTLY -#endif - -/* STLport function not returning are functions that throw so we translate - * the noreturn functions in throwing functions taking also into account - * exception support activation. - */ -#if defined (_STLP_NORETURN_FUNCTION) && !defined (_STLP_NO_EXCEPTIONS) && \ - !defined (_STLP_FUNCTION_THROWS) -# define _STLP_FUNCTION_THROWS _STLP_NORETURN_FUNCTION -#else -# define _STLP_FUNCTION_THROWS -#endif - -#if defined(_STLP_NO_BOOL) -# if (defined (__IBMCPP__) && (__IBMCPP__ < 400)) && ! defined (_AIX) -# include -# if defined (__OS400__) -typedef int bool; -# elif !( defined (__xlC__) || defined (_AIX)) -typedef Boolean bool; -# endif -# else -# if defined(_STLP_YVALS_H) -# include -# else -# if defined (_STLP_DONT_USE_BOOL_TYPEDEF) -# define bool int -# else -typedef int bool; -# endif -# define true 1 -# define false 0 -# endif -# endif /* __IBMCPP__ */ -#else -# define _STLP_BOOL_KEYWORD 1 -#endif /* _STLP_NO_BOOL */ - -/* uninitialized value filler */ -#ifndef _STLP_SHRED_BYTE -/* This value is designed to cause problems if an error occurs */ -# define _STLP_SHRED_BYTE 0xA3 -#endif /* _STLP_SHRED_BYTE */ - -/* shared library tune-up */ -#ifndef _STLP_IMPORT_DECLSPEC -# define _STLP_IMPORT_DECLSPEC -#endif - -/* a keyword used to instantiate export template */ -#ifndef _STLP_EXPORT_TEMPLATE_KEYWORD -# define _STLP_EXPORT_TEMPLATE_KEYWORD -#endif -#ifndef _STLP_IMPORT_TEMPLATE_KEYWORD -# define _STLP_IMPORT_TEMPLATE_KEYWORD -#endif - -#if !defined (_STLP_NO_CONST_IN_PAIR) -# define _STLP_CONST const -#else -# define _STLP_CONST -#endif - -#ifdef _STLP_USE_NO_IOSTREAMS -/* - * If we do not use iostreams we do not use the export/import - * techniques to avoid build of the STLport library. - */ -# undef _STLP_USE_DECLSPEC -/* We also undef USE_DYNAMIC_LIB macro as this macro add some code - * to use the dynamic (shared) STLport library for some platform/compiler - * configuration leading to problem when not linking to the STLport lib. - */ -# undef _STLP_USE_DYNAMIC_LIB -#endif - -#if defined (_STLP_DLLEXPORT_NEEDS_PREDECLARATION) && defined (_STLP_USE_DECLSPEC) -# if ! defined (_STLP_USE_TEMPLATE_EXPORT) -/* this setting turns on "extern template" extension use */ -# define _STLP_USE_TEMPLATE_EXPORT -# endif -# if defined (_STLP_DESIGNATED_DLL) && ! defined (_STLP_NO_FORCE_INSTANTIATE) -# define _STLP_NO_FORCE_INSTANTIATE -# endif -#endif - -#if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */ -# define _STLP_EXPORT _STLP_EXPORT_TEMPLATE_KEYWORD -#else -# define _STLP_EXPORT _STLP_IMPORT_TEMPLATE_KEYWORD -#endif - -#ifndef _STLP_EXPORT_TEMPLATE -# define _STLP_EXPORT_TEMPLATE _STLP_EXPORT template -#endif - -#if defined (_STLP_USE_DECLSPEC) /* using export/import technique */ - -# ifndef _STLP_EXPORT_DECLSPEC -# define _STLP_EXPORT_DECLSPEC -# endif -# ifndef _STLP_IMPORT_DECLSPEC -# define _STLP_IMPORT_DECLSPEC -# endif -# ifndef _STLP_CLASS_EXPORT_DECLSPEC -# define _STLP_CLASS_EXPORT_DECLSPEC -# endif -# ifndef _STLP_CLASS_IMPORT_DECLSPEC -# define _STLP_CLASS_IMPORT_DECLSPEC -# endif -# if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */ -# define _STLP_DECLSPEC _STLP_EXPORT_DECLSPEC -# define _STLP_CLASS_DECLSPEC _STLP_CLASS_EXPORT_DECLSPEC -# else -# define _STLP_DECLSPEC _STLP_IMPORT_DECLSPEC /* Other modules, importing STLport exports */ -# define _STLP_CLASS_DECLSPEC _STLP_CLASS_IMPORT_DECLSPEC -# endif - -#else /* Not using DLL export/import specifications */ - -# define _STLP_DECLSPEC -# define _STLP_CLASS_DECLSPEC - -#endif - -#define _STLP_EXPORT_TEMPLATE_CLASS _STLP_EXPORT template class _STLP_CLASS_DECLSPEC - -#if defined (_STLP_NEED_ADDITIONAL_STATIC_DECLSPEC) -# define _STLP_STATIC_DECLSPEC _STLP_DECLSPEC -#else -# define _STLP_STATIC_DECLSPEC -#endif - -#if !defined (_STLP_CALL) -# define _STLP_CALL -#endif - -#ifndef _STLP_USE_NO_IOSTREAMS - -# if defined (__DECCXX) && ! defined (__USE_STD_IOSTREAM) -# define __USE_STD_IOSTREAM -# endif - -/* We only need to expose details of streams implementation - if we use non-standard i/o or are building STLport*/ -# if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE) || !defined(_STLP_NO_CUSTOM_IO) -# define _STLP_EXPOSE_STREAM_IMPLEMENTATION 1 -# endif - -/* We only need to expose details of global implementation if we are building STLport - or have not instantiated everything in the lib */ -# if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE) -# undef _STLP_EXPOSE_GLOBALS_IMPLEMENTATION -# define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION 1 -# endif - -#else /* _STLP_USE_NO_IOSTREAMS */ -/* when we are not using SGI iostreams, we must expose globals, but not streams implementation */ -# define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION -#endif /* _STLP_USE_NO_IOSTREAMS */ - -#ifdef _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS -# define _STLP_PSPEC2(t1,t2) < t1,t2 > -# define _STLP_PSPEC3(t1,t2,t3) < t1,t2,t3 > -#else -# define _STLP_PSPEC2(t1,t2) /* nothing */ -# define _STLP_PSPEC3(t1,t2,t3) /* nothing */ -#endif - -/* Activation of the partial template workaround: - */ -#if !defined(_STLP_DONT_USE_PARTIAL_SPEC_WRKD) &&\ - (!defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || !defined(_STLP_FUNCTION_TMPL_PARTIAL_ORDER)) -# define _STLP_USE_PARTIAL_SPEC_WORKAROUND -#endif - -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE -# define _STLP_RELOPS_OPERATORS(_TMPL, _TP) \ -_TMPL inline bool _STLP_CALL operator!=(const _TP& __x, const _TP& __y) {return !(__x == __y);}\ -_TMPL inline bool _STLP_CALL operator>(const _TP& __x, const _TP& __y) {return __y < __x;}\ -_TMPL inline bool _STLP_CALL operator<=(const _TP& __x, const _TP& __y) { return !(__y < __x);}\ -_TMPL inline bool _STLP_CALL operator>=(const _TP& __x, const _TP& __y) { return !(__x < __y);} -#else -# define _STLP_RELOPS_OPERATORS(_TMPL, _TP) -#endif - -#if defined ( _STLP_USE_ABBREVS ) -# include -#endif - -/* Some really useful macro */ -#define _STLP_ARRAY_SIZE(A) sizeof(A) / sizeof(A[0]) -#define _STLP_ARRAY_AND_SIZE(A) A, sizeof(A) / sizeof(A[0]) - -#if !defined (_STLP_MARK_PARAMETER_AS_UNUSED) -# define _STLP_MARK_PARAMETER_AS_UNUSED(X) (void)X; -#endif - -#if defined (_STLP_CHECK_RUNTIME_COMPATIBILITY) -# if defined (_STLP_USE_NO_IOSTREAMS) -# undef _STLP_CHECK_RUNTIME_COMPATIBILITY -# else -/* The extern "C" simply makes the symbol simpler. */ -#if defined (__cplusplus) -extern "C" -#endif -void _STLP_DECLSPEC _STLP_CALL _STLP_CHECK_RUNTIME_COMPATIBILITY(); -# endif -#endif - -/* some cleanup */ -#undef _STLP_DONT_USE_BOOL_TYPEDEF -#undef _STLP_YVALS_H -#undef _STLP_LOOP_INLINE_PROBLEMS -#undef _STLP_NEED_EXPLICIT -#undef _STLP_NEED_TYPENAME -#undef _STLP_NO_NEW_STYLE_CASTS -#undef __AUTO_CONFIGURED - -#endif /* _STLP_FEATURES_H */ diff --git a/build/stlport/stlport/stl/config/host.h b/build/stlport/stlport/stl/config/host.h deleted file mode 100644 index b4b608972c0e..000000000000 --- a/build/stlport/stlport/stl/config/host.h +++ /dev/null @@ -1,342 +0,0 @@ -/* - * This file defines site configuration. - */ - -/* - * _STLP_NO_THREADS: if defined, STLport don't use any - * multithreading support. Synonym is _NOTHREADS - */ -/* -#define _NOTHREADS -#define _STLP_NO_THREADS -*/ - -/* _PTHREADS: if defined, use POSIX threads for multithreading support. */ -/* -#define _PTHREADS -*/ - -/* compatibility section - */ - -#if (defined (_STLP_NOTHREADS) || defined (_STLP_NO_THREADS) || defined (NOTHREADS)) -# if !defined (_NOTHREADS) -# define _NOTHREADS -# endif -# if !defined (_STLP_NO_THREADS) -# define _STLP_NO_THREADS -# endif -#endif - -#if !defined(_STLP_USE_DYNAMIC_LIB) && !defined(_STLP_USE_STATIC_LIB) -/* - * Turn _STLP_USE_DYNAMIC_LIB to enforce use of .dll version of STLport library. - * NOTE: please do that only if you know what you are doing! - * Changing default will require you to change makefiles in "build" accordingly - * and to rebuild STLPort library! - * On UNIX, this has no effect, see build/lib/README for make tags. - * See STLport configuration file (build/lib/configure.bat) for help in building - * the require library versions. - */ -/* -#define _STLP_USE_DYNAMIC_LIB -*/ - -/* - * Turn _STLP_USE_STATIC_LIB to enforce use of static version of STLport library. - * NOTE: please do that only if you know what you are doing! - * Changing default will require you to change makefile in "build" accordingly - * and to rebuild STLPort library! - * On UNIX, this has no effect, see build/lib/README for make tags. - * See STLport configuration file (build/lib/configure.bat) for help in building - * the require library versions. - */ -/* -#define _STLP_USE_STATIC_LIB -*/ -#endif - -/* - * Edit relative path below (or put full path) to get native - * compiler vendor's headers included. Default is "../include" - * for _STLP_NATIVE_INCLUDE_PATH, default for other macros is - * _STLP_NATIVE_INCLUDE_PATH. - * Hint: never install STLport in the directory that ends with "include" - */ -/* -#undef _STLP_NATIVE_INCLUDE_PATH -#define _STLP_NATIVE_INCLUDE_PATH ../include -*/ -/* same for C library headers like */ -/* -#undef _STLP_NATIVE_CPP_C_INCLUDE_PATH -#define _STLP_NATIVE_CPP_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH -*/ -/* same for C headers like */ -/* -#undef _STLP_NATIVE_C_INCLUDE_PATH -#define _STLP_NATIVE_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH -*/ -/* Some compilers locate basic C++ runtime support headers (, , ) in separate directory */ -/* -#undef _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH -#define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH -*/ - -/* - * If namespases available, STLport use own namespace (and masquerade - * it as std). Disable own namespace may cause undefined behaviour. - */ -/* -#define _STLP_NO_OWN_NAMESPACE 1 -*/ - -/* - * Uncomment _STLP_LEAKS_PEDANTIC to force deallocation of ALL allocated - * memory chunks. Normally not required. But if you worry about quazi-leaks - * (may be reported by some leaks detection tools), use - * _STLP_LEAKS_PEDANTIC. It should be used with _STLP_USE_NEWALLOC or - * _STLP_USE_MALLOC (see below), the default node_alloc allocator also clean - * its internal memory pool but only if STLport is used as a dynamic library - * under Win32 (using MSVC like compilers). - */ -/* -#define _STLP_LEAKS_PEDANTIC 1 -*/ - -/* - * Uncomment _STLP_USE_NEWALLOC to force allocator to use plain "new" - * instead of STLport optimized node allocator engine. - */ -/* -#define _STLP_USE_NEWALLOC 1 -*/ - -/* - * Uncomment _STLP_USE_MALLOC to force allocator to use plain "malloc" - * instead of STLport optimized node allocator engine. - * - * This is default allocator for glibc 2.3.x and later, if not mentioned other - */ -/* -#define _STLP_USE_MALLOC 1 -*/ - -/* - * Uncomment _STLP_USE_PERTHREAD_ALLOC to force allocator to use - * a specific implementation targetting the massively multi-threaded - * environment. The implementation is based on the POSIX pthread - * interface. - */ -/* -#define _STLP_USE_PERTHREAD_ALLOC 1 -*/ - -/* - * Uncomment _STLP_USE_NODE_ALLOC if you want to force allocator to use - * "node_alloc" allocator (this is default allocator for STLport, if not - * used other above, except glibc 2.3.x and later, where default is - * "malloc", due to better results) - */ -/* -#define _STLP_USE_NODE_ALLOC 1 -*/ - -/* - * Set _STLP_DEBUG_ALLOC to use allocators that perform memory debugging, - * such as padding/checking for memory consistency - */ -/* -#define _STLP_DEBUG_ALLOC 1 -*/ - -/* - * For compiler not supporting partial template specialization or ordering of - * template functions STLport implement a workaround based on inheritance - * detection. This inheritance can introduce trouble in client code when - * a user class derived a STL container (which is not advised as STL containers - * do not have virtual destructors). To disable this workaround turn this macro on: - */ -/* -#define _STLP_DONT_USE_PARTIAL_SPEC_WRKD 1 -*/ - -/* - * Uncomment this to force all debug diagnostic to be directed through a - * user-defined global function: - * void __stl_debug_message(const char * format_str, ...) - * instead of predefined STLport routine. - * This allows you to take control of debug message output. - * Default routine calls fprintf(stderr,...) - * Note : If you set this macro, you must supply __stl_debug_message - * function definition somewhere. - */ -/* -#define _STLP_DEBUG_MESSAGE 1 -*/ - -/* - * Uncomment this to force all failed assertions to be executed through - * user-defined global function: - * void __stl_debug_terminate(void). This allows - * you to take control of assertion behaviour for debugging purposes. - * Default routine calls _STLP_ABORT(). - * Note : If you set this macro, you must supply __stl_debug_terminate - * function definition somewhere. - */ -/* -#define _STLP_DEBUG_TERMINATE 1 -*/ - -/* - * Uncomment that to disable exception handling code - */ -/* -#define _STLP_DONT_USE_EXCEPTIONS 1 -*/ - -/* - * _STLP_NO_NAMESPACES: if defined, don't put the library in namespace - * stlport:: or std::, even if the compiler supports namespaces - */ -/* -#define _STLP_NO_NAMESPACES 1 -*/ - -/*========================================================== - * Compatibility section - *==========================================================*/ - -/* - * Use abbreviated class names for linker benefit (don't affect interface). - * This option is obsolete, but should work in this release. - * - */ -/* -#define _STLP_USE_ABBREVS -*/ - -/* - * This definition precludes STLport reverse_iterator to be compatible with - * other parts of MSVC library. (With partial specialization, it just - * has no effect). - * Use it _ONLY_ if you use SGI-style reverse_iterator<> template explicitly - */ -/* -#define _STLP_NO_MSVC50_COMPATIBILITY 1 -*/ - -/* - * Use obsolete overloaded template functions iterator_category(), value_type(), distance_type() - * for querying iterator properties. Please note those names are non-standard and are not guaranteed - * to be used by every implementation. However, this setting is on by default when partial specialization - * is not implemented in the compiler and cannot be simulated (only if _STLP_NO_ANACHRONISMS is not set). - * Use of those interfaces for user-defined iterators is strongly discouraged: - * please use public inheritance from iterator<> template to achieve desired effect. - * Second form is to disable old-style queries in any case. - */ -/* -#define _STLP_USE_OLD_HP_ITERATOR_QUERIES -#define _STLP_NO_OLD_HP_ITERATOR_QUERIES -*/ - - -/* - * On systems with support of large files (_LARGEFILE_SOURCE, - * _LARGEFILE64_SOURCE defined) we will use 64-bit file offset, even if - * __USE_FILE_OFFSET64 or _FILE_OFFSET_BITS not defined or _FILE_OFFSET_BITS - * less than 64. In the last case sizeof(std::streamoff) may not be equal to - * sizeof(off_t); if you want to force equal size of off_t and streamoff, - * uncomment macro below. But pay attention, this has influence on libstlport - * and in future usage it may cause conflict with defined _FILE_OFFSET_BITS macro. - */ - -/* -#define _STLP_USE_DEFAULT_FILE_OFFSET -*/ - -/* - * _STLP_USE_STDIO_IO, _STLP_USE_UNIX_IO: force selection of stdio calls - * (fopen/flose/fread/fwrite) under fstream buffers or unistd calls - * (open/close/read/write + mmap). On systems that have both (i.e. most Unixes) - * _STLP_USE_UNIX_IO is used. - * - * There is a third variant for Windows: _STLP_USE_WIN32_IO, that based - * on Windows calls (CreateFile/CloseHandle/ReadFile/WriteFile + CreateFileMapping, - * MapViewOfFile) - * - * Uncomment only one define here! - */ -/* -#define _STLP_USE_UNIX_IO -*/ -/* -#define _STLP_USE_STDIO_IO -*/ -/* -#define _STLP_USE_WIN32_IO - */ - -/*==========================================================================*/ - -/* This section contains swithes which should be off by default, - * but so few compilers would have it undefined, so that we set them here, - * with the option to be turned off later in compiler-specific file - */ - -#define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT -#define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT - -/*==========================================================================*/ - -#if defined(__sun) && defined(__GNUC__) -/* __SunOS_5_x is not defined in headers, and there is no way to derive it from headers only; - * nevertheless this macro defined automagically by SunPro compilers family; - * - * gcc know nothing about it, but defining it with -D on compiler command line - * is a bad idea from one side, and this info still useful when we want to use - * (or don't use) some Solaris version-specific features from other side. - * Of course, the best way is to define it in spec file, but this is beyond our scope. - * - * Uncomment ONE of the following, depends on what Solaris version you use. - */ - -/* -#define __SunOS_5_5_1 - */ -/* -#define __SunOS_5_6 - */ -/* -#define __SunOS_5_7 - */ -/* -#define __SunOS_5_8 - */ -/* -#define __SunOS_5_9 - */ -/* -#define __SunOS_5_10 - */ -#endif - -#if defined(__sun) -/* With following patches Solaris 8 and 9 will have *l and *f (long double and float) - * variants of math functions: - * SunOS 5.8 patch 111721-04 (May/08/2003) - * - * SunOS 5.9 patch 111722-04 (May/08/2003) - * - * Solaris 10 has this functions from box. - */ -/* -#define _STLP_SOLARIS_MATH_PATCH - */ -#endif - -/* - Local Variables: - mode:C++ - End: -*/ diff --git a/build/stlport/stlport/stl/config/stl_confix.h b/build/stlport/stlport/stl/config/stl_confix.h deleted file mode 100644 index 120e8f4d58fd..000000000000 --- a/build/stlport/stlport/stl/config/stl_confix.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* - * STLport configuration file - * It is internal STLport header - DO NOT include it directly - * Purpose of this file : to define STLport settings that depend on - * compiler flags or can be otherwise missed - * - */ - -#ifndef _STLP_CONFIX_H -#define _STLP_CONFIX_H - -/* If, by any chance, C compiler gets there, try to help it to pass smoothly */ -#if ! defined (__cplusplus) && ! defined (_STLP_HAS_NO_NAMESPACES) -# define _STLP_HAS_NO_NAMESPACES -#endif - -#if defined (__MINGW32__) -# define _STLP_NO_DRAND48 -#endif - -/* Modena C++ library */ -#if defined (__MWERKS__) && __MWERKS__ <= 0x2303 || (defined (__KCC) && __KCC_VERSION < 3400) -# include -# define _STLP_USE_MSIPL 1 -# if defined (__KCC) || (defined(__MSL_CPP__) && \ - ( (__MSL_CPP__ >= 0x5000 && defined( _MSL_NO_MESSAGE_FACET )) || \ - (__MSL_CPP__ < 0x5000 && defined( MSIPL_NL_TYPES )))) -# define _STLP_NO_NATIVE_MESSAGE_FACET 1 -# endif -#endif - -/* common switches for EDG front-end */ -/* __EDG_SWITCHES do not seem to be an official EDG macro. - * We keep it for historical reason. */ -#if defined (__EDG_SWITCHES) -# if !(defined(_TYPENAME) || defined (_TYPENAME_IS_KEYWORD)) -# undef _STLP_NEED_TYPENAME -# define _STLP_NEED_TYPENAME 1 -# endif -# ifndef _WCHAR_T_IS_KEYWORD -# undef _STLP_NO_WCHAR_T -# define _STLP_NO_WCHAR_T 1 -# endif -# ifndef _PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES -# undef _STLP_NO_CLASS_PARTIAL_SPECIALIZATION -# define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 -# endif -# ifndef _MEMBER_TEMPLATES -# undef _STLP_NO_MEMBER_TEMPLATES -# define _STLP_NO_MEMBER_TEMPLATES 1 -# undef _STLP_NO_MEMBER_TEMPLATE_CLASSES -# define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 -# endif -# ifndef _MEMBER_TEMPLATE_KEYWORD -# undef _STLP_NO_MEMBER_TEMPLATE_KEYWORD -# define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 -# endif -# if !defined (__EXCEPTIONS) && ! defined (_EXCEPTIONS) -# undef _STLP_HAS_NO_EXCEPTIONS -# define _STLP_HAS_NO_EXCEPTIONS -# endif -# undef __EDG_SWITCHES -#endif /* EDG */ - -/* __EDG_VERSION__ is an official EDG macro, compilers based - * on EDG have to define it. */ -#if defined (__EDG_VERSION__) -# if (__EDG_VERSION__ >= 244) && !defined (_STLP_HAS_INCLUDE_NEXT) && !defined(__ANDROID__) -# define _STLP_HAS_INCLUDE_NEXT -# endif -# if (__EDG_VERSION__ <= 240) && !defined (_STLP_DONT_RETURN_VOID) -# define _STLP_DONT_RETURN_VOID -# endif -# if !defined (__EXCEPTIONS) && !defined (_STLP_HAS_NO_EXCEPTIONS) -# define _STLP_HAS_NO_EXCEPTIONS -# endif -# if !defined (__NO_LONG_LONG) && !defined (_STLP_LONG_LONG) -# define _STLP_LONG_LONG long long -# endif -#endif - -#endif diff --git a/build/stlport/stlport/stl/config/stl_mycomp.h b/build/stlport/stlport/stl/config/stl_mycomp.h deleted file mode 100644 index f92902fd2cca..000000000000 --- a/build/stlport/stlport/stl/config/stl_mycomp.h +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* - * Purpose of this file : - * - * A list of COMPILER-SPECIFIC portion of STLport settings. - * This file is provided to help in manual configuration - * of STLport. This file is being included by stlcomp.h - * when STLport is unable to identify your compiler. - * Please remove the error diagnostic below before adjusting - * macros. - * - */ -#ifndef _STLP_MYCOMP_H -#define _STLP_MYCOMP_H - -#error "Your compiler version is not recognized by STLport. Please edit " - -//========================================================== - -// the values choosen here as defaults try to give -// maximum functionality on the most conservative settings - -// Mostly correct guess, change it for Alpha (and other environments -// that has 64-bit "long") -// # define _STLP_UINT32_T unsigned long - -// Disables wchar_t functionality -// # define _STLP_NO_WCHAR_T 1 - -// Define if wchar_t is not an intrinsic type, and is actually a typedef to unsigned short. -// # define _STLP_WCHAR_T_IS_USHORT 1 - -// Uncomment if long long is available -// # define _STLP_LONG_LONG long long - -// Uncomment if long double is not available -// # define _STLP_NO_LONG_DOUBLE 1 - -// Uncomment this if your compiler does not support "typename" keyword -// # define _STLP_NEED_TYPENAME 1 - -// Uncomment this if your compiler does not support "mutable" keyword -// # define _STLP_NEED_MUTABLE 1 - -// Uncomment this if your compiler does not support "explicit" keyword -// # define _STLP_NEED_EXPLICIT 1 - -// Uncomment if new-style-casts like const_cast<> are not available -// # define _STLP_NO_NEW_STYLE_CASTS 1 - -// Uncomment this if your compiler does not have "bool" type -// # define _STLP_NO_BOOL 1 - -// Uncomment this if your compiler does not have "bool" type, but has "bool" keyword reserved -// # define _STLP_DONT_USE_BOOL_TYPEDEF 1 - -// Uncomment this if your compiler does not have "bool" type, but defines "bool" in -// # define _STLP_YVALS_H 1 - -// Uncomment this if your compiler has limited or no default template arguments for classes -// # define _STLP_LIMITED_DEFAULT_TEMPLATES 1 - -// Uncomment this if your compiler support only complete (not dependent on other parameters) -// types as default parameters for class templates -// # define _STLP_DEFAULT_TYPE_PARAM 1 - -// Uncomment this if your compiler do not support default parameters in template class methods -// # define _STLP_DONT_SUP_DFLT_PARAM 1 - -// Uncomment this if your compiler has problem with not-type -// default template parameters -// # define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1 - -// Define if compiler has -// trouble with functions getting non-type-parameterized classes as parameters -// # define _STLP_NON_TYPE_TMPL_PARAM_BUG 1 - -// Uncomment this if your compiler does not support namespaces -// # define _STLP_HAS_NO_NAMESPACES 1 - -// Uncomment if "using" keyword does not work with template types -// # define _STLP_BROKEN_USING_DIRECTIVE 1 - -// Uncomment this if your compiler does not support exceptions -// # define _STLP_HAS_NO_EXCEPTIONS 1 - -// Uncomment this when you are able to detect that the user do not -// want to use the exceptions feature. -// # define _STLP_DONT_USE_EXCEPTIONS 1 - -// Uncomment this if your compiler does not support exception specifications -// # define _STLP_NO_EXCEPTION_SPEC - -// Define this if your compiler requires return statement after throw() -// # define _STLP_THROW_RETURN_BUG 1 - -// Define this if your compiler do not support return of void -// # define _STLP_DONT_RETURN_VOID 1 - -// Header that comes with the compiler -// does not define bad_alloc exception -// # define _STLP_NO_BAD_ALLOC 1 - -// Define this if your compiler do not throw bad_alloc from the new operator -// # define _STLP_NEW_DONT_THROW_BAD_ALLOC 1 - -// Define this if your compiler has no rtti support or if it has been disabled -// # define _STLP_NO_RTTI 1 - -// Define this if there is no native type_info definition -// # define _STLP_NO_TYPEINFO 1 - -// Uncomment if member template methods are not available -// # define _STLP_NO_MEMBER_TEMPLATES 1 - -// Uncomment if member template classes are not available -// # define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1 - -// Uncomment if your compiler do not support the std::allocator rebind technique -// This is a special case of bad member template classes support, it is automatically -// defined if _STLP_NO_MEMBER_TEMPLATE_CLASSES is defined. -// # define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1 - -// Uncomment if no "template" keyword should be used with member template classes -// # define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1 - -// Compiler does not accept friend declaration qualified with namespace name. -// # define _STLP_NO_QUALIFIED_FRIENDS 1 - -// Uncomment if partial specialization is not available -// # define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1 - -// Define if class being partially specialized require full name (template parameters) -// of itself for method declarations -// # define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS - -// Compiler has problem with qualified specializations (cont int, volatile int...) -// # define _STLP_QUALIFIED_SPECIALIZATION_BUG - -// Compiler has problems specializing members of partially -// specialized class -// # define _STLP_MEMBER_SPECIALIZATION_BUG - -// Uncomment if partial order of template functions is not available -// # define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1 - -// Uncomment if specialization of methods is not allowed -// # define _STLP_NO_METHOD_SPECIALIZATION 1 - -// Uncomment if full specialization does not use partial spec. syntax : template <> struct .... -// # define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1 - -// Uncomment if compiler does not support explicit template arguments for functions -// # define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS - -// Uncomment this if your compiler can't inline while(), for() -// # define _STLP_LOOP_INLINE_PROBLEMS 1 - -// Define if the compiler fails to match a template function argument of base -// # define _STLP_BASE_MATCH_BUG 1 - -// Define if the compiler fails to match a template function argument of base -// (non-template) -//# define _STLP_NONTEMPL_BASE_MATCH_BUG 1 - -// Define if the compiler rejects outline method definition -// explicitly taking nested types/typedefs -// # define _STLP_NESTED_TYPE_PARAM_BUG 1 - -// Compiler requires typename keyword on outline method definition -// explicitly taking nested types/typedefs -// #define _STLP_TYPENAME_ON_RETURN_TYPE - -// Define if the baseclass typedefs not visible from outside -// # define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1 - -// if your compiler have serious problems with typedefs, try this one -// # define _STLP_BASE_TYPEDEF_BUG 1 - -// Uncomment if getting errors compiling mem_fun* adaptors -// # define _STLP_MEMBER_POINTER_PARAM_BUG 1 - -// Uncomment if the compiler can't handle a constant-initializer in the -// declaration of a static const data member of integer type. -// (See section 9.4.2, paragraph 4, of the C++ standard.) -// # define _STLP_STATIC_CONST_INIT_BUG - -// Uncomment to indicate that the compiler do not like static constant -// definition. -// Meaningfull only if _STLP_STATIC_CONST_INIT_BUG is not defined. -// # define _STLP_NO_STATIC_CONST_DEFINITION - -// Define if default constructor for builtin integer type fails to initialize it to 0 -// In expression like new(&char) char(): -//# define _STLP_DEF_CONST_PLCT_NEW_BUG 1 -// In default function parameter like _M_method(_Tp __x = _Tp()) -//# define _STLP_DEF_CONST_DEF_PARAM_BUG 1 - -// Defined if constructor -// required to explicitly call member's default constructors for const objects -// # define _STLP_CONST_CONSTRUCTOR_BUG 1 - -// Defined if the compiler has trouble calling POD-types constructors/destructors -// # define _STLP_TRIVIAL_CONSTRUCTOR_BUG 1 -// # define _STLP_TRIVIAL_DESTRUCTOR_BUG 1 - -// Define if having problems specializing maps/sets with -// key type being const -// # define _STLP_MULTI_CONST_TEMPLATE_ARG_BUG - -// Uncomment this to disable -> operators on all iterators -// # define _STLP_NO_ARROW_OPERATOR 1 - -// Uncomment this to disble at() member functions for containers -// # define _STLP_NO_AT_MEMBER_FUNCTION 1 - -// Define this if compiler lacks header -// # define _STLP_NO_EXCEPTION_HEADER 1 - -// Uncomment this if your C library has lrand48() function -// # define _STLP_RAND48 1 - -// Uncomment if native new-style C library headers lile , etc are not available. -// # define _STLP_HAS_NO_NEW_C_HEADERS 1 - -// uncomment if new-style headers is available -// # define _STLP_HAS_NEW_NEW_HEADER 1 - -// uncomment this if and other STD headers put their stuff in ::namespace, -// not std:: -// # define _STLP_VENDOR_GLOBAL_STD - -// uncomment this if and the like put stuff in ::namespace, -// not std:: -// # define _STLP_VENDOR_GLOBAL_CSTD - -// uncomment this if your compiler consider as ambiguous a function imported within -// the stlport namespace and called without scope (:: or std::) -// # define _STLP_NO_USING_FOR_GLOBAL_FUNCTIONS 1 - -// uncomment this if your compiler define all the C math functions C++ additional -// overloads in ::namespace and not only in std::. -// # define _STLP_HAS_GLOBAL_C_MATH_FUNCTIONS 1 - -// Edit relative path below (or put full path) to get native -// compiler headers included. Default is "../include". -// C headers may reside in different directory, so separate macro is provided. -// Hint : never install STLport in the directory that ends with "include" -// # define _STLP_NATIVE_INCLUDE_PATH ../include -// # define _STLP_NATIVE_C_INCLUDE_PATH ../include -// # define _STLP_NATIVE_CPP_C_INCLUDE_PATH ../include - -// This macro constructs header path from directory and name. -// You may change it if your compiler does not understand "/". -// # define _STLP_MAKE_HEADER(path, header) - -// This macro constructs native include header path from include path and name. -// You may have do define it if experimenting problems with preprocessor -// # define _STLP_NATIVE_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_INCLUDE_PATH,header) - -// Same for C headers -// #define _STLP_NATIVE_C_HEADER(header) - -//========================================================== -#endif diff --git a/build/stlport/stlport/stl/config/user_config.h b/build/stlport/stlport/stl/config/user_config.h deleted file mode 100644 index 4efd7272e012..000000000000 --- a/build/stlport/stlport/stl/config/user_config.h +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - */ - -/* - * Purpose of this file : - * - * To hold user-definable portion of STLport settings which may be overridden - * on per-project basis. - * Please note that if you use STLport iostreams (compiled library) then you have - * to use consistent settings when you compile STLport library and your project. - * Those settings are defined in host.h and have to be the same for a given - * STLport installation. - */ - - -/*========================================================== - * User-settable macros that control compilation: - * Features selection - *==========================================================*/ - -/* - * Use this switch for embedded systems where no iostreams are available - * at all. STLport own iostreams will also get disabled automatically then. - * You can either use STLport iostreams, or no iostreams. - * If you want iostreams, you have to compile library in ../build/lib - * and supply resulting library at link time. - */ -/* -#define _STLP_NO_IOSTREAMS 1 -*/ - -/* - * Set _STLP_DEBUG to turn the "Debug Mode" on. - * That gets you checked iterators/ranges in the manner - * of "Safe STL". Very useful for debugging. Thread-safe. - * Please do not forget to link proper STLport library flavor - * (e.g libstlportstlg.so or libstlportstlg.a) when you set this flag - * in STLport iostreams mode, namespace customization guaranty that you - * link to the right library. - */ -/* -#define _STLP_DEBUG 1 -*/ -/* - * You can also choose the debug level: - * STLport debug level: Default value - * Check only what the STLport implementation consider as invalid. - * It also change the iterator invalidation schema. - * Standard debug level: Check for all operations the standard consider as "undefined behavior" - * even if STlport implement it correctly. It also invalidates iterators - * more often. - */ -/* -#define _STLP_DEBUG_LEVEL _STLP_STLPORT_DBG_LEVEL -#define _STLP_DEBUG_LEVEL _STLP_STANDARD_DBG_LEVEL -*/ -/* When an inconsistency is detected by the 'safe STL' the program will abort. - * If you prefer an exception define the following macro. The thrown exception - * will be the Standard runtime_error exception. - */ -/* -#define _STLP_DEBUG_MODE_THROWS - */ - -/* - * _STLP_NO_CUSTOM_IO : define this if you do not instantiate basic_xxx iostream - * classes with custom types (which is most likely the case). Custom means types - * other than char, wchar_t, char_traits<> and allocator<> like - * basic_ostream > or - * basic_string, my_allocator > - * When this option is on, most non-inline template functions definitions for iostreams - * are not seen by the client which saves a lot of compile time for most compilers, - * also object and executable size for some. - * Default is off, just not to break compilation for those who do use those types. - * That also guarantees that you still use optimized standard i/o when you compile - * your program without optimization. Option does not affect STLport library build; you - * may use the same binary library with and without this option, on per-project basis. - */ -/* -#define _STLP_NO_CUSTOM_IO -*/ - -/* - * _STLP_NO_RELOPS_NAMESPACE: if defined, don't put the relational - * operator templates (>, <=, >=, !=) in namespace std::rel_ops, even - * if the compiler supports namespaces. - * Note : if the compiler do not support namespaces, those operators are not be provided by default, - * to simulate hiding them into rel_ops. This was proved to resolve many compiler bugs with ambiguity. - */ -/* -#define _STLP_NO_RELOPS_NAMESPACE 1 -*/ - -/* - * If STLport use its own namespace, see _STLP_NO_OWN_NAMESPACE in host.h, it will try - * by default to rename std:: for the user to stlport::. If you do not want this feature, - * please define the following switch and then use stlport:: - */ -/* -#define _STLP_DONT_REDEFINE_STD 1 -*/ - -/* - * _STLP_WHOLE_NATIVE_STD : only meaningful if STLport uses its own namespace. - * Normally, STLport only imports necessary components from native std:: namespace. - * You might want everything from std:: being available in std:: namespace when you - * include corresponding STLport header (like STLport provides std::map as well, etc.), - * if you are going to use both stlport:: and std:: components in your code. - * Otherwise this option is not recommended as it increases the size of your object files - * and slows down compilation. - * Beware, if you do not use STLport iostream (_STLP_NO_IOSTREAMS above), ask STLport to - * not rename std:: in stlport:: and try to have access to whole native Standard stuff then - * STLport will only throw exceptions from the std namespace and not from stlport. - * For instance a problem in stlport::vector::at will throw a std::out_of_range exception - * and not a stlport::out_of_range. - * Notice that STLport exceptions inherits from std::exception. - */ -/* -#define _STLP_WHOLE_NATIVE_STD -*/ - -/* - * Use this option to catch uninitialized members in your classes. - * When it is set, construct() and destroy() fill the class storage - * with _STLP_SHRED_BYTE (see below). - * Note : _STLP_DEBUG and _STLP_DEBUG_ALLOC don't set this option automatically. - */ -/* -#define _STLP_DEBUG_UNINITIALIZED 1 -#define _STLP_DEBUG_ALLOC 1 -*/ - -/* - * Uncomment and provide a definition for the byte with which raw memory - * will be filled if _STLP_DEBUG_ALLOC or _STLP_DEBUG_UNINITIALIZED is defined. - * Choose a value which is likely to cause a noticeable problem if dereferenced - * or otherwise abused. A good value may already be defined for your platform. - */ -/* -#define _STLP_SHRED_BYTE 0xA3 -*/ - -/* - * This option is for gcc users only and only affects systems where native linker - * does not let gcc to implement automatic instantiation of static template data members/ - * It is being put in this file as there is no way to check if we are using GNU ld automatically, - * so it becomes user's responsibility. - */ -/* -#define _STLP_GCC_USES_GNU_LD -*/ - -/*========================================================== - * Compatibility section - *==========================================================*/ - -/* - * Define this macro to disable anachronistic constructs (like the ones used in HP STL and - * not included in final standard, etc. - */ -/* -#define _STLP_NO_ANACHRONISMS 1 -*/ - -/* - * Define this macro to disable STLport extensions (for example, to make sure your code will - * compile with some other implementation ) - */ -/* -#define _STLP_NO_EXTENSIONS 1 -*/ - -/* - * You should define this macro if compiling with MFC - STLport - * then include instead of to get synchronisation primitives - */ -/* -#define _STLP_USE_MFC 1 -*/ - -/* - * boris : this setting is here as we cannot detect precense of new Platform SDK automatically - * If you are using new PSDK with VC++ 6.0 or lower, - * please define this to get correct prototypes for InterlockedXXX functions - */ -/* -#define _STLP_NEW_PLATFORM_SDK 1 -*/ - -/* - * For the same reason as the one above we are not able to detect easily use - * of the compiler coming with the Platform SDK instead of the one coming with - * a Microsoft Visual Studio release. This change native C/C++ library location - * and implementation, please define this to get correct STLport configuration. - */ -/* -#define _STLP_USING_PLATFORM_SDK_COMPILER 1 -*/ - -/* - * Some compilers support the automatic linking feature. - * Uncomment the following if you prefer to specify the STLport library - * to link with yourself. - * For the moment, this feature is only supported and implemented within STLport - * by the Microsoft compilers. - */ -/* -#define _STLP_DONT_USE_AUTO_LINK 1 -*/ - -/* - * If you customize the STLport generated library names don't forget to give - * the motif you used during configuration here if you still want the auto link - * to work. (Do not remove double quotes in the macro value) - */ -/* -#define _STLP_LIB_NAME_MOTIF "???" - */ - -/* - * Uncomment to get feedback at compilation time about result of build environment - * introspection. - */ -/* -#define _STLP_VERBOSE 1 -*/ - -/* - * Use minimum set of default arguments on template classes that have more - * than one - for example map<>, set<>. - * This has effect only if _STLP_LIMITED_DEFAULT_TEMPLATES is on. - * If _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS is set, you'll be able to compile - * set with those compilers, but you'll have to use __set__> - * - * Affects : map<>, multimap<>, set<>, multiset<>, hash_*<>, - * queue<>, priority_queue<>, stack<>, istream_iterator<> - */ -/* -#define _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS 1 -*/ - -/* - * The agregation of strings using the + operator is an expensive operation - * as it requires construction of temporary objects that need memory allocation - * and deallocation. The problem can be even more important if you are adding - * several strings together in a single expression. To avoid this problem STLport - * implement expression template. With this technique addition of 2 strings is not - * a string anymore but a temporary object having a reference to each of the - * original strings involved in the expression. This object carry information - * directly to the destination string to set its size correctly and only make - * a single call to the allocator. This technique also works for the addition of - * N elements where elements are basic_string, C string or a single character. - * The drawback can be longer compilation time and bigger executable size. - * Another problem is that some compilers (gcc) fail to use string proxy object - * if do with class derived from string (see unit tests for details). - * STLport rebuild: Yes - */ -/* -#define _STLP_USE_TEMPLATE_EXPRESSION 1 -*/ - - -/* - * By default the STLport basic_string implementation use a little static buffer - * (of 16 chars when writing this doc) to avoid systematically memory allocation - * in case of little basic_string. The drawback of such a method is bigger - * basic_string size and some performance penalty for method like swap. If you - * prefer systematical dynamic allocation turn on this macro. - * STLport rebuild: Yes - */ -/* -#define _STLP_DONT_USE_SHORT_STRING_OPTIM 1 -*/ - -/* - * To reduce the famous code bloat trouble due to the use of templates STLport grant - * a specialization of some containers for pointer types. So all instanciations - * of those containers with a pointer type will use the same implementation based on - * a container of void*. This feature has shown very good result on object files size - * but after link phase and optimization you will only experiment benefit if you use - * many container with pointer types. - * There are however a number of limitation to use this option: - * - with compilers not supporting partial template specialization feature, you won't - * be able to access some nested container types like iterator as long as the - * definition of the type used to instanciate the container will be incomplete - * (see IncompleteClass definition in test/unit/vector_test.cpp). - * - you won't be able to use complex Standard allocator implementations which are - * allocators having pointer nested type not being a real C pointer. - */ -/* -#define _STLP_USE_PTR_SPECIALIZATIONS 1 -*/ - -/* - * To achieve many different optimizations within the template implementations STLport - * uses some type traits technique. With this macro you can ask STLport to use the famous - * boost type traits rather than the internal one. The advantages are more compiler - * integration and a better support. If you only define this macro once the STLport has been - * built you just have to add the boost install path within your include path. If you want - * to use this feature at STLport built time you will have to define the - * STLP_BUILD_BOOST_PATH enrironment variable with the value of the boost library path. - */ - -/* -#define _STLP_USE_BOOST_SUPPORT 1 -*/ - - -/*==========================================================*/ - -/* - Local Variables: - mode: C++ - End: -*/ diff --git a/build/stlport/stlport/stl/debug/_debug.c b/build/stlport/stlport/stl/debug/_debug.c deleted file mode 100644 index 99d5c6b24286..000000000000 --- a/build/stlport/stlport/stl/debug/_debug.c +++ /dev/null @@ -1,628 +0,0 @@ -/* - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_DEBUG_C -#define _STLP_DEBUG_C - -#if defined (_STLP_DEBUG) -#if defined (_STLP_THREADS) -# if !defined (_STLP_NEED_MUTABLE) -# define _STLP_ACQUIRE_LOCK(_Lock) _Lock._M_acquire_lock(); -# define _STLP_RELEASE_LOCK(_Lock) _Lock._M_release_lock(); -# else -# define _STLP_ACQUIRE_LOCK(_Lock) ((_STLP_mutex&)_Lock)._M_acquire_lock(); -# define _STLP_RELEASE_LOCK(_Lock) ((_STLP_mutex&)_Lock)._M_release_lock(); -# endif /* _STLP_NEED_MUTABLE */ -#else -# define _STLP_ACQUIRE_LOCK(_Lock) -# define _STLP_RELEASE_LOCK(_Lock) -#endif /* _STLP_THREADS */ - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -//========================================================== -// global non-inline functions -//========================================================== -// [ i1, i2) -#if !defined (__DMC__) -template -inline bool _STLP_CALL -stlp_in_range_aux(const _Iterator& __it, const _Iterator& __first, - const _Iterator& __last, const random_access_iterator_tag &) { - return ( __it >= __first && - __it < __last); -} -#endif - -template -#if defined (_STLP_MSVC) -inline bool _STLP_CALL stlp_in_range_aux(_Iterator1 __it, const _Iterator& __first, -#else -inline bool _STLP_CALL stlp_in_range_aux(const _Iterator1& __it, const _Iterator& __first, -#endif - const _Iterator& __last, const forward_iterator_tag &) { - _Iterator1 __i(__first); - for (; __i != __last && __i != __it; ++__i); - return (__i != __last); -} - -#if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) -template -inline bool _STLP_CALL -stlp_in_range_aux(const _Iterator1& __it, const _Iterator& __first, - const _Iterator& __last, const bidirectional_iterator_tag &) { - _Iterator1 __i(__first); - for (; __i != __last && __i != __it; ++__i); - return (__i != __last); -} -#endif - -template -bool _STLP_CALL __check_range_aux(const _Iterator& __first, const _Iterator& __last, - const __false_type& /*_IsIntegral*/) { - _STLP_VERBOSE_RETURN(__valid_range(__first,__last), _StlMsg_INVALID_RANGE ) - return true; -} - -template -bool _STLP_CALL __check_range_aux(_Integral /*__first*/, _Integral /*__last*/, - const __true_type& /*_IsIntegral*/) -{ return true; } - -template -bool _STLP_CALL __check_range(const _Iterator& __first, const _Iterator& __last) { - typedef typename _IsIntegral<_Iterator>::_Ret _Integral; - return __check_range_aux(__first, __last, _Integral()); -} - -template -bool _STLP_CALL __check_range(const _Iterator& __it, - const _Iterator& __start, const _Iterator& __finish) { - _STLP_VERBOSE_RETURN(stlp_in_range(__it, __start, __finish), - _StlMsg_NOT_IN_RANGE_1) - return true; -} - -template -bool _STLP_CALL __check_range(const _Iterator& __first, const _Iterator& __last, - const _Iterator& __start, const _Iterator& __finish) { - _STLP_VERBOSE_RETURN(stlp_in_range(__first, __last, __start, __finish), - _StlMsg_NOT_IN_RANGE_2) - return true; -} - -template -bool _STLP_CALL __check_ptr_range(const _Tp* __first, const _Tp* __last) { - _STLP_VERBOSE_RETURN((__first != 0 || __last == 0), _StlMsg_INVALID_ARGUMENT) - _STLP_VERBOSE_RETURN(__valid_range(__first, __last, random_access_iterator_tag()), - _StlMsg_INVALID_RANGE) - return true; -} - -//=============================================================== -template -void _STLP_CALL __invalidate_range(const __owned_list* __base, - const _Iterator& __first, - const _Iterator& __last) { - typedef __owned_link _L_type; - _STLP_ACQUIRE_LOCK(__base->_M_lock) - _L_type* __prev = __CONST_CAST(_L_type*, &__base->_M_node); - _L_type* __pos = __prev->_M_next; - - while (__pos != 0) { - if (!(&__first == __STATIC_CAST(_Iterator*, __pos) || &__last == __STATIC_CAST(_Iterator*, __pos)) && - stlp_in_range_aux(__STATIC_CAST(_Iterator*, __pos)->_M_iterator, - __first._M_iterator, __last._M_iterator, - _STLP_ITERATOR_CATEGORY(__first, _Iterator))) { - __pos->_M_owner = 0; - __prev->_M_next = __pos->_M_next; - } - else { - __prev = __pos; - } - __pos = __prev->_M_next; - } - _STLP_RELEASE_LOCK(__base->_M_lock) -} - -template -void _STLP_CALL __invalidate_iterator(const __owned_list* __base, - const _Iterator& __it) { - typedef __owned_link _L_type; - _STLP_ACQUIRE_LOCK(__base->_M_lock) - _L_type* __prev = __CONST_CAST(_L_type*, &__base->_M_node); - _L_type* __pos = __prev->_M_next; - while (__pos != 0) { - // this requires safe iterators to be derived from __owned_link - if ((__pos != __STATIC_CAST(const _L_type*, &__it)) && - (__STATIC_CAST(_Iterator*, __pos)->_M_iterator == __it._M_iterator)) { - __pos->_M_owner = 0; - __prev->_M_next = __pos->_M_next; - } - else { - __prev = __pos; - } - __pos = __prev->_M_next; - } - _STLP_RELEASE_LOCK(__base->_M_lock) -} - -template -void _STLP_CALL __change_range_owner(const _Iterator& __first, - const _Iterator& __last, - const __owned_list* __dst) { - if (__first._Owner() == __dst) - return; - - typedef __owned_link _L_type; - // Check __stl_debug_engine<_Dummy>::_Swap_owners comments to see why there is no lock here - //_STLP_ACQUIRE_LOCK(__base->_M_lock) - __owned_list *__base = __CONST_CAST(__owned_list*, __first._Owner()); - _L_type* __src_prev = &__base->_M_node; - _L_type* __pos = __src_prev->_M_next; - _L_type* __dst_prev = __CONST_CAST(_L_type*, &__dst->_M_node); - - while (__pos != 0) { - if (!(&__first == __STATIC_CAST(_Iterator*, __pos) || &__last == __STATIC_CAST(_Iterator*, __pos)) && - stlp_in_range_aux(__STATIC_CAST(_Iterator*, __pos)->_M_iterator, - __first._M_iterator, __last._M_iterator, - _STLP_ITERATOR_CATEGORY(__first, _Iterator))) { - __pos->_M_owner = __CONST_CAST(__owned_list*, __dst); - //remove __pos from __base: - __src_prev->_M_next = __pos->_M_next; - //add __pos to __dst: - __pos->_M_next = __dst_prev->_M_next; - __dst_prev->_M_next = __pos; - } - else { - __src_prev = __pos; - } - __pos = __src_prev->_M_next; - } - -#if defined(_STLP_WCE) && defined(_ARM_) - // Note: This part is needed for compiling under Windows CE under ARM and correctly using - // _STLP_DEBUG mode. This comes from a bug in the ARM compiler where checked iterators that - // are passed by value are not copied over correctly. When __change_range_owner is called, - // e.g. in std::list::splice() the wrong _M_owner field gets modified and the __first - // iterator has the old _M_owner field, but was moved to the new __owned_list. Setting - // the first iterator's _M_owner field fixes this. Ugly but works. - __pos = __CONST_CAST(_Iterator*, &__first); - __pos->_M_owner = __CONST_CAST(__owned_list*, __dst); -#endif - //_STLP_RELEASE_LOCK(__base->_M_lock) -} - -template -void _STLP_CALL __change_ite_owner(const _Iterator& __it, - const __owned_list* __dst) { - if (__it._Owner() == __dst) - return; - - typedef __owned_link _L_type; - // Check __stl_debug_engine<_Dummy>::_Swap_owners comments to see why there is no lock here - //_STLP_ACQUIRE_LOCK(__base->_M_lock) - __owned_list *__base = __CONST_CAST(__owned_list*, __it._Owner()); - _L_type* __prev = &__base->_M_node; - _L_type* __pos = __prev->_M_next; - _L_type* __dst_prev = __CONST_CAST(_L_type*, &__dst->_M_node); - - while (__pos != 0) { - // this requires safe iterators to be derived from __owned_link - if ((__pos != __STATIC_CAST(const _L_type*, &__it)) && - (__STATIC_CAST(_Iterator*, __pos)->_M_iterator == __it._M_iterator)) { - __pos->_M_owner = __CONST_CAST(__owned_list*, __dst); - //remove __pos from __base: - __prev->_M_next = __pos->_M_next; - //add __pos to __dst: - __pos->_M_next = __dst_prev->_M_next; - __dst_prev->_M_next = __pos; - } - else { - __prev = __pos; - } - __pos = __prev->_M_next; - } - //_STLP_RELEASE_LOCK(__base->_M_lock) -} - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -#endif /* _STLP_DEBUG */ - -#if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) - -# ifndef _STLP_INTERNAL_CSTDLIB -# include -# endif - -//========================================================== -// .c section -// owned_list non-inline methods and global functions -//========================================================== - -# if defined (_STLP_ASSERTIONS) - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -# if !defined (_STLP_STRING_LITERAL) -# define _STLP_STRING_LITERAL(__x) __x -# endif - -# if defined (_STLP_USE_WIDE_INTERFACE) -// note: WinCE needs this to format single-byte strings in __stl_debug_engine::_Message -# define _STLP_PERCENT_S "%hs" -# else -# define _STLP_PERCENT_S "%s" -# endif /* _STLP_USE_WIDE_INTERFACE */ - -# define _STLP_MESSAGE_TABLE_BODY = { \ -_STLP_STRING_LITERAL("\n" _STLP_PERCENT_S "(%d): STL error: " _STLP_PERCENT_S "\n"), \ -_STLP_STRING_LITERAL(_STLP_PERCENT_S "(%d): STL assertion failure : " _STLP_PERCENT_S "\n" _STLP_ASSERT_MSG_TRAILER), \ -_STLP_STRING_LITERAL("\n" _STLP_PERCENT_S "(%d): STL error : " _STLP_PERCENT_S "\n" _STLP_PERCENT_S "(%d): STL assertion failure: " _STLP_PERCENT_S " \n" _STLP_ASSERT_MSG_TRAILER), \ -_STLP_STRING_LITERAL("Invalid argument to operation (see operation documentation)"), \ -_STLP_STRING_LITERAL("Taking an iterator out of destroyed (or otherwise corrupted) container"), \ -_STLP_STRING_LITERAL("Trying to extract an object out from empty container"),\ -_STLP_STRING_LITERAL("Past-the-end iterator could not be erased"), \ -_STLP_STRING_LITERAL("Index out of bounds"), \ -_STLP_STRING_LITERAL("Container doesn't own the iterator"), \ -_STLP_STRING_LITERAL("Container is owner of the iterator, but should not"), \ -_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) iterator used"), \ -_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) lefthand iterator in expression"), \ -_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) righthand iterator in expression"), \ -_STLP_STRING_LITERAL("Iterators used in expression are from different owners"), \ -_STLP_STRING_LITERAL("Iterator could not be dereferenced (past-the-end ?)"), \ -_STLP_STRING_LITERAL("Range [first,last) is invalid"), \ -_STLP_STRING_LITERAL("Iterator is not in range [first,last)"), \ -_STLP_STRING_LITERAL("Range [first,last) is not in range [start,finish)"), \ -_STLP_STRING_LITERAL("The advance would produce invalid iterator"), \ -_STLP_STRING_LITERAL("Iterator is singular (advanced beyond the bounds ?)"), \ -_STLP_STRING_LITERAL("Invalid strict weak ordering predicate, if pred(a, b) then we should have !pred(b, a)"), \ -_STLP_STRING_LITERAL("Invalid equivalent predicate, if pred(a, b) then we should have pred(b, a)"), \ -_STLP_STRING_LITERAL("Memory block deallocated twice"), \ -_STLP_STRING_LITERAL("Deallocating a block that was never allocated"), \ -_STLP_STRING_LITERAL("Deallocating a memory block allocated for another type"), \ -_STLP_STRING_LITERAL("Size of block passed to deallocate() doesn't match block size"), \ -_STLP_STRING_LITERAL("Pointer underrun - safety margin at front of memory block overwritten"), \ -_STLP_STRING_LITERAL("Pointer overrrun - safety margin at back of memory block overwritten"), \ -_STLP_STRING_LITERAL("Attempt to dereference null pointer returned by auto_ptr::get()"), \ -_STLP_STRING_LITERAL("Memory allocation function returned a wrongly align memory block"), \ -_STLP_STRING_LITERAL("Unknown problem") \ - } - -template -const char* __stl_debug_engine<_Dummy>::_Message_table[_StlMsg_MAX] _STLP_MESSAGE_TABLE_BODY; - -# undef _STLP_STRING_LITERAL -# undef _STLP_PERCENT_S - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -# if !defined (_STLP_DEBUG_MESSAGE) -# ifndef _STLP_INTERNAL_CSTDARG -# include -# endif -# ifndef _STLP_INTERNAL_CSTDIO -# include -# endif -# if defined (_STLP_DEBUG_MODE_THROWS) && !defined (_STLP_RANGE_ERRORS_H) -# include -# endif - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Message(const char * __format_str, ...) { - STLPORT_CSTD::va_list __args; - va_start( __args, __format_str ); - -# if !defined (_STLP_DEBUG_MODE_THROWS) -# if defined (_STLP_USE_WIDE_INTERFACE) - TCHAR __buffer[512]; - int _convert = strlen(__format_str) + 1; - LPWSTR _lpw = (LPWSTR)alloca(_convert * sizeof(wchar_t)); - _lpw[0] = '\0'; - MultiByteToWideChar(GetACP(), 0, __format_str, -1, _lpw, _convert); - wvsprintf(__buffer, _lpw, __args); - _STLP_WINCE_TRACE(__buffer); -# elif defined (_STLP_WIN32) && (defined(_STLP_MSVC) || defined (__ICL)) - char __buffer [4096]; - -# if !defined (_STLP_USE_SAFE_STRING_FUNCTIONS) - vsnprintf(__buffer, _STLP_ARRAY_SIZE(__buffer), __format_str, __args); -# else - vsnprintf_s(__buffer, _STLP_ARRAY_SIZE(__buffer), _TRUNCATE, __format_str, __args); -# endif - - OutputDebugStringA(__buffer); - -# elif defined (__amigaos__) - STLPORT_CSTD::vfprintf(stderr, __format_str, (char *)__args); -# else - STLPORT_CSTD::vfprintf(stderr, __format_str, __args); -# endif -# else - char __buffer[4096]; - -# if defined (_STLP_USE_SAFE_STRING_FUNCTIONS) - vsnprintf_s(__buffer, _STLP_ARRAY_SIZE(__buffer), _TRUNCATE, __format_str, __args); -# elif defined (_STLP_WIN32) && (defined(_STLP_MSVC) || defined (__ICL)) - vsnprintf(__buffer, _STLP_ARRAY_SIZE(__buffer), __format_str, __args); -# else - vsprintf(__buffer, __format_str, __args); -# endif -# endif - -# ifdef _STLP_DEBUG_MESSAGE_POST - _STLP_DEBUG_MESSAGE_POST -# endif - - va_end(__args); - -# if defined (_STLP_DEBUG_MODE_THROWS) - __stl_throw_runtime_error(__buffer); -# endif -} - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -# else -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Message(const char * __format_str, ...) -{} -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE -# endif /* _STLP_DEBUG_MESSAGE */ - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_IndexedError(int __error_ind, const char* __f, int __l) { - __stl_debug_message(_Message_table[_StlFormat_ERROR_RETURN], - __f, __l, _Message_table[__error_ind]); -} - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_VerboseAssert(const char* __expr, int __error_ind, const char* __f, int __l) { - __stl_debug_message(_Message_table[_StlFormat_VERBOSE_ASSERTION_FAILURE], - __f, __l, _Message_table[__error_ind], __f, __l, __expr); - __stl_debug_terminate(); -} - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Assert(const char* __expr, const char* __f, int __l) { - __stl_debug_message(_Message_table[_StlFormat_ASSERTION_FAILURE],__f, __l, __expr); - __stl_debug_terminate(); -} - -// if exceptions are present, sends unique exception -// if not, calls abort() to terminate -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Terminate() -{ _STLP_ABORT(); } - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -# endif /* _STLP_ASSERTIONS */ - -# if defined (_STLP_DEBUG) - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -//========================================================== -// owned_list non-inline methods -//========================================================== - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Invalidate_all(__owned_list* __l) { - _STLP_ACQUIRE_LOCK(__l->_M_lock); - _Stamp_all(__l, 0); - __l->_M_node._M_next =0; - _STLP_RELEASE_LOCK(__l->_M_lock); -} - -// boris : this is unasafe routine; should be used from within critical section only ! -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Stamp_all(__owned_list* __l, __owned_list* __o) { - // crucial - if (__l->_M_node._M_owner) { - for (__owned_link* __pos = (__owned_link*)__l->_M_node._M_next; - __pos != 0; __pos = (__owned_link*)__pos->_M_next) { - _STLP_ASSERT(__pos->_Owner()== __l) - __pos->_M_owner=__o; - } - } -} - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Verify(const __owned_list* __l) { - _STLP_ACQUIRE_LOCK(__l->_M_lock); - if (__l) { - _STLP_ASSERT(__l->_M_node._Owner() != 0) - for (__owned_link* __pos = (__owned_link*)__l->_M_node._M_next; - __pos != 0; __pos = (__owned_link*)__pos->_M_next) { - _STLP_ASSERT(__pos->_Owner()== __l) - } - } - _STLP_RELEASE_LOCK(__l->_M_lock); -} - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Swap_owners(__owned_list& __x, __owned_list& __y) { - /* - * according to the standard : --no swap() function invalidates any references, - * pointers, or iterators referring to the elements of the containers being swapped. - */ - - __owned_link* __tmp; - - /* - * boris : there is a deadlock potential situation here if we lock two containers sequentially. - * As user is supposed to provide its own synchronization around swap() ( it is unsafe to do any container/iterator access - * in parallel with swap()), we just do not use any locking at all -- that behaviour is closer to non-debug version - */ - - __tmp = __x._M_node._M_next; - - _Stamp_all(&__x, &__y); - _Stamp_all(&__y, &__x); - - __x._M_node._M_next = __y._M_node._M_next; - __y._M_node._M_next = __tmp; -} - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_Set_owner(__owned_list& __src, __owned_list& __dst) { - if (&__src == &__dst) - return; - - // Check __stl_debug_engine<_Dummy>::_Swap_owners comments to see why there is no lock here - typedef __owned_link _L_type; - _L_type* __prev = &__src._M_node; - _L_type* __pos = __prev->_M_next; - - while (__pos != 0) { - __pos->_M_owner = &__dst; - __prev = __pos; - __pos = __prev->_M_next; - } - __prev->_M_next = __dst._M_node._M_next; - __dst._M_node._M_next = __src._M_node._M_next; - __src._M_node._M_next = 0; -} - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_M_detach(__owned_list* __l, __owned_link* __c_node) { - if (__l != 0) { - - _STLP_VERBOSE_ASSERT(__l->_Owner()!=0, _StlMsg_INVALID_CONTAINER) - - _STLP_ACQUIRE_LOCK(__l->_M_lock) - // boris : re-test the condition in case someone else already deleted us - if(__c_node->_M_owner != 0) { - __owned_link* __prev, *__next; - - for (__prev = &__l->_M_node; (__next = __prev->_M_next) != __c_node; - __prev = __next) { - _STLP_ASSERT(__next && __next->_Owner() == __l) - } - - __prev->_M_next = __c_node->_M_next; - __c_node->_M_owner=0; - } - _STLP_RELEASE_LOCK(__l->_M_lock) - } -} - -template -void _STLP_CALL -__stl_debug_engine<_Dummy>::_M_attach(__owned_list* __l, __owned_link* __c_node) { - if (__l ==0) { - (__c_node)->_M_owner = 0; - } else { - _STLP_VERBOSE_ASSERT(__l->_Owner()!=0, _StlMsg_INVALID_CONTAINER) - _STLP_ACQUIRE_LOCK(__l->_M_lock) - __c_node->_M_owner = __l; - __c_node->_M_next = __l->_M_node._M_next; - __l->_M_node._M_next = __c_node; - _STLP_RELEASE_LOCK(__l->_M_lock) - } -} - -template -void* _STLP_CALL -__stl_debug_engine<_Dummy>::_Get_container_ptr(const __owned_link* __l) { - const __owned_list* __owner = __l->_Owner(); - _STLP_VERBOSE_RETURN_0(__owner != 0, _StlMsg_INVALID_ITERATOR) - void* __ret = __CONST_CAST(void*,__owner->_Owner()); - _STLP_VERBOSE_RETURN_0(__ret !=0, _StlMsg_INVALID_CONTAINER) - return __ret; -} - -template -bool _STLP_CALL -__stl_debug_engine<_Dummy>::_Check_same_owner(const __owned_link& __i1, - const __owned_link& __i2) { - _STLP_VERBOSE_RETURN(__i1._Valid(), _StlMsg_INVALID_LEFTHAND_ITERATOR) - _STLP_VERBOSE_RETURN(__i2._Valid(), _StlMsg_INVALID_RIGHTHAND_ITERATOR) - _STLP_VERBOSE_RETURN((__i1._Owner() == __i2._Owner()), _StlMsg_DIFFERENT_OWNERS) - return true; -} - -template -bool _STLP_CALL -__stl_debug_engine<_Dummy>::_Check_same_or_null_owner(const __owned_link& __i1, - const __owned_link& __i2) { - _STLP_VERBOSE_RETURN(__i1._Owner() == __i2._Owner(), _StlMsg_DIFFERENT_OWNERS) - return true; -} - -template -bool _STLP_CALL -__stl_debug_engine<_Dummy>::_Check_if_owner( const __owned_list * __l, const __owned_link& __it) { - const __owned_list* __owner_ptr = __it._Owner(); - _STLP_VERBOSE_RETURN(__owner_ptr != 0, _StlMsg_INVALID_ITERATOR) - _STLP_VERBOSE_RETURN(__l == __owner_ptr, _StlMsg_NOT_OWNER) - return true; -} - -template -bool _STLP_CALL -__stl_debug_engine<_Dummy>::_Check_if_not_owner( const __owned_list * __l, const __owned_link& __it) { - const __owned_list* __owner_ptr = __it._Owner(); - _STLP_VERBOSE_RETURN(__owner_ptr != 0, _StlMsg_INVALID_ITERATOR) - _STLP_VERBOSE_RETURN(__l != __owner_ptr, _StlMsg_SHOULD_NOT_OWNER) - return true; -} - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -# endif /* _STLP_DEBUG */ - -#endif /* if defined (EXPOSE_GLOBALS_IMPLEMENTATION) */ - -#endif /* header guard */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_debug.h b/build/stlport/stlport/stl/debug/_debug.h deleted file mode 100644 index 6a2a8ce9e07b..000000000000 --- a/build/stlport/stlport/stl/debug/_debug.h +++ /dev/null @@ -1,473 +0,0 @@ -/* - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_DEBUG_H -#define _STLP_DEBUG_H - -#if (defined (_STLP_DEBUG) || defined (_STLP_DEBUG_ALLOC)) && \ - !defined (_STLP_ASSERTIONS) -# define _STLP_ASSERTIONS 1 -#endif - -#if defined (_STLP_ASSERTIONS) - -# if !defined (_STLP_FILE__) -# define _STLP_FILE__ __FILE__ -# endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -enum { - //General errors - _StlFormat_ERROR_RETURN, - _StlFormat_ASSERTION_FAILURE, - _StlFormat_VERBOSE_ASSERTION_FAILURE, - _StlMsg_INVALID_ARGUMENT, - //Container/Iterator related errors - _StlMsg_INVALID_CONTAINER, - _StlMsg_EMPTY_CONTAINER, - _StlMsg_ERASE_PAST_THE_END, - _StlMsg_OUT_OF_BOUNDS, - _StlMsg_NOT_OWNER, - _StlMsg_SHOULD_NOT_OWNER, - _StlMsg_INVALID_ITERATOR, - _StlMsg_INVALID_LEFTHAND_ITERATOR, - _StlMsg_INVALID_RIGHTHAND_ITERATOR, - _StlMsg_DIFFERENT_OWNERS , - _StlMsg_NOT_DEREFERENCEABLE , - _StlMsg_INVALID_RANGE , - _StlMsg_NOT_IN_RANGE_1 , - _StlMsg_NOT_IN_RANGE_2 , - _StlMsg_INVALID_ADVANCE , - _StlMsg_SINGULAR_ITERATOR , - //Bad predicate for sorting - _StlMsg_INVALID_STRICT_WEAK_PREDICATE, - _StlMsg_INVALID_EQUIVALENT_PREDICATE, - // debug alloc messages - _StlMsg_DBA_DELETED_TWICE , - _StlMsg_DBA_NEVER_ALLOCATED , - _StlMsg_DBA_TYPE_MISMATCH , - _StlMsg_DBA_SIZE_MISMATCH , - _StlMsg_DBA_UNDERRUN , - _StlMsg_DBA_OVERRUN , - // auto_ptr messages - _StlMsg_AUTO_PTR_NULL , - //Memory alignent message - _StlMsg_WRONG_MEMORY_ALIGNMENT, - _StlMsg_UNKNOWN - /* _StlMsg_MAX */ -}; - -/* have to hardcode that ;() */ -# define _StlMsg_MAX 31 - -class __owned_link; -class __owned_list; - -# if defined (_STLP_DEBUG_MODE_THROWS) -# define _STLP_MESSAGE_NORETURN _STLP_FUNCTION_THROWS -# else -# define _STLP_MESSAGE_NORETURN -# endif - -template -class __stl_debug_engine { -public: - // Basic routine to report any debug message - // Use _STLP_DEBUG_MESSAGE to override - static void _STLP_MESSAGE_NORETURN _STLP_CALL _Message(const char * format_str, ...); - - // Micsellanous function to report indexed error message - static void _STLP_CALL _IndexedError(int __ind, const char* __f, int __l); - - // Basic assertion report mechanism. - // Reports failed assertion via __stl_debug_message and calls _Terminate - // if _STLP_DEBUG_TERMINATE is specified, calls __stl_debug_terminate instead - static void _STLP_CALL _Assert(const char* __expr, const char* __f, int __l); - - // The same, with additional diagnostics - static void _STLP_CALL _VerboseAssert(const char* __expr, int __error_ind, const char* __f, int __l); - - // If exceptions are present, sends unique exception - // If not, calls _STLP_ABORT() to terminate - // Use _STLP_DEBUG_TERMINATE to override - static void _STLP_CALL _Terminate(); - -# if defined (_STLP_DEBUG) - // owned_list/link delegate non-inline functions here - - static bool _STLP_CALL _Check_same_owner( const __owned_link& __i1, - const __owned_link& __i2); - static bool _STLP_CALL _Check_same_or_null_owner( const __owned_link& __i1, - const __owned_link& __i2); - static bool _STLP_CALL _Check_if_owner( const __owned_list*, const __owned_link&); - - static bool _STLP_CALL _Check_if_not_owner( const __owned_list*, const __owned_link&); - - static void _STLP_CALL _Verify(const __owned_list*); - - static void _STLP_CALL _Swap_owners(__owned_list&, __owned_list&); - - static void _STLP_CALL _Invalidate_all(__owned_list*); - - static void _STLP_CALL _Set_owner(__owned_list& /*src*/, __owned_list& /*dst*/); - - static void _STLP_CALL _Stamp_all(__owned_list*, __owned_list*); - - static void _STLP_CALL _M_detach(__owned_list*, __owned_link*); - - static void _STLP_CALL _M_attach(__owned_list*, __owned_link*); - - // accessor : check and get pointer to the container - static void* _STLP_CALL _Get_container_ptr(const __owned_link*); -# endif - - // debug messages and formats - static const char* _Message_table[_StlMsg_MAX]; -}; - -# undef _STLP_MESSAGE_NORETURN - -# if defined (_STLP_USE_TEMPLATE_EXPORT) -_STLP_EXPORT_TEMPLATE_CLASS __stl_debug_engine; -# endif - -typedef __stl_debug_engine __stl_debugger; - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -# if !defined (_STLP_ASSERT) -# define _STLP_ASSERT(expr) \ - if (!(expr)) { _STLP_PRIV __stl_debugger::_Assert( # expr, _STLP_FILE__, __LINE__); } -# endif - -#else -# define _STLP_ASSERT(expr) -#endif - -// this section is for _STLP_DEBUG only -#if defined (_STLP_DEBUG) - -# if !defined (_STLP_VERBOSE_ASSERT) -// fbp : new form not requiring ";" -# define _STLP_VERBOSE_ASSERT(expr, __diag_num) \ - if (!(expr)) { _STLP_PRIV __stl_debugger::_VerboseAssert\ - ( # expr, _STLP_PRIV __diag_num, _STLP_FILE__, __LINE__ ); \ - } -# endif - -# define _STLP_DEBUG_CHECK(expr) _STLP_ASSERT(expr) - -# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) -# define _STLP_STD_DEBUG_CHECK(expr) _STLP_DEBUG_CHECK(expr) -# else -# define _STLP_STD_DEBUG_CHECK(expr) -# endif - -# if !defined (_STLP_VERBOSE_RETURN) -# define _STLP_VERBOSE_RETURN(__expr,__diag_num) if (!(__expr)) { \ - _STLP_PRIV __stl_debugger::_IndexedError(__diag_num, _STLP_FILE__ , __LINE__); \ - return false; } -# endif - -# if !defined (_STLP_VERBOSE_RETURN_0) -# define _STLP_VERBOSE_RETURN_0(__expr,__diag_num) if (!(__expr)) { \ - _STLP_PRIV __stl_debugger::_IndexedError(__diag_num, _STLP_FILE__, __LINE__); \ - return 0; } -# endif - -# ifndef _STLP_INTERNAL_THREADS_H -# include -# endif - -# ifndef _STLP_INTERNAL_ITERATOR_BASE_H -# include -# endif - -# ifndef _STLP_TYPE_TRAITS_H -# include -# endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -/* - * Special debug iterator traits having an additionnal static member - * method _Check. It is used by the slist debug implementation to check - * the special before_begin iterator. - */ -template -struct _DbgTraits : _Traits { - typedef _DbgTraits _ConstTraits; - typedef _DbgTraits _NonConstTraits; - - template - static bool _Check(const _Iterator&) {return true;} -}; - -//============================================================= -template -inline bool _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2, - const random_access_iterator_tag&) -{ return (__i1 < __i2) || (__i1 == __i2); } - -template -inline bool _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2, - const bidirectional_iterator_tag&) { - // check if comparable - bool __dummy(__i1==__i2); - return (__dummy==__dummy); -} - -template -inline bool _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2, - const forward_iterator_tag&) { - // check if comparable - bool __dummy(__i1==__i2); - return (__dummy==__dummy); -} - -template -inline bool _STLP_CALL __valid_range(const _Iterator&,const _Iterator&, - const input_iterator_tag&) -{ return true; } - -template -inline bool _STLP_CALL __valid_range(const _Iterator&,const _Iterator&, - const output_iterator_tag&) -{ return true; } - -template -inline bool _STLP_CALL __valid_range(const _Iterator& __i1, const _Iterator& __i2) -{ return __valid_range(__i1,__i2,_STLP_ITERATOR_CATEGORY(__i1, _Iterator)); } - -// Note : that means in range [i1, i2]. -template -inline bool _STLP_CALL stlp_in_range(const _Iterator& _It, - const _Iterator& __i1, const _Iterator& __i2) -{ return __valid_range(__i1,_It) && __valid_range(_It,__i2); } - -template -inline bool _STLP_CALL stlp_in_range(const _Iterator& __first, const _Iterator& __last, - const _Iterator& __start, const _Iterator& __finish) -{ return __valid_range(__first,__last) && __valid_range(__start,__first) && __valid_range(__last,__finish); } - -//========================================================== -class _STLP_CLASS_DECLSPEC __owned_link { -public: - // Note: This and the following special defines for compiling under Windows CE under ARM - // is needed for correctly using _STLP_DEBUG mode. This comes from a bug in the ARM - // compiler where checked iterators that are passed by value call _M_attach with the wrong - // this pointer and calling _M_detach can't find the correct pointer to the __owned_link. - // This is circumvented by managing a _M_self pointer that points to the correct value. - // Ugly but works. -#if defined(_STLP_WCE) && defined(_ARM_) - __owned_link() : _M_self(this), _M_owner(0) {} - __owned_link(const __owned_list* __c) : _M_self(this), _M_owner(0), _M_next(0) - { __stl_debugger::_M_attach(__CONST_CAST(__owned_list*,__c), this); } - __owned_link(const __owned_link& __rhs): _M_self(this), _M_owner(0) - { __stl_debugger::_M_attach(__CONST_CAST(__owned_list*,__rhs._M_owner), this); } -#else - __owned_link() : _M_owner(0) {} - __owned_link(const __owned_list* __c) : _M_owner(0), _M_next(0) - { __stl_debugger::_M_attach(__CONST_CAST(__owned_list*,__c), this); } - __owned_link(const __owned_link& __rhs): _M_owner(0) - { __stl_debugger::_M_attach(__CONST_CAST(__owned_list*,__rhs._M_owner), this); } -#endif - __owned_link& operator=(const __owned_link& __rhs) { - __owned_list* __new_owner = __CONST_CAST(__owned_list*,__rhs._M_owner); - __owned_list* __old_owner = _M_owner; - if ( __old_owner != __new_owner ) { - __stl_debugger::_M_detach(__old_owner, this); - __stl_debugger::_M_attach(__new_owner, this); - } - return *this; - } -#if defined(_STLP_WCE) && defined(_ARM_) - ~__owned_link() { - __stl_debugger::_M_detach(_M_owner, _M_self); - _Invalidate(); - } -#else - ~__owned_link() { - __stl_debugger::_M_detach(_M_owner, this); - _Invalidate(); - } -#endif - - const __owned_list* _Owner() const { return _M_owner; } - __owned_list* _Owner() { return _M_owner; } - void _Set_owner(const __owned_list* __o) { _M_owner= __CONST_CAST(__owned_list*,__o); } - bool _Valid() const { return _M_owner != 0; } - void _Invalidate() { _M_owner = 0; _M_next = 0; } - void _Link_to_self() { _M_next = 0; } - - __owned_link* _Next() { return _M_next; } - const __owned_link* _Next() const { return _M_next; } - -public: -#if defined(_STLP_WCE) && defined(_ARM_) - __owned_link* _M_self; -#endif - - __owned_list* _M_owner; - __owned_link* _M_next; -}; - - -class _STLP_CLASS_DECLSPEC __owned_list { -public: - __owned_list(void* __o) { - // fprintf(stderr, "__owned_list(): %p\n",(void*)this); - _M_node._M_owner = __REINTERPRET_CAST(__owned_list*,__o); - _M_node._M_next = 0; - } - ~__owned_list() { - // fprintf(stderr, "~__owned_list(): %p\n",(void*)this); - _Invalidate_all(); - // that prevents detach - _M_node._Invalidate(); - } - const void* _Owner() const { return (const void*)_M_node._M_owner; } - void* _Owner() { return (void*)_M_node._M_owner; } - bool _Valid() const { return _M_node._M_owner != 0; } - void _Invalidate() { _M_node._M_owner = 0; } - - __owned_link* _First() { return _M_node._Next(); } - __owned_link* _Last() { return 0 ; } - - const __owned_link* _First() const { return (__owned_link*)_M_node._M_next; } - const __owned_link* _Last() const { return 0 ;} - - void _Verify() const { __stl_debugger::_Verify(this); } - void _Swap_owners(__owned_list& __y) { __stl_debugger::_Swap_owners(*this, __y); } - void _Invalidate_all() { __stl_debugger::_Invalidate_all(this); } - void _Set_owner(__owned_list& __y) { __stl_debugger::_Set_owner(*this, __y); } - - mutable __owned_link _M_node; - mutable _STLP_mutex _M_lock; - -private: - // should never be called, should be left not implemented, - // but some compilers complain about it ;( - __owned_list(const __owned_list&){} - __owned_list& operator = (const __owned_list&) { return *this; } - - friend class __owned_link; - friend class __stl_debug_engine; -}; - - -//========================================================== - -// forward declaratioins - -template -bool _STLP_CALL __check_range(const _Iterator&, const _Iterator&); -template -bool _STLP_CALL __check_range(const _Iterator&, - const _Iterator&, const _Iterator&); -template -bool _STLP_CALL __check_range(const _Iterator&, const _Iterator& , - const _Iterator&, const _Iterator& ); -template -bool _STLP_CALL __check_ptr_range(const _Tp*, const _Tp*); - -template -void _STLP_CALL __invalidate_range(const __owned_list* __base, - const _Iterator& __first, - const _Iterator& __last); - -template -void _STLP_CALL __invalidate_iterator(const __owned_list* __base, - const _Iterator& __it); - -template -void _STLP_CALL __change_range_owner(const _Iterator& __first, - const _Iterator& __last, - const __owned_list* __dst); - -template -void _STLP_CALL __change_ite_owner(const _Iterator& __it, - const __owned_list* __dst); - -//============================================================ -inline bool _STLP_CALL -__check_same_owner(const __owned_link& __i1, const __owned_link& __i2) -{ return __stl_debugger::_Check_same_owner(__i1,__i2); } - -inline bool _STLP_CALL -__check_same_or_null_owner(const __owned_link& __i1, const __owned_link& __i2) -{ return __stl_debugger::_Check_same_or_null_owner(__i1,__i2); } - -template -inline bool _STLP_CALL __check_if_owner( const __owned_list* __owner, - const _Iterator& __it) -{ return __stl_debugger::_Check_if_owner(__owner, (const __owned_link&)__it); } - -template -inline bool _STLP_CALL __check_if_not_owner( const __owned_list* __owner, - const _Iterator& __it) -{ return __stl_debugger::_Check_if_not_owner(__owner, (const __owned_link&)__it); } - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#else -# define _STLP_VERBOSE_ASSERT(expr, diagnostic) -# define _STLP_DEBUG_CHECK(expr) -#endif /* _STLP_DEBUG */ - -#if defined (_STLP_ASSERTIONS) - -# if !defined (_STLP_ASSERT_MSG_TRAILER) -# define _STLP_ASSERT_MSG_TRAILER -# endif - -// dwa 12/30/98 - if _STLP_DEBUG_MESSAGE is defined, the user can supply own definition. -# if !defined (_STLP_DEBUG_MESSAGE) -# define __stl_debug_message __stl_debugger::_Message -# else -extern void __stl_debug_message(const char * format_str, ...); -# endif - -// fbp: if _STLP_DEBUG_TERMINATE is defined, the user can supply own definition. -# if !defined (_STLP_DEBUG_TERMINATE) -# define __stl_debug_terminate __stl_debugger::_Terminate -# else -extern void __stl_debug_terminate(); -# endif - -#endif - -#if defined (_STLP_ASSERTIONS) && !defined (_STLP_LINK_TIME_INSTANTIATION) -# include -#endif - -#endif /* DEBUG_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_deque.h b/build/stlport/stlport/stl/debug/_deque.h deleted file mode 100644 index f5c5ff5d7aaf..000000000000 --- a/build/stlport/stlport/stl/debug/_deque.h +++ /dev/null @@ -1,414 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_DBG_DEQUE_H -#define _STLP_INTERNAL_DBG_DEQUE_H - -#ifndef _STLP_DBG_ITERATOR_H -# include -#endif - -#define _STLP_NON_DBG_DEQUE _STLP_PRIV _STLP_NON_DBG_NAME(deque) <_Tp,_Alloc> - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) -template -inline _Tp* value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_DEQUE >&) -{ return (_Tp*)0; } -template -inline random_access_iterator_tag iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_DEQUE >&) -{ return random_access_iterator_tag(); } -#endif - -template ) > -class deque : -#if !defined (__DMC__) - private -#endif - _STLP_PRIV __construct_checker<_STLP_NON_DBG_DEQUE > -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - , public __stlport_class > -#endif -{ - typedef deque<_Tp,_Alloc> _Self; - typedef _STLP_NON_DBG_DEQUE _Base; - typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_DEQUE > _ConstructCheck; - -public: - // Basic types - __IMPORT_CONTAINER_TYPEDEFS(_Base) - - // Iterators - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Nonconst_traits > > iterator; - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Const_traits > > const_iterator; - - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - -protected: - _Base _M_non_dbg_impl; - _STLP_PRIV __owned_list _M_iter_list; - - void _Invalidate_all() - { _M_iter_list._Invalidate_all(); } - void _Invalidate_iterator(const iterator& __it) - { _STLP_PRIV __invalidate_iterator(&_M_iter_list,__it); } - void _Invalidate_iterators(const iterator& __first, const iterator& __last) - { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } - -public: - // Basic accessors - allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } - - iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - reference operator[](size_type __n) { - _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS) - return _M_non_dbg_impl[__n]; - } - const_reference operator[](size_type __n) const { - _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS) - return _M_non_dbg_impl[__n]; - } - - reference at(size_type __n) { return _M_non_dbg_impl.at(__n); } - const_reference at(size_type __n) const { return _M_non_dbg_impl.at(__n); } - - reference front() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *begin(); - } - const_reference front() const { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *begin(); - } - reference back() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *(--end()); - } - const_reference back() const { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *(--end()); - } - - // Constructor, destructor. - explicit deque(const allocator_type& __a = allocator_type()) : - _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {} - deque(const _Self& __x) : - _ConstructCheck(__x), _M_non_dbg_impl(__x._M_non_dbg_impl), - _M_iter_list(&_M_non_dbg_impl) {} - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit deque(size_type __n, const value_type& __x = _Tp(), -#else - deque(size_type __n, const value_type& __x, -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - const allocator_type& __a = allocator_type()) : - _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {} -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit deque(size_type __n) : - _M_non_dbg_impl(__n), _M_iter_list(&_M_non_dbg_impl) {} -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - deque(__move_source<_Self> src) - : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), - _M_iter_list(&_M_non_dbg_impl) { -# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - src.get()._M_iter_list._Invalidate_all(); -# else - src.get()._M_iter_list._Set_owner(_M_iter_list); -# endif - } -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - deque(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a), - _M_iter_list(&_M_non_dbg_impl) { - } -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - deque(_InputIterator __first, _InputIterator __last) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)), - _M_iter_list(&_M_non_dbg_impl) { - } -# endif -#else - deque(const value_type* __first, const value_type* __last, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(__first, __last, __a), - _M_iter_list(&_M_non_dbg_impl) { - } - - deque(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a), - _M_iter_list(&_M_non_dbg_impl) { - } -#endif - - _Self& operator=(const _Self& __x) { - if (this != &__x) { - _Invalidate_all(); - _M_non_dbg_impl = __x._M_non_dbg_impl; - } - return *this; - } - - bool empty() const { return _M_non_dbg_impl.empty(); } - size_type size() const { return _M_non_dbg_impl.size(); } - size_type max_size() const { return _M_non_dbg_impl.max_size(); } - - void swap(_Self& __x) { - _M_iter_list._Swap_owners(__x._M_iter_list); - _M_non_dbg_impl.swap(__x._M_non_dbg_impl); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -public: - void assign(size_type __n, const _Tp& __val) { - _Invalidate_all(); - _M_non_dbg_impl.assign(__n, __val); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void assign(_InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _Invalidate_all(); - _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } -#else - void assign(const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _Invalidate_all(); - _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator); - } - void assign(const value_type *__first, const value_type *__last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) - _Invalidate_all(); - _M_non_dbg_impl.assign(__first, __last); - } -#endif - -public: // push_* and pop_* - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_back(const value_type& __t = _Tp()) { -#else - void push_back(const value_type& __t) { -#endif - _Invalidate_all(); - _M_non_dbg_impl.push_back(__t); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_back() { - _Invalidate_all(); - _M_non_dbg_impl.push_back(); - } -#endif - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_front(const value_type& __t = _Tp()) { -#else - void push_front(const value_type& __t) { -#endif - _Invalidate_all(); - _M_non_dbg_impl.push_front(__t); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_front() { - _Invalidate_all(); - _M_non_dbg_impl.push_front(); - } -#endif - - void pop_back() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - _Invalidate_iterator(end()); - _M_non_dbg_impl.pop_back(); - } - - void pop_front() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - _Invalidate_iterator(begin()); - _M_non_dbg_impl.pop_front(); - } - -public: // Insert - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos, const value_type& __x = _Tp()) { -#else - iterator insert(iterator __pos, const value_type& __x) { -#endif - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _Invalidate_all(); - return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator, __x)); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _Invalidate_all(); - return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator)); - } -#endif - - void insert(iterator __pos, size_type __n, const value_type& __x) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - if (__n != 0) _Invalidate_all(); - _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - // We perform invalidate first to detect self referencing in __check_range as __first and __last - // will have been invalidated. - if (__first != __last) _Invalidate_all(); - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.insert(__pos._M_iterator, - _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) - void insert(iterator __pos, - const value_type* __first, const value_type* __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) - if (__first != __last) _Invalidate_all(); - _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last); - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) - void insert(iterator __pos, - const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - //Sequence requirements 23.1.1 Table 67: - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first)); - if (__first != __last) _Invalidate_all(); - _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); - } - - void insert(iterator __pos, - iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - //Sequence requirements 23.1.1 Table 67: - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first)); - if (__first != __last) _Invalidate_all(); - _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); - } -#endif - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const value_type& __x = _Tp()) { -#else - void resize(size_type __new_size, const value_type& __x) { -#endif - if (__new_size != size()) { - if ((__new_size > size()) || (__new_size < size() - 1)) - _Invalidate_all(); - else - _Invalidate_iterator(end()); - } - _M_non_dbg_impl.resize(__new_size, __x); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type new_size) { resize(new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif - - // Erase - iterator erase(iterator __pos) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - if (__pos._M_iterator == _M_non_dbg_impl.begin()) { - _Invalidate_iterator(__pos); - } else { - typename _Base::iterator tmp = --(_M_non_dbg_impl.end()); - if (__pos._M_iterator == tmp) - _Invalidate_iterator(__pos); - else - _Invalidate_all(); - } - return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); - } - - iterator erase(iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) - if (!empty()) { - if (__first._M_iterator == _M_non_dbg_impl.begin() || - __last._M_iterator == _M_non_dbg_impl.end()) - _Invalidate_iterators(__first, __last); - else - _Invalidate_all(); - } - return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator)); - } - - void clear() { - _Invalidate_all(); - _M_non_dbg_impl.clear(); - } -}; - -_STLP_END_NAMESPACE - -#undef _STLP_NON_DBG_DEQUE - -#endif /* _STLP_INTERNAL_DEQUE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_hashtable.h b/build/stlport/stlport/stl/debug/_hashtable.h deleted file mode 100644 index 523f7e325f51..000000000000 --- a/build/stlport/stlport/stl/debug/_hashtable.h +++ /dev/null @@ -1,340 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_DBG_HASHTABLE_H -#define _STLP_INTERNAL_DBG_HASHTABLE_H - -// Hashtable class, used to implement the hashed associative containers -// hash_set, hash_map, hash_multiset, and hash_multimap, -// unordered_set, unordered_map, unordered_multiset, unordered_multimap - -#ifndef _STLP_DBG_ITERATOR_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -class _DbgEqual { -public: - _DbgEqual() {} - _DbgEqual(const _Equal& __eq) : _M_non_dbg_eq(__eq) {} - _DbgEqual(const _DbgEqual& __eq) : _M_non_dbg_eq(__eq._M_non_dbg_eq) {} - -#if !defined (_STLP_USE_CONTAINERS_EXTENSION) - bool operator () (const _Key& __lhs, const _Key& __rhs) const -#else - template - bool operator () (const _Kp1& __lhs, const _Kp2& __rhs) const -#endif - { -#if !defined (_STLP_USE_CONTAINERS_EXTENSION) - _STLP_VERBOSE_ASSERT(_M_non_dbg_eq(__rhs, __lhs) == _M_non_dbg_eq(__lhs, __rhs), _StlMsg_INVALID_EQUIVALENT_PREDICATE) -#endif - return _M_non_dbg_eq(__lhs, __rhs) ? true : false; - } - - _Equal non_dbg_key_eq() const { return _M_non_dbg_eq; } -private: - _Equal _M_non_dbg_eq; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -#define _STLP_NON_DBG_HT \ -_STLP_PRIV _STLP_NON_DBG_NAME(hashtable) <_Val, _Key, _HF, _Traits, _ExK, _STLP_PRIV _DbgEqual<_Key, _EqK>, _All> - -#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) -template -inline _Val* -value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_HT >&) -{ return (_Val*)0; } - -template -inline forward_iterator_tag -iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_HT >&) -{ return forward_iterator_tag(); } -#endif - -template -class hashtable { - typedef hashtable<_Val, _Key, _HF, _Traits, _ExK, _EqK, _All> _Self; - typedef _STLP_NON_DBG_HT _Base; - - typedef typename _Traits::_NonConstTraits _NonConstTraits; - typedef typename _Traits::_ConstTraits _ConstTraits; - typedef typename _Traits::_NonConstLocalTraits _NonConstLocalTraits; - typedef typename _Traits::_ConstLocalTraits _ConstLocalTraits; - - _Base _M_non_dbg_impl; - _STLP_PRIV __owned_list _M_iter_list; - -public: - typedef _Key key_type; - typedef _HF hasher; - typedef _EqK key_equal; - - __IMPORT_CONTAINER_TYPEDEFS(_Base) - - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_NonConstTraits> > iterator; - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_ConstTraits> > const_iterator; - //typedef _STLP_PRIV _DBG_iter<_Base, _DbgTraits<_NonConstLocalTraits> > local_iterator; - typedef iterator local_iterator; - //typedef _STLP_PRIV _DBG_iter<_Base, _DbgTraits<_ConstLocalTraits> > const_local_iterator; - typedef const_iterator const_local_iterator; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - - hasher hash_funct() const { return _M_non_dbg_impl.hash_funct(); } - key_equal key_eq() const { return _M_non_dbg_impl.key_eq().non_dbg_key_eq(); } - -private: - void _Invalidate_iterator(const const_iterator& __it) - { _STLP_PRIV __invalidate_iterator(&_M_iter_list, __it); } - void _Invalidate_iterators(const const_iterator& __first, const const_iterator& __last) - { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } - - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -public: - allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } - - hashtable(size_type __n, - const _HF& __hf, - const _EqK& __eql, - const _ExK& __ext, - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__n, __hf, __eql, __ext, __a), - _M_iter_list(&_M_non_dbg_impl) {} - - hashtable(size_type __n, - const _HF& __hf, - const _EqK& __eql, - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__n, __hf, __eql, __a), - _M_iter_list(&_M_non_dbg_impl) {} - - hashtable(const _Self& __ht) - : _M_non_dbg_impl(__ht._M_non_dbg_impl), - _M_iter_list(&_M_non_dbg_impl) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - hashtable(__move_source<_Self> src) - : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), - _M_iter_list(&_M_non_dbg_impl) { -# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - src.get()._M_iter_list._Invalidate_all(); -# else - src.get()._M_iter_list._Set_owner(_M_iter_list); -# endif - } -#endif - - size_type size() const { return _M_non_dbg_impl.size(); } - size_type max_size() const { return _M_non_dbg_impl.max_size(); } - bool empty() const { return _M_non_dbg_impl.empty(); } - - _Self& operator=(const _Self& __ht) { - if (this != &__ht) { - //Should not invalidate end iterator - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl = __ht._M_non_dbg_impl; - } - return *this; - } - - void swap(_Self& __ht) { - _M_iter_list._Swap_owners(__ht._M_iter_list); - _M_non_dbg_impl.swap(__ht._M_non_dbg_impl); - } - - iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - local_iterator begin(size_type __n) { - //TODO: Add checks for iterator locality -> avoids comparison between different bucket iterators - _STLP_VERBOSE_ASSERT((__n < bucket_count()), _StlMsg_INVALID_ARGUMENT) - return local_iterator(&_M_iter_list, _M_non_dbg_impl.begin(__n)); - } - local_iterator end(size_type __n) { - //TODO: Add checks for iterator locality -> avoids comparison between different bucket iterators - _STLP_VERBOSE_ASSERT((__n < bucket_count()), _StlMsg_INVALID_ARGUMENT) - return local_iterator(&_M_iter_list, _M_non_dbg_impl.end(__n)); - } - - const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - const_local_iterator begin(size_type __n) const { - //TODO: Add checks for iterator locality -> avoids comparison between different bucket iterators - _STLP_VERBOSE_ASSERT((__n < bucket_count()), _StlMsg_INVALID_ARGUMENT) - return const_local_iterator(&_M_iter_list, _M_non_dbg_impl.begin(__n)); - } - const_local_iterator end(size_type __n) const { - //TODO: Add checks for iterator locality -> avoids comparison between different bucket iterators - _STLP_VERBOSE_ASSERT((__n < bucket_count()), _StlMsg_INVALID_ARGUMENT) - return const_local_iterator(&_M_iter_list, _M_non_dbg_impl.end(__n)); - } - - pair insert_unique(const value_type& __obj) { - pair<_Base_iterator, bool> __res = _M_non_dbg_impl.insert_unique(__obj); - return pair(iterator(&_M_iter_list, __res.first), __res.second); - } - - iterator insert_equal(const value_type& __obj) - { return iterator(&_M_iter_list, _M_non_dbg_impl.insert_equal(__obj)); } - - pair insert_unique_noresize(const value_type& __obj) { - pair<_Base_iterator, bool> __res = _M_non_dbg_impl.insert_unique_noresize(__obj); - return pair(iterator(&_M_iter_list, __res.first), __res.second); - } - - iterator insert_equal_noresize(const value_type& __obj) - { return iterator(&_M_iter_list, _M_non_dbg_impl.insert_equal_noresize(__obj)); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert_unique(_InputIterator __f, _InputIterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - _M_non_dbg_impl.insert_unique(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)); - } - - template - void insert_equal(_InputIterator __f, _InputIterator __l){ - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - _M_non_dbg_impl.insert_equal(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)); - } - -#else - void insert_unique(const value_type* __f, const value_type* __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) - _M_non_dbg_impl.insert_unique(__f, __l); - } - - void insert_equal(const value_type* __f, const value_type* __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) - _M_non_dbg_impl.insert_equal(__f, __l); - } - - void insert_unique(const_iterator __f, const_iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - _M_non_dbg_impl.insert_unique(__f._M_iterator, __l._M_iterator); - } - - void insert_equal(const_iterator __f, const_iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - _M_non_dbg_impl.insert_equal(__f._M_iterator, __l._M_iterator); - } -#endif - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __key) - { return iterator(&_M_iter_list, _M_non_dbg_impl.find(__key)); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __key) const - { return const_iterator(&_M_iter_list, _M_non_dbg_impl.find(__key)); } - - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __key) const { return _M_non_dbg_impl.count(__key); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) { - pair<_Base_iterator, _Base_iterator> __res = _M_non_dbg_impl.equal_range(__key); - return pair (iterator(&_M_iter_list,__res.first), - iterator(&_M_iter_list,__res.second)); - } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __key) const { - pair <_Base_const_iterator, _Base_const_iterator> __res = _M_non_dbg_impl.equal_range(__key); - return pair (const_iterator(&_M_iter_list,__res.first), - const_iterator(&_M_iter_list,__res.second)); - } - - size_type erase(const key_type& __key) { - pair __p = equal_range(__key); - size_type __n = _STLP_STD::distance(__p.first, __p.second); - _Invalidate_iterators(__p.first, __p.second); - _M_non_dbg_impl.erase(__p.first._M_iterator, __p.second._M_iterator); - return __n; - } - - void erase(const const_iterator& __it) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__it)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __it)) - _Invalidate_iterator(__it); - _M_non_dbg_impl.erase(__it._M_iterator); - } - void erase(const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, - const_iterator(begin()), const_iterator(end()))) - _Invalidate_iterators(__first, __last); - _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator); - } - - void rehash(size_type __num_buckets_hint) { _M_non_dbg_impl.rehash(__num_buckets_hint); } - void resize(size_type __num_elements_hint) { _M_non_dbg_impl.resize(__num_elements_hint); } - - void clear() { - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.clear(); - } - - reference _M_insert(const value_type& __obj) { return _M_non_dbg_impl._M_insert(__obj); } - - size_type bucket_count() const { return _M_non_dbg_impl.bucket_count(); } - size_type max_bucket_count() const { return _M_non_dbg_impl.max_bucket_count(); } - size_type elems_in_bucket(size_type __n) const { - _STLP_VERBOSE_ASSERT((__n < bucket_count()), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.elems_in_bucket(__n); - } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type bucket(const _KT& __k) const { return _M_non_dbg_impl.bucket(__k); } - - float load_factor() const { return _M_non_dbg_impl.load_factor(); } - float max_load_factor() const { return _M_non_dbg_impl.max_load_factor(); } - void max_load_factor(float __z) { - _STLP_VERBOSE_ASSERT((__z > 0.0f), _StlMsg_INVALID_ARGUMENT) - _M_non_dbg_impl.max_load_factor(__z); - } -}; - -_STLP_END_NAMESPACE - -#undef _STLP_NON_DBG_HT - -#endif /* _STLP_INTERNAL_HASHTABLE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_iterator.h b/build/stlport/stlport/stl/debug/_iterator.h deleted file mode 100644 index b2c8956ec307..000000000000 --- a/build/stlport/stlport/stl/debug/_iterator.h +++ /dev/null @@ -1,457 +0,0 @@ -/* - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_DBG_ITERATOR_H -#define _STLP_DBG_ITERATOR_H - -#ifndef _STLP_INTERNAL_PAIR_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -//============================================================ - -template -void _Decrement(_Iterator& __it, const bidirectional_iterator_tag &) -{ --__it; } - -template -void _Decrement(_Iterator& __it, const random_access_iterator_tag &) -{ --__it; } - -template -void _Decrement(_Iterator& __it, const forward_iterator_tag &) -{ _STLP_ASSERT(0) } - -template -void _Advance(_Iterator&, ptrdiff_t, const forward_iterator_tag &) -{ _STLP_ASSERT(0) } - -template -void _Advance(_Iterator& __it, ptrdiff_t, const bidirectional_iterator_tag &) -{ _STLP_ASSERT(0) } - -template -void _Advance(_Iterator& __it, ptrdiff_t __n, const random_access_iterator_tag &) -{ __it += __n; } - -template -ptrdiff_t _DBG_distance(const _Iterator& __x, const _Iterator& __y, const random_access_iterator_tag &) -{ return __x - __y; } - -template -ptrdiff_t _DBG_distance(const _Iterator&, const _Iterator&, const forward_iterator_tag &) { - _STLP_ASSERT(0) - return 0; -} - -template -ptrdiff_t _DBG_distance(const _Iterator&, const _Iterator&, const bidirectional_iterator_tag &) { - _STLP_ASSERT(0) - return 0; -} - -template -bool _CompareIt(const _Iterator&, const _Iterator&, const forward_iterator_tag &) { - _STLP_ASSERT(0) - return false; -} - -template -bool _CompareIt(const _Iterator&, const _Iterator&, const bidirectional_iterator_tag &) { - _STLP_ASSERT(0) - return false; -} - -template -bool _CompareIt(const _Iterator& __x, const _Iterator& __y, const random_access_iterator_tag &) -{ return __x < __y; } - -template -bool _Dereferenceable(const _Iterator& __it) -{ return (__it._Get_container_ptr() != 0) && !(__it._M_iterator == (__it._Get_container_ptr())->end()); } - -template -bool _Incrementable(const _Iterator& __it, ptrdiff_t __n, const forward_iterator_tag &) -{ return (__n == 1) && _Dereferenceable(__it); } - -template -bool _Incrementable(const _Iterator& __it, ptrdiff_t __n, const bidirectional_iterator_tag &) { - typedef typename _Iterator::_Container_type __container_type; - __container_type* __c = __it._Get_container_ptr(); - return (__c != 0) && ((__n == 1 && __it._M_iterator != __c->end() ) || - (__n == -1 && __it._M_iterator != __c->begin())); -} - -template -bool _Incrementable(const _Iterator& __it, ptrdiff_t __n, const random_access_iterator_tag &) { - typedef typename _Iterator::_Container_type __container_type; - __container_type* __c = __it._Get_container_ptr(); - if (__c == 0) return false; - ptrdiff_t __new_pos = (__it._M_iterator - __c->begin()) + __n; - return (__new_pos >= 0) && (__STATIC_CAST(typename __container_type::size_type, __new_pos) <= __c->size()); -} - - -template -struct _DBG_iter_base : public __owned_link { -public: - typedef typename _Container::value_type value_type; - typedef typename _Container::reference reference; - typedef typename _Container::pointer pointer; - typedef ptrdiff_t difference_type; - //private: - typedef typename _Container::iterator _Nonconst_iterator; - typedef typename _Container::const_iterator _Const_iterator; - typedef _Container _Container_type; - -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION - typedef typename iterator_traits<_Const_iterator>::iterator_category _Iterator_category; -#else - typedef typename _Container::_Iterator_category _Iterator_category; -#endif - typedef _Iterator_category iterator_category; - - _DBG_iter_base() : __owned_link(0) {} - _DBG_iter_base(const __owned_list* __c, const _Const_iterator& __it) : -#if defined(__HP_aCC) && (__HP_aCC < 60000) - __owned_link(__c), _M_iterator(*__REINTERPRET_CAST(const _Nonconst_iterator *, &__it)) {} -#else - __owned_link(__c), _M_iterator(*(const _Nonconst_iterator*)&__it) {} -#endif - _Container* _Get_container_ptr() const { - return (_Container*)__stl_debugger::_Get_container_ptr(this); - } - - void __increment(); - void __decrement(); - void __advance(ptrdiff_t __n); - -// protected: - _Nonconst_iterator _M_iterator; -}; - -template -inline void _DBG_iter_base<_Container>::__increment() { - _STLP_DEBUG_CHECK(_Incrementable(*this, 1, _Iterator_category())) - ++_M_iterator; -} - -template -inline void _DBG_iter_base<_Container>::__decrement() { - _STLP_DEBUG_CHECK(_Incrementable(*this, -1, _Iterator_category())) - _Decrement(_M_iterator, _Iterator_category()); -} - -template -inline void _DBG_iter_base<_Container>::__advance(ptrdiff_t __n) { - _STLP_DEBUG_CHECK(_Incrementable(*this, __n, _Iterator_category())) - _Advance(_M_iterator, __n, _Iterator_category()); -} - -template -ptrdiff_t operator-(const _DBG_iter_base<_Container>& __x, - const _DBG_iter_base<_Container>& __y ) { - typedef typename _DBG_iter_base<_Container>::_Iterator_category _Iterator_category; - _STLP_DEBUG_CHECK(__check_same_owner(__x, __y)) - return _DBG_distance(__x._M_iterator,__y._M_iterator, _Iterator_category()); -} - -template -struct _DBG_iter_mid : public _DBG_iter_base<_Container> { - typedef _DBG_iter_mid<_Container, typename _Traits::_NonConstTraits> _Nonconst_self; - typedef typename _Container::iterator _Nonconst_iterator; - typedef typename _Container::const_iterator _Const_iterator; - - _DBG_iter_mid() {} - - explicit _DBG_iter_mid(const _Nonconst_self& __it) : - _DBG_iter_base<_Container>(__it) {} - - _DBG_iter_mid(const __owned_list* __c, const _Const_iterator& __it) : - _DBG_iter_base<_Container>(__c, __it) {} -}; - -template -struct _DBG_iter : public _DBG_iter_mid<_Container, _Traits> { - typedef _DBG_iter_base<_Container> _Base; -public: - typedef typename _Base::value_type value_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Traits::reference reference; - typedef typename _Traits::pointer pointer; - - typedef typename _Base::_Nonconst_iterator _Nonconst_iterator; - typedef typename _Base::_Const_iterator _Const_iterator; - -private: - typedef _DBG_iter<_Container, _Traits> _Self; - typedef _DBG_iter_mid<_Container, typename _Traits::_NonConstTraits> _Nonconst_mid; - -public: - -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION - typedef typename _Base::iterator_category iterator_category; -#endif - typedef typename _Base::_Iterator_category _Iterator_category; - -public: - _DBG_iter() {} - // boris : real type of iter would be nice - _DBG_iter(const __owned_list* __c, const _Const_iterator& __it) : - _DBG_iter_mid<_Container, _Traits>(__c, __it) {} - - // This allows conversions from iterator to const_iterator without being - // redundant with the copy constructor below. - _DBG_iter(const _Nonconst_mid& __rhs) : - _DBG_iter_mid<_Container, _Traits>(__rhs) {} - - _DBG_iter(const _Self& __rhs) : - _DBG_iter_mid<_Container, _Traits>(__rhs) {} - - // This allows conversions from iterator to const_iterator without being - // redundant with the copy assignment operator below. - _Self& operator=(const _Nonconst_mid& __rhs) { - (_Base&)*this = __rhs; - return *this; - } - - _Self& operator=(const _Self& __rhs) { - (_Base&)*this = __rhs; - return *this; - } - - reference operator*() const; - - _STLP_DEFINE_ARROW_OPERATOR - - _Self& operator++() { - this->__increment(); - return *this; - } - _Self operator++(int) { - _Self __tmp = *this; - this->__increment(); - return __tmp; - } - _Self& operator--() { - this->__decrement(); - return *this; - } - _Self operator--(int) { - _Self __tmp = *this; - this->__decrement(); - return __tmp; - } - - _Self& operator+=(difference_type __n) { - this->__advance(__n); - return *this; - } - - _Self& operator-=(difference_type __n) { - this->__advance(-__n); - return *this; - } - _Self operator+(difference_type __n) const { - _Self __tmp(*this); - __tmp.__advance(__n); - return __tmp; - } - _Self operator-(difference_type __n) const { - _Self __tmp(*this); - __tmp.__advance(-__n); - return __tmp; - } - reference operator[](difference_type __n) const { return *(*this + __n); } -}; - -template -inline -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) -_STLP_TYPENAME_ON_RETURN_TYPE _Traits::reference -#else -_STLP_TYPENAME_ON_RETURN_TYPE _DBG_iter<_Container, _Traits>::reference -#endif -_DBG_iter<_Container, _Traits>::operator*() const { - _STLP_DEBUG_CHECK(_Dereferenceable(*this)) - _STLP_DEBUG_CHECK(_Traits::_Check(*this)) - return *this->_M_iterator; -} - -template -inline bool -operator==(const _DBG_iter_base<_Container>& __x, const _DBG_iter_base<_Container>& __y) { - _STLP_DEBUG_CHECK(__check_same_or_null_owner(__x, __y)) - return __x._M_iterator == __y._M_iterator; -} - -template -inline bool -operator<(const _DBG_iter_base<_Container>& __x, const _DBG_iter_base<_Container>& __y) { - _STLP_DEBUG_CHECK(__check_same_or_null_owner(__x, __y)) - typedef typename _DBG_iter_base<_Container>::_Iterator_category _Category; - return _CompareIt(__x._M_iterator , __y._M_iterator, _Category()); -} - -template -inline bool -operator>(const _DBG_iter_base<_Container>& __x, - const _DBG_iter_base<_Container>& __y) { - typedef typename _DBG_iter_base<_Container>::_Iterator_category _Category; - return _CompareIt(__y._M_iterator , __x._M_iterator, _Category()); -} - -template -inline bool -operator>=(const _DBG_iter_base<_Container>& __x, const _DBG_iter_base<_Container>& __y) { - _STLP_DEBUG_CHECK(__check_same_or_null_owner(__x, __y)) - typedef typename _DBG_iter_base<_Container>::_Iterator_category _Category; - return !_CompareIt(__x._M_iterator , __y._M_iterator, _Category()); -} - -template -inline bool -operator<=(const _DBG_iter_base<_Container>& __x, - const _DBG_iter_base<_Container>& __y) { - typedef typename _DBG_iter_base<_Container>::_Iterator_category _Category; - return !_CompareIt(__y._M_iterator , __x._M_iterator, _Category()); -} - -template -inline bool -operator!=(const _DBG_iter_base<_Container>& __x, - const _DBG_iter_base<_Container>& __y) { - _STLP_DEBUG_CHECK(__check_same_or_null_owner(__x, __y)) - return __x._M_iterator != __y._M_iterator; -} - -//------------------------------------------ - -template -inline _DBG_iter<_Container, _Traits> -operator+(ptrdiff_t __n, const _DBG_iter<_Container, _Traits>& __it) { - _DBG_iter<_Container, _Traits> __tmp(__it); - return __tmp += __n; -} - - -template -inline _Iterator _Non_Dbg_iter(_Iterator __it) -{ return __it; } - -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -template -inline typename _DBG_iter<_Container, _Traits>::_Nonconst_iterator -_Non_Dbg_iter(const _DBG_iter<_Container, _Traits>& __it) -{ return __it._M_iterator; } -#endif - -/* - * Helper classes to check iterator range or pointer validity - * at construction time. - */ -template -class __construct_checker { - typedef typename _Container::value_type value_type; -protected: - __construct_checker() {} - - __construct_checker(const value_type* __p) { - _STLP_VERBOSE_ASSERT((__p != 0), _StlMsg_INVALID_ARGUMENT) - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - __construct_checker(const _InputIter& __f, const _InputIter& __l) { - typedef typename _IsIntegral<_InputIter>::_Ret _Integral; - _M_check_dispatch(__f, __l, _Integral()); - } - - template - void _M_check_dispatch(_Integer , _Integer, const __true_type& /*IsIntegral*/) {} - - template - void _M_check_dispatch(const _InputIter& __f, const _InputIter& __l, const __false_type& /*IsIntegral*/) { - _STLP_DEBUG_CHECK(__check_range(__f,__l)) - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) - __construct_checker(const value_type* __f, const value_type* __l) { - _STLP_DEBUG_CHECK(__check_ptr_range(__f,__l)) - } - - typedef _DBG_iter_base<_Container> _IteType; - __construct_checker(const _IteType& __f, const _IteType& __l) { - _STLP_DEBUG_CHECK(__check_range(__f,__l)) - } -#endif -#if defined (__BORLANDC__) - ~__construct_checker(){} -#endif -}; - -#if defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES) -# if defined (_STLP_NESTED_TYPE_PARAM_BUG) ||\ - (defined (__SUNPRO_CC) && __SUNPRO_CC < 0x600) -# define _STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS 1 -# endif - -_STLP_MOVE_TO_STD_NAMESPACE - -template -inline ptrdiff_t* -distance_type(const _STLP_PRIV _DBG_iter_base<_Container>&) { return (ptrdiff_t*) 0; } - -# if !defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) -template -inline _STLP_TYPENAME_ON_RETURN_TYPE _STLP_PRIV _DBG_iter_base<_Container>::value_type* -value_type(const _STLP_PRIV _DBG_iter_base<_Container>&) { - typedef _STLP_TYPENAME _STLP_PRIV _DBG_iter_base<_Container>::value_type _Val; - return (_Val*)0; -} - -template -inline _STLP_TYPENAME_ON_RETURN_TYPE _STLP_PRIV _DBG_iter_base<_Container>::_Iterator_category -iterator_category(const _STLP_PRIV _DBG_iter_base<_Container>&) { - typedef _STLP_TYPENAME _STLP_PRIV _DBG_iter_base<_Container>::_Iterator_category _Category; - return _Category(); -} -# endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -#endif /* _STLP_USE_OLD_HP_ITERATOR_QUERIES */ - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* INTERNAL_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_list.h b/build/stlport/stlport/stl/debug/_list.h deleted file mode 100644 index c45e1e7860e9..000000000000 --- a/build/stlport/stlport/stl/debug/_list.h +++ /dev/null @@ -1,495 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_DBG_LIST_H -#define _STLP_INTERNAL_DBG_LIST_H - -#ifndef _STLP_INTERNAL_ALGO_H -# include -#endif - -#ifndef _STLP_DBG_ITERATOR_H -# include -#endif - -#define _STLP_NON_DBG_LIST _STLP_PRIV _STLP_NON_DBG_NAME(list) <_Tp, _Alloc> - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) -template -inline _Tp* -value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_LIST >&) -{ return (_Tp*)0; } -template -inline bidirectional_iterator_tag -iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_LIST >&) -{ return bidirectional_iterator_tag(); } -#endif - -template ) > -class list : -#if !defined (__DMC__) - private -#endif - _STLP_PRIV __construct_checker<_STLP_NON_DBG_LIST > -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - , public __stlport_class > -#endif -{ - typedef _STLP_NON_DBG_LIST _Base; - typedef list<_Tp, _Alloc> _Self; - typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_LIST > _ConstructCheck; - -public: - __IMPORT_CONTAINER_TYPEDEFS(_Base) - -public: - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Nonconst_traits > > iterator; - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Const_traits > > const_iterator; - - _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS; - -private: - _Base _M_non_dbg_impl; - _STLP_PRIV __owned_list _M_iter_list; - - void _Invalidate_iterator(const iterator& __it) - { _STLP_PRIV __invalidate_iterator(&_M_iter_list, __it); } - void _Invalidate_iterators(const iterator& __first, const iterator& __last) - { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } - - typedef typename _Base::iterator _Base_iterator; - -public: - explicit list(const allocator_type& __a = allocator_type()) : - _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {} - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit list(size_type __n, const _Tp& __x = _Tp(), -#else - list(size_type __n, const _Tp& __x, -#endif /*!_STLP_DONT_SUP_DFLT_PARAM*/ - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {} - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit list(size_type __n) - : _M_non_dbg_impl(__n), _M_iter_list(&_M_non_dbg_impl) {} -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - list(__move_source<_Self> src) - : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), - _M_iter_list(&_M_non_dbg_impl) { -# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - src.get()._M_iter_list._Invalidate_all(); -# else - src.get()._M_iter_list._Set_owner(_M_iter_list); -# endif - } -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - list(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a), - _M_iter_list(&_M_non_dbg_impl) {} -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - list(_InputIterator __first, _InputIterator __last) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)), - _M_iter_list(&_M_non_dbg_impl) {} -# endif -#else - - list(const value_type* __first, const value_type* __last, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(__first, __last, __a), - _M_iter_list(&_M_non_dbg_impl) {} - list(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a), - _M_iter_list(&_M_non_dbg_impl) {} - -#endif - - list(const _Self& __x) : - _ConstructCheck(__x), - _M_non_dbg_impl(__x._M_non_dbg_impl) , _M_iter_list(&_M_non_dbg_impl) {} - - _Self& operator=(const _Self& __x) { - if (this != &__x) { - //Should not invalidate end iterator - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl = __x._M_non_dbg_impl; - } - return *this; - } - - allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } - - iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - - iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - size_type size() const { return _M_non_dbg_impl.size(); } - size_type max_size() const { return _M_non_dbg_impl.max_size(); } - bool empty() const { return _M_non_dbg_impl.empty(); } - - // those are here to enforce checking - reference front() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *begin(); - } - const_reference front() const { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *begin(); - } - reference back() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *(--end()); - } - const_reference back() const { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *(--end()); - } - - void swap(_Self& __x) { - _M_iter_list._Swap_owners(__x._M_iter_list); - _M_non_dbg_impl.swap(__x._M_non_dbg_impl); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos, const _Tp& __x = _Tp()) { -#else - iterator insert(iterator __pos, const _Tp& __x) { -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - return iterator(&_M_iter_list,_M_non_dbg_impl.insert(__pos._M_iterator, __x) ); - } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos) { return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.insert(__pos._M_iterator, - _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) - void insert(iterator __pos, const _Tp* __first, const _Tp* __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) - _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last); - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) - void insert(iterator __pos, - const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) -# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __first)) -# endif - _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); - } - void insert(iterator __pos, - iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) -# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __first)) -# endif - _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); - } -#endif - - void insert(iterator __pos, size_type __n, const _Tp& __x) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x); - } - - void push_back(const_reference __x) { _M_non_dbg_impl.push_back(__x); } - void pop_back() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - _Invalidate_iterator(end()); - _M_non_dbg_impl.pop_back(); - } - - void push_front(const_reference __x) { _M_non_dbg_impl.push_front(__x); } - void pop_front() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - _Invalidate_iterator(begin()); - _M_non_dbg_impl.pop_front(); - } - - iterator erase(iterator __pos) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _Invalidate_iterator(__pos); - return iterator(&_M_iter_list,_M_non_dbg_impl.erase(__pos._M_iterator)); - } - iterator erase(iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) - _Invalidate_iterators(__first, __last); - return iterator (&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator)); - } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const _Tp& __x = _Tp()) { -#else - void resize(size_type __new_size, const _Tp& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - _Base_iterator __i = _M_non_dbg_impl.begin(); - size_type __len = 0; - for ( ; __i != _M_non_dbg_impl.end() && __len < __new_size; ++__i, ++__len); - - if (__len == __new_size) - erase(iterator(&_M_iter_list, __i), end()); - else // __i == end() - _M_non_dbg_impl.insert(_M_non_dbg_impl.end(), __new_size - __len, __x); - } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size) { resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void assign(_InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - _Invalidate_iterators(begin(), end()); - } -#else - void assign(const _Tp* __first, const _Tp* __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) - _M_non_dbg_impl.assign(__first, __last); - _Invalidate_iterators(begin(), end()); - } - - void assign(iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator); - _Invalidate_iterators(begin(), end()); - } - - void assign(const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator); - _Invalidate_iterators(begin(), end()); - } -#endif - - void assign(size_type __n, const _Tp& __val) { - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.assign(__n, __val); - } - - void remove(const _Tp& __x) { - _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); - while (__first != __last) { - _Base_iterator __next = __first; - ++__next; - if (__x == *__first) { - _Invalidate_iterator(iterator(&_M_iter_list, __first)); - _M_non_dbg_impl.erase(__first); - } - __first = __next; - } - } - - void clear() { - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.clear(); - } - -public: - void splice(iterator __pos, _Self& __x) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl); -#if (_STLP_DEBUG_LEVEL != _STLP_STANDARD_DBG_LEVEL) - if (get_allocator() == __x.get_allocator()) - __x._M_iter_list._Set_owner(_M_iter_list); - else -#endif - // Std: 23.2.2.4:4 - // end iterator is not invalidated: - __x._Invalidate_iterators(__x.begin(), __x.end()); - } - - void splice(iterator __pos, _Self& __x, iterator __i) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__i)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&(__x._M_iter_list),__i)) - _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl, __i._M_iterator); -#if (_STLP_DEBUG_LEVEL != _STLP_STANDARD_DBG_LEVEL) - if (get_allocator() == __x.get_allocator()) - _STLP_PRIV __change_ite_owner(__i, &_M_iter_list); - else -#endif - // Std: 23.2.2.4:7 - __x._Invalidate_iterator(__i); - } - - void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, __x.begin(), __x.end())) - _STLP_DEBUG_CHECK(this == &__x ? !_STLP_PRIV __check_range(__pos, __first, __last) : true) -#if (_STLP_DEBUG_LEVEL != _STLP_STANDARD_DBG_LEVEL) - if (this->get_allocator() == __x.get_allocator()) - _STLP_PRIV __change_range_owner(__first, __last, &_M_iter_list); - else -#endif - // Std: 23.2.2.4:12 - __x._Invalidate_iterators(__first, __last); - _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl, __first._M_iterator, __last._M_iterator); - } - - void merge(_Self& __x) { -#if !defined (_STLP_NO_EXTENSIONS) - _STLP_DEBUG_CHECK(_STLP_STD::is_sorted(begin()._M_iterator, end()._M_iterator)) - _STLP_DEBUG_CHECK(_STLP_STD::is_sorted(__x.begin()._M_iterator, __x.end()._M_iterator)) -#endif - _M_non_dbg_impl.merge(__x._M_non_dbg_impl); - if (this->get_allocator() == __x.get_allocator()) { - __x._M_iter_list._Set_owner(_M_iter_list); - } - else { - __x._Invalidate_iterators(__x.begin(), __x.end()); - } - } - void reverse() { - _M_non_dbg_impl.reverse(); - } - void unique() { - _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); - if (__first == __last) return; - _Base_iterator __next = __first; - while (++__next != __last) { - if (*__first == *__next) { - _Invalidate_iterator(iterator(&_M_iter_list, __next)); - _M_non_dbg_impl.erase(__next); - } - else - __first = __next; - __next = __first; - } - } - void sort() { - _M_non_dbg_impl.sort(); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void remove_if(_Predicate __pred) { - _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); - while (__first != __last) { - _Base_iterator __next = __first; - ++__next; - if (__pred(*__first)) { - _Invalidate_iterator(iterator(&_M_iter_list, __first)); - _M_non_dbg_impl.erase(__first); - } - __first = __next; - } - } - - template - void unique(_BinaryPredicate __binary_pred) { - _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); - if (__first == __last) return; - _Base_iterator __next = __first; - while (++__next != __last) { - if (__binary_pred(*__first, *__next)) { - _Invalidate_iterator(iterator(&_M_iter_list, __next)); - _M_non_dbg_impl.erase(__next); - } - else - __first = __next; - __next = __first; - } - } - - template - void merge(_Self& __x, _StrictWeakOrdering __comp) { -#if !defined (_STLP_NO_EXTENSIONS) - _STLP_DEBUG_CHECK(_STLP_STD::is_sorted(_M_non_dbg_impl.begin(), _M_non_dbg_impl.end(), __comp)) - _STLP_DEBUG_CHECK(_STLP_STD::is_sorted(__x.begin()._M_iterator, __x.end()._M_iterator, __comp)) -#endif - _M_non_dbg_impl.merge(__x._M_non_dbg_impl, __comp); - if (this->get_allocator() == __x.get_allocator()) { - __x._M_iter_list._Set_owner(_M_iter_list); - } - else { - __x._Invalidate_iterators(__x.begin(), __x.end()); - } - } - - template - void sort(_StrictWeakOrdering __comp) { - _M_non_dbg_impl.sort(__comp); - } -#endif -}; - - -_STLP_END_NAMESPACE - -#undef _STLP_NON_DBG_LIST - -#endif /* _STLP_INTERNAL_LIST_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_slist.h b/build/stlport/stlport/stl/debug/_slist.h deleted file mode 100644 index 2eeaf367330d..000000000000 --- a/build/stlport/stlport/stl/debug/_slist.h +++ /dev/null @@ -1,613 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_DBG_SLIST_H -#define _STLP_INTERNAL_DBG_SLIST_H - -#ifndef _STLP_DBG_ITERATOR_H -# include -#endif - -#define _STLP_NON_DBG_SLIST _STLP_PRIV _STLP_NON_DBG_NAME(slist) <_Tp, _Alloc> - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) -template -inline _Tp* -value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_SLIST >&) -{ return (_Tp*)0; } - -template -inline forward_iterator_tag -iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_SLIST >&) -{ return forward_iterator_tag(); } -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -/* - * slist special debug traits version. - */ -template -struct _SlistDbgTraits : _Traits { - typedef _SlistDbgTraits _ConstTraits; - typedef _SlistDbgTraits _NonConstTraits; - - /* - * We don't want the before_begin iterator to return false at _Dereferenceable - * call to do not break the current debug framework but calling * operator should - * fail. - */ - template - static bool _Check(const _Iterator& __it) - { return !(__it._M_iterator == (__it._Get_container_ptr())->before_begin()); } -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -template ) > -class slist : -#if !defined (__DMC__) - private -#endif - _STLP_PRIV __construct_checker<_STLP_NON_DBG_SLIST > -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - , public __stlport_class > -#endif -{ -private: - typedef _STLP_NON_DBG_SLIST _Base; - typedef slist<_Tp,_Alloc> _Self; - typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_SLIST > _ConstructCheck; - -public: - - __IMPORT_CONTAINER_TYPEDEFS(_Base) - - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _SlistDbgTraits<_Nonconst_traits > > iterator; - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _SlistDbgTraits<_Const_traits > > const_iterator; - - allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } -private: - _Base _M_non_dbg_impl; - _STLP_PRIV __owned_list _M_iter_list; - - void _Invalidate_iterator(const iterator& __it) - { _STLP_PRIV __invalidate_iterator(&_M_iter_list, __it); } - void _Invalidate_iterators(const iterator& __first, const iterator& __last) - { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } - - typedef typename _Base::iterator _Base_iterator; - -public: - explicit slist(const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__a) , _M_iter_list(&_M_non_dbg_impl) {} - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit slist(size_type __n, const value_type& __x = _Tp(), -#else - slist(size_type __n, const value_type& __x, -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {} - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit slist(size_type __n) : _M_non_dbg_impl(__n) , _M_iter_list(&_M_non_dbg_impl) {} -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - slist(__move_source<_Self> src) - : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), - _M_iter_list(&_M_non_dbg_impl) { -# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - src.get()._M_iter_list._Invalidate_all(); -# else - src.get()._M_iter_list._Set_owner(_M_iter_list); -# endif - } -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - // We don't need any dispatching tricks here, because _M_insert_after_range - // already does them. - template - slist(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a), - _M_iter_list(&_M_non_dbg_impl) {} -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - slist(_InputIterator __first, _InputIterator __last) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)), - _M_iter_list(&_M_non_dbg_impl) {} -# endif -#else - - slist(const value_type* __first, const value_type* __last, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(__first, __last, __a), - _M_iter_list(&_M_non_dbg_impl) {} - - slist(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type() ) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a), - _M_iter_list(&_M_non_dbg_impl) {} -#endif - - slist(const _Self& __x) : - _ConstructCheck(__x), - _M_non_dbg_impl(__x._M_non_dbg_impl), _M_iter_list(&_M_non_dbg_impl) {} - - _Self& operator= (const _Self& __x) { - if (this != &__x) { - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl = __x._M_non_dbg_impl; - } - return *this; - } - - ~slist() {} - - void assign(size_type __n, const value_type& __val) { - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.assign(__n, __val); - } - - iterator before_begin() - { return iterator(&_M_iter_list, _M_non_dbg_impl.before_begin()); } - const_iterator before_begin() const - { return const_iterator(&_M_iter_list, _M_non_dbg_impl.before_begin()); } - - iterator begin() - { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - const_iterator begin() const - { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin());} - - iterator end() - { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - const_iterator end() const - { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - - bool empty() const { return _M_non_dbg_impl.empty(); } - size_type size() const { return _M_non_dbg_impl.size(); } - size_type max_size() const { return _M_non_dbg_impl.max_size(); } - - void swap(_Self& __x) { - _M_iter_list._Swap_owners(__x._M_iter_list); - _M_non_dbg_impl.swap(__x._M_non_dbg_impl); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - reference front() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return _M_non_dbg_impl.front(); - } - const_reference front() const { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return _M_non_dbg_impl.front(); - } - void push_front(const_reference __x) { _M_non_dbg_impl.push_front(__x); } - void pop_front() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - _M_non_dbg_impl.pop_front(); - } - iterator previous(const_iterator __pos) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - return iterator(&_M_iter_list, _M_non_dbg_impl.previous(__pos._M_iterator)); - } - const_iterator previous(const_iterator __pos) const { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - return const_iterator(&_M_iter_list, _M_non_dbg_impl.previous(__pos._M_iterator)); - } - -public: - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - iterator insert_after(iterator __pos, const value_type& __x = _Tp()) { -#else - iterator insert_after(iterator __pos, const value_type& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - return iterator(&_M_iter_list,_M_non_dbg_impl.insert_after(__pos._M_iterator, __x)); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - iterator insert_after(iterator __pos) { - return insert_after(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); - } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void insert_after(iterator __pos, size_type __n, const value_type& __x) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _M_non_dbg_impl.insert_after(__pos._M_iterator, __n, __x); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void assign(_InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } -#else - void assign(const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.assign(__first._M_iterator, __last._M_iterator); - } - void assign(const value_type *__first, const value_type *__last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.assign(__first, __last); - } -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert_after(iterator __pos, _InIter __first, _InIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.insert_after(__pos._M_iterator, - _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } - - template - void insert(iterator __pos, _InIter __first, _InIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.insert(__pos._M_iterator, - _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } -#else - void insert_after(iterator __pos, - const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.insert_after(__pos._M_iterator, __first._M_iterator, __last._M_iterator); - } - void insert_after(iterator __pos, - const value_type* __first, const value_type* __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) - _M_non_dbg_impl.insert_after(__pos._M_iterator, __first, __last); - } - - void insert(iterator __pos, const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); - } - void insert(iterator __pos, const value_type* __first, - const value_type* __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first, __last)) - _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last); - } -#endif - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - iterator insert(iterator __pos, const value_type& __x = _Tp()) { -#else - iterator insert(iterator __pos, const value_type& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator, __x)); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - iterator insert(iterator __pos) { - return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); - } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void insert(iterator __pos, size_type __n, const value_type& __x) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x); - } - -public: - iterator erase_after(iterator __pos) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - iterator __tmp = __pos; ++__tmp; - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__tmp)) - _Invalidate_iterator(__tmp); - return iterator(&_M_iter_list, _M_non_dbg_impl.erase_after(__pos._M_iterator)); - } - iterator erase_after(iterator __before_first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__before_first)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__before_first, __last, begin(), end())) - iterator __tmp = __before_first; ++__tmp; - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__tmp)) - _Invalidate_iterators(__tmp, __last); - return iterator(&_M_iter_list, _M_non_dbg_impl.erase_after(__before_first._M_iterator, __last._M_iterator)); - } - - iterator erase(iterator __pos) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_VERBOSE_ASSERT(__pos._M_iterator != _M_non_dbg_impl.before_begin(), _StlMsg_INVALID_ARGUMENT) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _Invalidate_iterator(__pos); - return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); - } - iterator erase(iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) - _Invalidate_iterators(__first, __last); - return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator)); - } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const value_type& __x = _Tp()) { -#else - void resize(size_type __new_size, const value_type& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - _M_non_dbg_impl.resize(__new_size, __x); - } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size) { resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void clear() { - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.clear(); - } - -public: - // Removes all of the elements from the list __x to *this, inserting - // them immediately after __pos. __x must not be *this. Complexity: - // linear in __x.size(). - void splice_after(iterator __pos, _Self& __x) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _STLP_VERBOSE_ASSERT(!(&__x == this), _StlMsg_INVALID_ARGUMENT) - _M_non_dbg_impl.splice_after(__pos._M_iterator, __x._M_non_dbg_impl); - if (get_allocator() == __x.get_allocator()) { - __x._M_iter_list._Set_owner(_M_iter_list); - } - else { - __x._Invalidate_iterators(__x.begin(), __x.end()); - } - } - - // Moves the element that follows __prev to *this, inserting it immediately - // after __pos. This is constant time. - void splice_after(iterator __pos, _Self& __x, iterator __prev) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__prev)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&__x._M_iter_list, __prev)) - iterator __elem = __prev; ++__elem; - _M_non_dbg_impl.splice_after(__pos._M_iterator, __x._M_non_dbg_impl, __prev._M_iterator); - if (get_allocator() == __x.get_allocator()) { - _STLP_PRIV __change_ite_owner(__elem, &_M_iter_list); - } - else { - __x._Invalidate_iterator(__elem); - } - } - - // Moves the range [__before_first + 1, __before_last + 1) to *this, - // inserting it immediately after __pos. This is constant time. - void splice_after(iterator __pos, _Self& __x, - iterator __before_first, iterator __before_last) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__before_first, __before_last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&__x._M_iter_list, __before_first)) - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__before_first)) - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__before_last)) - iterator __first = __before_first; ++__first; - iterator __last = __before_last; ++__last; - if (get_allocator() == __x.get_allocator()) { - _STLP_PRIV __change_range_owner(__first, __last, &_M_iter_list); - } - else { - __x._Invalidate_iterators(__first, __last); - } - _M_non_dbg_impl.splice_after(__pos._M_iterator, __x._M_non_dbg_impl, - __before_first._M_iterator, __before_last._M_iterator); - } - - void splice(iterator __pos, _Self& __x) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - _STLP_VERBOSE_ASSERT(!(&__x == this), _StlMsg_INVALID_ARGUMENT) - _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl); - if (get_allocator() == __x.get_allocator()) { - __x._M_iter_list._Set_owner(_M_iter_list); - } - else { - __x._Invalidate_iterators(__x.begin(), __x.end()); - } - } - - void splice(iterator __pos, _Self& __x, iterator __i) { - //__pos should be owned by *this and not be the before_begin iterator - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - //__i should be dereferenceable, not before_begin and be owned by __x - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__i)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&__x._M_iter_list ,__i)) - _STLP_VERBOSE_ASSERT(!(__i == __x.before_begin()), _StlMsg_INVALID_ARGUMENT) - if (get_allocator() == __x.get_allocator()) { - _STLP_PRIV __change_ite_owner(__i, &_M_iter_list); - } - else { - __x._Invalidate_iterator(__i); - } - _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl, __i._M_iterator); - } - - void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _STLP_VERBOSE_ASSERT(!(__pos._M_iterator == _M_non_dbg_impl.before_begin()), _StlMsg_INVALID_ARGUMENT) - //_STLP_VERBOSE_ASSERT(&__x != this, _StlMsg_INVALID_ARGUMENT) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, __x.begin(), __x.end())) - if (get_allocator() == __x.get_allocator()) { - _STLP_PRIV __change_range_owner(__first, __last, &_M_iter_list); - } - else { - __x._Invalidate_iterators(__first, __last); - } - _M_non_dbg_impl.splice(__pos._M_iterator, __x._M_non_dbg_impl, - __first._M_iterator, __last._M_iterator); - } - - void reverse() - { _M_non_dbg_impl.reverse(); } - - void remove(const value_type& __val) { - _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); - while (__first != __last) { - _Base_iterator __next = __first; - ++__next; - if (__val == *__first) { - _Invalidate_iterator(iterator(&_M_iter_list, __first)); - _M_non_dbg_impl.erase(__first); - } - __first = __next; - } - } - void unique() { - _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); - if (__first == __last) return; - _Base_iterator __next = __first; - while (++__next != __last) { - if (*__first == *__next) { - _Invalidate_iterator(iterator(&_M_iter_list, __next)); - _M_non_dbg_impl.erase(__next); - } - else - __first = __next; - __next = __first; - } - } - void merge(_Self& __x) { - _STLP_VERBOSE_ASSERT(&__x != this, _StlMsg_INVALID_ARGUMENT) -#if !defined (_STLP_NO_EXTENSIONS) - /* comments below due to bug in GCC compilers: ones eat all memory and die if see - * something like namespace_name::func_name() - ptr - */ - _STLP_DEBUG_CHECK( /* _STLP_STD:: */ is_sorted(_M_non_dbg_impl.begin(), _M_non_dbg_impl.end())) - _STLP_DEBUG_CHECK( /* _STLP_STD:: */ is_sorted(__x.begin()._M_iterator, __x.end()._M_iterator)) -#endif - _M_non_dbg_impl.merge(__x._M_non_dbg_impl); - if (get_allocator() == __x.get_allocator()) { - __x._M_iter_list._Set_owner(_M_iter_list); - } - else { - __x._Invalidate_iterators(__x.begin(), __x.end()); - } - } - void sort() { - _M_non_dbg_impl.sort(); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void remove_if(_Predicate __pred) { - _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); - while (__first != __last) { - _Base_iterator __next = __first; - ++__next; - if (__pred(*__first)) { - _Invalidate_iterator(iterator(&_M_iter_list, __first)); - _M_non_dbg_impl.erase(__first); - } - __first = __next; - } - } - - template - void unique(_BinaryPredicate __pred) { - _Base_iterator __first = _M_non_dbg_impl.begin(), __last = _M_non_dbg_impl.end(); - if (__first == __last) return; - _Base_iterator __next = __first; - while (++__next != __last) { - if (__binary_pred(*__first, *__next)) { - _Invalidate_iterator(iterator(&_M_iter_list, __next)); - _M_non_dbg_impl.erase(__next); - } - else - __first = __next; - __next = __first; - } - } - - template - void merge(_Self& __x, _StrictWeakOrdering __ord) { - _STLP_VERBOSE_ASSERT(&__x != this, _StlMsg_INVALID_ARGUMENT) -#if !defined (_STLP_NO_EXTENSIONS) - /* comments below due to bug in GCC compilers: ones eat all memory and die if see - * something like namespace_name::func_name() - ptr - */ - _STLP_DEBUG_CHECK( /* _STLP_STD:: */ is_sorted(_M_non_dbg_impl.begin(), _M_non_dbg_impl.end(), __ord)) - _STLP_DEBUG_CHECK( /* _STLP_STD:: */ is_sorted(__x.begin()._M_iterator, __x.end()._M_iterator, __ord)) -#endif - _M_non_dbg_impl.merge(__x._M_non_dbg_impl, __ord); - if (get_allocator() == __x.get_allocator()) { - __x._M_iter_list._Set_owner(_M_iter_list); - } - else { - __x._Invalidate_iterators(__x.begin(), __x.end()); - } - } - - template - void sort(_StrictWeakOrdering __comp) - { _M_non_dbg_impl.sort(__comp); } -#endif -}; - -_STLP_END_NAMESPACE - -#undef _STLP_NON_DBG_SLIST - -#endif /* _STLP_INTERNAL_DBG_SLIST_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_string.h b/build/stlport/stlport/stl/debug/_string.h deleted file mode 100644 index 49f7ab2258fe..000000000000 --- a/build/stlport/stlport/stl/debug/_string.h +++ /dev/null @@ -1,828 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - */ - -#ifndef _STLP_DBG_STRING_H -#define _STLP_DBG_STRING_H - -#ifndef _STLP_DBG_ITERATOR_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#define _STLP_NON_DBG_STRING_NAME _STLP_NON_DBG_NAME(str) -#define _STLP_NON_DBG_STRING _STLP_PRIV _STLP_NON_DBG_STRING_NAME <_CharT, _Traits, _Alloc> - -#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) -template -inline _CharT* -value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_STRING >&) -{ return (_CharT*)0; } -template -inline random_access_iterator_tag -iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_STRING >&) -{ return random_access_iterator_tag(); } -#endif - -template -class basic_string : -#if !defined (__DMC__) - private -#else - public -#endif - _STLP_PRIV __construct_checker<_STLP_NON_DBG_STRING > -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (basic_string) - , public __stlport_class > -#endif -{ -protected: - typedef _STLP_NON_DBG_STRING _Base; - typedef basic_string<_CharT, _Traits, _Alloc> _Self; - typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_STRING > _ConstructCheck; - typedef typename _IsPOD<_CharT>::_Type _Char_Is_POD; - -public: - __IMPORT_CONTAINER_TYPEDEFS(_Base) - typedef typename _Base::traits_type traits_type; - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Nonconst_traits > > iterator; - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_Const_traits > > const_iterator; - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - -public: // Constructor, destructor, assignment. - typedef typename _Base::_Reserve_t _Reserve_t; - -private: - _Base _M_non_dbg_impl; - _STLP_PRIV __owned_list _M_iter_list; - - void _Invalidate_all() - { _M_iter_list._Invalidate_all(); } - void _Compare_Capacity (size_type __old_capacity) { - if (this->capacity() > __old_capacity) { - _Invalidate_all(); - } - } - void _Invalidate_iterator(const iterator& __it) - { _STLP_PRIV __invalidate_iterator(&_M_iter_list, __it); } - void _Invalidate_iterators(const iterator& __f, const iterator& __l) - { _STLP_PRIV __invalidate_range(&_M_iter_list, __f, __l); } - -public: -#include - - allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } - - explicit basic_string(const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {} - - basic_string(_Reserve_t __r, size_t __n, - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__r, __n, __a), _M_iter_list(&_M_non_dbg_impl) {} - - basic_string(const _Self& __s) - : _ConstructCheck(__s), - _M_non_dbg_impl(__s._M_non_dbg_impl), _M_iter_list(&_M_non_dbg_impl) {} - - basic_string(const _Self& __s, size_type __pos, size_type __n = npos, - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__s._M_non_dbg_impl, __pos, __n, __a), - _M_iter_list(&_M_non_dbg_impl) {} - - basic_string(const _CharT* __s, size_type __n, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__s), _M_non_dbg_impl(__s, __n, __a), - _M_iter_list(&_M_non_dbg_impl) {} - - basic_string(const _CharT* __s, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__s), - _M_non_dbg_impl(__s, __a), _M_iter_list(&_M_non_dbg_impl) {} - - basic_string(size_type __n, _CharT __c, - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__n, __c, __a), _M_iter_list(&_M_non_dbg_impl) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - basic_string(__move_source<_Self> src) - : _M_non_dbg_impl(__move_source<_Base >(src.get()._M_non_dbg_impl)), - _M_iter_list(&_M_non_dbg_impl) { -# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - src.get()._M_iter_list._Invalidate_all(); -# else - src.get()._M_iter_list._Set_owner(_M_iter_list); -# endif - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) - basic_string(const _CharT* __f, const _CharT* __l, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__f, __l), - _M_non_dbg_impl(__f, __l, __a), _M_iter_list(&_M_non_dbg_impl) { - } - basic_string(const_iterator __f, const_iterator __l, - const allocator_type & __a = allocator_type()) - : _ConstructCheck(__f, __l), - _M_non_dbg_impl(__f._M_iterator, __l._M_iterator, __a), _M_iter_list(&_M_non_dbg_impl) { - } -#else - template - basic_string(_InputIterator __f, _InputIterator __l, - const allocator_type & __a _STLP_ALLOCATOR_TYPE_DFL) - : _ConstructCheck(__f, __l), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l), __a), - _M_iter_list(&_M_non_dbg_impl) {} -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - basic_string(_InputIterator __f, _InputIterator __l) - : _ConstructCheck(__f, __l), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)), - _M_iter_list(&_M_non_dbg_impl) {} -# endif -#endif - -private: - // constructor from non-debug version for substr - basic_string (const _Base& __x) - : _M_non_dbg_impl(__x), _M_iter_list(&_M_non_dbg_impl) {} - -public: - _Self& operator=(const _Self& __s) { - if (this != &__s) { - assign(__s); - } - return *this; - } - - _Self& operator=(const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return assign(__s); - } - - _Self& operator=(_CharT __c) { - return assign(1, __c); - } - - // Iterators. - iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - // Size, capacity, etc. - size_type size() const { return _M_non_dbg_impl.size(); } - size_type length() const { return _M_non_dbg_impl.length(); } - size_t max_size() const { return _M_non_dbg_impl.max_size(); } - - void resize(size_type __n, _CharT __c) { - if (__n > capacity()) - _Invalidate_all(); - else if (__n < size()) - _Invalidate_iterators(begin() + __n, end()); - _M_non_dbg_impl.resize(__n, __c); - } - void resize(size_type __n) { resize(__n, _STLP_DEFAULT_CONSTRUCTED(_CharT)); } - size_type capacity() const { return _M_non_dbg_impl.capacity(); } - - void reserve(size_type __s = 0) { - if (__s > capacity()) _Invalidate_all(); - _M_non_dbg_impl.reserve(__s); - } - - void clear() { - _Invalidate_all(); - _M_non_dbg_impl.clear(); - } - - bool empty() const { return _M_non_dbg_impl.empty(); } - - const_reference operator[](size_type __n) const { - _STLP_VERBOSE_ASSERT(__n <= this->size(), _StlMsg_OUT_OF_BOUNDS); - return _M_non_dbg_impl[__n]; - } - - reference operator[](size_type __n) { - _STLP_VERBOSE_ASSERT(__n < this->size(), _StlMsg_OUT_OF_BOUNDS) - return _M_non_dbg_impl[__n]; - } - - const_reference at(size_type __n) const { return _M_non_dbg_impl.at(__n); } - reference at(size_type __n) { return _M_non_dbg_impl.at(__n); } - - // Append, operator+=, push_back. - _Self& operator+=(const _Self& __s) { return append(__s); } - _Self& operator+=(const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return append(__s); - } - _Self& operator+=(_CharT __c) { return append(1, __c); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - _Self& append(_InputIter __first, _InputIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.append(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - _Compare_Capacity(__old_capacity); - return *this; - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || \ - !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) - _Self& append(const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.append(__f, __l); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& append(const_iterator __f, const_iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.append(__f._M_iterator, __l._M_iterator); - _Compare_Capacity(__old_capacity); - return *this; - } -#endif - - _Self& append(const _Self& __s) { - size_type __old_capacity = capacity(); - _M_non_dbg_impl.append(__s._M_non_dbg_impl); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& append(const _Self& __s, size_type __pos, size_type __n) { - size_type __old_capacity = capacity(); - _M_non_dbg_impl.append(__s._M_non_dbg_impl, __pos, __n); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& append(const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.append(__s, __n); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& append(const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.append(__s); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& append(size_type __n, _CharT __c) { - size_type __old_capacity = this->capacity(); - _M_non_dbg_impl.append(__n, __c); - _Compare_Capacity(__old_capacity); - return *this; - } - - void push_back(_CharT __c) { - size_type __old_capacity = this->capacity(); - _M_non_dbg_impl.push_back(__c); - _Compare_Capacity(__old_capacity); - } - - void pop_back() { - _Invalidate_iterator(this->end()); - _M_non_dbg_impl.pop_back(); - } - - // Assign - _Self& assign(const _Self& __s) { - _Invalidate_all(); - _M_non_dbg_impl.assign(__s._M_non_dbg_impl); - return *this; - } - - _Self& assign(const _Self& __s, size_type __pos, size_type __n) { - if (__pos < __s.size()) { - _Invalidate_all(); - } - _M_non_dbg_impl.assign(__s._M_non_dbg_impl, __pos, __n); - return *this; - } - - _Self& assign(const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - _Invalidate_all(); - _M_non_dbg_impl.assign(__s, __s + __n); - return *this; - } - - _Self& assign(const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - _Invalidate_all(); - _M_non_dbg_impl.assign(__s); - return *this; - } - - _Self& assign(size_type __n, _CharT __c) { - _Invalidate_all(); - _M_non_dbg_impl.assign(__n, __c); - return *this; - } - -#if defined(_STLP_MEMBER_TEMPLATES) - template - inline _Self& assign(_InputIter __first, _InputIter __last) { - _STLP_FIX_LITERAL_BUG(__first) _STLP_FIX_LITERAL_BUG(__last) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _Invalidate_all(); - _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - return *this; - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || \ - !defined (_STLP_NO_METHOD_SPECIALIZATION) && !defined (_STLP_NO_EXTENSIONS) - _Self& assign(const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f) _STLP_FIX_LITERAL_BUG(__l) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) - _Invalidate_all(); - _M_non_dbg_impl.assign(__f, __l); - return *this; - } - _Self& assign(const_iterator __f, const_iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - _Invalidate_all(); - _M_non_dbg_impl.assign(__f._M_iterator, __l._M_iterator); - return *this; - } -#endif - - // Insert - _Self& insert(size_type __pos, const _Self& __s) { - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__pos, __s._M_non_dbg_impl); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& insert(size_type __pos, const _Self& __s, - size_type __beg, size_type __n) { - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__pos, __s._M_non_dbg_impl, __beg, __n); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& insert(size_type __pos, const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__pos, __s, __n); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& insert(size_type __pos, const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return insert(__pos, __s, _Traits::length(__s)); - } - - _Self& insert(size_type __pos, size_type __n, _CharT __c) { - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__pos, __n, __c); - _Compare_Capacity(__old_capacity); - return *this; - } - - iterator insert(iterator __p, _CharT __c) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) - size_type __old_capacity = capacity(); - typename _Base::iterator __ret = _M_non_dbg_impl.insert(__p._M_iterator, __c); - _Compare_Capacity(__old_capacity); - return iterator(&_M_iter_list, __ret); - } - - void insert(iterator __p, size_t __n, _CharT __c) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__p._M_iterator, __n, __c); - _Compare_Capacity(__old_capacity); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(iterator __p, _InputIter __first, _InputIter __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last)) - - size_type __old_capacity = this->capacity(); - _M_non_dbg_impl.insert(__p._M_iterator, - _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - _Compare_Capacity(__old_capacity); - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) - void insert(iterator __p, const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f,__l)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__p._M_iterator, __f, __l); - _Compare_Capacity(__old_capacity); - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) - // Those overloads are necessary to check self referencing correctly in non debug - // basic_string implementation - void insert(iterator __p, const_iterator __f, const_iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f,__l)) -# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __f)) -# endif - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__p._M_iterator, __f._M_iterator, __l._M_iterator); - _Compare_Capacity(__old_capacity); - } - void insert(iterator __p, iterator __f, iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__p)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f,__l)) -# if (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - _STLP_STD_DEBUG_CHECK(__check_if_not_owner(&_M_iter_list, __f)) -# endif - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__p._M_iterator, __f._M_iterator, __l._M_iterator); - _Compare_Capacity(__old_capacity); - } -#endif - - // Erase. - _Self& erase(size_type __pos = 0, size_type __n = npos) { - if (__pos < size()) { - _Invalidate_iterators(begin() + __pos, end()); - } - _M_non_dbg_impl.erase(__pos, __n); - return *this; - } - iterator erase(iterator __pos) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list,__pos)) - _Invalidate_iterators(__pos, end()); - return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); - } - iterator erase(iterator __f, iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) - _Invalidate_iterators(__f, end()); - return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__f._M_iterator, __l._M_iterator)); - } - - // Substring. - _Self substr(size_type __pos = 0, size_type __n = npos) const - { return _M_non_dbg_impl.substr(__pos, __n); } - - // Replace. (Conceptually equivalent to erase followed by insert.) - _Self& replace(size_type __pos, size_type __n, const _Self& __s) { - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__pos, __n, __s._M_non_dbg_impl); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& replace(size_type __pos1, size_type __n1, const _Self& __s, - size_type __pos2, size_type __n2) { - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__pos1, __n1, __s._M_non_dbg_impl, __pos2, __n2); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& replace(size_type __pos, size_type __n1, const _CharT* __s, size_type __n2) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__pos, __n1, __s, __n2); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& replace(size_type __pos, size_type __n1, const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__pos, __n1, __s); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) { - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__pos, __n1, __n2, __c); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& replace(iterator __f, iterator __l, const _Self& __s) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s._M_non_dbg_impl); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& replace(iterator __f, iterator __l, const _CharT* __s, size_type __n) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s, __n); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& replace(iterator __f, iterator __l, const _CharT* __s) { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __s); - _Compare_Capacity(__old_capacity); - return *this; - } - - _Self& replace(iterator __f, iterator __l, size_type __n, _CharT __c) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l, begin(), end())) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__f._M_iterator, __l._M_iterator, __n, __c); - _Compare_Capacity(__old_capacity); - return *this; - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - _Self& replace(iterator __first, iterator __last, - _InputIter __f, _InputIter __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, - _STLP_PRIV _Non_Dbg_iter(__f), _STLP_PRIV _Non_Dbg_iter(__l)); - _Compare_Capacity(__old_capacity); - return *this; - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) - _Self& replace(iterator __first, iterator __last, - const _CharT* __f, const _CharT* __l) { - _STLP_FIX_LITERAL_BUG(__f)_STLP_FIX_LITERAL_BUG(__l) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__f, __l)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, __f, __l); - _Compare_Capacity(__old_capacity); - return *this; - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) - _Self& replace(iterator __first, iterator __last, - const_iterator __f, const_iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, - __f._M_iterator, __l._M_iterator); - _Compare_Capacity(__old_capacity); - return *this; - } - _Self& replace(iterator __first, iterator __last, - iterator __f, iterator __l) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__f, __l)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.replace(__first._M_iterator, __last._M_iterator, - __f._M_iterator, __l._M_iterator); - _Compare_Capacity(__old_capacity); - return *this; - } -#endif - - // Other modifier member functions. - void swap(_Self& __s) { - _M_iter_list._Swap_owners(__s._M_iter_list); - _M_non_dbg_impl.swap(__s._M_non_dbg_impl); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - int compare(const _Self& __s) const - { return _M_non_dbg_impl.compare(__s._M_non_dbg_impl); } - int compare(size_type __pos, size_type __n, const _Self& __s) const - { return _M_non_dbg_impl.compare(__pos, __n, __s._M_non_dbg_impl); } - int compare(size_type __pos1, size_type __n1, const _Self& __s, - size_type __pos2, size_type __n2) const - { return _M_non_dbg_impl.compare(__pos1, __n1, __s._M_non_dbg_impl, __pos2, __n2); } - int compare(const _CharT* __s) const { - _STLP_FIX_LITERAL_BUG(__s) - return _M_non_dbg_impl.compare(__s); - } - int compare(size_type __pos, size_type __n, const _CharT* __s) const { - _STLP_FIX_LITERAL_BUG(__s) - return _M_non_dbg_impl.compare(__pos, __n, __s); - } - int compare(size_type __pos1, size_type __n1, const _CharT* __s, - size_type __n2) const { - _STLP_FIX_LITERAL_BUG(__s) - return _M_non_dbg_impl.compare(__pos1, __n1, __s, __n2); - } - - // Helper functions for compare. - static int _STLP_CALL _M_compare(const _CharT* __f1, const _CharT* __l1, - const _CharT* __f2, const _CharT* __l2) - { return _Base::_M_compare(__f1, __l1, __f2, __l2); } - static int _STLP_CALL _M_compare(const_iterator __f1, const_iterator __l1, - const _CharT* __f2, const _CharT* __l2) - { return _Base::_M_compare(__f1._M_iterator, __l1._M_iterator, __f2, __l2); } - static int _STLP_CALL _M_compare(const _CharT* __f1, const _CharT* __l1, - const_iterator __f2, const_iterator __l2) - { return _Base::_M_compare(__f1, __l1, __f2._M_iterator, __l2._M_iterator); } - static int _STLP_CALL _M_compare(const_iterator __f1, const_iterator __l1, - const_iterator __f2, const_iterator __l2) - { return _Base::_M_compare(__f1._M_iterator, __l1._M_iterator, __f2._M_iterator, __l2._M_iterator); } - - const _CharT* c_str() const { return _M_non_dbg_impl.c_str(); } - const _CharT* data() const { return _M_non_dbg_impl.data(); } - - size_type copy(_CharT* __s, size_type __n, size_type __pos = 0) const - { return _M_non_dbg_impl.copy(__s, __n, __pos); } - - // find. - size_type find(const _Self& __s, size_type __pos = 0) const - { return _M_non_dbg_impl.find(__s._M_non_dbg_impl, __pos); } - size_type find(const _CharT* __s, size_type __pos = 0) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find(__s, __pos); - } - size_type find(const _CharT* __s, size_type __pos, size_type __n) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find(__s, __pos, __n); - } - // WIE: Versant schema compiler 5.2.2 ICE workaround - size_type find(_CharT __c) const { return find(__c, 0); } - size_type find(_CharT __c, size_type __pos /* = 0 */) const - { return _M_non_dbg_impl.find(__c, __pos); } - - // rfind. - size_type rfind(const _Self& __s, size_type __pos = npos) const - { return _M_non_dbg_impl.rfind(__s._M_non_dbg_impl, __pos); } - size_type rfind(const _CharT* __s, size_type __pos = npos) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.rfind(__s, __pos); - } - size_type rfind(const _CharT* __s, size_type __pos, size_type __n) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.rfind(__s, __pos, __n); - } - size_type rfind(_CharT __c, size_type __pos = npos) const - { return _M_non_dbg_impl.rfind(__c, __pos); } - - // find_first_of - size_type find_first_of(const _Self& __s, size_type __pos = 0) const - { return _M_non_dbg_impl.find_first_of(__s._M_non_dbg_impl, __pos); } - size_type find_first_of(const _CharT* __s, size_type __pos = 0) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find_first_of(__s, __pos); - } - size_type find_first_of(const _CharT* __s, size_type __pos, size_type __n) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find_first_of(__s, __pos, __n); - } - size_type find_first_of(_CharT __c, size_type __pos = 0) const - { return _M_non_dbg_impl.find_first_of(__c, __pos); } - - // find_last_of - size_type find_last_of(const _Self& __s, size_type __pos = npos) const - { return _M_non_dbg_impl.find_last_of(__s._M_non_dbg_impl, __pos); } - size_type find_last_of(const _CharT* __s, size_type __pos = npos) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find_last_of(__s, __pos); - } - size_type find_last_of(const _CharT* __s, size_type __pos, size_type __n) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find_last_of(__s, __pos, __n); - } - size_type find_last_of(_CharT __c, size_type __pos = npos) const - { return _M_non_dbg_impl.rfind(__c, __pos); } - - // find_first_not_of - size_type find_first_not_of(const _Self& __s, size_type __pos = 0) const - { return _M_non_dbg_impl.find_first_not_of(__s._M_non_dbg_impl, __pos); } - size_type find_first_not_of(const _CharT* __s, size_type __pos = 0) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find_first_not_of(__s, __pos); - } - size_type find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find_first_not_of(__s, __pos, __n); - } - size_type find_first_not_of(_CharT __c, size_type __pos = 0) const - { return _M_non_dbg_impl.find_first_not_of(__c, __pos); } - - // find_last_not_of - size_type find_last_not_of(const _Self& __s, size_type __pos = npos) const - { return _M_non_dbg_impl.find_last_not_of(__s._M_non_dbg_impl, __pos); } - size_type find_last_not_of(const _CharT* __s, size_type __pos = npos) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find_last_not_of(__s, __pos); - } - size_type find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const { - _STLP_FIX_LITERAL_BUG(__s) - _STLP_VERBOSE_ASSERT((__s != 0), _StlMsg_INVALID_ARGUMENT) - return _M_non_dbg_impl.find_last_not_of(__s, __pos, __n); - } - size_type find_last_not_of(_CharT __c, size_type __pos = npos) const - { return _M_non_dbg_impl.find_last_not_of(__c, __pos); } - -#if defined (_STLP_USE_TEMPLATE_EXPRESSION) -# include -#endif -}; - -// This is a hook to instantiate STLport exports in a designated DLL -#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -_STLP_MOVE_TO_PRIV_NAMESPACE -_STLP_EXPORT_TEMPLATE_CLASS __construct_checker<_STLP_NON_DBG_STRING_NAME , allocator > >; -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_EXPORT_TEMPLATE_CLASS basic_string, allocator >; -# if defined (_STLP_HAS_WCHAR_T) -_STLP_MOVE_TO_PRIV_NAMESPACE -_STLP_EXPORT_TEMPLATE_CLASS __construct_checker<_STLP_NON_DBG_STRING_NAME , allocator > >; -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_EXPORT_TEMPLATE_CLASS basic_string, allocator >; -# endif -#endif - -#undef _STLP_NON_DBG_STRING -#undef _STLP_NON_DBG_STRING_NAME - -#if defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96) -template -const size_t basic_string<_CharT, _Traits, _Alloc>::npos = ~(size_t) 0; -#endif - -#if defined (basic_string) -_STLP_MOVE_TO_STD_NAMESPACE -#undef basic_string -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_DBG_STRING */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_string_sum_methods.h b/build/stlport/stlport/stl/debug/_string_sum_methods.h deleted file mode 100644 index 3fca19484c16..000000000000 --- a/build/stlport/stlport/stl/debug/_string_sum_methods.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* - * All the necessary methods used for template expressions with basic_string - * This file do not have to be macro guarded as it is only used in the _string.h - * file and it is a part of the basic_string definition. - */ - - template - basic_string(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s) - : _M_non_dbg_impl(_Reserve_t(), __s.size(), __s.get_allocator()), - _M_iter_list(&_M_non_dbg_impl) - { _M_append_sum(__s, _M_non_dbg_impl); } - - template - basic_string(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, - size_type __pos, size_type __n = npos, - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(_Reserve_t(), (__pos <= __s.size()) ? ((min) (__n, __s.size() - __pos)) : 0, __a), - _M_iter_list(&_M_non_dbg_impl) { - size_type __size = __s.size(); - if (__pos > __size) - //This call will generate the necessary out of range exception: - _M_non_dbg_impl.at(0); - else - _M_append_sum_pos(__s, __pos, (min) (__n, __size - __pos), _M_non_dbg_impl); - } - -private: - _Base& _M_append_fast(_STLP_PRIV __char_wrapper<_CharT> __c, _Base &__str) - { return __str += __c.getValue(); } - _Base& _M_append_fast(_CharT const* __s, size_type __s_size, _Base &__str) - { return __str.append(__s, __s_size); } - _Base& _M_append_fast(_STLP_PRIV __cstr_wrapper<_CharT> const& __s, _Base &__str) - { return _M_append_fast(__s.c_str(), __s.size(), __str); } - _Base& _M_append_fast(_STLP_PRIV __bstr_wrapper<_CharT, _Traits, _Alloc> __s, _Base &__str) - { return _M_append_fast(__s.b_str(), __str); } - _Base& _M_append_fast(_Self const& __s, _Base &__str) - { return _M_append_fast(__s.data(), __s.size(), __str); } - _Base& _M_append_fast(_STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc> const&, _Base &__str) - { return __str; } - template - _Base& _M_append_fast(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, _Base &__str) - { return _M_append_fast(__s.getRhs(), _M_append_fast(__s.getLhs(), __str)); } - - _Base& _M_append_fast_pos(_STLP_PRIV __char_wrapper<_CharT> __c, _Base &__str, size_type /*__pos*/, size_type __n) { - if (__n == 0) - return __str; - return __str += __c.getValue(); - } - _Base& _M_append_fast_pos(_CharT const* __s, size_type __s_size, _Base &__str, - size_type __pos, size_type __n) - { return __str.append(__s + __pos, __s + __pos + (min)(__n, __s_size - __pos)); } - _Base& _M_append_fast_pos(_STLP_PRIV __cstr_wrapper<_CharT> const& __s, _Base &__str, - size_type __pos, size_type __n) - { return _M_append_fast_pos(__s.c_str(), __s.size(), __str, __pos, __n); } - _Base& _M_append_fast_pos(_STLP_PRIV __bstr_wrapper<_CharT, _Traits, _Alloc> __s, _Base &__str, - size_type __pos, size_type __n) - { return _M_append_fast_pos(__s.b_str(), __str, __pos, __n); } - _Base& _M_append_fast_pos(_Self const& __s, _Base &__str, size_type __pos, size_type __n) - { return _M_append_fast_pos(__s.data(), __s.size(), __str, __pos, __n); } - _Base& _M_append_fast_pos(_STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc> const&, _Base &__str, - size_type /*__pos*/, size_type /*__n*/) - { return __str; } - - template - _Base& _M_append_fast_pos(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, - _Base &__str, size_type __pos, size_type __n) { - if (__n == 0) { - return __str; - } - size_type __lhs_size = __s.getLhs().size(); - if (__pos < __lhs_size) { - if (__n < (__lhs_size - __pos)) { - return _M_append_fast_pos(__s.getLhs(), __str, __pos, __n); - } else { - return _M_append_fast_pos(__s.getRhs(), _M_append_fast_pos(__s.getLhs(), __str, __pos, __n), - 0, __n - (__lhs_size - __pos)); - } - } else { - return _M_append_fast_pos(__s.getRhs(), __str, __pos - __lhs_size, __n); - } - } - - template - _Self& _M_append_sum (_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, - _Base &__impl) { - _M_append_fast(__s, __impl); - return *this; - } - - template - _Self& _M_append_sum_pos (_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, - size_type __pos, size_type __n, _Base &__impl) { - _M_non_dbg_impl.reserve(_M_non_dbg_impl.size() + (min) (__s.size() - __pos, __n)); - _M_append_fast_pos(__s, __impl, __pos, __n); - return *this; - } diff --git a/build/stlport/stlport/stl/debug/_tree.h b/build/stlport/stlport/stl/debug/_tree.h deleted file mode 100644 index a32eda2c5244..000000000000 --- a/build/stlport/stlport/stl/debug/_tree.h +++ /dev/null @@ -1,317 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_DBG_TREE_H -#define _STLP_INTERNAL_DBG_TREE_H - -#ifndef _STLP_DBG_ITERATOR_H -# include -#endif - -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H -# include -#endif - -#ifndef _STLP_INTERNAL_ALLOC_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -class _DbgCompare { -public: - _DbgCompare() {} - _DbgCompare(const _Compare& __cmp) : _M_non_dbg_cmp(__cmp) {} - _DbgCompare(const _DbgCompare& __cmp) : _M_non_dbg_cmp(__cmp._M_non_dbg_cmp) {} - -#if !defined (_STLP_USE_CONTAINERS_EXTENSION) - bool operator () (const _Key& __lhs, const _Key& __rhs) const { -#else - template - bool operator () (const _Kp1& __lhs, const _Kp2& __rhs) const { -#endif - if (_M_non_dbg_cmp(__lhs, __rhs)) { - return true; - } - return false; - } - - _Compare non_dbg_key_comp() const { return _M_non_dbg_cmp; } -private: - _Compare _M_non_dbg_cmp; -}; - -#define _STLP_NON_DBG_TREE _STLP_PRIV _STLP_NON_DBG_NAME(Rb_tree) <_Key, _STLP_PRIV _DbgCompare<_Key, _Compare>, _Value, _KeyOfValue, _Traits, _Alloc> - -#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) -_STLP_MOVE_TO_STD_NAMESPACE -template -inline _Value* -value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_TREE >&) -{ return (_Value*)0; } -template -inline bidirectional_iterator_tag -iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_TREE >&) -{ return bidirectional_iterator_tag(); } -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -template ) > -class _Rb_tree { - typedef _STLP_NON_DBG_TREE _Base; - typedef _Rb_tree<_Key, _Compare, _Value, _KeyOfValue, _Traits, _Alloc> _Self; - _Base _M_non_dbg_impl; - _STLP_PRIV __owned_list _M_iter_list; - -public: - __IMPORT_CONTAINER_TYPEDEFS(_Base) - typedef typename _Base::key_type key_type; - - typedef typename _Traits::_NonConstTraits _NonConstIteTraits; - typedef typename _Traits::_ConstTraits _ConstIteTraits; - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_NonConstIteTraits> > iterator; - typedef _STLP_PRIV _DBG_iter<_Base, _STLP_PRIV _DbgTraits<_ConstIteTraits> > const_iterator; - - _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS; - -private: - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - void _Invalidate_iterator(const iterator& __it) - { _STLP_PRIV __invalidate_iterator(&_M_iter_list,__it); } - void _Invalidate_iterators(const iterator& __first, const iterator& __last) - { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - -public: - _Rb_tree() - : _M_non_dbg_impl(), _M_iter_list(&_M_non_dbg_impl) {} - _Rb_tree(const _Compare& __comp) - : _M_non_dbg_impl(__comp), _M_iter_list(&_M_non_dbg_impl) {} - _Rb_tree(const _Compare& __comp, const allocator_type& __a) - : _M_non_dbg_impl(__comp, __a), _M_iter_list(&_M_non_dbg_impl) {} - _Rb_tree(const _Self& __x) - : _M_non_dbg_impl(__x._M_non_dbg_impl), _M_iter_list(&_M_non_dbg_impl) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - _Rb_tree(__move_source<_Self> src): - _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), - _M_iter_list(&_M_non_dbg_impl) { -# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - src.get()._M_iter_list._Invalidate_all(); -# else - src.get()._M_iter_list._Set_owner(_M_iter_list); -# endif - } -#endif - - ~_Rb_tree() {} - - _Self& operator=(const _Self& __x) { - if (this != &__x) { - //Should not invalidate end iterator: - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl = __x._M_non_dbg_impl; - } - return *this; - } - - allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } - _Compare key_comp() const { return _M_non_dbg_impl.key_comp().non_dbg_key_comp(); } - - iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - bool empty() const { return _M_non_dbg_impl.empty(); } - size_type size() const { return _M_non_dbg_impl.size(); } - size_type max_size() const { return _M_non_dbg_impl.max_size(); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __x) const { return _M_non_dbg_impl.count(__x); } - - void swap(_Self& __t) { - _M_non_dbg_impl.swap(__t._M_non_dbg_impl); - _M_iter_list._Swap_owners(__t._M_iter_list); - } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __k) - { return iterator(&_M_iter_list, _M_non_dbg_impl.find(__k)); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __k) const - { return const_iterator(&_M_iter_list, _M_non_dbg_impl.find(__k)); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator lower_bound(const _KT& __x) - { return iterator(&_M_iter_list, _M_non_dbg_impl.lower_bound(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator lower_bound(const _KT& __x) const - { return const_iterator(&_M_iter_list, _M_non_dbg_impl.lower_bound(__x)); } - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator upper_bound(const _KT& __x) - { return iterator(&_M_iter_list, _M_non_dbg_impl.upper_bound(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator upper_bound(const _KT& __x) const - { return const_iterator(&_M_iter_list, _M_non_dbg_impl.upper_bound(__x)); } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) { - return pair(iterator(&_M_iter_list, _M_non_dbg_impl.lower_bound(__x)), - iterator(&_M_iter_list, _M_non_dbg_impl.upper_bound(__x))); - } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) const { - return pair(const_iterator(&_M_iter_list, _M_non_dbg_impl.lower_bound(__x)), - const_iterator(&_M_iter_list, _M_non_dbg_impl.upper_bound(__x))); - } - - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range_unique(const _KT& __x) { - _STLP_STD::pair<_Base_iterator, _Base_iterator> __p; - __p = _M_non_dbg_impl.equal_range_unique(__x); - return pair(iterator(&_M_iter_list, __p.first), iterator(&_M_iter_list, __p.second)); - } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range_unique(const _KT& __x) const { - _STLP_STD::pair<_Base_const_iterator, _Base_const_iterator> __p; - __p = _M_non_dbg_impl.equal_range_unique(__x); - return pair(const_iterator(&_M_iter_list, __p.first), - const_iterator(&_M_iter_list, __p.second)); - } - - pair insert_unique(const value_type& __x) { - _STLP_STD::pair<_Base_iterator, bool> __res = _M_non_dbg_impl.insert_unique(__x); - return pair(iterator(&_M_iter_list, __res.first), __res.second); - } - iterator insert_equal(const value_type& __x) - { return iterator(&_M_iter_list, _M_non_dbg_impl.insert_equal(__x)); } - - iterator insert_unique(iterator __pos, const value_type& __x) { - _STLP_DEBUG_CHECK(__check_if_owner(&_M_iter_list,__pos)) - return iterator(&_M_iter_list, _M_non_dbg_impl.insert_unique(__pos._M_iterator, __x)); - } - iterator insert_equal(iterator __pos, const value_type& __x) { - _STLP_DEBUG_CHECK(__check_if_owner(&_M_iter_list, __pos)) - return iterator(&_M_iter_list, _M_non_dbg_impl.insert_equal(__pos._M_iterator, __x)); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert_equal(_InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(__check_range(__first,__last)) - _M_non_dbg_impl.insert_equal(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } - template - void insert_unique(_InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(__check_range(__first,__last)) - _M_non_dbg_impl.insert_unique(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } -#else - void insert_unique(const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(__check_range(__first,__last)) - _M_non_dbg_impl.insert_unique(__first._M_iterator, __last._M_iterator); - } - void insert_unique(const value_type* __first, const value_type* __last) { - _STLP_DEBUG_CHECK(__check_ptr_range(__first,__last)) - _M_non_dbg_impl.insert_unique(__first, __last); - } - void insert_equal(const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(__check_range(__first,__last)) - _M_non_dbg_impl.insert_equal(__first._M_iterator, __last._M_iterator); - } - void insert_equal(const value_type* __first, const value_type* __last) { - _STLP_DEBUG_CHECK(__check_ptr_range(__first,__last)) - _M_non_dbg_impl.insert_equal(__first, __last); - } -#endif - - void erase(iterator __pos) { - _STLP_DEBUG_CHECK(__check_if_owner(&_M_iter_list,__pos)) - _STLP_DEBUG_CHECK(_Dereferenceable(__pos)) - _Invalidate_iterator(__pos); - _M_non_dbg_impl.erase(__pos._M_iterator); - } - size_type erase(const key_type& __x) { - pair __p = equal_range(__x); - size_type __n = _STLP_STD::distance(__p.first._M_iterator, __p.second._M_iterator); - _Invalidate_iterators(__p.first, __p.second); - _M_non_dbg_impl.erase(__p.first._M_iterator, __p.second._M_iterator); - return __n; - } - size_type erase_unique(const key_type& __x) { - _Base_iterator __i = _M_non_dbg_impl.find(__x); - if (__i != _M_non_dbg_impl.end()) { - _Invalidate_iterator(iterator(&_M_iter_list, __i)); - _M_non_dbg_impl.erase(__i); - return 1; - } - return 0; - } - - void erase(iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(__check_range(__first, __last, begin(), end())) - _Invalidate_iterators(__first, __last); - _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator); - } - void erase(const key_type* __first, const key_type* __last) { - while (__first != __last) erase(*__first++); - } - - void clear() { - //should not invalidate end: - _Invalidate_iterators(begin(), end()); - _M_non_dbg_impl.clear(); - } -}; - -_STLP_MOVE_TO_STD_NAMESPACE -_STLP_END_NAMESPACE - -#undef _STLP_NON_DBG_TREE - -#endif /* _STLP_INTERNAL_DBG_TREE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/debug/_vector.h b/build/stlport/stlport/stl/debug/_vector.h deleted file mode 100644 index c5800e96272e..000000000000 --- a/build/stlport/stlport/stl/debug/_vector.h +++ /dev/null @@ -1,425 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_INTERNAL_DBG_VECTOR_H -#define _STLP_INTERNAL_DBG_VECTOR_H - -#ifndef _STLP_DBG_ITERATOR_H -# include -#endif - -#define _STLP_NON_DBG_VECTOR _STLP_PRIV _STLP_NON_DBG_NAME(vector) <_Tp, _Alloc> - -_STLP_BEGIN_NAMESPACE - -#if defined (_STLP_DEBUG_USE_DISTINCT_VALUE_TYPE_HELPERS) -template -inline _Tp* -value_type(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_VECTOR >&) -{ return (_Tp*)0; } -template -inline random_access_iterator_tag -iterator_category(const _STLP_PRIV _DBG_iter_base< _STLP_NON_DBG_VECTOR >&) -{ return random_access_iterator_tag(); } -#endif - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _Vector_const_traits; - -template -struct _Vector_nonconst_traits { - typedef _Nonconst_traits<_Tp> _BaseT; - typedef _Tp value_type; - typedef _Tp& reference; - typedef _Tp* pointer; - typedef _Vector_const_traits<_Tp, _NcIt> _ConstTraits; - typedef _Vector_nonconst_traits<_Tp, _NcIt> _NonConstTraits; -}; - -template -struct _Vector_const_traits { - typedef _Const_traits<_Tp> _BaseT; - typedef _Tp value_type; - typedef const _Tp& reference; - typedef const _Tp* pointer; - typedef _Vector_const_traits<_Tp, _NcIt> _ConstTraits; - typedef _Vector_nonconst_traits<_Tp, _NcIt> _NonConstTraits; -}; - -_STLP_TEMPLATE_NULL -struct _Vector_nonconst_traits { - typedef _Bit_iterator::value_type value_type; - typedef _Bit_iterator::reference reference; - typedef _Bit_iterator::pointer pointer; - typedef _Vector_const_traits _ConstTraits; - typedef _Vector_nonconst_traits _NonConstTraits; -}; - -_STLP_TEMPLATE_NULL -struct _Vector_const_traits { - typedef _Bit_const_iterator::value_type value_type; - typedef _Bit_const_iterator::reference reference; - typedef _Bit_const_iterator::pointer pointer; - typedef _Vector_const_traits _ConstTraits; - typedef _Vector_nonconst_traits _NonConstTraits; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -template ) > -class vector : -#if !defined (__DMC__) - private -#endif - _STLP_PRIV __construct_checker< _STLP_NON_DBG_VECTOR > -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - , public __stlport_class > -#endif -{ -private: - typedef _STLP_NON_DBG_VECTOR _Base; - typedef vector<_Tp, _Alloc> _Self; - typedef _STLP_PRIV __construct_checker<_STLP_NON_DBG_VECTOR > _ConstructCheck; - _Base _M_non_dbg_impl; - _STLP_PRIV __owned_list _M_iter_list; - -public: - __IMPORT_CONTAINER_TYPEDEFS(_Base) - - typedef _STLP_PRIV _DBG_iter<_Base, - _STLP_PRIV _DbgTraits<_STLP_PRIV _Vector_nonconst_traits > > iterator; - - typedef _STLP_PRIV _DBG_iter<_Base, - _STLP_PRIV _DbgTraits<_STLP_PRIV _Vector_const_traits > > const_iterator; - -private: - void _Invalidate_all() - { _M_iter_list._Invalidate_all(); } - void _Invalidate_iterator(const iterator& __it) - { _STLP_PRIV __invalidate_iterator(&_M_iter_list, __it); } - void _Invalidate_iterators(const iterator& __first, const iterator& __last) - { _STLP_PRIV __invalidate_range(&_M_iter_list, __first, __last); } - - void _Check_Overflow(size_type __nb) { - if (size() + __nb > capacity()) - _Invalidate_all(); - } - void _Compare_Capacity (size_type __old_capacity) { - if (capacity() > __old_capacity) { - _Invalidate_all(); - } - } - -public: - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - - allocator_type get_allocator() const { return _M_non_dbg_impl.get_allocator(); } - - iterator begin() { return iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - const_iterator begin() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.begin()); } - iterator end() { return iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - const_iterator end() const { return const_iterator(&_M_iter_list, _M_non_dbg_impl.end()); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - size_type size() const { return _M_non_dbg_impl.size(); } - size_type max_size() const { return _M_non_dbg_impl.max_size(); } - size_type capacity() const { return _M_non_dbg_impl.capacity(); } - bool empty() const { return _M_non_dbg_impl.empty(); } - - reference operator[](size_type __n) { - _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS) - return _M_non_dbg_impl[__n]; - } - - const_reference operator[](size_type __n) const { - _STLP_VERBOSE_ASSERT(__n < size(), _StlMsg_OUT_OF_BOUNDS) - return _M_non_dbg_impl[__n]; - } - - reference at(size_type __n) { return _M_non_dbg_impl.at(__n); } - const_reference at(size_type __n) const { return _M_non_dbg_impl.at(__n); } - - explicit vector(const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__a), _M_iter_list(&_M_non_dbg_impl) {} - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit vector(size_type __n, const _Tp& __x = _Tp(), -#else - vector(size_type __n, const _Tp& __x, -#endif - const allocator_type& __a = allocator_type()) - : _M_non_dbg_impl(__n, __x, __a), _M_iter_list(&_M_non_dbg_impl) {} - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit vector(size_type __n) - : _M_non_dbg_impl(__n), _M_iter_list(&_M_non_dbg_impl) {} -#endif - - vector(const _Self& __x) - : _ConstructCheck(__x), _M_non_dbg_impl(__x._M_non_dbg_impl), _M_iter_list(&_M_non_dbg_impl) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - vector(__move_source<_Self> src) - : _M_non_dbg_impl(__move_source<_Base>(src.get()._M_non_dbg_impl)), - _M_iter_list(&_M_non_dbg_impl) { -# if defined (_STLP_NO_EXTENSIONS) || (_STLP_DEBUG_LEVEL == _STLP_STANDARD_DBG_LEVEL) - src.get()._M_iter_list._Invalidate_all(); -# else - src.get()._M_iter_list._Set_owner(_M_iter_list); -# endif - } -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - vector(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last), __a), - _M_iter_list(&_M_non_dbg_impl) {} - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - vector(_InputIterator __first, _InputIterator __last) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)), - _M_iter_list(&_M_non_dbg_impl) {} -# endif -#else - vector(const _Tp* __first, const _Tp* __last, - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__first, __last), _M_non_dbg_impl(__first, __last, __a), - _M_iter_list(&_M_non_dbg_impl) {} - - // mysterious VC++ bug ? - vector(const_iterator __first, const_iterator __last , - const allocator_type& __a = allocator_type()) - : _ConstructCheck(__first, __last), - _M_non_dbg_impl(__first._M_iterator, __last._M_iterator, __a), - _M_iter_list(&_M_non_dbg_impl) {} -#endif /* _STLP_MEMBER_TEMPLATES */ - - _Self& operator=(const _Self& __x) { - if (this != &__x) { - _Invalidate_all(); - _M_non_dbg_impl = __x._M_non_dbg_impl; - } - return *this; - } - - void reserve(size_type __n) { - if (capacity() < __n) - _Invalidate_all(); - _M_non_dbg_impl.reserve(__n); - } - - reference front() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *begin(); - } - const_reference front() const { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *begin(); - } - reference back() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *(--end()); - } - const_reference back() const { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - return *(--end()); - } - - void swap(_Self& __x) { - _M_iter_list._Swap_owners(__x._M_iter_list); - _M_non_dbg_impl.swap(__x._M_non_dbg_impl); - } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - iterator insert(iterator __pos, const _Tp& __x = _Tp()) { -#else - iterator insert(iterator __pos, const _Tp& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _Check_Overflow(1); - return iterator(&_M_iter_list, _M_non_dbg_impl.insert(__pos._M_iterator, __x)); - } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - iterator insert(iterator __pos) - { return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -#if defined (_STLP_MEMBER_TEMPLATES) - // Check whether it's an integral type. If so, it's not an iterator. - template - void insert(iterator __pos, - _InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__pos._M_iterator, - _STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - _Compare_Capacity(__old_capacity); - } -#endif -#if !defined (_STLP_MEMBER_TEMPLATES) - void insert (iterator __pos, - const value_type *__first, const value_type *__last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first,__last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__pos._M_iterator, __first, __last); - _Compare_Capacity(__old_capacity); - } -#endif - -#if !defined (_STLP_MEMBER_TEMPLATES) || !defined (_STLP_NO_METHOD_SPECIALIZATION) - void insert(iterator __pos, - const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - //Sequence requirements 23.1.1 Table 67: - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first)); - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); - _Compare_Capacity(__old_capacity); - } - void insert(iterator __pos, - iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - //Sequence requirements 23.1.1 Table 67: - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_not_owner(&_M_iter_list, __first)); - size_type __old_capacity = capacity(); - _M_non_dbg_impl.insert(__pos._M_iterator, __first._M_iterator, __last._M_iterator); - _Compare_Capacity(__old_capacity); - } -#endif - - void insert (iterator __pos, size_type __n, const _Tp& __x){ - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _Check_Overflow(__n); - _M_non_dbg_impl.insert(__pos._M_iterator, __n, __x); - } - - void pop_back() { - _STLP_VERBOSE_ASSERT(!empty(), _StlMsg_EMPTY_CONTAINER) - _Invalidate_iterator(end()); - _M_non_dbg_impl.pop_back(); - } - iterator erase(iterator __pos) { - _STLP_DEBUG_CHECK(_STLP_PRIV _Dereferenceable(__pos)) - _STLP_DEBUG_CHECK(_STLP_PRIV __check_if_owner(&_M_iter_list, __pos)) - _Invalidate_iterators(__pos, end()); - return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__pos._M_iterator)); - } - iterator erase(iterator __first, iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last, begin(), end())) - _Invalidate_iterators(__first, end()); - return iterator(&_M_iter_list, _M_non_dbg_impl.erase(__first._M_iterator, __last._M_iterator)); - } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const _Tp& __x = _STLP_DEFAULT_CONSTRUCTED(_Tp)) { -#else - void resize(size_type __new_size, const _Tp& __x) { -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - if (__new_size > capacity()) { - _Invalidate_all(); - } - else if (__new_size < size()) { - _Invalidate_iterators(begin() + __new_size, end()); - } - _M_non_dbg_impl.resize(__new_size, __x); - } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size) { resize(__new_size, _STLP_DEFAULT_CONSTRUCTED(_Tp)); } -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void assign(_InputIterator __first, _InputIterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last)) - _Invalidate_all(); - _M_non_dbg_impl.assign(_STLP_PRIV _Non_Dbg_iter(__first), _STLP_PRIV _Non_Dbg_iter(__last)); - } -#else -private: - void _M_assign(const value_type *__first, const value_type *__last) { - _Invalidate_all(); - _M_non_dbg_impl.assign(__first, __last); - } -public: - void assign(const value_type *__first, const value_type *__last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_ptr_range(__first,__last)) - _M_assign(__first, __last); - } - - void assign(const_iterator __first, const_iterator __last) { - _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first,__last)) - _M_assign(__first._M_iterator, __last._M_iterator); - } -#endif - -public: - void assign(size_type __n, const _Tp& __val) { - _Invalidate_all(); - _M_non_dbg_impl.assign(__n, __val); - } - - void clear() { - _Invalidate_all(); - _M_non_dbg_impl.clear(); - } - void push_back(const _Tp& __x) { - _Check_Overflow(1); - _M_non_dbg_impl.push_back(__x); - } -}; - -_STLP_END_NAMESPACE - -#undef _STLP_NON_DBG_VECTOR - -#endif /* _STLP_DBG_VECTOR_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/msl_string.h b/build/stlport/stlport/stl/msl_string.h deleted file mode 100644 index 1fa4931469e2..000000000000 --- a/build/stlport/stlport/stl/msl_string.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1998 - * Mark of the Unicorn, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Mark of the Unicorn, Inc. makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ -#if defined( _STLP_USE_MSIPL ) && !defined( _STLP_MSL_STRING_H_ ) -#define _STLP_MSL_STRING_H_ - -//# define char_traits __msl_char_traits -# define basic_string __msl_basic_string -# define b_str_ref __msl_b_str_ref -# define basic_istream __msl_basic_istream -# define basic_ostream __msl_basic_ostream -# define string __msl_string -# define wstring __msl_wstring -# define iterator_traits __msl_iterator_traits - -namespace std -{ - template class basic_istream; - template class basic_ostream; -} - -#if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -#else -# include _STLP_NATIVE_HEADER(string) -#endif - -// # undef char_traits -# undef basic_string -# undef b_str_ref -# undef basic_istream -# undef basic_ostream -# undef string -# undef wstring -# undef iterator_traits - -#endif diff --git a/build/stlport/stlport/stl/pointers/_deque.h b/build/stlport/stlport/stl/pointers/_deque.h deleted file mode 100644 index f82a559bcbcb..000000000000 --- a/build/stlport/stlport/stl/pointers/_deque.h +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Copyright (c) 2004 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_SPECIALIZED_DEQUE_H -#define _STLP_SPECIALIZED_DEQUE_H - -#ifndef _STLP_POINTERS_SPEC_TOOLS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE -_STLP_MOVE_TO_PRIV_NAMESPACE - -/* - * struct helper to cast deque iterators: - */ -template -struct _DequeIteCast { - typedef _Deque_iterator<_ValueT, _Nonconst_traits<_ValueT> > iterator; - typedef _Deque_iterator<_ValueT, _Const_traits<_ValueT> > const_iterator; - typedef _Deque_iterator<_StorageT, _Nonconst_traits<_StorageT> > storage_iterator; - typedef _Deque_iterator<_StorageT, _Const_traits<_StorageT> > const_storage_iterator; - typedef _CastTraits<_StorageT, _ValueT> cast_traits; - - static iterator to_value_type_ite (storage_iterator const& __ite) { - iterator tmp; - tmp._M_cur = cast_traits::to_value_type_ptr(__ite._M_cur); - tmp._M_first = cast_traits::to_value_type_ptr(__ite._M_first); - tmp._M_last = cast_traits::to_value_type_ptr(__ite._M_last); - tmp._M_node = cast_traits::to_value_type_pptr(__ite._M_node); - return tmp; - } - static storage_iterator to_storage_type_ite (iterator const& __ite) { - storage_iterator tmp; - tmp._M_cur = cast_traits::to_storage_type_ptr(__ite._M_cur); - tmp._M_first = cast_traits::to_storage_type_ptr(__ite._M_first); - tmp._M_last = cast_traits::to_storage_type_ptr(__ite._M_last); - tmp._M_node = cast_traits::to_storage_type_pptr(__ite._M_node); - return tmp; - } - - static const_iterator to_value_type_cite (const_storage_iterator const& __ite) { - const_iterator tmp; - tmp._M_cur = cast_traits::to_value_type_ptr(__ite._M_cur); - tmp._M_first = cast_traits::to_value_type_ptr(__ite._M_first); - tmp._M_last = cast_traits::to_value_type_ptr(__ite._M_last); - tmp._M_node = cast_traits::to_value_type_pptr(__ite._M_node); - return tmp; - } - - static const_storage_iterator to_storage_type_cite (const_iterator const& __ite) { - const_storage_iterator tmp; - tmp._M_cur = cast_traits::to_storage_type_ptr(__ite._M_cur); - tmp._M_first = cast_traits::to_storage_type_ptr(__ite._M_first); - tmp._M_last = cast_traits::to_storage_type_ptr(__ite._M_last); - tmp._M_node = cast_traits::to_storage_type_pptr(__ite._M_node); - return tmp; - } -}; - -#define DEQUE_IMPL _STLP_PTR_IMPL_NAME(deque) -#if defined (__BORLANDC__) || defined (__DMC__) -# define typename -#endif - -#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy >; -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy >; -_STLP_EXPORT template struct _STLP_CLASS_DECLSPEC _Deque_iterator >; -_STLP_EXPORT_TEMPLATE_CLASS _Deque_base >; -_STLP_EXPORT_TEMPLATE_CLASS DEQUE_IMPL >; -#endif - -#if defined (_STLP_DEBUG) -# define deque _STLP_NON_DBG_NAME(deque) -#else -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template ) > -class deque -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (deque) - : public __stlport_class > -#endif -{ - typedef _STLP_TYPENAME _STLP_PRIV _StorageType<_Tp>::_Type _StorageType; - typedef typename _Alloc_traits<_StorageType, _Alloc>::allocator_type _StorageTypeAlloc; - typedef _STLP_PRIV DEQUE_IMPL<_StorageType, _StorageTypeAlloc> _Base; - typedef deque<_Tp, _Alloc> _Self; - - typedef _STLP_PRIV _CastTraits<_StorageType, _Tp> cast_traits; - typedef _STLP_PRIV _DequeIteCast<_StorageType, _Tp> ite_cast_traits; - -public: - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef random_access_iterator_tag _Iterator_category; - _STLP_FORCE_ALLOCATORS(value_type, _Alloc) - typedef typename _Alloc_traits::allocator_type allocator_type; - typedef _STLP_PRIV _Deque_iterator > iterator; - typedef _STLP_PRIV _Deque_iterator > const_iterator; - - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - -public: // Basic accessors - iterator begin() { return ite_cast_traits::to_value_type_ite(_M_impl.begin()); } - iterator end() { return ite_cast_traits::to_value_type_ite(_M_impl.end()); } - const_iterator begin() const { return ite_cast_traits::to_value_type_cite(_M_impl.begin()); } - const_iterator end() const { return ite_cast_traits::to_value_type_cite(_M_impl.end()); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rbegin() const - { return const_reverse_iterator(end()); } - const_reverse_iterator rend() const - { return const_reverse_iterator(begin()); } - - reference operator[](size_type __n) - { return cast_traits::to_value_type_ref(_M_impl[__n]); } - const_reference operator[](size_type __n) const - { return cast_traits::to_value_type_cref(_M_impl[__n]); } - - reference at(size_type __n) - { return cast_traits::to_value_type_ref(_M_impl.at(__n)); } - const_reference at(size_type __n) const - { return cast_traits::to_value_type_cref(_M_impl.at(__n)); } - - reference front() { return cast_traits::to_value_type_ref(_M_impl.front()); } - reference back() { return cast_traits::to_value_type_ref(_M_impl.back()); } - const_reference front() const { return cast_traits::to_value_type_cref(_M_impl.front()); } - const_reference back() const { return cast_traits::to_value_type_cref(_M_impl.back()); } - - size_type size() const { return _M_impl.size(); } - size_type max_size() const { return _M_impl.max_size(); } - bool empty() const { return _M_impl.empty(); } - allocator_type get_allocator() const { return _STLP_CONVERT_ALLOCATOR(_M_impl.get_allocator(), value_type); } - - explicit deque(const allocator_type& __a = allocator_type()) - : _M_impl(_STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - - deque(const _Self& __x) : _M_impl(__x._M_impl) {} - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit deque(size_type __n, const value_type& __val = _STLP_DEFAULT_CONSTRUCTED(value_type), -#else - deque(size_type __n, const value_type& __val, -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - const allocator_type& __a = allocator_type()) - : _M_impl(__n, cast_traits::to_storage_type_cref(__val), _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - // int,long variants may be needed -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - explicit deque(size_type __n) : _M_impl(__n) {} -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -#if defined (_STLP_MEMBER_TEMPLATES) - template - deque(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) -#if !defined (_STLP_USE_ITERATOR_WRAPPER) - : _M_impl(__first, __last, - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) { -#else - : _M_impl(_STLP_CONVERT_ALLOCATOR(__a, _StorageType)) { -#endif -#if defined (_STLP_USE_ITERATOR_WRAPPER) - insert(end(), __first, __last); -#endif - } - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - deque(_InputIterator __first, _InputIterator __last) -# if !defined (_STLP_USE_ITERATOR_WRAPPER) - : _M_impl(__first, __last) {} -# else - { insert(end(), __first, __last); } -# endif -# endif - -#else - deque(const_pointer __first, const_pointer __last, - const allocator_type& __a = allocator_type() ) - : _M_impl(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - - deque(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type() ) - : _M_impl(ite_cast_traits::to_storage_type_cite(__first), - ite_cast_traits::to_storage_type_cite(__last), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} -#endif /* _STLP_MEMBER_TEMPLATES */ - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - deque(__move_source<_Self> src) - : _M_impl(__move_source<_Base>(src.get()._M_impl)) {} -#endif - - _Self& operator= (const _Self& __x) { _M_impl = __x._M_impl; return *this; } - - void swap(_Self& __x) { _M_impl.swap(__x._M_impl); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - void assign(size_type __n, const value_type& __val) { - _M_impl.assign(__n, cast_traits::to_storage_type_cref(__val)); - } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if defined (_STLP_USE_ITERATOR_WRAPPER) -private: - template - void _M_assign_dispatch(_Integer __n, _Integer __val, - const __true_type&) - { _M_impl.assign(__n, __val); } - - template - void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_impl.assign(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__last)); - } - -public: -# endif - template - void assign(_InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_assign_dispatch(__first, __last, _Integral()); -# else - _M_impl.assign(__first, __last); -# endif - } -#else - void assign(const_pointer __first, const_pointer __last) - { _M_impl.assign(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); } - void assign(const_iterator __first, const_iterator __last) - { _M_impl.assign(ite_cast_traits::to_storage_type_cite(__first), - ite_cast_traits::to_storage_type_cite(__last)); } -#endif /* _STLP_MEMBER_TEMPLATES */ - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_back(const value_type& __t = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - void push_back(const value_type& __t) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - { _M_impl.push_back(cast_traits::to_storage_type_cref(__t)); } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_front(const value_type& __t = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - void push_front(const value_type& __t) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - { _M_impl.push_front(cast_traits::to_storage_type_cref(__t)); } - -# if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - void push_back() { _M_impl.push_back(); } - void push_front() { _M_impl.push_front(); } -# endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - void pop_back() { _M_impl.pop_back(); } - void pop_front() { _M_impl.pop_front(); } - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - iterator insert(iterator __pos, const value_type& __x) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - { return ite_cast_traits::to_value_type_ite(_M_impl.insert(ite_cast_traits::to_storage_type_ite(__pos), - cast_traits::to_storage_type_cref(__x))); } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos) { return insert(__pos, _STLP_DEFAULT_CONSTRUCTED(value_type)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - void insert(iterator __pos, size_type __n, const value_type& __x) - { _M_impl.insert(ite_cast_traits::to_storage_type_ite(__pos), __n, cast_traits::to_storage_type_cref(__x)); } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if defined (_STLP_USE_ITERATOR_WRAPPER) -private: - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, - const __true_type&) { - _M_impl.insert(ite_cast_traits::to_storage_type_ite(__pos), __n, __val); - } - - template - void _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_impl.insert(ite_cast_traits::to_storage_type_ite(__pos), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__last)); - } - -public: -# endif - - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - // Check whether it's an integral type. If so, it's not an iterator. - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_insert_dispatch(__pos, __first, __last, _Integral()); -# else - _M_impl.insert(ite_cast_traits::to_storage_type_ite(__pos), __first, __last); -# endif - } - -#else /* _STLP_MEMBER_TEMPLATES */ - void insert(iterator __pos, - const_pointer __first, const_pointer __last) { - _M_impl.insert(ite_cast_traits::to_storage_type_ite(__pos), - cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } - void insert(iterator __pos, - const_iterator __first, const_iterator __last) { - _M_impl.insert(ite_cast_traits::to_storage_type_ite(__pos), - ite_cast_traits::to_storage_type_cite(__first), - ite_cast_traits::to_storage_type_cite(__last)); - } - -#endif /* _STLP_MEMBER_TEMPLATES */ - -#if !defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - void resize(size_type __new_size, const value_type& __x) -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - { _M_impl.resize(__new_size, cast_traits::to_storage_type_cref(__x)); } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size) { _M_impl.resize(__new_size); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - iterator erase(iterator __pos) - { return ite_cast_traits::to_value_type_ite(_M_impl.erase(ite_cast_traits::to_storage_type_ite(__pos))); } - - iterator erase(iterator __first, iterator __last) - { return ite_cast_traits::to_value_type_ite(_M_impl.erase(ite_cast_traits::to_storage_type_ite(__first), - ite_cast_traits::to_storage_type_ite(__last))); } - void clear() { _M_impl.clear(); } - -private: - _Base _M_impl; -}; - -#if defined (deque) -# undef deque -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#undef DEQUE_IMPL -#if defined (__BORLANDC__) || defined (__DMC__) -# undef typename -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_SPECIALIZED_DEQUE_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/pointers/_list.h b/build/stlport/stlport/stl/pointers/_list.h deleted file mode 100644 index 52a9262a7b9c..000000000000 --- a/build/stlport/stlport/stl/pointers/_list.h +++ /dev/null @@ -1,345 +0,0 @@ -/* - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_PTR_SPECIALIZED_LIST_H -#define _STLP_PTR_SPECIALIZED_LIST_H - -#ifndef _STLP_POINTERS_SPEC_TOOLS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#define LIST_IMPL _STLP_PTR_IMPL_NAME(list) -#if defined (__BORLANDC__) || defined (__DMC__) -# define typename -#endif - -#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) - -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_EXPORT_TEMPLATE_CLASS _List_node; - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_EXPORT_TEMPLATE_CLASS allocator<_STLP_PRIV _List_node >; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<_List_node_base, _List_node, allocator<_List_node > >; -_STLP_EXPORT_TEMPLATE_CLASS _List_base >; -_STLP_EXPORT_TEMPLATE_CLASS LIST_IMPL >; - -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#if defined (_STLP_DEBUG) -# define list _STLP_NON_DBG_NAME(list) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -template ) > -class list -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (list) - : public __stlport_class > -#endif -{ - typedef _STLP_TYPENAME _STLP_PRIV _StorageType<_Tp>::_Type _StorageType; - typedef typename _Alloc_traits<_StorageType, _Alloc>::allocator_type _StorageTypeAlloc; - typedef _STLP_PRIV LIST_IMPL<_StorageType, _StorageTypeAlloc> _Base; - typedef typename _Base::iterator _BaseIte; - typedef typename _Base::const_iterator _BaseConstIte; - typedef _STLP_PRIV _CastTraits<_StorageType, _Tp> cast_traits; - typedef list<_Tp, _Alloc> _Self; - -public: - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - _STLP_FORCE_ALLOCATORS(value_type, _Alloc) - typedef typename _Alloc_traits::allocator_type allocator_type; - typedef bidirectional_iterator_tag _Iterator_category; - - typedef _STLP_PRIV _List_iterator > iterator; - typedef _STLP_PRIV _List_iterator > const_iterator; - - _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS; - - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR(_M_impl.get_allocator(), value_type); } - - explicit list(const allocator_type& __a = allocator_type()) - : _M_impl(_STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit list(size_type __n, const value_type& __val = _STLP_DEFAULT_CONSTRUCTED(value_type), -#else - list(size_type __n, const value_type& __val, -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - const allocator_type& __a = allocator_type()) - : _M_impl(__n, cast_traits::to_storage_type_cref(__val), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit list(size_type __n) - : _M_impl(__n) {} -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -#if defined (_STLP_MEMBER_TEMPLATES) - template - list(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) -# if !defined (_STLP_USE_ITERATOR_WRAPPER) - : _M_impl(__first, __last, _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} -# else - : _M_impl(_STLP_CONVERT_ALLOCATOR(__a, _StorageType)) { - insert(begin(), __first, __last); - } -# endif - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - list(_InputIterator __first, _InputIterator __last) -# if !defined (_STLP_USE_WRAPPER_ITERATOR) - : _M_impl(__first, __last) {} -# else - { insert(begin(), __first, __last); } -# endif -# endif - -#else /* _STLP_MEMBER_TEMPLATES */ - - list(const value_type *__first, const value_type *__last, - const allocator_type& __a = allocator_type()) - : _M_impl(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - list(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type()) - : _M_impl(_BaseConstIte(__first._M_node), _BaseConstIte(__last._M_node), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - -#endif /* _STLP_MEMBER_TEMPLATES */ - - list(const _Self& __x) : _M_impl(__x._M_impl) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - list(__move_source<_Self> src) - : _M_impl(__move_source<_Base>(src.get()._M_impl)) {} -#endif - - iterator begin() { return iterator(_M_impl.begin()._M_node); } - const_iterator begin() const { return const_iterator(_M_impl.begin()._M_node); } - - iterator end() { return iterator(_M_impl.end()._M_node); } - const_iterator end() const { return const_iterator(_M_impl.end()._M_node); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - bool empty() const { return _M_impl.empty(); } - size_type size() const { return _M_impl.size(); } - size_type max_size() const { return _M_impl.max_size(); } - - reference front() { return *begin(); } - const_reference front() const { return *begin(); } - reference back() { return *(--end()); } - const_reference back() const { return *(--end()); } - - void swap(_Self &__x) { _M_impl.swap(__x._M_impl); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - void clear() { _M_impl.clear(); } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos, const_reference __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - iterator insert(iterator __pos, const_reference __x) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - { return iterator(_M_impl.insert(_BaseIte(__pos._M_node), - cast_traits::to_storage_type_cref(__x))._M_node); } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if defined (_STLP_USE_ITERATOR_WRAPPER) -private: - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, - const __true_type&) - { _M_impl.insert(_BaseIte(__pos._M_node), __n, __val); } - - template - void _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_impl.insert(_BaseIte(__pos._M_node), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__last)); - } - -public: -# endif - - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - // Check whether it's an integral type. If so, it's not an iterator. - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_insert_dispatch(__pos, __first, __last, _Integral()); -# else - _M_impl.insert(_BaseIte(__pos._M_node), __first, __last); -# endif - } -#else /* _STLP_MEMBER_TEMPLATES */ - void insert(iterator __pos, const value_type *__first, const value_type *__last) - { _M_impl.insert(_BaseIte(__pos._M_node), cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); } - void insert(iterator __pos, const_iterator __first, const_iterator __last) - { _M_impl.insert(_BaseIte(__pos._M_node), _BaseConstIte(__first._M_node), _BaseConstIte(__last._M_node)); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - void insert(iterator __pos, size_type __n, const value_type& __x) - { _M_impl.insert(_BaseIte(__pos._M_node), __n, cast_traits::to_storage_type_cref(__x)); } - - void push_front(const value_type& __x) { _M_impl.push_front(cast_traits::to_storage_type_cref(__x)); } - void push_back(const value_type& __x) { _M_impl.push_back(cast_traits::to_storage_type_cref(__x)); } - -#if defined (_STLP_DONT_SUP_DFLT_PARAM) && !defined (_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos) { return iterator(_M_impl.insert(__pos._M_node)._M_node); } - void push_front() { _M_impl.push_front();} - void push_back() { _M_impl.push_back();} -# endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - iterator erase(iterator __pos) - { return iterator(_M_impl.erase(_BaseIte(__pos._M_node))._M_node); } - iterator erase(iterator __first, iterator __last) - { return iterator(_M_impl.erase(_BaseIte(__first._M_node), _BaseIte(__last._M_node))._M_node); } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - void resize(size_type __new_size) { _M_impl.resize(__new_size); } - void resize(size_type __new_size, const value_type& __x) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM*/ - {_M_impl.resize(__new_size, cast_traits::to_storage_type_cref(__x));} - - void pop_front() { _M_impl.pop_front(); } - void pop_back() { _M_impl.pop_back(); } - - _Self& operator=(const _Self& __x) - { _M_impl = __x._M_impl; return *this; } - void assign(size_type __n, const value_type& __val) - { _M_impl.assign(__n, cast_traits::to_storage_type_cref(__val)); } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if defined (_STLP_USE_ITERATOR_WRAPPER) -private: - template - void _M_assign_dispatch(_Integer __n, _Integer __val, const __true_type&) - { _M_impl.assign(__n, __val); } - - template - void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_impl.assign(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__last)); - } - -public: -# endif - - template - void assign(_InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_assign_dispatch(__first, __last, _Integral()); -# else - _M_impl.assign(__first, __last); -# endif - } -#else - void assign(const value_type *__first, const value_type *__last) { - _M_impl.assign(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } - void assign(const_iterator __first, const_iterator __last) - { _M_impl.assign(_BaseConstIte(__first._M_node), _BaseConstIte(__last._M_node)); } -#endif - - void splice(iterator __pos, _Self& __x) - { _M_impl.splice(_BaseIte(__pos._M_node), __x._M_impl); } - void splice(iterator __pos, _Self& __x, iterator __i) - { _M_impl.splice(_BaseIte(__pos._M_node), __x._M_impl, _BaseIte(__i._M_node)); } - void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) - { _M_impl.splice(_BaseIte(__pos._M_node), __x._M_impl, - _BaseIte(__first._M_node), _BaseIte(__last._M_node)); } - - void remove(const_reference __val) - { _M_impl.remove(cast_traits::to_storage_type_cref(__val)); } - void unique() { _M_impl.unique(); } - void merge(_Self& __x) { _M_impl.merge(__x._M_impl); } - void reverse() { _M_impl.reverse(); } - void sort() { _M_impl.sort(); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void remove_if(_Predicate __pred) - { _M_impl.remove_if(_STLP_PRIV _UnaryPredWrapper<_StorageType, _Tp, _Predicate>(__pred)); } - template - void unique(_BinaryPredicate __bin_pred) - { _M_impl.unique(_STLP_PRIV _BinaryPredWrapper<_StorageType, _Tp, _BinaryPredicate>(__bin_pred)); } - - template - void merge(_Self &__x, _StrictWeakOrdering __comp) - { _M_impl.merge(__x._M_impl, _STLP_PRIV _BinaryPredWrapper<_StorageType, _Tp, _StrictWeakOrdering>(__comp)); } - - template - void sort(_StrictWeakOrdering __comp) - { _M_impl.sort(_STLP_PRIV _BinaryPredWrapper<_StorageType, _Tp, _StrictWeakOrdering>(__comp)); } -#endif /* _STLP_MEMBER_TEMPLATES */ - -private: - _Base _M_impl; -}; - -#if defined (list) -# undef list -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#undef LIST_IMPL -#if defined (__BORLANDC__) || defined (__DMC__) -# undef typename -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_PTR_SPECIALIZED_LIST_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/pointers/_set.h b/build/stlport/stlport/stl/pointers/_set.h deleted file mode 100644 index f997a5ae13e6..000000000000 --- a/build/stlport/stlport/stl/pointers/_set.h +++ /dev/null @@ -1,564 +0,0 @@ -/* - * Copyright (c) 2005 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_PTR_SPECIALIZED_SET_H -#define _STLP_PTR_SPECIALIZED_SET_H - -#ifndef _STLP_POINTERS_SPEC_TOOLS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#if defined (__BORLANDC__) || defined (__DMC__) -# define typename -#endif - -//Specific iterator traits creation -_STLP_CREATE_ITERATOR_TRAITS(SetTraitsT, Const_traits) - -#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -_STLP_EXPORT template struct _STLP_CLASS_DECLSPEC less; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -typedef _Rb_tree_node _Node; -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<_Rb_tree_node_base, _Node, allocator<_Node> >; -_STLP_EXPORT_TEMPLATE_CLASS _Rb_tree_base >; -# if defined (_STLP_DEBUG) -_STLP_EXPORT_TEMPLATE_CLASS _DbgCompare >; -# define _Rb_tree _STLP_NON_DBG_NAME(Rb_tree) -_STLP_EXPORT_TEMPLATE_CLASS _Rb_tree >, void*, _Identity, - _SetTraitsT, allocator >; -# undef _Rb_tree -# endif -_STLP_EXPORT_TEMPLATE_CLASS _Rb_tree, void*, _Identity, - _SetTraitsT, allocator >; -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -template ), - _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Key>) > -class set -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ -#if !defined (__BORLANDC__) - typedef _STLP_PRIV _AssocStorageTypes<_Key, _Compare> _AssocStorageTypes; - typedef typename _AssocStorageTypes::_KeyStorageType _KeyStorageType; - typedef typename _AssocStorageTypes::_CompareStorageType _CompareStorageType; -#else - typedef _STLP_PRIV _AssocStorageTypes<_Key, _Compare>::_KeyStorageType _KeyStorageType; - typedef _STLP_PRIV _AssocStorageTypes<_Key, _Compare>::_CompareStorageType _CompareStorageType; -#endif - typedef typename _Alloc_traits<_KeyStorageType, _Alloc>::allocator_type _StorageTypeAlloc; - typedef _STLP_PRIV _CastTraits<_KeyStorageType, _Key> cast_traits; - - typedef set<_Key, _Compare, _Alloc> _Self; -public: - typedef _Key key_type; - typedef _Key value_type; - typedef _Compare key_compare; - typedef _Compare value_compare; - -protected: - //Specific iterator traits creation - typedef _STLP_PRIV _SetTraitsT _SetTraits; - typedef _STLP_PRIV _Rb_tree, - _SetTraits, _Alloc> _Priv_Rep_type; - - typedef _STLP_PRIV _SetTraitsT<_KeyStorageType> _SetStorageTraits; - -public: - //dums: need the following public for the __move_traits framework - typedef _STLP_PRIV _Rb_tree<_KeyStorageType, _CompareStorageType, - _KeyStorageType, _STLP_PRIV _Identity<_KeyStorageType>, - _SetStorageTraits, _StorageTypeAlloc> _Rep_type; - -private: - typedef typename _Rep_type::iterator base_iterator; - typedef typename _Rep_type::const_iterator const_base_iterator; - -public: - typedef typename _Priv_Rep_type::pointer pointer; - typedef typename _Priv_Rep_type::const_pointer const_pointer; - typedef typename _Priv_Rep_type::reference reference; - typedef typename _Priv_Rep_type::const_reference const_reference; - typedef typename _Priv_Rep_type::iterator iterator; - typedef typename _Priv_Rep_type::const_iterator const_iterator; - typedef typename _Priv_Rep_type::reverse_iterator reverse_iterator; - typedef typename _Priv_Rep_type::const_reverse_iterator const_reverse_iterator; - typedef typename _Priv_Rep_type::size_type size_type; - typedef typename _Priv_Rep_type::difference_type difference_type; - typedef typename _Priv_Rep_type::allocator_type allocator_type; - -private: - _Rep_type _M_t; // red-black tree representing set - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -#if defined (_STLP_DEBUG) - static iterator _S_to_value_ite(const_base_iterator __ite) - { return iterator(__ite._Owner(), __ite._M_iterator._M_node); } - static base_iterator _S_to_storage_ite(const_iterator __ite) - { return base_iterator(__ite._Owner(), __ite._M_iterator._M_node); } -#else - static iterator _S_to_value_ite(const_base_iterator __ite) - { return iterator(__ite._M_node); } - static base_iterator _S_to_storage_ite(const_iterator __ite) - { return base_iterator(__ite._M_node); } -#endif - -public: - set() : _M_t(_CompareStorageType(), _StorageTypeAlloc()) {} - explicit set(const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, _STLP_CONVERT_ALLOCATOR(__a, _KeyStorageType)) {} - -#if defined (_STLP_MEMBER_TEMPLATES) - template - set(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), _StorageTypeAlloc()) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - _M_t.insert_unique(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__last)); -# else - _M_t.insert_unique(__first, __last); -# endif - } - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - set(_InputIterator __first, _InputIterator __last, const _Compare& __comp) - : _M_t(__comp, _StorageTypeAlloc()) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - _M_t.insert_unique(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__last)); -# else - _M_t.insert_unique(__first, __last); -# endif - } -# endif - template - set(_InputIterator __first, _InputIterator __last, const _Compare& __comp, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_t(__comp, _STLP_CONVERT_ALLOCATOR(__a, _KeyStorageType)) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - _M_t.insert_unique(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__last)); -# else - _M_t.insert_unique(__first, __last); -# endif - } -#else - set(const value_type* __first, const value_type* __last) - : _M_t(_Compare(), _StorageTypeAlloc()) { - _M_t.insert_unique(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } - - set(const value_type* __first, const value_type* __last, - const _Compare& __comp, const allocator_type& __a = allocator_type()) - : _M_t(__comp, _STLP_CONVERT_ALLOCATOR(__a, _KeyStorageType)) { - _M_t.insert_unique(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } - - set(const_iterator __first, const_iterator __last) - : _M_t(_Compare(), _StorageTypeAlloc()) - { _M_t.insert_unique(_S_to_storage_ite(__first), _S_to_storage_ite(__last)); } - - set(const_iterator __first, const_iterator __last, - const _Compare& __comp, const allocator_type& __a = allocator_type()) - : _M_t(__comp, _STLP_CONVERT_ALLOCATOR(__a, _KeyStorageType)) - { _M_t.insert_unique(_S_to_storage_ite(__first), _S_to_storage_ite(__last)); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - set(const _Self& __x) : _M_t(__x._M_t) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - set(__move_source<_Self> src) - : _M_t(__move_source<_Rep_type>(src.get()._M_t)) {} -#endif - - _Self& operator=(const _Self& __x) { - _M_t = __x._M_t; - return *this; - } - - // accessors: - key_compare key_comp() const { return _M_t.key_comp(); } - value_compare value_comp() const { return _M_t.key_comp(); } - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR(_M_t.get_allocator(), value_type); } - - iterator begin() { return _S_to_value_ite(_M_t.begin()); } - iterator end() { return _S_to_value_ite(_M_t.end()); } - const_iterator begin() const { return _S_to_value_ite(_M_t.begin()); } - const_iterator end() const { return _S_to_value_ite(_M_t.end()); } - reverse_iterator rbegin() { return reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - bool empty() const { return _M_t.empty(); } - size_type size() const { return _M_t.size(); } - size_type max_size() const { return _M_t.max_size(); } - void swap(_Self& __x) { _M_t.swap(__x._M_t); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - // insert/erase - pair insert(const value_type& __x) { - pair ret = _M_t.insert_unique(cast_traits::to_storage_type_cref(__x)); - return pair(_S_to_value_ite(ret.first), ret.second); - } - iterator insert(iterator __pos, const value_type& __x) - { return _S_to_value_ite(_M_t.insert_unique(_S_to_storage_ite(__pos), cast_traits::to_storage_type_cref(__x))); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - _M_t.insert_unique(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__last)); -# else - _M_t.insert_unique(__first, __last); -# endif - } -#else - void insert(const_iterator __first, const_iterator __last) - { _M_t.insert_unique(_S_to_storage_ite(__first), _S_to_storage_ite(__last)); } - void insert(const value_type* __first, const value_type* __last) { - _M_t.insert_unique(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } -#endif - void erase(iterator __pos) - { _M_t.erase(_S_to_storage_ite(__pos)); } - size_type erase(const key_type& __x) - { return _M_t.erase_unique(cast_traits::to_storage_type_cref(__x)); } - void erase(iterator __first, iterator __last) - { _M_t.erase(_S_to_storage_ite(__first), _S_to_storage_ite(__last)); } - void clear() { _M_t.clear(); } - - // set operations: - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __x) const - { return _S_to_value_ite(_M_t.find(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __x) - { return _S_to_value_ite(_M_t.find(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __x) const - { return _M_t.find(cast_traits::to_storage_type_crefT(__x)) == _M_t.end() ? 0 : 1; } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator lower_bound(const _KT& __x) - { return _S_to_value_ite(_M_t.lower_bound(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator lower_bound(const _KT& __x) const - { return _S_to_value_ite(_M_t.lower_bound(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator upper_bound(const _KT& __x) - { return _S_to_value_ite(_M_t.upper_bound(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator upper_bound(const _KT& __x) const - { return _S_to_value_ite(_M_t.upper_bound(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) { - pair __ret; - __ret = _M_t.equal_range(cast_traits::to_storage_type_crefT(__x)); - return pair(_S_to_value_ite(__ret.first), - _S_to_value_ite(__ret.second)); - } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) const { - pair __ret; - __ret = _M_t.equal_range_unique(cast_traits::to_storage_type_crefT(__x)); - return pair(_S_to_value_ite(__ret.first), - _S_to_value_ite(__ret.second)); - } -}; - -//Specific iterator traits creation -_STLP_CREATE_ITERATOR_TRAITS(MultisetTraitsT, Const_traits) - -template ), - _STLP_DFL_TMPL_PARAM(_Alloc, allocator<_Key>) > -class multiset -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) - : public __stlport_class > -#endif -{ -#if !defined (__BORLANDC__) - typedef _STLP_PRIV _AssocStorageTypes<_Key, _Compare> _AssocStorageTypes; - typedef typename _AssocStorageTypes::_KeyStorageType _KeyStorageType; - typedef typename _AssocStorageTypes::_CompareStorageType _CompareStorageType; -#else - typedef _STLP_PRIV _AssocStorageTypes<_Key, _Compare>::_KeyStorageType _KeyStorageType; - typedef _STLP_PRIV _AssocStorageTypes<_Key, _Compare>::_CompareStorageType _CompareStorageType; -#endif - typedef typename _Alloc_traits<_KeyStorageType, _Alloc>::allocator_type _StorageTypeAlloc; - typedef _STLP_PRIV _CastTraits<_KeyStorageType, _Key> cast_traits; - - typedef multiset<_Key, _Compare, _Alloc> _Self; -public: - // typedefs: - typedef _Key key_type; - typedef _Key value_type; - typedef _Compare key_compare; - typedef _Compare value_compare; - -protected: - //Specific iterator traits creation - typedef _STLP_PRIV _MultisetTraitsT _MultisetTraits; - typedef _STLP_PRIV _Rb_tree, - _MultisetTraits, _Alloc> _Priv_Rep_type; - - typedef _STLP_PRIV _MultisetTraitsT<_KeyStorageType> _MultisetStorageTraits; -public: - //dums: need the following public for the __move_traits framework - typedef _STLP_PRIV _Rb_tree<_KeyStorageType, _CompareStorageType, - _KeyStorageType, _STLP_PRIV _Identity<_KeyStorageType>, - _MultisetStorageTraits, _StorageTypeAlloc> _Rep_type; - -private: - typedef typename _Rep_type::iterator base_iterator; - typedef typename _Rep_type::const_iterator const_base_iterator; - -public: - typedef typename _Priv_Rep_type::pointer pointer; - typedef typename _Priv_Rep_type::const_pointer const_pointer; - typedef typename _Priv_Rep_type::reference reference; - typedef typename _Priv_Rep_type::const_reference const_reference; - typedef typename _Priv_Rep_type::iterator iterator; - typedef typename _Priv_Rep_type::const_iterator const_iterator; - typedef typename _Priv_Rep_type::reverse_iterator reverse_iterator; - typedef typename _Priv_Rep_type::const_reverse_iterator const_reverse_iterator; - typedef typename _Priv_Rep_type::size_type size_type; - typedef typename _Priv_Rep_type::difference_type difference_type; - typedef typename _Priv_Rep_type::allocator_type allocator_type; - -private: - _Rep_type _M_t; // red-black tree representing multiset - _STLP_KEY_TYPE_FOR_CONT_EXT(key_type) - -#if defined (_STLP_DEBUG) - static iterator _S_to_value_ite(const_base_iterator __ite) - { return iterator(__ite._Owner(), __ite._M_iterator._M_node); } - static base_iterator _S_to_storage_ite(const_iterator __ite) - { return base_iterator(__ite._Owner(), __ite._M_iterator._M_node); } -#else - static iterator _S_to_value_ite(const_base_iterator __ite) - { return iterator(__ite._M_node); } - static base_iterator _S_to_storage_ite(const_iterator __ite) - { return base_iterator(__ite._M_node); } -#endif - -public: - multiset() : _M_t(_Compare(), _StorageTypeAlloc()) {} - explicit multiset(const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, _STLP_CONVERT_ALLOCATOR(__a, _KeyStorageType)) {} - -#if defined (_STLP_MEMBER_TEMPLATES) - template - multiset(_InputIterator __first, _InputIterator __last) - : _M_t(_Compare(), _StorageTypeAlloc()) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - _M_t.insert_equal(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__last)); -# else - _M_t.insert_equal(__first, __last); -# endif - } - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - multiset(_InputIterator __first, _InputIterator __last, - const _Compare& __comp) - : _M_t(__comp, _StorageTypeAlloc()) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - _M_t.insert_equal(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__last)); -# else - _M_t.insert_equal(__first, __last); -# endif - } -# endif - template - multiset(_InputIterator __first, _InputIterator __last, - const _Compare& __comp, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) - : _M_t(__comp, _STLP_CONVERT_ALLOCATOR(__a, _KeyStorageType)) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - _M_t.insert_equal(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__last)); -# else - _M_t.insert_equal(__first, __last); -# endif - } - -#else - multiset(const value_type* __first, const value_type* __last) - : _M_t(_Compare(), _StorageTypeAlloc()) { - _M_t.insert_equal(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } - - multiset(const value_type* __first, const value_type* __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, _STLP_CONVERT_ALLOCATOR(__a, _KeyStorageType)) { - _M_t.insert_equal(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } - - multiset(const_iterator __first, const_iterator __last) - : _M_t(_Compare(), _StorageTypeAlloc()) - { _M_t.insert_equal(_S_to_storage_ite(__first), _S_to_storage_ite(__last)); } - - multiset(const_iterator __first, const_iterator __last, - const _Compare& __comp, - const allocator_type& __a = allocator_type()) - : _M_t(__comp, _STLP_CONVERT_ALLOCATOR(__a, _KeyStorageType)) - { _M_t.insert_equal(_S_to_storage_ite(__first), _S_to_storage_ite(__last)); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - multiset(const _Self& __x) - : _M_t(__x._M_t) {} - - _Self& operator=(const _Self& __x) { - _M_t = __x._M_t; - return *this; - } - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - multiset(__move_source<_Self> src) - : _M_t(__move_source<_Rep_type>(src.get()._M_t)) {} -#endif - - // accessors: - key_compare key_comp() const { return _M_t.key_comp(); } - value_compare value_comp() const { return _M_t.key_comp(); } - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR(_M_t.get_allocator(), value_type); } - - iterator begin() { return _S_to_value_ite(_M_t.begin()); } - iterator end() { return _S_to_value_ite(_M_t.end()); } - const_iterator begin() const { return _S_to_value_ite(_M_t.begin()); } - const_iterator end() const { return _S_to_value_ite(_M_t.end()); } - reverse_iterator rbegin() { return reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - bool empty() const { return _M_t.empty(); } - size_type size() const { return _M_t.size(); } - size_type max_size() const { return _M_t.max_size(); } - void swap(_Self& __x) { _M_t.swap(__x._M_t); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - - // insert/erase - iterator insert(const value_type& __x) - { return _S_to_value_ite(_M_t.insert_equal(cast_traits::to_storage_type_cref(__x))); } - iterator insert(iterator __pos, const value_type& __x) { - return _S_to_value_ite(_M_t.insert_equal(_S_to_storage_ite(__pos), - cast_traits::to_storage_type_cref(__x))); - } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(_InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - _M_t.insert_equal(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_KeyStorageType, _Key, _InputIterator>::_Ite(__last)); -# else - _M_t.insert_equal(__first, __last); -# endif - } -#else - void insert(const value_type* __first, const value_type* __last) { - _M_t.insert_equal(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } - void insert(const_iterator __first, const_iterator __last) - { _M_t.insert_equal(_S_to_storage_ite(__first), _S_to_storage_ite(__last)); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - void erase(iterator __pos) - { _M_t.erase(_S_to_storage_ite(__pos)); } - size_type erase(const key_type& __x) - { return _M_t.erase(cast_traits::to_storage_type_cref(__x)); } - void erase(iterator __first, iterator __last) - { _M_t.erase(_S_to_storage_ite(__first), _S_to_storage_ite(__last)); } - void clear() { _M_t.clear(); } - - // multiset operations: - - _STLP_TEMPLATE_FOR_CONT_EXT - iterator find(const _KT& __x) - { return _S_to_value_ite(_M_t.find(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator find(const _KT& __x) const - { return _S_to_value_ite(_M_t.find(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - size_type count(const _KT& __x) const - { return _M_t.count(cast_traits::to_storage_type_crefT(__x)); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator lower_bound(const _KT& __x) - { return _S_to_value_ite(_M_t.lower_bound(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator lower_bound(const _KT& __x) const - { return _S_to_value_ite(_M_t.lower_bound(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - iterator upper_bound(const _KT& __x) - { return _S_to_value_ite(_M_t.upper_bound(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - const_iterator upper_bound(const _KT& __x) const - { return _S_to_value_ite(_M_t.upper_bound(cast_traits::to_storage_type_crefT(__x))); } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) { - pair __ret; - __ret = _M_t.equal_range(cast_traits::to_storage_type_crefT(__x)); - return pair(_S_to_value_ite(__ret.first), - _S_to_value_ite(__ret.second)); - } - _STLP_TEMPLATE_FOR_CONT_EXT - pair equal_range(const _KT& __x) const { - pair __ret; - __ret = _M_t.equal_range(cast_traits::to_storage_type_crefT(__x)); - return pair(_S_to_value_ite(__ret.first), - _S_to_value_ite(__ret.second)); - } -}; - -#if defined (__BORLANDC__) || defined (__DMC__) -# undef typename -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_PTR_SPECIALIZED_SET_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/pointers/_slist.h b/build/stlport/stlport/stl/pointers/_slist.h deleted file mode 100644 index 76189fe0ed03..000000000000 --- a/build/stlport/stlport/stl/pointers/_slist.h +++ /dev/null @@ -1,427 +0,0 @@ -/* - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_SPECIALIZED_SLIST_H -#define _STLP_SPECIALIZED_SLIST_H - -#ifndef _STLP_POINTERS_SPEC_TOOLS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#define SLIST_IMPL _STLP_PTR_IMPL_NAME(slist) - -#if defined (__BORLANDC__) || defined (__DMC__) -# define typename -#endif - -#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -_STLP_MOVE_TO_PRIV_NAMESPACE - -_STLP_EXPORT_TEMPLATE_CLASS _Slist_node; -typedef _Slist_node _VoidPtrSNode; -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<_Slist_node_base, _VoidPtrSNode, allocator<_VoidPtrSNode> >; -_STLP_EXPORT_TEMPLATE_CLASS _Slist_base >; -_STLP_EXPORT_TEMPLATE_CLASS SLIST_IMPL >; - -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#if defined (_STLP_DEBUG) -# define slist _STLP_NON_DBG_NAME(slist) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -template ) > -class slist -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (slist) - : public __stlport_class > -#endif -{ - typedef _STLP_TYPENAME _STLP_PRIV _StorageType<_Tp>::_Type _StorageType; - typedef typename _Alloc_traits<_StorageType, _Alloc>::allocator_type _StorageTypeAlloc; - typedef _STLP_PRIV SLIST_IMPL<_StorageType, _StorageTypeAlloc> _Base; - typedef typename _Base::iterator _BaseIte; - typedef typename _Base::const_iterator _BaseConstIte; - typedef slist<_Tp, _Alloc> _Self; - typedef _STLP_PRIV _CastTraits<_StorageType, _Tp> cast_traits; - typedef _STLP_PRIV _Slist_node_base _Node_base; - -public: - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef forward_iterator_tag _Iterator_category; - - typedef _STLP_PRIV _Slist_iterator > iterator; - typedef _STLP_PRIV _Slist_iterator > const_iterator; - - _STLP_FORCE_ALLOCATORS(value_type, _Alloc) - typedef typename _Alloc_traits::allocator_type allocator_type; - -public: - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR(_M_impl.get_allocator(), value_type); } - - explicit slist(const allocator_type& __a = allocator_type()) - : _M_impl(_STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit slist(size_type __n, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type), -#else - slist(size_type __n, const value_type& __x, -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - const allocator_type& __a = allocator_type()) - : _M_impl(__n, cast_traits::to_storage_type_cref(__x), _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit slist(size_type __n) : _M_impl(__n) {} -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - -#if defined (_STLP_MEMBER_TEMPLATES) - // We don't need any dispatching tricks here, because _M_insert_after_range - // already does them. - template - slist(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL) -# if !defined (_STLP_USE_ITERATOR_WRAPPER) - : _M_impl(__first, __last, _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} -# else - : _M_impl(_STLP_CONVERT_ALLOCATOR(__a, _StorageType)) { - insert_after(before_begin(), __first, __last); - } -# endif -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - // VC++ needs this crazyness - template - slist(_InputIterator __first, _InputIterator __last) -# if !defined (_STLP_USE_WRAPPER_ITERATOR) - : _M_impl(__first, __last) {} -# else - { insert_after(before_begin(), __first, __last); } -# endif -# endif -#else /* _STLP_MEMBER_TEMPLATES */ - slist(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type() ) - : _M_impl(_BaseConstIte(__first._M_node), _BaseConstIte(__last._M_node), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - slist(const value_type* __first, const value_type* __last, - const allocator_type& __a = allocator_type()) - : _M_impl(cast_traits::to_storage_type_cptr(__first), cast_traits::to_storage_type_cptr(__last), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} -#endif /* _STLP_MEMBER_TEMPLATES */ - - slist(const _Self& __x) : _M_impl(__x._M_impl) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - slist(__move_source<_Self> src) - : _M_impl(__move_source<_Base>(src.get()._M_impl)) {} -#endif - - _Self& operator= (const _Self& __x) { _M_impl = __x._M_impl; return *this; } - - void assign(size_type __n, const value_type& __val) - { _M_impl.assign(__n, cast_traits::to_storage_type_cref(__val)); } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if defined (_STLP_USE_ITERATOR_WRAPPER) -private: - template - void _M_assign_dispatch(_Integer __n, _Integer __val, - const __true_type&) - { _M_impl.assign(__n, __val); } - - template - void _M_assign_dispatch(_InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_impl.assign(_STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__last)); - } - -public: -# endif - - template - void assign(_InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_assign_dispatch(__first, __last, _Integral()); -# else - _M_impl.assign(__first, __last); -# endif - } -#else - void assign(const value_type *__first, const value_type *__last) { - _M_impl.assign(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } - void assign(const_iterator __first, const_iterator __last) { - _M_impl.assign(_BaseConstIte(__first._M_node), - _BaseConstIte(__last._M_node)); - } -#endif /* _STLP_MEMBER_TEMPLATES */ - - iterator before_begin() { return iterator(_M_impl.before_begin()._M_node); } - const_iterator before_begin() const { return const_iterator(const_cast<_Node_base*>(_M_impl.before_begin()._M_node)); } - - iterator begin() { return iterator(_M_impl.begin()._M_node); } - const_iterator begin() const { return const_iterator(const_cast<_Node_base*>(_M_impl.begin()._M_node));} - - iterator end() { return iterator(_M_impl.end()._M_node); } - const_iterator end() const { return iterator(_M_impl.end()._M_node); } - - size_type size() const { return _M_impl.size(); } - size_type max_size() const { return _M_impl.max_size(); } - bool empty() const { return _M_impl.empty(); } - - void swap(_Self& __x) { _M_impl.swap(__x._M_impl); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -public: - reference front() { return *begin(); } - const_reference front() const { return *begin(); } -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - void push_front(const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - void push_front(const value_type& __x) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - { _M_impl.push_front(cast_traits::to_storage_type_cref(__x)); } - -# if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - void push_front() { _M_impl.push_front();} -# endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - void pop_front() { _M_impl.pop_front(); } - - iterator previous(const_iterator __pos) - { return iterator(_M_impl.previous(_BaseConstIte(__pos._M_node))._M_node); } - const_iterator previous(const_iterator __pos) const - { return const_iterator(const_cast<_Node_base*>(_M_impl.previous(_BaseConstIte(__pos._M_node))._M_node)); } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - iterator insert_after(iterator __pos, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - iterator insert_after(iterator __pos, const value_type& __x) -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - { return iterator(_M_impl.insert_after(_BaseIte(__pos._M_node), - cast_traits::to_storage_type_cref(__x))._M_node); } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - iterator insert_after(iterator __pos) - { return iterator(_M_impl.insert_after(_BaseIte(__pos._M_node))._M_node);} -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void insert_after(iterator __pos, size_type __n, const value_type& __x) - { _M_impl.insert_after(_BaseIte(__pos._M_node), __n, cast_traits::to_storage_type_cref(__x)); } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if defined (_STLP_USE_ITERATOR_WRAPPER) -private: - template - void _M_insert_after_dispatch(iterator __pos, _Integer __n, _Integer __val, - const __true_type&) { - _M_impl.insert_after(_BaseIte(__pos._M_node), __n, __val); - } - - template - void _M_insert_after_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_impl.insert_after(_BaseIte(__pos._M_node), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__last)); - } - -public: -# endif - - template - void insert_after(iterator __pos, _InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - // Check whether it's an integral type. If so, it's not an iterator. - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_insert_after_dispatch(__pos, __first, __last, _Integral()); -# else - _M_impl.insert_after(_BaseIte(__pos._M_node), __first, __last); -# endif - } - -#else /* _STLP_MEMBER_TEMPLATES */ - void insert_after(iterator __pos, - const_iterator __first, const_iterator __last) - { _M_impl.insert_after(_BaseIte(__pos._M_node), - _BaseConstIte(__first._M_node), _BaseConstIte(__last._M_node)); } - void insert_after(iterator __pos, - const value_type* __first, const value_type* __last) { - _M_impl.insert_after(_BaseIte(__pos._M_node), - cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } -#endif /* _STLP_MEMBER_TEMPLATES */ - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - iterator insert(iterator __pos, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - iterator insert(iterator __pos, const value_type& __x) -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - { return iterator(_M_impl.insert(_BaseIte(__pos._M_node), - cast_traits::to_storage_type_cref(__x))._M_node); } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - iterator insert(iterator __pos) - { return iterator(_M_impl.insert(_BaseIte(__pos._M_node))._M_node); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void insert(iterator __pos, size_type __n, const value_type& __x) - { _M_impl.insert(_BaseIte(__pos._M_node), __n, cast_traits::to_storage_type_cref(__x)); } - -#if defined (_STLP_MEMBER_TEMPLATES) -# if defined (_STLP_USE_ITERATOR_WRAPPER) -private: - template - void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val, - const __true_type&) { - _M_impl.insert(_BaseIte(__pos._M_node), __n, __val); - } - - template - void _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - const __false_type&) { - _M_impl.insert(_BaseIte(__pos._M_node), _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__first), - _STLP_TYPENAME _STLP_PRIV _IteWrapper<_StorageType, _Tp, _InputIterator>::_Ite(__last)); - } - -public: -# endif - - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) { -# if defined (_STLP_USE_ITERATOR_WRAPPER) - // Check whether it's an integral type. If so, it's not an iterator. - typedef typename _IsIntegral<_InputIterator>::_Ret _Integral; - _M_insert_dispatch(__pos, __first, __last, _Integral()); -# else - _M_impl.insert(_BaseIte(__pos._M_node), __first, __last); -# endif - } - -#else /* _STLP_MEMBER_TEMPLATES */ - void insert(iterator __pos, const_iterator __first, const_iterator __last) - { _M_impl.insert(_BaseIte(__pos._M_node), _BaseConstIte(__first._M_node), _BaseConstIte(__last._M_node)); } - void insert(iterator __pos, const value_type* __first, const value_type* __last) - { _M_impl.insert(_BaseIte(__pos._M_node), cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); } -#endif /* _STLP_MEMBER_TEMPLATES */ - - iterator erase_after(iterator __pos) - { return iterator(_M_impl.erase_after(_BaseIte(__pos._M_node))._M_node); } - iterator erase_after(iterator __before_first, iterator __last) - { return iterator(_M_impl.erase_after(_BaseIte(__before_first._M_node), - _BaseIte(__last._M_node))._M_node); } - - iterator erase(iterator __pos) - { return iterator(_M_impl.erase(_BaseIte(__pos._M_node))._M_node); } - iterator erase(iterator __first, iterator __last) - { return iterator(_M_impl.erase(_BaseIte(__first._M_node), _BaseIte(__last._M_node))._M_node); } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - void resize(size_type __new_size, const value_type& __x) -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - { _M_impl.resize(__new_size, cast_traits::to_storage_type_cref(__x));} - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size) { _M_impl.resize(__new_size); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void clear() { _M_impl.clear(); } - - void splice_after(iterator __pos, _Self& __x, - iterator __before_first, iterator __before_last) - { _M_impl.splice_after(_BaseIte(__pos._M_node), __x._M_impl, - _BaseIte(__before_first._M_node), _BaseIte(__before_last._M_node)); } - void splice_after(iterator __pos, _Self& __x, iterator __prev) - { _M_impl.splice_after(_BaseIte(__pos._M_node), __x._M_impl, _BaseIte(__prev._M_node)); } - void splice_after(iterator __pos, _Self& __x) - { _M_impl.splice_after(_BaseIte(__pos._M_node), __x._M_impl); } - void splice(iterator __pos, _Self& __x) - { _M_impl.splice(_BaseIte(__pos._M_node), __x._M_impl); } - void splice(iterator __pos, _Self& __x, iterator __i) - { _M_impl.splice(_BaseIte(__pos._M_node), __x._M_impl, _BaseIte(__i._M_node)); } - void splice(iterator __pos, _Self& __x, iterator __first, iterator __last) - { _M_impl.splice(_BaseIte(__pos._M_node), __x._M_impl, - _BaseIte(__first._M_node), _BaseIte(__last._M_node)); } - - void reverse() { _M_impl.reverse(); } - - void remove(const value_type& __val) { _M_impl.remove(cast_traits::to_storage_type_cref(__val)); } - void unique() { _M_impl.unique(); } - void merge(_Self& __x) { _M_impl.merge(__x._M_impl); } - void sort() {_M_impl.sort(); } - -#ifdef _STLP_MEMBER_TEMPLATES - template - void remove_if(_Predicate __pred) - { _M_impl.remove_if(_STLP_PRIV _UnaryPredWrapper<_StorageType, _Tp, _Predicate>(__pred)); } - - template - void unique(_BinaryPredicate __pred) - { _M_impl.unique(_STLP_PRIV _BinaryPredWrapper<_StorageType, _Tp, _BinaryPredicate>(__pred)); } - - template - void merge(_Self& __x, _StrictWeakOrdering __comp) - { _M_impl.merge(__x._M_impl, _STLP_PRIV _BinaryPredWrapper<_StorageType, _Tp, _StrictWeakOrdering>(__comp)); } - - template - void sort(_StrictWeakOrdering __comp) - { _M_impl.sort(_STLP_PRIV _BinaryPredWrapper<_StorageType, _Tp, _StrictWeakOrdering>(__comp)); } -#endif /* _STLP_MEMBER_TEMPLATES */ - -private: - _Base _M_impl; -}; - -#if defined (slist) -# undef slist -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#undef SLIST_IMPL - -#if defined (__BORLANDC__) || defined (__DMC__) -# undef typename -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_SPECIALIZED_SLIST_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/stl/pointers/_tools.h b/build/stlport/stlport/stl/pointers/_tools.h deleted file mode 100644 index 80cbcfa57fe3..000000000000 --- a/build/stlport/stlport/stl/pointers/_tools.h +++ /dev/null @@ -1,474 +0,0 @@ -/* - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_POINTERS_SPEC_TOOLS_H -#define _STLP_POINTERS_SPEC_TOOLS_H - -#ifndef _STLP_TYPE_TRAITS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -//Some usefull declarations: -template struct less; - -_STLP_MOVE_TO_PRIV_NAMESPACE - -template -struct _BinaryPredWrapper; - -/* - * Since the compiler only allows at most one non-trivial - * implicit conversion we can make use of a shim class to - * be sure that functions below doesn't accept classes with - * implicit pointer conversion operators - */ -struct _VoidPointerShim -{ _VoidPointerShim(void*); }; -struct _ConstVoidPointerShim -{ _ConstVoidPointerShim(const void*); }; -struct _VolatileVoidPointerShim -{ _VolatileVoidPointerShim(volatile void*); }; -struct _ConstVolatileVoidPointerShim -{ _ConstVolatileVoidPointerShim(const volatile void*); }; - -//The dispatch functions: -template -char _UseVoidPtrStorageType(const __false_type& /*POD*/, const _Tp&); -char _UseVoidPtrStorageType(const __true_type& /*POD*/, ...); -char* _UseVoidPtrStorageType(const __true_type& /*POD*/, _VoidPointerShim); - -template -char _UseConstVoidPtrStorageType(const __false_type& /*POD*/, const _Tp&); -char _UseConstVoidPtrStorageType(const __true_type& /*POD*/, ...); -char* _UseConstVoidPtrStorageType(const __true_type& /*POD*/, _ConstVoidPointerShim); - -template -char _UseVolatileVoidPtrStorageType(const __false_type& /*POD*/, const _Tp&); -char _UseVolatileVoidPtrStorageType(const __true_type& /*POD*/, ...); -char* _UseVolatileVoidPtrStorageType(const __true_type& /*POD*/, _VolatileVoidPointerShim); - -template -char _UseConstVolatileVoidPtrStorageType(const __false_type& /*POD*/, const _Tp&); -char _UseConstVolatileVoidPtrStorageType(const __true_type& /*POD*/, ...); -char* _UseConstVolatileVoidPtrStorageType(const __true_type& /*POD*/, _ConstVolatileVoidPointerShim); - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -/* Thanks to class partial specialization the pointer specialization feature can even be used in - * presence of incomplete type: - * struct MyStruct { - * typedef vector MyStructContainer; - * typedef MyStructContainer::iterator MyStructIterator; - * }; - */ - -template -struct _StorageType { - typedef _Tp _QualifiedType; - typedef _Tp _Type; - enum { use_const_volatile_void_ptr = 0 }; -}; - -template -struct _StorageType<_Tp*> { - // Even if we detect a pointer type we use dispatch function to consider if it can be stored as a void*. - // For instance function pointer might not necessarily be convertible to void*. - enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVoidPtrStorageType(__true_type(), - __STATIC_CAST(_Tp*, 0))) == sizeof(char*)) }; - enum { use_const_volatile_void_ptr = use_void_ptr }; - typedef typename __select::_Ret _QualifiedType; - typedef _QualifiedType _Type; -}; - -template -struct _StorageType<_Tp const*> { - enum { use_void_ptr = (sizeof(_STLP_PRIV _UseConstVoidPtrStorageType(__true_type(), - __STATIC_CAST(const _Tp*, 0))) == sizeof(char*)) }; - enum { use_const_volatile_void_ptr = use_void_ptr }; - typedef typename __select::_Ret _QualifiedType; - typedef typename __select::_Ret _Type; -}; - -template -struct _StorageType<_Tp volatile*> { - enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVolatileVoidPtrStorageType(__true_type(), - __STATIC_CAST(_Tp volatile*, 0))) == sizeof(char*)) }; - enum { use_const_volatile_void_ptr = use_void_ptr }; - typedef typename __select::_Ret _QualifiedType; - typedef typename __select::_Ret _Type; -}; - -template -struct _StorageType<_Tp const volatile*> { - enum { use_void_ptr = (sizeof(_STLP_PRIV _UseConstVolatileVoidPtrStorageType(__true_type(), - __STATIC_CAST(_Tp const volatile*, 0))) == sizeof(char*)) }; - enum { use_const_volatile_void_ptr = use_void_ptr }; - typedef typename __select::_Ret _QualifiedType; - typedef typename __select::_Ret _Type; -}; -#else -template -struct _StorageType { - typedef typename __type_traits<_Tp>::is_POD_type _PODType; - -#if !defined (__BORLANDC__) || (__BORLANDC__ != 0x560) - static _Tp __null_rep(); -#else - static _Tp __null_rep; -#endif - enum { use_void_ptr = (sizeof(_STLP_PRIV _UseVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) }; - enum { use_const_void_ptr = (sizeof(_STLP_PRIV _UseConstVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) }; - enum { use_volatile_void_ptr = (sizeof(_STLP_PRIV _UseVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) }; - enum { use_const_volatile_void_ptr = (sizeof(_STLP_PRIV _UseConstVolatileVoidPtrStorageType(_PODType(), __null_rep())) == sizeof(char*)) }; - - typedef typename __select::_Ret >::_Ret >::_Ret >::_Ret _QualifiedType; - -#if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) - /* If the compiler do not support the iterator_traits structure we cannot wrap - * iterators pass to container template methods. The iterator dereferenced value - * has to be storable without any cast in the chosen storage type. To guaranty - * that the void pointer has to be correctly qualified. - */ - typedef _QualifiedType _Type; -#else - /* With iterator_traits we can wrap passed iterators and make the necessary casts. - * We can always use a simple void* storage type: - */ - typedef typename __select::_Ret _Type; -#endif -}; -#endif - -template -struct _AssocStorageTypes { - typedef _StorageType<_Tp> _StorageTypeInfo; - typedef typename _StorageTypeInfo::_Type _SType; - - //We need to also check that the comparison functor used to instanciate the assoc container - //is the default Standard less implementation: - enum { ptr_type = _StorageTypeInfo::use_const_volatile_void_ptr }; - typedef typename _IsSTLportClass<_Compare>::_Ret _STLportLess; - enum { is_default_less = __type2bool<_STLportLess>::_Ret }; - typedef typename __select::_Ret _KeyStorageType; - typedef typename __select, - _Compare>::_Ret _CompareStorageType; -}; - - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -/* - * Base struct to deal with qualifiers - */ -template -struct _VoidCastTraitsAux { - typedef _QualifiedStorageT void_cv_type; - typedef _StorageT void_type; - - static void_type * uncv_ptr(void_cv_type *__ptr) - { return __ptr; } - static void_type const* uncv_cptr(void_cv_type const*__ptr) - { return __ptr; } - static void_type ** uncv_pptr(void_cv_type **__ptr) - { return __ptr; } - static void_type & uncv_ref(void_cv_type & __ref) - { return __ref; } - static void_type const& uncv_cref(void_cv_type const& __ref) - { return __ref; } - static void_cv_type* cv_ptr(void_type *__ptr) - { return __ptr; } - static void_cv_type const* cv_cptr(void_type const*__ptr) - { return __ptr; } - static void_cv_type ** cv_pptr(void_type **__ptr) - { return __ptr; } - static void_cv_type & cv_ref(void_type & __ref) - { return __ref; } - static void_cv_type const& cv_cref(void_type const& __ref) - { return __ref; } -}; - -template -struct _VoidCastTraitsAuxBase { - typedef _VoidCVType* void_cv_type; - typedef void* void_type; - - static void_type* uncv_ptr(void_cv_type *__ptr) - { return __CONST_CAST(void_type*, __ptr); } - static void_type const* uncv_cptr(void_cv_type const*__ptr) - { return __CONST_CAST(void_type const*, __ptr); } - static void_type** uncv_pptr(void_cv_type **__ptr) - { return __CONST_CAST(void_type**, __ptr); } - static void_type& uncv_ref(void_cv_type &__ref) - { return __CONST_CAST(void_type&, __ref); } - static void_type const& uncv_cref(void_cv_type const& __ptr) - { return __CONST_CAST(void_type const&, __ptr); } - // The reverse versions - static void_cv_type * cv_ptr(void_type *__ptr) - { return __CONST_CAST(void_cv_type *, __ptr); } - static void_cv_type const* cv_cptr(void_type const*__ptr) - { return __CONST_CAST(void_cv_type const*, __ptr); } - static void_cv_type ** cv_pptr(void_type **__ptr) - { return __CONST_CAST(void_cv_type**, __ptr); } - static void_cv_type & cv_ref(void_type &__ref) - { return __CONST_CAST(void_cv_type &, __ref); } - static void_cv_type const& cv_cref(void_type const& __ref) - { return __CONST_CAST(void_cv_type const&, __ref); } -}; - -_STLP_TEMPLATE_NULL -struct _VoidCastTraitsAux : _VoidCastTraitsAuxBase -{}; -_STLP_TEMPLATE_NULL -struct _VoidCastTraitsAux : _VoidCastTraitsAuxBase -{}; -_STLP_TEMPLATE_NULL -struct _VoidCastTraitsAux : _VoidCastTraitsAuxBase -{}; - -template -struct _CastTraits { - typedef _ValueT value_type; - typedef typename _StorageType<_ValueT>::_QualifiedType _QualifiedStorageT; - typedef _VoidCastTraitsAux<_StorageT, _QualifiedStorageT> cv_traits; - typedef typename cv_traits::void_type void_type; - typedef typename cv_traits::void_cv_type void_cv_type; - - static value_type * to_value_type_ptr(void_type *__ptr) - { return __REINTERPRET_CAST(value_type *, cv_traits::cv_ptr(__ptr)); } - static value_type const* to_value_type_cptr(void_type const*__ptr) - { return __REINTERPRET_CAST(value_type const*, cv_traits::cv_cptr(__ptr)); } - static value_type ** to_value_type_pptr(void_type **__ptr) - { return __REINTERPRET_CAST(value_type **, cv_traits::cv_pptr(__ptr)); } - static value_type & to_value_type_ref(void_type &__ref) - { return __REINTERPRET_CAST(value_type &, cv_traits::cv_ref(__ref)); } - static value_type const& to_value_type_cref(void_type const& __ptr) - { return __REINTERPRET_CAST(value_type const&, cv_traits::cv_cref(__ptr)); } - // Reverse versions - static void_type * to_storage_type_ptr(value_type *__ptr) - { return cv_traits::uncv_ptr(__REINTERPRET_CAST(void_cv_type *, __ptr)); } - static void_type const* to_storage_type_cptr(value_type const*__ptr) - { return cv_traits::uncv_cptr(__REINTERPRET_CAST(void_cv_type const*, __ptr)); } - static void_type ** to_storage_type_pptr(value_type **__ptr) - { return cv_traits::uncv_pptr(__REINTERPRET_CAST(void_cv_type **, __ptr)); } - static void_type const& to_storage_type_cref(value_type const& __ref) - { return cv_traits::uncv_cref(__REINTERPRET_CAST(void_cv_type const&, __ref)); } - - //Method used to treat set container template method extension - static void_type const& to_storage_type_crefT(value_type const& __ref) - { return to_storage_type_cref(__ref); } -}; - -template -struct _CastTraits<_Tp, _Tp> { - typedef _Tp storage_type; - typedef _Tp value_type; - - static value_type * to_value_type_ptr(storage_type *__ptr) - { return __ptr; } - static value_type const* to_value_type_cptr(storage_type const*__ptr) - { return __ptr; } - static value_type ** to_value_type_pptr(storage_type **__ptr) - { return __ptr; } - static value_type & to_value_type_ref(storage_type &__ref) - { return __ref; } - static value_type const& to_value_type_cref(storage_type const&__ref) - { return __ref; } - // Reverse versions - static storage_type * to_storage_type_ptr(value_type *__ptr) - { return __ptr; } - static storage_type const* to_storage_type_cptr(value_type const*__ptr) - { return __ptr; } - static storage_type ** to_storage_type_pptr(value_type **__ptr) - { return __ptr; } - static storage_type const& to_storage_type_cref(value_type const& __ref) - { return __ref; } - - //Method used to treat set container template method extension - template - static _Tp1 const& to_storage_type_crefT(_Tp1 const& __ref) - { return __ref; } -}; - -#define _STLP_USE_ITERATOR_WRAPPER - -template -struct _IteWrapper { - typedef _CastTraits<_StorageT, _ValueT> cast_traits; - typedef iterator_traits<_Iterator> _IteTraits; - - typedef typename _IteTraits::iterator_category iterator_category; - typedef _StorageT value_type; - typedef typename _IteTraits::difference_type difference_type; - typedef value_type* pointer; - typedef value_type const& const_reference; - //This wrapper won't be used for input so to avoid surprise - //the reference type will be a const reference: - typedef const_reference reference; - - typedef _IteWrapper<_StorageT, _ValueT, _Iterator> _Self; - typedef _Self _Ite; - - _IteWrapper(_Iterator &__ite) : _M_ite(__ite) {} - - const_reference operator*() const - // See http://code.google.com/p/android/issues/detail?id=38630 - //{ return cast_traits::to_storage_type_cref(*_M_ite); } - { return __REINTERPRET_CAST(const_reference, *_M_ite); } - - _Self& operator= (_Self const& __rhs) { - _M_ite = __rhs._M_ite; - return *this; - } - - _Self& operator++() { - ++_M_ite; - return *this; - } - - _Self& operator--() { - --_M_ite; - return *this; - } - - _Self& operator += (difference_type __offset) { - _M_ite += __offset; - return *this; - } - difference_type operator -(_Self const& __other) const - { return _M_ite - __other._M_ite; } - - bool operator == (_Self const& __other) const - { return _M_ite == __other._M_ite; } - - bool operator != (_Self const& __other) const - { return _M_ite != __other._M_ite; } - - bool operator < (_Self const& __rhs) const - { return _M_ite < __rhs._M_ite; } - -private: - _Iterator _M_ite; -}; - -template -struct _IteWrapper<_Tp, _Tp, _Iterator> -{ typedef _Iterator _Ite; }; - -#else - -/* - * In this config the storage type is qualified in respect of the - * value_type qualification. Simple reinterpret_cast is enough. - */ -template -struct _CastTraits { - typedef _StorageT storage_type; - typedef _ValueT value_type; - - static value_type * to_value_type_ptr(storage_type *__ptr) - { return __REINTERPRET_CAST(value_type*, __ptr); } - static value_type const* to_value_type_cptr(storage_type const*__ptr) - { return __REINTERPRET_CAST(value_type const*, __ptr); } - static value_type ** to_value_type_pptr(storage_type **__ptr) - { return __REINTERPRET_CAST(value_type **, __ptr); } - static value_type & to_value_type_ref(storage_type &__ref) - { return __REINTERPRET_CAST(value_type&, __ref); } - static value_type const& to_value_type_cref(storage_type const&__ref) - { return __REINTERPRET_CAST(value_type const&, __ref); } - // Reverse versions - static storage_type * to_storage_type_ptr(value_type *__ptr) - { return __REINTERPRET_CAST(storage_type*, __ptr); } - static storage_type const* to_storage_type_cptr(value_type const*__ptr) - { return __REINTERPRET_CAST(storage_type const*, __ptr); } - static storage_type ** to_storage_type_pptr(value_type **__ptr) - { return __REINTERPRET_CAST(storage_type **, __ptr); } - static storage_type const& to_storage_type_cref(value_type const&__ref) - { return __REINTERPRET_CAST(storage_type const&, __ref); } - template - static _Tp1 const& to_storage_type_crefT(_Tp1 const& __ref) - { return __ref; } -}; - -#endif - -//Wrapper functors: -template -struct _UnaryPredWrapper { - typedef _CastTraits<_StorageT, _ValueT> cast_traits; - - _UnaryPredWrapper (_UnaryPredicate const& __pred) : _M_pred(__pred) {} - - bool operator () (_StorageT const& __ref) const - { return _M_pred(cast_traits::to_value_type_cref(__ref)); } - -private: - _UnaryPredicate _M_pred; -}; - -template -struct _BinaryPredWrapper { - typedef _CastTraits<_StorageT, _ValueT> cast_traits; - - _BinaryPredWrapper () {} - _BinaryPredWrapper (_BinaryPredicate const& __pred) : _M_pred(__pred) {} - - _BinaryPredicate get_pred() const { return _M_pred; } - - bool operator () (_StorageT const& __fst, _StorageT const& __snd) const - { return _M_pred(cast_traits::to_value_type_cref(__fst), cast_traits::to_value_type_cref(__snd)); } - - //Cast operator used to transparently access underlying predicate - //in set::key_comp() method - operator _BinaryPredicate() const - { return _M_pred; } - -private: - _BinaryPredicate _M_pred; -}; - -_STLP_MOVE_TO_STD_NAMESPACE - -_STLP_END_NAMESPACE - -#endif /* _STLP_POINTERS_SPEC_TOOLS_H */ diff --git a/build/stlport/stlport/stl/pointers/_vector.h b/build/stlport/stlport/stl/pointers/_vector.h deleted file mode 100644 index 64705bf24817..000000000000 --- a/build/stlport/stlport/stl/pointers/_vector.h +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* NOTE: This is an internal header file, included by other STL headers. - * You should not attempt to use it directly. - */ - -#ifndef _STLP_SPECIALIZED_VECTOR_H -#define _STLP_SPECIALIZED_VECTOR_H - -#ifndef _STLP_POINTERS_SPEC_TOOLS_H -# include -#endif - -_STLP_BEGIN_NAMESPACE - -#define VECTOR_IMPL _STLP_PTR_IMPL_NAME(vector) - -#if defined (_STLP_USE_TEMPLATE_EXPORT) && !defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) -_STLP_EXPORT_TEMPLATE_CLASS _STLP_PRIV _Vector_base >; -_STLP_EXPORT_TEMPLATE_CLASS _STLP_PRIV VECTOR_IMPL >; -#endif - -#if defined (_STLP_DEBUG) -# define vector _STLP_NON_DBG_NAME(vector) -_STLP_MOVE_TO_PRIV_NAMESPACE -#endif - -template ) > -class vector -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (vector) - : public __stlport_class > -#endif -{ - /* In the vector implementation iterators are pointer which give a number - * of opportunities for optimization. To not break those optimizations - * iterators passed to template should not be wrapped for casting purpose. - * So vector implementation will always use a qualified void pointer type and - * won't use iterator wrapping. - */ - typedef _STLP_TYPENAME _STLP_PRIV _StorageType<_Tp>::_QualifiedType _StorageType; - typedef typename _Alloc_traits<_StorageType, _Alloc>::allocator_type _StorageTypeAlloc; - typedef _STLP_PRIV VECTOR_IMPL<_StorageType, _StorageTypeAlloc> _Base; - typedef vector<_Tp, _Alloc> _Self; - - typedef _STLP_PRIV _CastTraits<_StorageType, _Tp> cast_traits; - -public: - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type* iterator; - typedef const value_type* const_iterator; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef random_access_iterator_tag _Iterator_category; - - _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS; - _STLP_FORCE_ALLOCATORS(value_type, _Alloc) - typedef typename _Alloc_traits::allocator_type allocator_type; - - allocator_type get_allocator() const - { return _STLP_CONVERT_ALLOCATOR(_M_impl.get_allocator(), value_type); } - - iterator begin() { return cast_traits::to_value_type_ptr(_M_impl.begin()); } - const_iterator begin() const { return cast_traits::to_value_type_cptr(_M_impl.begin()); } - iterator end() { return cast_traits::to_value_type_ptr(_M_impl.end()); } - const_iterator end() const { return cast_traits::to_value_type_cptr(_M_impl.end()); } - - reverse_iterator rbegin() { return reverse_iterator(end()); } - const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } - reverse_iterator rend() { return reverse_iterator(begin()); } - const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } - - size_type size() const { return _M_impl.size(); } - size_type max_size() const { return _M_impl.max_size(); } - - size_type capacity() const { return _M_impl.capacity(); } - bool empty() const { return _M_impl.empty(); } - - reference operator[](size_type __n) { return cast_traits::to_value_type_ref(_M_impl[__n]); } - const_reference operator[](size_type __n) const { return cast_traits::to_value_type_cref(_M_impl[__n]); } - - reference front() { return cast_traits::to_value_type_ref(_M_impl.front()); } - const_reference front() const { return cast_traits::to_value_type_cref(_M_impl.front()); } - reference back() { return cast_traits::to_value_type_ref(_M_impl.back()); } - const_reference back() const { return cast_traits::to_value_type_cref(_M_impl.back()); } - - reference at(size_type __n) { return cast_traits::to_value_type_ref(_M_impl.at(__n)); } - const_reference at(size_type __n) const { return cast_traits::to_value_type_cref(_M_impl.at(__n)); } - - explicit vector(const allocator_type& __a = allocator_type()) - : _M_impl(_STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit vector(size_type __n, const value_type& __val = _STLP_DEFAULT_CONSTRUCTED(value_type), -#else - vector(size_type __n, const value_type& __val, -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - const allocator_type& __a = allocator_type()) - : _M_impl(__n, cast_traits::to_storage_type_cref(__val), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - explicit vector(size_type __n) - : _M_impl(__n, allocator_type() ) {} -#endif - - vector(const _Self& __x) - : _M_impl(__x._M_impl) {} - -#if !defined (_STLP_NO_MOVE_SEMANTIC) - explicit vector(__move_source<_Self> src) - : _M_impl(__move_source<_Base>(src.get()._M_impl)) {} -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - vector(_InputIterator __first, _InputIterator __last, - const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL ) - : _M_impl(__first, __last, - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} - -# if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS) - template - vector(_InputIterator __first, _InputIterator __last) - : _M_impl(__first, __last) {} -# endif - -#else - vector(const_iterator __first, const_iterator __last, - const allocator_type& __a = allocator_type()) - : _M_impl(cast_traits::to_storage_type_cptr(__first), cast_traits::to_storage_type_cptr(__last), - _STLP_CONVERT_ALLOCATOR(__a, _StorageType)) {} -#endif /* _STLP_MEMBER_TEMPLATES */ - - _Self& operator=(const _Self& __x) { _M_impl = __x._M_impl; return *this; } - - void reserve(size_type __n) {_M_impl.reserve(__n);} - void assign(size_type __n, const value_type& __val) - { _M_impl.assign(__n, cast_traits::to_storage_type_cref(__val)); } - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void assign(_InputIterator __first, _InputIterator __last) - { _M_impl.assign(__first, __last); } -#else - void assign(const_iterator __first, const_iterator __last) { - _M_impl.assign(cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } -#endif /* _STLP_MEMBER_TEMPLATES */ - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - void push_back(const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - void push_back(const value_type& __x) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - { _M_impl.push_back(cast_traits::to_storage_type_cref(__x)); } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - iterator insert(iterator __pos, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - iterator insert(iterator __pos, const value_type& __x) -#endif /*!_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - { return cast_traits::to_value_type_ptr(_M_impl.insert(cast_traits::to_storage_type_ptr(__pos), - cast_traits::to_storage_type_cref(__x))); } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) && !defined(_STLP_NO_ANACHRONISMS) - void push_back() { _M_impl.push_back(); } - iterator insert(iterator __pos) - { return _M_impl.insert(cast_traits::to_storage_type_ptr(__pos)); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM && !_STLP_NO_ANACHRONISMS*/ - - void swap(_Self& __x) { _M_impl.swap(__x._M_impl); } -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) - void _M_swap_workaround(_Self& __x) { swap(__x); } -#endif - -#if defined (_STLP_MEMBER_TEMPLATES) - template - void insert(iterator __pos, _InputIterator __first, _InputIterator __last) - { _M_impl.insert(cast_traits::to_storage_type_ptr(__pos), __first, __last); } -#else - void insert(iterator __pos, const_iterator __first, const_iterator __last) { - _M_impl.insert(cast_traits::to_storage_type_ptr(__pos), cast_traits::to_storage_type_cptr(__first), - cast_traits::to_storage_type_cptr(__last)); - } -#endif - - void insert (iterator __pos, size_type __n, const value_type& __x) { - _M_impl.insert(cast_traits::to_storage_type_ptr(__pos), __n, cast_traits::to_storage_type_cref(__x)); - } - - void pop_back() {_M_impl.pop_back();} - iterator erase(iterator __pos) - {return cast_traits::to_value_type_ptr(_M_impl.erase(cast_traits::to_storage_type_ptr(__pos)));} - iterator erase(iterator __first, iterator __last) { - return cast_traits::to_value_type_ptr(_M_impl.erase(cast_traits::to_storage_type_ptr(__first), - cast_traits::to_storage_type_ptr(__last))); - } - -#if !defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size, const value_type& __x = _STLP_DEFAULT_CONSTRUCTED(value_type)) -#else - void resize(size_type __new_size, const value_type& __x) -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - { _M_impl.resize(__new_size, cast_traits::to_storage_type_cref(__x)); } - -#if defined(_STLP_DONT_SUP_DFLT_PARAM) - void resize(size_type __new_size) { _M_impl.resize(__new_size); } -#endif /*_STLP_DONT_SUP_DFLT_PARAM*/ - - void clear() { _M_impl.clear(); } - -private: - _Base _M_impl; -}; - -#if defined (vector) -# undef vector -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -#undef VECTOR_IMPL - -_STLP_END_NAMESPACE - -#endif /* _STLP_SPECIALIZED_VECTOR_H */ diff --git a/build/stlport/stlport/stl/type_manips.h b/build/stlport/stlport/stl/type_manips.h deleted file mode 100644 index 410b59d2569a..000000000000 --- a/build/stlport/stlport/stl/type_manips.h +++ /dev/null @@ -1,321 +0,0 @@ -/* - * - * Copyright (c) 2003 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - - -#ifndef _STLP_TYPE_MANIPS_H -#define _STLP_TYPE_MANIPS_H - -_STLP_BEGIN_NAMESPACE - -struct __true_type {}; -struct __false_type {}; - -#if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_DONT_USE_PRIV_NAMESPACE) -_STLP_MOVE_TO_PRIV_NAMESPACE -using _STLP_STD::__true_type; -using _STLP_STD::__false_type; -_STLP_MOVE_TO_STD_NAMESPACE -#endif - -//bool to type -template -struct __bool2type -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL -struct __bool2type<1> { typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL -struct __bool2type<0> { typedef __false_type _Ret; }; - -//type to bool -template -struct __type2bool { enum {_Ret = 1}; }; - -_STLP_TEMPLATE_NULL -struct __type2bool<__true_type> { enum {_Ret = 1}; }; - -_STLP_TEMPLATE_NULL -struct __type2bool<__false_type> { enum {_Ret = 0}; }; - -//Negation -template -struct _Not { typedef __false_type _Ret; }; - -_STLP_TEMPLATE_NULL -struct _Not<__false_type> { typedef __true_type _Ret; }; - -// logical and of 2 predicated -template -struct _Land2 { typedef __false_type _Ret; }; - -_STLP_TEMPLATE_NULL -struct _Land2<__true_type, __true_type> { typedef __true_type _Ret; }; - -// logical and of 3 predicated -template -struct _Land3 { typedef __false_type _Ret; }; - -_STLP_TEMPLATE_NULL -struct _Land3<__true_type, __true_type, __true_type> { typedef __true_type _Ret; }; - -//logical or of 2 predicated -template -struct _Lor2 { typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL -struct _Lor2<__false_type, __false_type> { typedef __false_type _Ret; }; - -// logical or of 3 predicated -template -struct _Lor3 { typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL -struct _Lor3<__false_type, __false_type, __false_type> { typedef __false_type _Ret; }; - -//////////////////////////////////////////////////////////////////////////////// -// class template __select -// Selects one of two types based upon a boolean constant -// Invocation: __select<_Cond, T, U>::Result -// where: -// flag is a compile-time boolean constant -// T and U are types -// Result evaluates to T if flag is true, and to U otherwise. -//////////////////////////////////////////////////////////////////////////////// -// BEWARE: If the compiler do not support partial template specialization or nested template -//classes the default behavior of the __select is to consider the condition as false and so return -//the second template type!! - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -# if defined (__BORLANDC__) -template -struct __selectT { typedef _Tp1 _Ret; }; - -template -struct __selectT<__false_type, _Tp1, _Tp2> { typedef _Tp2 _Ret; }; -# endif - -# if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x590) -template -struct __select { typedef _Tp1 _Ret; }; - -template -struct __select { typedef _Tp2 _Ret; }; -# else -template -struct __select -{ typedef __selectT::_Ret, _Tp1, _Tp2>::_Ret _Ret; }; -# endif - -#else - -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) -template -struct __select_aux { - template - struct _In { - typedef _Tp1 _Ret; - }; -}; - -_STLP_TEMPLATE_NULL -struct __select_aux<0> { - template - struct _In { - typedef _Tp2 _Ret; - }; -}; - -template -struct __select { - typedef typename __select_aux<_Cond>::_STLP_TEMPLATE _In<_Tp1, _Tp2>::_Ret _Ret; -}; -# else /* _STLP_MEMBER_TEMPLATE_CLASSES */ -//default behavior -template -struct __select { - typedef _Tp2 _Ret; -}; -# endif /* _STLP_MEMBER_TEMPLATE_CLASSES */ - -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -/* Rather than introducing a new macro for the following constrution we use - * an existing one (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) that - * is used for a similar feature. - */ -#if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && \ - (!defined (__GNUC__) || (__GNUC__ > 2)) -// Helper struct that will forbid volatile qualified types: -# if !defined (__BORLANDC__) -struct _NoVolatilePointerShim { _NoVolatilePointerShim(const void*); }; -template -char _STLP_CALL _IsCopyableFun(bool, _NoVolatilePointerShim, _Tp const*, _Tp*); // no implementation is required -char* _STLP_CALL _IsCopyableFun(bool, ...); // no implementation is required - -template -struct _Copyable { - static _Src* __null_src(); - static _Dst* __null_dst(); - enum { _Ret = (sizeof(_IsCopyableFun(false, __null_src(), __null_src(), __null_dst())) == sizeof(char)) }; - typedef typename __bool2type<_Ret>::_Ret _RetT; -}; -# else -template struct _AreSameTypes; -template struct _IsUnQual; -template -struct _Copyable { - typedef typename _AreSameTypes<_Src, _Dst>::_Ret _Tr1; - typedef typename _IsUnQual<_Dst>::_Ret _Tr2; - typedef typename _Land2<_Tr1, _Tr2>::_Ret _RetT; - enum { _Ret = __type2bool<_RetT>::_Ret }; -}; -# endif -#else -template -struct _Copyable { - enum { _Ret = 0 }; - typedef __false_type _RetT; -}; -#endif - -/* - * The following struct will tell you if 2 types are the same and if copying memory - * from the _Src type to the _Dst type is right considering qualifiers. If _Src and - * _Dst types are the same unqualified types _Ret will be false if: - * - any of the type has the volatile qualifier - * - _Dst is const qualified - */ -template -struct _AreCopyable { - enum { _Same = _Copyable<_Src, _Dst>::_Ret }; - typedef typename _Copyable<_Src, _Dst>::_RetT _Ret; -}; - -template -struct _AreSameTypes { - enum { _Same = 0 }; - typedef __false_type _Ret; -}; - -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct _AreSameTypes<_Tp, _Tp> { - enum { _Same = 1 }; - typedef __true_type _Ret; -}; -#endif - -#if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) -template -struct _ConversionHelper { - static char _Test(bool, _Dst); - static char* _Test(bool, ...); - static _Src _MakeSource(); -}; - -template -struct _IsConvertible { - typedef _ConversionHelper<_Src*, const volatile _Dst*> _H; - enum { value = (sizeof(char) == sizeof(_H::_Test(false, _H::_MakeSource()))) }; - typedef typename __bool2type::_Ret _Ret; -}; - -# if defined (__BORLANDC__) -# if (__BORLANDC__ < 0x590) -template -struct _UnConstPtr { typedef _Tp _Type; }; - -template -struct _UnConstPtr<_Tp*> { typedef _Tp _Type; }; - -template -struct _UnConstPtr { typedef _Tp _Type; }; -# endif - -# if !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG) -template -struct _IsConst { typedef __false_type _Ret; }; -# else -template -struct _IsConst { typedef _AreSameTypes<_Tp, const _Tp>::_Ret _Ret; }; -# endif - -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG) -template -struct _IsConst { typedef __true_type _Ret; }; -# endif - -# if (__BORLANDC__ < 0x590) -template -struct _IsConst<_Tp*> { typedef _AreSameTypes<_Tp*, const _Tp*>::_Ret _Ret; }; -# endif -template -struct _IsVolatile { typedef _AreSameTypes<_Tp, volatile _Tp>::_Ret _Ret; }; - -template -struct _IsUnQual { - typedef _IsConst<_Tp>::_Ret _Tr1; - typedef _IsVolatile<_Tp>::_Ret _Tr2; - typedef _Not<_Tr1>::_Ret _NotCon; - typedef _Not<_Tr2>::_Ret _NotVol; - typedef _Land2<_NotCon, _NotVol>::_Ret _Ret; -}; - -# if !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG) -template struct _UnQual { typedef _Tp _Type; }; -template struct _UnQual { typedef _Tp _Type; }; -template struct _UnQual { typedef _Tp _Type; }; -template struct _UnQual { typedef _Tp _Type; }; -# endif -# endif - -/* This struct is intended to say if a pointer can be convertible to an other - * taking into account cv qualifications. It shouldn't be instanciated with - * something else than pointer type as it uses pass by value parameter that - * results in compilation error when parameter type has a special memory - * alignment - */ -template -struct _IsCVConvertible { -# if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x590) - typedef _ConversionHelper<_Src, _Dst> _H; - enum { value = (sizeof(char) == sizeof(_H::_Test(false, _H::_MakeSource()))) }; -# else - enum { _Is1 = __type2bool<_IsConst<_Src>::_Ret>::_Ret }; - enum { _Is2 = _IsConvertible<_UnConstPtr<_Src>::_Type, _UnConstPtr<_Dst>::_Type>::value }; - enum { value = _Is1 ? 0 : _Is2 }; -# endif - typedef typename __bool2type::_Ret _Ret; -}; - -#else -template -struct _IsConvertible { - enum { value = 0 }; - typedef __false_type _Ret; -}; - -template -struct _IsCVConvertible { - enum { value = 0 }; - typedef __false_type _Ret; -}; -#endif - -_STLP_END_NAMESPACE - -#endif /* _STLP_TYPE_MANIPS_H */ diff --git a/build/stlport/stlport/stl/type_traits.h b/build/stlport/stlport/stl/type_traits.h deleted file mode 100644 index af0923d03d9d..000000000000 --- a/build/stlport/stlport/stl/type_traits.h +++ /dev/null @@ -1,626 +0,0 @@ -/* - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1997 - * Moscow Center for SPARC Technology - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_TYPE_TRAITS_H -#define _STLP_TYPE_TRAITS_H - -/* -This header file provides a framework for allowing compile time dispatch -based on type attributes. This is useful when writing template code. -For example, when making a copy of an array of an unknown type, it helps -to know if the type has a trivial copy constructor or not, to help decide -if a memcpy can be used. - -The class template __type_traits provides a series of typedefs each of -which is either __true_type or __false_type. The argument to -__type_traits can be any type. The typedefs within this template will -attain their correct values by one of these means: - 1. The general instantiation contain conservative values which work - for all types. - 2. Specializations may be declared to make distinctions between types. - 3. Some compilers (such as the Silicon Graphics N32 and N64 compilers) - will automatically provide the appropriate specializations for all - types. - -EXAMPLE: - -//Copy an array of elements which have non-trivial copy constructors -template void copy(T* source, T* destination, int n, __false_type); -//Copy an array of elements which have trivial copy constructors. Use memcpy. -template void copy(T* source, T* destination, int n, __true_type); - -//Copy an array of any type by using the most efficient copy mechanism -template inline void copy(T* source,T* destination,int n) { - copy(source, destination, n, - typename __type_traits::has_trivial_copy_constructor()); -} -*/ - -#ifdef __WATCOMC__ -# include -#endif - -#ifndef _STLP_TYPE_MANIPS_H -# include -#endif - -#ifdef _STLP_USE_BOOST_SUPPORT -# include -# include -# include -#endif /* _STLP_USE_BOOST_SUPPORT */ - -_STLP_BEGIN_NAMESPACE - -#if !defined (_STLP_USE_BOOST_SUPPORT) - -// The following could be written in terms of numeric_limits. -// We're doing it separately to reduce the number of dependencies. - -template struct _IsIntegral -{ typedef __false_type _Ret; }; - -# ifndef _STLP_NO_BOOL -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; -# endif /* _STLP_NO_BOOL */ - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; - -# ifndef _STLP_NO_SIGNED_BUILTINS -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; -# endif - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; - -# if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT) -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; -# endif /* _STLP_HAS_WCHAR_T */ - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; - -# ifdef _STLP_LONG_LONG -_STLP_TEMPLATE_NULL struct _IsIntegral<_STLP_LONG_LONG> -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsIntegral -{ typedef __true_type _Ret; }; -# endif /* _STLP_LONG_LONG */ - -template struct _IsRational -{ typedef __false_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsRational -{ typedef __true_type _Ret; }; - -_STLP_TEMPLATE_NULL struct _IsRational -{ typedef __true_type _Ret; }; - -# if !defined ( _STLP_NO_LONG_DOUBLE ) -_STLP_TEMPLATE_NULL struct _IsRational -{ typedef __true_type _Ret; }; -# endif - -// Forward declarations. -template struct __type_traits; -template struct __type_traits_aux { - typedef __false_type has_trivial_default_constructor; - typedef __false_type has_trivial_copy_constructor; - typedef __false_type has_trivial_assignment_operator; - typedef __false_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; - -_STLP_TEMPLATE_NULL -struct __type_traits_aux<__false_type> { - typedef __false_type has_trivial_default_constructor; - typedef __false_type has_trivial_copy_constructor; - typedef __false_type has_trivial_assignment_operator; - typedef __false_type has_trivial_destructor; - typedef __false_type is_POD_type; -}; - -_STLP_TEMPLATE_NULL -struct __type_traits_aux<__true_type> { - typedef __true_type has_trivial_default_constructor; - typedef __true_type has_trivial_copy_constructor; - typedef __true_type has_trivial_assignment_operator; - typedef __true_type has_trivial_destructor; - typedef __true_type is_POD_type; -}; - -template -struct _IsRef { - typedef __false_type _Ret; -}; - -# if defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) -/* - * Boris : simulation technique is used here according to Adobe Open Source License Version 1.0. - * Copyright 2000 Adobe Systems Incorporated and others. All rights reserved. - * Authors: Mat Marcus and Jesse Jones - * The original version of this source code may be found at - * http://opensource.adobe.com. - */ - -struct _PointerShim { - /* - * Since the compiler only allows at most one non-trivial - * implicit conversion we can make use of a shim class to - * be sure that IsPtr below doesn't accept classes with - * implicit pointer conversion operators - */ - _PointerShim(const volatile void*); // no implementation -}; - -// These are the discriminating functions -char _STLP_CALL _IsP(bool, _PointerShim); // no implementation is required -char* _STLP_CALL _IsP(bool, ...); // no implementation is required - -template -struct _IsPtr { - /* - * This template meta function takes a type T - * and returns true exactly when T is a pointer. - * One can imagine meta-functions discriminating on - * other criteria. - */ - static _Tp& __null_rep(); - enum { _Ptr = (sizeof(_IsP(false,__null_rep())) == sizeof(char)) }; - typedef typename __bool2type<_Ptr>::_Ret _Ret; - -}; - -// we make general case dependant on the fact the type is actually a pointer. -template -struct __type_traits : __type_traits_aux::_Ret> {}; - -# else /* _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS */ - -template struct _IsPtr { - typedef __false_type _Ret; -}; - -template -struct __type_traits { - typedef __true_type this_dummy_member_must_be_first; - /* Do not remove this member. It informs a compiler which - automatically specializes __type_traits that this - __type_traits template is special. It just makes sure that - things work if an implementation is using a template - called __type_traits for something unrelated. */ - - /* The following restrictions should be observed for the sake of - compilers which automatically produce type specific specializations - of this class: - - You may reorder the members below if you wish - - You may remove any of the members below if you wish - - You must not rename members without making the corresponding - name change in the compiler - - Members you add will be treated like regular members unless - - you add the appropriate support in the compiler. */ -# if !defined (_STLP_HAS_TYPE_TRAITS_INTRINSICS) - typedef __false_type has_trivial_default_constructor; - typedef __false_type has_trivial_copy_constructor; - typedef __false_type has_trivial_assignment_operator; - typedef __false_type has_trivial_destructor; - typedef __false_type is_POD_type; -# else - typedef typename __bool2type<_STLP_HAS_TRIVIAL_CONSTRUCTOR(_Tp)>::_Ret has_trivial_default_constructor; - typedef typename __bool2type<_STLP_HAS_TRIVIAL_COPY(_Tp)>::_Ret has_trivial_copy_constructor; - typedef typename __bool2type<_STLP_HAS_TRIVIAL_ASSIGN(_Tp)>::_Ret has_trivial_assignment_operator; - typedef typename __bool2type<_STLP_HAS_TRIVIAL_DESTRUCTOR(_Tp)>::_Ret has_trivial_destructor; - typedef typename __bool2type<_STLP_IS_POD(_Tp)>::_Ret is_POD_type; -# endif -}; - -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template struct _IsPtr<_Tp*> -{ typedef __true_type _Ret; }; -template struct _IsRef<_Tp&> -{ typedef __true_type _Ret; }; - -template struct __type_traits<_Tp*> : __type_traits_aux<__true_type> -{}; -# endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */ - -# endif /* _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS */ - -// Provide some specializations. This is harmless for compilers that -// have built-in __types_traits support, and essential for compilers -// that don't. -# if !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG) -# define _STLP_DEFINE_TYPE_TRAITS_FOR(Type) \ -_STLP_TEMPLATE_NULL struct __type_traits< Type > : __type_traits_aux<__true_type> {}; \ -_STLP_TEMPLATE_NULL struct __type_traits< const Type > : __type_traits_aux<__true_type> {}; \ -_STLP_TEMPLATE_NULL struct __type_traits< volatile Type > : __type_traits_aux<__true_type> {}; \ -_STLP_TEMPLATE_NULL struct __type_traits< const volatile Type > : __type_traits_aux<__true_type> {} -# else -# define _STLP_DEFINE_TYPE_TRAITS_FOR(Type) \ -_STLP_TEMPLATE_NULL struct __type_traits< Type > : __type_traits_aux<__true_type> {}; -# endif - -# ifndef _STLP_NO_BOOL -_STLP_DEFINE_TYPE_TRAITS_FOR(bool); -# endif /* _STLP_NO_BOOL */ -_STLP_DEFINE_TYPE_TRAITS_FOR(char); -# ifndef _STLP_NO_SIGNED_BUILTINS -_STLP_DEFINE_TYPE_TRAITS_FOR(signed char); -# endif -_STLP_DEFINE_TYPE_TRAITS_FOR(unsigned char); -# if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT) -_STLP_DEFINE_TYPE_TRAITS_FOR(wchar_t); -# endif /* _STLP_HAS_WCHAR_T */ - -_STLP_DEFINE_TYPE_TRAITS_FOR(short); -_STLP_DEFINE_TYPE_TRAITS_FOR(unsigned short); -_STLP_DEFINE_TYPE_TRAITS_FOR(int); -_STLP_DEFINE_TYPE_TRAITS_FOR(unsigned int); -_STLP_DEFINE_TYPE_TRAITS_FOR(long); -_STLP_DEFINE_TYPE_TRAITS_FOR(unsigned long); - -# ifdef _STLP_LONG_LONG -_STLP_DEFINE_TYPE_TRAITS_FOR(_STLP_LONG_LONG); -_STLP_DEFINE_TYPE_TRAITS_FOR(unsigned _STLP_LONG_LONG); -# endif /* _STLP_LONG_LONG */ - -_STLP_DEFINE_TYPE_TRAITS_FOR(float); -_STLP_DEFINE_TYPE_TRAITS_FOR(double); - -# if !defined ( _STLP_NO_LONG_DOUBLE ) -_STLP_DEFINE_TYPE_TRAITS_FOR(long double); -# endif - -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct _IsCVConvertibleIf -{ typedef typename _IsCVConvertible<_Src, _Dst>::_Ret _Ret; }; - -template -struct _IsCVConvertibleIf<__false_type, _Src, _Dst> -{ typedef __false_type _Ret; }; -# else -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) -template -struct _IsCVConvertibleIfAux { - template - struct _In - { typedef typename _IsCVConvertible<_Src, _Dst>::_Ret _Ret; }; -}; - -_STLP_TEMPLATE_NULL -struct _IsCVConvertibleIfAux<__false_type> { - template - struct _In - { typedef __false_type _Ret; }; -}; - -template -struct _IsCVConvertibleIf { - typedef typename _IsCVConvertibleIfAux<_ArePtrs>::_STLP_TEMPLATE _In<_Src, _Dst>::_Ret _Ret; -}; -# else -/* default behavior: we prefer to miss an optimization rather than taking the risk of - * a compilation error if playing with types with exotic memory alignment. - */ -template -struct _IsCVConvertibleIf -{ typedef __false_type _Ret; }; -# endif -# endif - -template -struct _TrivialNativeTypeCopy { - typedef typename _IsPtr<_Src>::_Ret _Ptr1; - typedef typename _IsPtr<_Dst>::_Ret _Ptr2; - typedef typename _Land2<_Ptr1, _Ptr2>::_Ret _BothPtrs; - typedef typename _IsCVConvertibleIf<_BothPtrs, _Src, _Dst>::_Ret _Convertible; - typedef typename _Land2<_BothPtrs, _Convertible>::_Ret _Trivial1; - - typedef typename __bool2type<(sizeof(_Src) == sizeof(_Dst))>::_Ret _SameSize; - -#if !defined (__BORLANDC__) || (__BORLANDC__ < 0x564) - typedef typename _IsIntegral<_Src>::_Ret _Int1; -#else - typedef typename _UnQual<_Src>::_Type _UnQuSrc; - typedef typename _IsIntegral<_UnQuSrc>::_Ret _Int1; -#endif - typedef typename _IsIntegral<_Dst>::_Ret _Int2; - typedef typename _Land2<_Int1, _Int2>::_Ret _BothInts; - - typedef typename _IsRational<_Src>::_Ret _Rat1; - typedef typename _IsRational<_Dst>::_Ret _Rat2; - typedef typename _Land2<_Rat1, _Rat2>::_Ret _BothRats; - - typedef typename _Lor2<_BothInts, _BothRats>::_Ret _BothNatives; -#if !defined (__BORLANDC__) || (__BORLANDC__ >= 0x564) - typedef typename _Land2<_BothNatives, _SameSize>::_Ret _Trivial2; -#else - typedef typename _IsUnQual<_Dst>::_Ret _UnQualDst; - typedef typename _Land3<_BothNatives, _SameSize, _UnQualDst>::_Ret _Trivial2; -#endif - typedef typename _Lor2<_Trivial1, _Trivial2>::_Ret _Ret; -}; - -template -struct _TrivialCopy { - typedef typename _TrivialNativeTypeCopy<_Src, _Dst>::_Ret _NativeRet; -# if !defined (__BORLANDC__) || (__BORLANDC__ != 0x560) - typedef typename __type_traits<_Src>::has_trivial_assignment_operator _Tr1; -# else - typedef typename _UnConstPtr<_Src*>::_Type _UnConstSrc; - typedef typename __type_traits<_UnConstSrc>::has_trivial_assignment_operator _Tr1; -# endif - typedef typename _AreCopyable<_Src, _Dst>::_Ret _Tr2; - typedef typename _Land2<_Tr1, _Tr2>::_Ret _UserRet; - typedef typename _Lor2<_NativeRet, _UserRet>::_Ret _Ret; - static _Ret _Answer() { return _Ret(); } -}; - -template -struct _TrivialUCopy { - typedef typename _TrivialNativeTypeCopy<_Src, _Dst>::_Ret _NativeRet; -# if !defined (__BORLANDC__) || (__BORLANDC__ != 0x560) - typedef typename __type_traits<_Src>::has_trivial_copy_constructor _Tr1; -# else - typedef typename _UnConstPtr<_Src*>::_Type _UnConstSrc; - typedef typename __type_traits<_UnConstSrc>::has_trivial_copy_constructor _Tr1; -# endif - typedef typename _AreCopyable<_Src, _Dst>::_Ret _Tr2; - typedef typename _Land2<_Tr1, _Tr2>::_Ret _UserRet; - typedef typename _Lor2<_NativeRet, _UserRet>::_Ret _Ret; - static _Ret _Answer() { return _Ret(); } -}; - -template -struct _DefaultZeroValue { - typedef typename _IsIntegral<_Tp>::_Ret _Tr1; - typedef typename _IsRational<_Tp>::_Ret _Tr2; - typedef typename _IsPtr<_Tp>::_Ret _Tr3; - typedef typename _Lor3<_Tr1, _Tr2, _Tr3>::_Ret _Ret; -}; - -template -struct _TrivialInit { -# if !defined (__BORLANDC__) || (__BORLANDC__ != 0x560) - typedef typename __type_traits<_Tp>::has_trivial_default_constructor _Tr1; -# else - typedef typename _UnConstPtr<_Tp*>::_Type _Tp1; - typedef typename __type_traits<_Tp1>::has_trivial_copy_constructor _Tr1; -# endif - typedef typename _DefaultZeroValue<_Tp>::_Ret _Tr2; - typedef typename _Not<_Tr2>::_Ret _Tr3; - typedef typename _Land2<_Tr1, _Tr3>::_Ret _Ret; - static _Ret _Answer() { return _Ret(); } -}; - -#endif /* !_STLP_USE_BOOST_SUPPORT */ - -template -struct _IsPtrType { - typedef typename _IsPtr<_Tp>::_Ret _Type; - static _Type _Ret() { return _Type(); } -}; - -template -struct _IsRefType { - typedef typename _IsRef<_Tp>::_Ret _Type; - static _Type _Ret() { return _Type();} -}; - -template -struct __call_traits { -#if defined (_STLP_USE_BOOST_SUPPORT) && !defined (_STLP_NO_EXTENSIONS) - typedef typename __select< ::boost::is_reference<_Tp>::value, - typename ::boost::add_const<_Tp>::type, - typename ::boost::add_reference< typename ::boost::add_const<_Tp>::type >::type>::_Ret const_param_type; - typedef typename __select< ::boost::is_reference<_Tp>::value, - typename ::boost::remove_const<_Tp>::type, - typename ::boost::add_reference<_Tp>::type>::_Ret param_type; -#else - typedef const _Tp& const_param_type; - typedef _Tp& param_type; -#endif -}; - -#if !defined (_STLP_USE_BOOST_SUPPORT) && !defined (_STLP_NO_EXTENSIONS) && defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) -template -struct __call_traits<_Tp&> { - typedef _Tp& param_type; - typedef const _Tp& const_param_type; -}; -template -struct __call_traits { - typedef _Tp& param_type; - typedef const _Tp& const_param_type; -}; -#endif - -template -struct _BothPtrType { - typedef typename _IsPtr<_Tp1>::_Ret _IsPtr1; - typedef typename _IsPtr<_Tp2>::_Ret _IsPtr2; - - typedef typename _Land2<_IsPtr1, _IsPtr2>::_Ret _Ret; - static _Ret _Answer() { return _Ret(); } -}; - -template -struct _OKToSwap { - typedef typename _AreSameTypes<_Tp1, _Tp2>::_Ret _Same; - typedef typename _Land3<_Same, _IsRef1, _IsRef2>::_Ret _Type; - static _Type _Answer() { return _Type(); } -}; - -template -inline _OKToSwap<_Tp1, _Tp2, _IsRef1, _IsRef2> -_IsOKToSwap(_Tp1*, _Tp2*, const _IsRef1&, const _IsRef2&) -{ return _OKToSwap<_Tp1, _Tp2, _IsRef1, _IsRef2>(); } - -template -inline _TrivialCopy<_Src, _Dst> _UseTrivialCopy(_Src*, _Dst*) -{ return _TrivialCopy<_Src, _Dst>(); } - -template -inline _TrivialUCopy<_Src, _Dst> _UseTrivialUCopy(_Src*, _Dst*) -{ return _TrivialUCopy<_Src, _Dst>(); } - -#if defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) || defined (__BORLANDC__) || \ - defined (__DMC__) -struct _NegativeAnswer { - typedef __false_type _Ret; - static _Ret _Answer() { return _Ret(); } -}; - -template -inline _NegativeAnswer _UseTrivialCopy(_Src*, const _Dst*) -{ return _NegativeAnswer(); } - -template -inline _NegativeAnswer _UseTrivialCopy(_Src*, volatile _Dst*) -{ return _NegativeAnswer(); } - -template -inline _NegativeAnswer _UseTrivialCopy(_Src*, const volatile _Dst*) -{ return _NegativeAnswer(); } - -template -inline _NegativeAnswer _UseTrivialUCopy(_Src*, const _Dst*) -{ return _NegativeAnswer(); } - -template -inline _NegativeAnswer _UseTrivialUCopy(_Src*, volatile _Dst*) -{ return _NegativeAnswer(); } - -template -inline _NegativeAnswer _UseTrivialUCopy(_Src*, const volatile _Dst*) -{ return _NegativeAnswer(); } -#endif - -template -inline _TrivialInit<_Tp> _UseTrivialInit(_Tp*) -{ return _TrivialInit<_Tp>(); } - -template -struct _IsPOD { - typedef typename __type_traits<_Tp>::is_POD_type _Type; - static _Type _Answer() { return _Type(); } -}; - -template -inline _IsPOD<_Tp> _Is_POD(_Tp*) -{ return _IsPOD<_Tp>(); } - -template -struct _DefaultZeroValueQuestion { - typedef typename _DefaultZeroValue<_Tp>::_Ret _Ret; - static _Ret _Answer() { return _Ret(); } -}; - -template -inline _DefaultZeroValueQuestion<_Tp> _HasDefaultZeroValue(_Tp*) -{ return _DefaultZeroValueQuestion<_Tp>(); } - -/* - * Base class used: - * - to simulate partial template specialization - * - to simulate partial function ordering - * - to recognize STLport class from user specialized one - */ -template -struct __stlport_class -{ typedef _Tp _Type; }; - -template -struct _IsSTLportClass { - typedef typename _IsConvertible<_Tp, __stlport_class<_Tp> >::_Ret _Ret; -#if defined (__BORLANDC__) - enum { _Is = _IsConvertible<_Tp, __stlport_class<_Tp> >::value }; -#endif -}; - -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) -template -struct _SwapImplemented { - typedef typename _IsSTLportClass<_Tp>::_Ret _Ret; -# if defined (__BORLANDC__) - enum { _Is = _IsSTLportClass<_Tp>::_Is }; -# endif -}; -#endif - -template -class _TpWithState : private _Tp { - _TpWithState(); - int _state; -}; - -/* This is an internal helper struct used to guess if we are working - * on a stateless class. It can only be instanciated with a class type. */ -template -struct _IsStateless { - enum { _Is = sizeof(_TpWithState<_Tp>) == sizeof(int) }; - typedef typename __bool2type<_Is>::_Ret _Ret; -}; - -_STLP_END_NAMESPACE - -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION -# if defined (__BORLANDC__) || \ - defined (__SUNPRO_CC) || \ - (defined (__MWERKS__) && (__MWERKS__ <= 0x2303)) || \ - (defined (__sgi) && defined (_COMPILER_VERSION)) || \ - defined (__DMC__) -# define _STLP_IS_POD_ITER(_It, _Tp) __type_traits< typename iterator_traits< _Tp >::value_type >::is_POD_type() -# else -# define _STLP_IS_POD_ITER(_It, _Tp) typename __type_traits< typename iterator_traits< _Tp >::value_type >::is_POD_type() -# endif -#else -# define _STLP_IS_POD_ITER(_It, _Tp) _Is_POD( _STLP_VALUE_TYPE( _It, _Tp ) )._Answer() -#endif - -#endif /* _STLP_TYPE_TRAITS_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/streambuf b/build/stlport/stlport/streambuf deleted file mode 100644 index f4dc2533dab0..000000000000 --- a/build/stlport/stlport/streambuf +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_STREAMBUF - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1066 -# include -# define _STLP_STREAMBUF -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1066) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_STREAMBUF -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1066) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(streambuf) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1066) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_STREAMBUF */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/streambuf.h b/build/stlport/stlport/streambuf.h deleted file mode 100644 index ff2bff5175ce..000000000000 --- a/build/stlport/stlport/streambuf.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -#ifndef _STLP_STREAMBUF_H -#define _STLP_STREAMBUF_H - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x2067 -# include -#endif - -#include - -#include - -#include - -#ifndef _STLP_HAS_NO_NAMESPACES -# ifdef _STLP_BROKEN_USING_DIRECTIVE -_STLP_USING_NAMESPACE(stlport) -# else -using _STLP_STD::basic_streambuf; -using _STLP_STD::streambuf; -# ifndef _STLP_NO_WCHAR_T -using _STLP_STD::wstreambuf; -# endif -# endif -#endif /* _STLP_HAS_NO_NAMESPACES */ - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2067) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_STREAMBUF_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/string b/build/stlport/stlport/string deleted file mode 100644 index 74d458951e61..000000000000 --- a/build/stlport/stlport/string +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STRING - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x68 -# include -# define _STLP_STRING -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x68) -# ifndef _STLP_INTERNAL_STRING_H -# include -# endif - -# ifndef _STLP_STRING_HASH_H -# include -# endif - -# if !defined (_STLP_USE_NO_IOSTREAMS) && !defined (_STLP_STRING_IO_H) -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x68) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(string) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x68) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_STRING */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/string.h b/build/stlport/stlport/string.h deleted file mode 100644 index 52013cfb40eb..000000000000 --- a/build/stlport/stlport/string.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -/* Workaround for a "misbehaviour" when compiling resource scripts using - * eMbedded Visual C++. The standard .rc file includes windows header files, - * which in turn include string.h, which results in warnings and errors - */ -#ifndef _STLP_STRING_H - -#if !defined (RC_INVOKED) - -# ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x269 -# include -# elif (_STLP_OUTERMOST_HEADER_ID == 0x269) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_STRING_H -# endif - -# if defined(_STLP_WCE_EVC3) -struct _exception; -# endif -# if (_STLP_OUTERMOST_HEADER_ID != 0x269) || defined (_STLP_DONT_POP_HEADER_ID) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(string.h) -# endif -# else -# if defined (__BORLANDC__) && !defined (__linux__) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next <_str.h> -# else -# include _STLP_NATIVE_CPP_C_HEADER(_str.h) -# endif -# else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(string.h) -# endif -# endif -# endif - -# if (_STLP_OUTERMOST_HEADER_ID == 0x269) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -# endif -#endif /* RC_INVOKED */ -#endif /* _STLP_STRING_H */ diff --git a/build/stlport/stlport/strstream b/build/stlport/stlport/strstream deleted file mode 100644 index 247574f4cf5e..000000000000 --- a/build/stlport/stlport/strstream +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ -// WARNING: The classes defined in this header are DEPRECATED. This -// header is defined in section D.7.1 of the C++ standard, and it -// MAY BE REMOVED in a future standard revision. You should use the -// header instead. - - -#ifndef _STLP_STRSTREAM - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x1070 -# include -# define _STLP_STRSTREAM -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1070) && \ - !(defined (_STLP_NO_IOSTREAMS) && defined (_STLP_IMPORT_VENDOR_STD)) -# include - -# ifndef _STLP_INTERNAL_STRSTREAM -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x1070) || defined (_STLP_IMPORT_VENDOR_STD) -/* Even if deprecated strstream header is still part of the Standard. Remove - * _STLP_IMPORT_VENDOR_STD check if the native compiler library do not grant - * it anymore. */ -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(strstream) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x1070) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_STRSTREAM */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/strstream.h b/build/stlport/stlport/strstream.h deleted file mode 100644 index e302a168de97..000000000000 --- a/build/stlport/stlport/strstream.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_STRSTREAM_H -# define _STLP_STRSTREAM_H - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x2071 -# include -#endif - -#include - -#include - - -#ifndef _STLP_HAS_NO_NAMESPACES - -# ifdef _STLP_BROKEN_USING_DIRECTIVE - -using namespace _STLP_STD; - -# else - -using _STLP_STD::strstreambuf; -using _STLP_STD::istrstream; -using _STLP_STD::ostrstream; -using _STLP_STD::strstream; - -# endif /* _STLP_BROKEN_USING_DIRECTIVE */ - -#endif /* _STLP_HAS_NO_NAMESPACES */ - -#if (_STLP_OUTERMOST_HEADER_ID == 0x2071) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_STRSTREAM_H */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/time.h b/build/stlport/stlport/time.h deleted file mode 100644 index e73aa85660b0..000000000000 --- a/build/stlport/stlport/time.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x272 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x272) && ! defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#ifdef _STLP_WCE_EVC3 -/* only show message when directly including this file in a non-library build */ -# if !defined(__BUILDING_STLPORT) && (_STLP_OUTERMOST_HEADER_ID == 0x272) -# pragma message("eMbedded Visual C++ 3 doesn't have a time.h header; STLport won't include native time.h here") -# endif -#else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(time.h) -# endif -#endif - - -#if (_STLP_OUTERMOST_HEADER_ID == 0x272) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif diff --git a/build/stlport/stlport/type_traits b/build/stlport/stlport/type_traits deleted file mode 100644 index e6fe23429fa2..000000000000 --- a/build/stlport/stlport/type_traits +++ /dev/null @@ -1,798 +0,0 @@ -// -*- C++ -*- Time-stamp: <08/07/20 19:10:15 ptr> - -/* - * Copyright (c) 2007, 2008 - * Petr Ovtchenkov - * - * Licensed under the Academic Free License version 3.0 - * - * Derived from original of 'complement' project - * [http://complement.sourceforge.net] - * to make it close to JTC1/SC22/WG21 C++ 0x working draft - * [http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2008/n2521.pdf] - */ - -#ifndef __STLP_TYPE_TRAITS -#define __STLP_TYPE_TRAITS - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x3 -# include -#endif - -// libstdc++ v3, timestamp 20050519 (3.4.4) has __type_traits, -// libstdc++ v3, timestamp 20060306 (3.4.6) has __type_traits, -// while libstdc++ v3, 20050921 (4.0.2) not; use libstdc++ instead -// # if defined(STLPORT) || (defined(__GNUC__) && (__GNUC__ < 4)) /* !defined(__GLIBCXX__) || (defined(__GNUC__) && (__GNUC__ < 4)) */ - -_STLP_BEGIN_NAMESPACE - -_STLP_BEGIN_TR1_NAMESPACE - -namespace detail { - -struct __select_types -{ - typedef char __t1; - struct __t2 - { - char __two[2]; - }; -}; - -template -struct __instance : - public __select_types -{ - private: - template - static __t1 __test(_Up(*)[1]); - - template - static __t2 __test(...); - - public: -#ifdef _STLP_STATIC_CONST_INIT_BUG - static const bool __value; -#else - static const bool __value = sizeof(__test<_Tp>(0)) == sizeof(__select_types::__t1); -#endif - -}; - -#ifdef _STLP_STATIC_CONST_INIT_BUG -template -const bool __instance<_Tp>::__value = sizeof(__instance<_Tp>::__test<_Tp>(0)) == sizeof(__select_types::__t1); -#endif - -template -struct __uoc_aux : // union or class - public __select_types -{ - private: - template - static __t1 __test( int _Up::* ); - - template - static __t2 __test(...); - - public: -#ifdef __FIT_NO_INLINE_TEMPLATE_STATIC_INITIALISATION - static const bool __value; -#else - static const bool __value = sizeof(__test(0)) == sizeof(__select_types::__t1); -#endif -}; - -#ifdef __FIT_NO_INLINE_TEMPLATE_STATIC_INITIALISATION -template -const bool __uoc_aux::__value = sizeof(__uoc_aux::__test(0)) == sizeof(__select_types::__t1); -#endif - -template -class __empty -{ }; - -template -class __inheritance_aux -{}; - -template -class __inheritance_aux : - public T -{ - public: - virtual ~__inheritance_aux() - { } -}; - -#if 0 -template -struct __virtual_aux -{ - public: -#ifdef _STLP_STATIC_CONST_INIT_BUG - static const bool __value; -#else - static const bool __value = B ? (sizeof(__inheritance_aux) == sizeof(T)) : false; -#endif -}; - -#ifdef _STLP_STATIC_CONST_INIT_BUG -template -const bool __virtual_aux::__value = B ? (sizeof(__inheritance_aux) == sizeof(T)) : false; -#endif -#endif - -} // namespace detail - -template -struct integral_constant -{ - static const _Tp value = __v; - // enum { value = __v }; ? - - typedef _Tp value_type; - typedef integral_constant<_Tp, __v> type; -}; - -typedef integral_constant true_type; -typedef integral_constant false_type; - -namespace detail { - -template -struct __is_union_or_class : - public integral_constant::__value> -{ }; - -#if 0 -template -struct __is_vtbl : // has virtual table? - public integral_constant::value >::__value> -{ }; -#endif - -template -struct __is_vtbl : // has virtual table? - public integral_constant::value ? (sizeof(__inheritance_aux<_Tp,__is_union_or_class<_Tp>::value>) == sizeof(_Tp)) : false > -{ }; - -} // namespace detail - -#define __SPEC_(C,T,B) \ -template <> \ -struct C : \ - public integral_constant \ -{ } - -#define __CV_SPEC(C,T,B) \ -__SPEC_(C,T,B); \ -__SPEC_(C,const T,B); \ -__SPEC_(C,volatile T,B); \ -__SPEC_(C,const volatile T,B) - -#define __SPEC_1(C,T,B) \ -template \ -struct C : \ - public integral_constant \ -{ } - -#define __CV_SPEC_1(C,T,B) \ -__SPEC_1(C,T,B); \ -__SPEC_1(C,T const,B); \ -__SPEC_1(C,T volatile,B); \ -__SPEC_1(C,T const volatile,B) - -#define __SPEC_2(C,T,B) \ -template \ -struct C : \ - public integral_constant \ -{ } - -#define __CV_SPEC_2(C,T,B) \ -__SPEC_2(C,T,B); \ -__SPEC_2(C,T const,B); \ -__SPEC_2(C,T volatile,B); \ -__SPEC_2(C,T const volatile,B) - -// [4.5.1] primary type categories: - -template -struct is_void : - public false_type -{ }; - -template <> -struct is_void : - public true_type -{ }; - -template -struct is_integral : - public false_type -{ }; - -__CV_SPEC(is_integral,bool,true); -__CV_SPEC(is_integral,char,true); -__CV_SPEC(is_integral,signed char,true); -__CV_SPEC(is_integral,unsigned char,true); -__CV_SPEC(is_integral,wchar_t,true); -__CV_SPEC(is_integral,short,true); -__CV_SPEC(is_integral,unsigned short,true); -__CV_SPEC(is_integral,int,true); -__CV_SPEC(is_integral,unsigned int,true); -__CV_SPEC(is_integral,long,true); -__CV_SPEC(is_integral,unsigned long,true); -__CV_SPEC(is_integral,long long,true); -__CV_SPEC(is_integral,unsigned long long,true); - -template -struct is_floating_point : - public false_type -{ }; - -__CV_SPEC(is_floating_point,float,true); -__CV_SPEC(is_floating_point,double,true); -__CV_SPEC(is_floating_point,long double,true); - -template -struct is_array : - public false_type -{ }; - -template -struct is_array<_Tp[_Sz]> : - public true_type -{ }; - -template -struct is_array<_Tp[]> : - public true_type -{ }; - -template -struct is_pointer : - public false_type -{ }; - -__CV_SPEC_1(is_pointer,_Tp *,true); - -template -struct is_lvalue_reference : - public false_type -{ }; - -template -struct is_lvalue_reference<_Tp&> : - public true_type -{ }; - -template -struct is_rvalue_reference : - public false_type -{ }; - -// template -// struct is_rvalue_reference<_Tp&&> : -// public true_type -// { }; - -template -struct is_reference : - public false_type -{ }; - -template -struct is_reference<_Tp&> : - public true_type -{ }; - -template -struct is_function : - public integral_constant::__value - || detail::__is_union_or_class<_Tp>::value - || is_reference<_Tp>::value - || is_void<_Tp>::value)> -{ }; - -template -struct is_member_object_pointer : - public false_type -{ }; - -// _SPEC_FULL2(is_member_object_pointer, _Tp1 _Tp2::*,!is_function<_Tp1>::value); - -template -struct is_member_object_pointer<_Tp1 _Tp2::*> : - public integral_constant::value> -{ }; - -template -struct is_member_object_pointer<_Tp1 _Tp2::* const> : - public integral_constant::value> -{ }; - -template -struct is_member_object_pointer<_Tp1 _Tp2::* volatile> : - public integral_constant::value> -{ }; - -template -struct is_member_object_pointer<_Tp1 _Tp2::* const volatile> : - public integral_constant::value> -{ }; - -template -struct is_member_function_pointer : - public false_type -{ }; - -// _SPEC_FULL2(is_member_function_pointer,_Tp1 _Tp2::*,is_function<_Tp1>::value); - -template -struct is_member_function_pointer<_Tp1 _Tp2::*> : - public integral_constant::value> -{ }; - -template -struct is_member_function_pointer<_Tp1 _Tp2::* const> : - public integral_constant::value> -{ }; - -template -struct is_member_function_pointer<_Tp1 _Tp2::* volatile> : - public integral_constant::value> -{ }; - -template -struct is_member_function_pointer<_Tp1 _Tp2::* const volatile> : - public integral_constant::value> -{ }; - -template -struct is_member_pointer : - public integral_constant::value || is_member_function_pointer<_Tp>::value)> -{ }; - -// 4.5.2 composite type categories - -template -struct is_arithmetic : - public integral_constant::value || is_floating_point<_Tp>::value)> -{ }; - -template -struct is_fundamental : - public integral_constant::value || is_void<_Tp>::value)> -{ }; - -// [4.5.1] primary type categories (continued): - -template -struct is_enum : - public integral_constant::value - || is_array<_Tp>::value - || is_pointer<_Tp>::value - || is_reference<_Tp>::value - || is_member_pointer<_Tp>::value - || is_function<_Tp>::value - || detail::__is_union_or_class<_Tp>::value) > -{ }; - -template -struct is_union -{ }; - -template -struct is_class -{ }; - -// is_function (above) - -// 4.5.2 composite type categories (continued) - -// is_arithmetic (above) -// is_fundamental (above) - -template -struct is_object : - public integral_constant::value || - is_array<_Tp>::value || - is_pointer<_Tp>::value || - is_member_pointer<_Tp>::value || - detail::__is_union_or_class<_Tp>::value)> -{ }; - -template -struct is_scalar : - public integral_constant::value - || is_enum<_Tp>::value - || is_pointer<_Tp>::value - || is_member_pointer<_Tp>::value)> -{ }; - -template -struct is_compound : - public integral_constant::value> -{ }; - -// is_member_pointer - -// 4.5.3 type properties: - -template -struct is_const : - public false_type -{ }; - -template -struct is_const<_Tp const> : - public true_type -{ }; - -template -struct is_volatile : - public false_type -{ }; - -template -struct is_volatile<_Tp volatile> : - public true_type -{ }; - - -// 4.7.3 array modifications: - -template -struct remove_extent -{ - typedef _Tp type; -}; - -template -struct remove_extent<_Tp[_Sz]> -{ - typedef _Tp type; -}; - -template -struct remove_extent<_Tp[]> -{ - typedef _Tp type; -}; - -template -struct remove_all_extents -{ - typedef _Tp type; -}; - -template -struct remove_all_extents<_Tp[_Size]> -{ - typedef typename remove_all_extents<_Tp>::type type; -}; - -template -struct remove_all_extents<_Tp[]> -{ - typedef typename remove_all_extents<_Tp>::type type; -}; - -// 4.5.3 type properties (continued): - -template -struct is_trivial : - public integral_constant::value - || is_scalar::type>::value)> -{ }; - -template -struct is_standard_layout : - public integral_constant::value - || is_scalar::type>::value)> -{ }; - -template -struct is_pod : - public integral_constant::value - || is_scalar::type>::value)> -{ }; - -template -struct is_empty - : public integral_constant::value - && (sizeof(detail::__empty<_Tp>) == sizeof(_Tp)))> -{ }; - -// is_polimorphic -// is_abstract - -template -struct has_trivial_constructor : - public integral_constant::value> -{ }; - -template -struct has_trivial_copy : - public integral_constant::value> -{ }; - -template -struct has_trivial_assign : - public integral_constant::value> -{ }; - -template -struct has_trivial_destructor : - public integral_constant::value> -{ }; - -template -struct has_nothrow_constructor : - public integral_constant::value> -{ }; - -template -struct has_nothrow_copy : - public integral_constant::value> -{ }; - -template -struct has_nothrow_assign : - public integral_constant::value> -{ }; - -template -struct has_virtual_destructor : - public false_type -{ }; - -template -struct is_signed : - public false_type -{ }; - -__CV_SPEC(is_signed,signed char,true); -__CV_SPEC(is_signed,short,true); -__CV_SPEC(is_signed,int,true); -__CV_SPEC(is_signed,long,true); -__CV_SPEC(is_signed,long long,true); - -template -struct is_unsigned : - public false_type -{ }; - -__CV_SPEC(is_unsigned,unsigned char,true); -__CV_SPEC(is_unsigned,unsigned short,true); -__CV_SPEC(is_unsigned,unsigned int,true); -__CV_SPEC(is_unsigned,unsigned long,true); -__CV_SPEC(is_unsigned,unsigned long long,true); - -// alignment_of -// rank -// extent - -// 4.6 type relations: - -template -struct is_same : - public false_type -{ }; - -template -struct is_same<_Tp, _Tp> : - public true_type -{ }; - -// is_base_of -// is_convertible - -// 4.7.1 const-volatile modifications - -template -struct remove_const -{ - typedef _Tp type; -}; - -template -struct remove_const<_Tp const> -{ - typedef _Tp type; -}; - -template -struct remove_volatile -{ - typedef _Tp type; -}; - -template -struct remove_volatile<_Tp volatile> -{ - typedef _Tp type; -}; - -template -struct remove_cv -{ - typedef typename remove_const::type>::type type; -}; - -template -struct add_const -{ - typedef _Tp const type; -}; - -template -struct add_volatile -{ - typedef _Tp volatile type; -}; - -template -struct add_cv -{ - typedef typename add_const::type>::type type; -}; - -// 4.7.2 reference modifications: - -template -struct remove_reference -{ - typedef _Tp type; -}; - -template -struct remove_reference<_Tp&> -{ - typedef _Tp type; -}; - -template -struct add_reference -{ - typedef _Tp& type; -}; - -template -struct add_reference<_Tp&> -{ - typedef _Tp& type; -}; - -// 4.7.3 array modifications (see above) - -// 4.7.4 pointer modifications: - -template -struct remove_pointer -{ - typedef _Tp type; -}; - -template -struct remove_pointer<_Tp *> -{ - typedef _Tp type; -}; - -template -struct remove_pointer<_Tp * const> -{ - typedef _Tp type; -}; - -template -struct remove_pointer<_Tp * volatile> -{ - typedef _Tp type; -}; - -template -struct remove_pointer<_Tp * const volatile> -{ - typedef _Tp type; -}; - -template -struct add_pointer -{ - typedef typename remove_reference<_Tp>::type * type; -}; - -// 20.5.7 other transformations: - -// template struct aligned_storage; -// template struct aligned_union; - -namespace detail { - -template -struct _decay_aux2 -{ - typedef typename remove_cv<_U>::type type; -}; - -template -struct _decay_aux2 -{ - typedef typename add_pointer<_U>::type type; -}; - -template -struct _decay_aux1 -{ - typedef typename _decay_aux2::value,_U>::type type; -}; - -template -struct _decay_aux1 -{ - typedef typename remove_extent<_U>::type* type; -}; - -} // namespace detail - -template -class decay -{ - private: - typedef typename remove_reference<_Tp>::type _U; - - public: - typedef typename detail::_decay_aux1::value,_U>::type type; -}; - -template -struct enable_if -{ -}; - -template -struct enable_if -{ - typedef _Tp type; -}; - -template -struct conditional -{ - typedef _Tp2 type; -}; - -template -struct conditional -{ - typedef _Tp1 type; -}; - -// template struct common_type; - -#undef __CV_SPEC -#undef __SPEC_ -#undef __CV_SPEC_1 -#undef __SPEC_1 -#undef __CV_SPEC_2 -#undef __SPEC_2 - -_STLP_END_NAMESPACE // tr1 - -_STLP_END_NAMESPACE - -// # else // __GLIBCXX__ && (__GNUC__ >= 4) && !STLPORT -// # include -// # endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x3) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif // __STLP_TYPE_TRAITS - diff --git a/build/stlport/stlport/typeinfo b/build/stlport/stlport/typeinfo deleted file mode 100644 index 269123fce368..000000000000 --- a/build/stlport/stlport/typeinfo +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_TYPEINFO - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x473 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x473) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_TYPEINFO -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x473) && !defined (_STLP_DONT_POP_HEADER_ID) -# ifndef _STLP_INTERNAL_TYPEINFO -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x473) || defined (_STLP_DONT_POP_HEADER_ID) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(typeinfo) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x473) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -#endif - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/typeinfo.h b/build/stlport/stlport/typeinfo.h deleted file mode 100644 index 0cea71a57503..000000000000 --- a/build/stlport/stlport/typeinfo.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -// DMC has hardcoded inclusion of typeinfo.h at the begining of any translation unit. -// So inclusion of this header will directly reference the native header. This is not -// a problem as typeinfo.h is neither a C nor C++ Standard header, this header should -// never be used in user code. -#if defined (__DMC__) -// We define _STLP_OUTERMOST_HEADER_ID to signal to other STLport headers that inclusion -// is done from native typeinfo.h (see exception header). -# define _STLP_OUTERMOST_HEADER_ID 0x874 -# include <../include/typeinfo.h> -# undef _STLP_OUTERMOST_HEADER_ID -#else -# ifndef _STLP_OLDSTD_typeinfo -# define _STLP_OLDSTD_typeinfo - -# ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x874 -# include -# endif - -# ifndef _STLP_NO_TYPEINFO - -# if defined (__GNUC__) -# undef _STLP_OLDSTD_typeinfo -# include -# define _STLP_OLDSTD_typeinfo -# else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# elif !defined (__BORLANDC__) || (__BORLANDC__ < 0x580) -# include _STLP_NATIVE_CPP_RUNTIME_HEADER(typeinfo.h) -# else -# include _STLP_NATIVE_CPP_C_HEADER(typeinfo.h) -# endif -# if defined (__BORLANDC__) && (__BORLANDC__ >= 0x580) || \ - defined (__DMC__) -using std::type_info; -using std::bad_typeid; -using std::bad_cast; -# endif -# endif - -// if already included, do not import anything - -# if defined (_STLP_USE_OWN_NAMESPACE) && !(defined (_STLP_TYPEINFO) && !defined (_STLP_NO_NEW_NEW_HEADER)) - -_STLP_BEGIN_NAMESPACE - -using /*_STLP_VENDOR_EXCEPT_STD */ :: type_info; -# if !(defined(__MRC__) || (defined(__SC__) && !defined(__DMC__))) -using /* _STLP_VENDOR_EXCEPT_STD */ :: bad_typeid; -# endif - -using /* _STLP_VENDOR_EXCEPT_STD */ :: bad_cast; - -_STLP_END_NAMESPACE - -# endif /* _STLP_OWN_NAMESPACE */ - -# endif /* _STLP_NO_TYPEINFO */ - -# if (_STLP_OUTERMOST_HEADER_ID == 0x874) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# endif - -# endif /* _STLP_OLDSTD_typeinfo */ - -#endif /* __DMC__ */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/unordered_map b/build/stlport/stlport/unordered_map deleted file mode 100644 index 09fa0d2493a0..000000000000 --- a/build/stlport/stlport/unordered_map +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2004,2005 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_UNORDERED_MAP -#define _STLP_UNORDERED_MAP - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x4030 -# include -#endif - -#ifdef _STLP_PRAGMA_ONCE -# pragma once -#endif - -#include - -#if (_STLP_OUTERMOST_HEADER_ID == 0x4030) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_UNORDERED_MAP */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/unordered_set b/build/stlport/stlport/unordered_set deleted file mode 100644 index 14de437461e7..000000000000 --- a/build/stlport/stlport/unordered_set +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2004,2005 - * Francois Dumont - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_UNORDERED_SET -#define _STLP_UNORDERED_SET - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x4031 -# include -#endif - -#ifdef _STLP_PRAGMA_ONCE -# pragma once -#endif - -#include - -#if (_STLP_OUTERMOST_HEADER_ID == 0x4031) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_UNORDERED_SET */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/using/cstring b/build/stlport/stlport/using/cstring deleted file mode 100644 index 42c56602bf0d..000000000000 --- a/build/stlport/stlport/using/cstring +++ /dev/null @@ -1,60 +0,0 @@ -using _STLP_VENDOR_CSTD::size_t; - -#if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) -# if defined (__MSL__) && __MC68K__ && !_No_BlockMove && __dest_os == __mac_os -# undef memcpy -# undef memmove -inline void* memcpy(void* dst, const void* src, size_t len) -{ return _STLP_VENDOR_CSTD::__memcpy(dst, src, len); } -inline void* memmove(void* dst, const void* src, size_t len) -{ return _STLP_VENDOR_CSTD::__memmove(dst, src, len); } -# else -using _STLP_VENDOR_CSTD::memmove; -using _STLP_VENDOR_CSTD::memcpy; -# endif - -# if !defined (_STLP_WCE) -// these functions just don't exist on Windows CE -using _STLP_VENDOR_CSTD::strcoll; -using _STLP_VENDOR_CSTD::strerror; -using _STLP_VENDOR_CSTD::strxfrm; -# endif - -# if defined (__BORLANDC__) -extern "C++" { -# endif -using _STLP_VENDOR_CSTD::memchr; -using _STLP_VENDOR_CSTD::strchr; -using _STLP_VENDOR_CSTD::strpbrk; -using _STLP_VENDOR_CSTD::strrchr; -using _STLP_VENDOR_CSTD::strstr; -# if defined (__BORLANDC__) -} -# endif - -using _STLP_VENDOR_CSTD::memcmp; -using _STLP_VENDOR_CSTD::memset; - -using _STLP_VENDOR_CSTD::strcat; - -# if !defined (strcmp) || !defined (__BORLANDC__) -using _STLP_VENDOR_CSTD::strcmp; -# else -using ::strcmp; -# endif - -# if !defined (strcpy) || !defined (__BORLANDC__) -using _STLP_VENDOR_CSTD::strcpy; -# else -using ::strcpy; -# endif -using _STLP_VENDOR_CSTD::strcspn; -using _STLP_VENDOR_CSTD::strlen; -using _STLP_VENDOR_CSTD::strncat; -using _STLP_VENDOR_CSTD::strncmp; - -using _STLP_VENDOR_CSTD::strncpy; -using _STLP_VENDOR_CSTD::strspn; - -using _STLP_VENDOR_CSTD::strtok; -#endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */ diff --git a/build/stlport/stlport/using/export b/build/stlport/stlport/using/export deleted file mode 100644 index 2d3afcd9f59c..000000000000 --- a/build/stlport/stlport/using/export +++ /dev/null @@ -1,12 +0,0 @@ -cstring -fstream -iomanip -ios -iosfwd -iostream -istream -locale -ostream -sstream -streambuf -strstream diff --git a/build/stlport/stlport/using/fstream b/build/stlport/stlport/using/fstream deleted file mode 100644 index e79e0480f6e3..000000000000 --- a/build/stlport/stlport/using/fstream +++ /dev/null @@ -1,19 +0,0 @@ -#ifdef _STLP_BROKEN_USING_DIRECTIVE -using namespace _STLP_STD; -#else -using _STLP_NEW_IO_NAMESPACE::basic_filebuf; -using _STLP_NEW_IO_NAMESPACE::filebuf; -using _STLP_NEW_IO_NAMESPACE::basic_ifstream; -using _STLP_NEW_IO_NAMESPACE::basic_ofstream; -using _STLP_NEW_IO_NAMESPACE::ifstream; -using _STLP_NEW_IO_NAMESPACE::ofstream; -using _STLP_NEW_IO_NAMESPACE::basic_fstream; -using _STLP_NEW_IO_NAMESPACE::fstream; - -# ifndef _STLP_NO_WIDE_STREAMS -using _STLP_NEW_IO_NAMESPACE::wofstream; -using _STLP_NEW_IO_NAMESPACE::wfilebuf; -using _STLP_NEW_IO_NAMESPACE::wifstream; -using _STLP_NEW_IO_NAMESPACE::wfstream; -# endif -#endif diff --git a/build/stlport/stlport/using/h/fstream.h b/build/stlport/stlport/using/h/fstream.h deleted file mode 100644 index 66005689553a..000000000000 --- a/build/stlport/stlport/using/h/fstream.h +++ /dev/null @@ -1,4 +0,0 @@ -using ::streambuf; -using ::ifstream; -using ::ofstream; -using ::fstream; diff --git a/build/stlport/stlport/using/h/iomanip.h b/build/stlport/stlport/using/h/iomanip.h deleted file mode 100644 index 99e48d998022..000000000000 --- a/build/stlport/stlport/using/h/iomanip.h +++ /dev/null @@ -1,6 +0,0 @@ -using ::setiosflags; -using ::resetiosflags; -// using ::setbase; -using ::setfill; -using ::setprecision; -using ::setw; diff --git a/build/stlport/stlport/using/h/iostream.h b/build/stlport/stlport/using/h/iostream.h deleted file mode 100644 index e85f4e2c74e6..000000000000 --- a/build/stlport/stlport/using/h/iostream.h +++ /dev/null @@ -1,24 +0,0 @@ -using _STLP_OLD_IO_NAMESPACE::istream; -using _STLP_OLD_IO_NAMESPACE::ostream; - -/* HP aCC include files re-define these when THREAD_SAFE */ -#if !defined(cin) -using _STLP_OLD_IO_NAMESPACE::cin; -#endif -#if !defined(cout) -using _STLP_OLD_IO_NAMESPACE::cout; -#endif -#if !defined(cerr) -using _STLP_OLD_IO_NAMESPACE::cerr; -#endif -#if !defined(clog) -using _STLP_OLD_IO_NAMESPACE::clog; -#endif - -using _STLP_OLD_IO_NAMESPACE::endl; -using _STLP_OLD_IO_NAMESPACE::ends; - -using _STLP_OLD_IO_NAMESPACE::ios; -using _STLP_OLD_IO_NAMESPACE::flush; - -// using _STLP_OLD_IO_NAMESPACE::ws; diff --git a/build/stlport/stlport/using/h/ostream.h b/build/stlport/stlport/using/h/ostream.h deleted file mode 100644 index 6ba3f8839705..000000000000 --- a/build/stlport/stlport/using/h/ostream.h +++ /dev/null @@ -1,6 +0,0 @@ -using _STLP_OLD_IO_NAMESPACE::ostream; -using _STLP_OLD_IO_NAMESPACE::endl; -using _STLP_OLD_IO_NAMESPACE::ends; -using _STLP_OLD_IO_NAMESPACE::flush; - -// using _STLP_OLD_IO_NAMESPACE::ws; diff --git a/build/stlport/stlport/using/h/streambuf.h b/build/stlport/stlport/using/h/streambuf.h deleted file mode 100644 index 459de3dba299..000000000000 --- a/build/stlport/stlport/using/h/streambuf.h +++ /dev/null @@ -1 +0,0 @@ -using ::streambuf; diff --git a/build/stlport/stlport/using/h/strstream.h b/build/stlport/stlport/using/h/strstream.h deleted file mode 100644 index a7d9f119cbcd..000000000000 --- a/build/stlport/stlport/using/h/strstream.h +++ /dev/null @@ -1,4 +0,0 @@ -using _STLP_OLD_IO_NAMESPACE::strstreambuf; -using _STLP_OLD_IO_NAMESPACE::istrstream; -using _STLP_OLD_IO_NAMESPACE::ostrstream; -using _STLP_OLD_IO_NAMESPACE::strstream; diff --git a/build/stlport/stlport/using/iomanip b/build/stlport/stlport/using/iomanip deleted file mode 100644 index 8a7c792f8510..000000000000 --- a/build/stlport/stlport/using/iomanip +++ /dev/null @@ -1,6 +0,0 @@ -using _STLP_NEW_IO_NAMESPACE::setiosflags; -using _STLP_NEW_IO_NAMESPACE::resetiosflags; -using _STLP_NEW_IO_NAMESPACE::setbase; -using _STLP_NEW_IO_NAMESPACE::setfill; -using _STLP_NEW_IO_NAMESPACE::setprecision; -using _STLP_NEW_IO_NAMESPACE::setw; diff --git a/build/stlport/stlport/using/ios b/build/stlport/stlport/using/ios deleted file mode 100644 index d89b495ad20e..000000000000 --- a/build/stlport/stlport/using/ios +++ /dev/null @@ -1,41 +0,0 @@ -# ifdef _STLP_BROKEN_USING_DIRECTIVE -using namespace _STLP_NEW_IO_NAMESPACE; -# else - -using _STLP_NEW_IO_NAMESPACE::ios; -using _STLP_NEW_IO_NAMESPACE::streamoff; -using _STLP_NEW_IO_NAMESPACE::streamsize; - -using _STLP_NEW_IO_NAMESPACE::ios_base; -using _STLP_NEW_IO_NAMESPACE::basic_ios; - -// _lib.std.ios.manip_, manipulators: -using _STLP_NEW_IO_NAMESPACE::boolalpha; -using _STLP_NEW_IO_NAMESPACE::noboolalpha; -using _STLP_NEW_IO_NAMESPACE::showbase; -using _STLP_NEW_IO_NAMESPACE::noshowbase; -using _STLP_NEW_IO_NAMESPACE::showpoint; -using _STLP_NEW_IO_NAMESPACE::noshowpoint; -using _STLP_NEW_IO_NAMESPACE::showpos; -using _STLP_NEW_IO_NAMESPACE::noshowpos; -using _STLP_NEW_IO_NAMESPACE::skipws; -using _STLP_NEW_IO_NAMESPACE::noskipws; -using _STLP_NEW_IO_NAMESPACE::uppercase; -using _STLP_NEW_IO_NAMESPACE::nouppercase; - -// _lib.adjustfield.manip_ adjustfield: -using _STLP_NEW_IO_NAMESPACE::internal; -using _STLP_NEW_IO_NAMESPACE::left; -using _STLP_NEW_IO_NAMESPACE::right; - -// _lib.basefield.manip_ basefield: -using _STLP_NEW_IO_NAMESPACE::dec; -using _STLP_NEW_IO_NAMESPACE::hex; -using _STLP_NEW_IO_NAMESPACE::oct; - -// _lib.floatfield.manip_ floatfield: -using _STLP_NEW_IO_NAMESPACE::fixed; -using _STLP_NEW_IO_NAMESPACE::scientific; - -# endif /* _STLP_BROKEN_USING_DIRECTIVE */ - diff --git a/build/stlport/stlport/using/iosfwd b/build/stlport/stlport/using/iosfwd deleted file mode 100644 index b564e819f9ff..000000000000 --- a/build/stlport/stlport/using/iosfwd +++ /dev/null @@ -1,54 +0,0 @@ -# if defined (_STLP_USE_NEW_IOSTREAMS) -using _STLP_NEW_IO_NAMESPACE::char_traits; -using _STLP_NEW_IO_NAMESPACE::basic_ios; -using _STLP_NEW_IO_NAMESPACE::basic_streambuf; -using _STLP_NEW_IO_NAMESPACE::basic_istream; -using _STLP_NEW_IO_NAMESPACE::basic_ostream; -using _STLP_NEW_IO_NAMESPACE::basic_iostream; -using _STLP_NEW_IO_NAMESPACE::basic_stringbuf; -using _STLP_NEW_IO_NAMESPACE::basic_istringstream; -using _STLP_NEW_IO_NAMESPACE::basic_ostringstream; -using _STLP_NEW_IO_NAMESPACE::basic_stringstream; -using _STLP_NEW_IO_NAMESPACE::basic_filebuf; -using _STLP_NEW_IO_NAMESPACE::basic_ifstream; -using _STLP_NEW_IO_NAMESPACE::basic_ofstream; -using _STLP_NEW_IO_NAMESPACE::basic_fstream; -using _STLP_NEW_IO_NAMESPACE::fpos; -using _STLP_NEW_IO_NAMESPACE::istreambuf_iterator; -using _STLP_NEW_IO_NAMESPACE::ostreambuf_iterator; -using _STLP_NEW_IO_NAMESPACE::stringbuf; -using _STLP_NEW_IO_NAMESPACE::istringstream; -using _STLP_NEW_IO_NAMESPACE::ostringstream; -using _STLP_NEW_IO_NAMESPACE::stringstream; -# endif - -using _STLP_NEW_IO_NAMESPACE::ios; -using _STLP_NEW_IO_NAMESPACE::streambuf; -using _STLP_NEW_IO_NAMESPACE::istream; -using _STLP_NEW_IO_NAMESPACE::ostream; -using _STLP_NEW_IO_NAMESPACE::iostream; - -using _STLP_NEW_IO_NAMESPACE::filebuf; -using _STLP_NEW_IO_NAMESPACE::ifstream; -using _STLP_NEW_IO_NAMESPACE::ofstream; -using _STLP_NEW_IO_NAMESPACE::fstream; - -using _STLP_NEW_IO_NAMESPACE::streampos; -using _STLP_NEW_IO_NAMESPACE::streamoff; - -# if !defined (_STLP_NO_WIDE_STREAMS) -using _STLP_NEW_IO_NAMESPACE::wios; -using _STLP_NEW_IO_NAMESPACE::wstreambuf; -using _STLP_NEW_IO_NAMESPACE::wistream; -using _STLP_NEW_IO_NAMESPACE::wostream; -using _STLP_NEW_IO_NAMESPACE::wiostream; -using _STLP_NEW_IO_NAMESPACE::wstringbuf; -using _STLP_NEW_IO_NAMESPACE::wistringstream; -using _STLP_NEW_IO_NAMESPACE::wostringstream; -using _STLP_NEW_IO_NAMESPACE::wstringstream; -using _STLP_NEW_IO_NAMESPACE::wfilebuf; -using _STLP_NEW_IO_NAMESPACE::wifstream; -using _STLP_NEW_IO_NAMESPACE::wofstream; -using _STLP_NEW_IO_NAMESPACE::wfstream; -using _STLP_NEW_IO_NAMESPACE::wstreampos; -# endif diff --git a/build/stlport/stlport/using/iostream b/build/stlport/stlport/using/iostream deleted file mode 100644 index 6169afb2f601..000000000000 --- a/build/stlport/stlport/using/iostream +++ /dev/null @@ -1,14 +0,0 @@ - -# include - -using _STLP_VENDOR_STD::cin; -using _STLP_VENDOR_STD::cout; -using _STLP_VENDOR_STD::cerr; -using _STLP_VENDOR_STD::clog; - -# if ! defined (_STLP_NO_WIDE_STREAMS) -using _STLP_VENDOR_STD::wcin; -using _STLP_VENDOR_STD::wcout; -using _STLP_VENDOR_STD::wcerr; -using _STLP_VENDOR_STD::wclog; -# endif diff --git a/build/stlport/stlport/using/istream b/build/stlport/stlport/using/istream deleted file mode 100644 index baf10d285749..000000000000 --- a/build/stlport/stlport/using/istream +++ /dev/null @@ -1,16 +0,0 @@ -# include - -using _STLP_NEW_IO_NAMESPACE::basic_istream; -using _STLP_NEW_IO_NAMESPACE::basic_iostream; - -using _STLP_NEW_IO_NAMESPACE::istream; -using _STLP_NEW_IO_NAMESPACE::iostream; - -# if !defined (_STLP_NO_NATIVE_WIDE_STREAMS) -using _STLP_NEW_IO_NAMESPACE::wistream; -using _STLP_NEW_IO_NAMESPACE::wiostream; -# endif - -#if !(defined (_STLP_MSVC) && (_STLP_MSVC < 1200)) -using _STLP_NEW_IO_NAMESPACE::ws; -#endif diff --git a/build/stlport/stlport/using/locale b/build/stlport/stlport/using/locale deleted file mode 100644 index aa99b5bee485..000000000000 --- a/build/stlport/stlport/using/locale +++ /dev/null @@ -1,65 +0,0 @@ -#if !defined(_STLP_NO_IMPORT_LOCALE) - -// from -#if !defined (_STLP_NO_MBSTATE_T) -using _STLP_VENDOR_MB_NAMESPACE::mbstate_t; -#endif - -// _lib.locale_, locale: -using _STLP_NEW_IO_NAMESPACE::locale; -using _STLP_NEW_IO_NAMESPACE::use_facet; -using _STLP_NEW_IO_NAMESPACE::has_facet; - -// _lib.locale.convenience_, convenience interfaces: -using _STLP_NEW_IO_NAMESPACE::isspace; -using _STLP_NEW_IO_NAMESPACE::isprint; -using _STLP_NEW_IO_NAMESPACE::iscntrl; -using _STLP_NEW_IO_NAMESPACE::isupper; -using _STLP_NEW_IO_NAMESPACE::islower; -using _STLP_NEW_IO_NAMESPACE::isalpha; -using _STLP_NEW_IO_NAMESPACE::isdigit; -using _STLP_NEW_IO_NAMESPACE::ispunct; -using _STLP_NEW_IO_NAMESPACE::isxdigit; -using _STLP_NEW_IO_NAMESPACE::isalnum; -using _STLP_NEW_IO_NAMESPACE::isgraph; -using _STLP_NEW_IO_NAMESPACE::toupper; -using _STLP_NEW_IO_NAMESPACE::tolower; - -// _lib.category.ctype_ and _lib.facet.ctype.special_, ctype: -using _STLP_NEW_IO_NAMESPACE::ctype_base; -using _STLP_NEW_IO_NAMESPACE::ctype; -using _STLP_NEW_IO_NAMESPACE::ctype_byname; -using _STLP_NEW_IO_NAMESPACE::codecvt_base; -using _STLP_NEW_IO_NAMESPACE::codecvt; -using _STLP_NEW_IO_NAMESPACE::codecvt_byname; - -// _lib.category.numeric_ and _lib.facet.numpunct_, numeric: -using _STLP_NEW_IO_NAMESPACE::num_get; -using _STLP_NEW_IO_NAMESPACE::num_put; -using _STLP_NEW_IO_NAMESPACE::numpunct; -using _STLP_NEW_IO_NAMESPACE::numpunct_byname; - -// _lib.category.collate_, collation: -using _STLP_NEW_IO_NAMESPACE::collate; -using _STLP_NEW_IO_NAMESPACE::collate_byname; - -// _lib.category.time_, date and time: -using _STLP_NEW_IO_NAMESPACE::time_base; -using _STLP_NEW_IO_NAMESPACE::time_get; -using _STLP_NEW_IO_NAMESPACE::time_get_byname; -using _STLP_NEW_IO_NAMESPACE::time_put; -using _STLP_NEW_IO_NAMESPACE::time_put_byname; - -// _lib.category.monetary_, money: -using _STLP_NEW_IO_NAMESPACE::money_base; -using _STLP_NEW_IO_NAMESPACE::money_get; -using _STLP_NEW_IO_NAMESPACE::money_put; -using _STLP_NEW_IO_NAMESPACE::moneypunct; -using _STLP_NEW_IO_NAMESPACE::moneypunct_byname; - -#if !defined (_STLP_OWN_IOSTREAMS) && !defined (_STLP_NO_NATIVE_MESSAGE_FACET) -using _STLP_NEW_IO_NAMESPACE::messages_base; -using _STLP_NEW_IO_NAMESPACE::messages; -using _STLP_NEW_IO_NAMESPACE::messages_byname; -#endif // _MSL_NO_MESSAGE_FACET -#endif /* !defined(_STLP_NO_IMPORT_LOCALE) */ diff --git a/build/stlport/stlport/using/ostream b/build/stlport/stlport/using/ostream deleted file mode 100644 index 162b32d8b133..000000000000 --- a/build/stlport/stlport/using/ostream +++ /dev/null @@ -1,10 +0,0 @@ -using _STLP_NEW_IO_NAMESPACE::basic_ostream; -using _STLP_NEW_IO_NAMESPACE::ostream; - -# ifndef _STLP_NO_WIDE_STREAMS -using _STLP_NEW_IO_NAMESPACE::wostream; -# endif - -using _STLP_NEW_IO_NAMESPACE::endl; -using _STLP_NEW_IO_NAMESPACE::ends; -using _STLP_NEW_IO_NAMESPACE::flush; diff --git a/build/stlport/stlport/using/sstream b/build/stlport/stlport/using/sstream deleted file mode 100644 index 925c37e2da64..000000000000 --- a/build/stlport/stlport/using/sstream +++ /dev/null @@ -1,16 +0,0 @@ -using _STLP_NEW_IO_NAMESPACE::basic_stringbuf; -using _STLP_NEW_IO_NAMESPACE::stringbuf; - -using _STLP_NEW_IO_NAMESPACE::basic_istringstream; -using _STLP_NEW_IO_NAMESPACE::basic_ostringstream; -using _STLP_NEW_IO_NAMESPACE::basic_stringstream; -using _STLP_NEW_IO_NAMESPACE::istringstream; -using _STLP_NEW_IO_NAMESPACE::ostringstream; -using _STLP_NEW_IO_NAMESPACE::stringstream; - -#ifndef _STLP_NO_WIDE_STREAMS -using _STLP_NEW_IO_NAMESPACE::wstringbuf; -using _STLP_NEW_IO_NAMESPACE::wistringstream; -using _STLP_NEW_IO_NAMESPACE::wostringstream; -using _STLP_NEW_IO_NAMESPACE::wstringstream; -#endif diff --git a/build/stlport/stlport/using/streambuf b/build/stlport/stlport/using/streambuf deleted file mode 100644 index 308241dee806..000000000000 --- a/build/stlport/stlport/using/streambuf +++ /dev/null @@ -1,5 +0,0 @@ -using _STLP_NEW_IO_NAMESPACE::basic_streambuf; -using _STLP_NEW_IO_NAMESPACE::streambuf; -#ifndef _STLP_NO_WIDE_STREAMS -using _STLP_NEW_IO_NAMESPACE::wstreambuf; -# endif diff --git a/build/stlport/stlport/using/strstream b/build/stlport/stlport/using/strstream deleted file mode 100644 index eb26ac1f557a..000000000000 --- a/build/stlport/stlport/using/strstream +++ /dev/null @@ -1,4 +0,0 @@ -using _STLP_NEW_IO_NAMESPACE::strstreambuf; -using _STLP_NEW_IO_NAMESPACE::istrstream; -using _STLP_NEW_IO_NAMESPACE::ostrstream; -using _STLP_NEW_IO_NAMESPACE::strstream; diff --git a/build/stlport/stlport/utility b/build/stlport/stlport/utility deleted file mode 100644 index 4aaaa5935d47..000000000000 --- a/build/stlport/stlport/utility +++ /dev/null @@ -1,60 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_UTILITY - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x75 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x75) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -# define _STLP_UTILITY -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x75) && !defined (_STLP_DONT_POP_HEADER_ID) -# ifndef _STLP_INTERNAL_PAIR_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x75) || defined (_STLP_DONT_POP_HEADER_ID) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(utility) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x75) -# if !defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - -#endif /* _STLP_UTILITY */ - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/valarray b/build/stlport/stlport/valarray deleted file mode 100644 index 0cb07767ca9f..000000000000 --- a/build/stlport/stlport/valarray +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 1999 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_VALARRAY - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x76 -# include -# define _STLP_VALARRAY -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x76) -# ifndef _STLP_VALARRAY_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x76) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(valarray) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x76) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_VALARRAY */ - - -// Local Variables: -// mode:C++ -// End: diff --git a/build/stlport/stlport/vector b/build/stlport/stlport/vector deleted file mode 100644 index 92c41b744f0c..000000000000 --- a/build/stlport/stlport/vector +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Copyright (c) 1996,1997 - * Silicon Graphics Computer Systems, Inc. - * - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#ifndef _STLP_VECTOR - -#ifndef _STLP_OUTERMOST_HEADER_ID -# define _STLP_OUTERMOST_HEADER_ID 0x77 -# include -# define _STLP_VECTOR -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x77) -# ifndef _STLP_INTERNAL_ALGOBASE_H -# include -# endif - -# ifndef _STLP_INTERNAL_VECTOR_H -# include -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID != 0x77) || defined (_STLP_IMPORT_VENDOR_STD) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_HEADER(vector) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x77) -# include -# undef _STLP_OUTERMOST_HEADER_ID -#endif - -#endif /* _STLP_VECTOR */ - -// Local Variables: -// mode:C++ -// End: - diff --git a/build/stlport/stlport/wchar.h b/build/stlport/stlport/wchar.h deleted file mode 100644 index 6d6679969816..000000000000 --- a/build/stlport/stlport/wchar.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x278 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x278) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -#if !defined (_STLP_WCE_EVC3) && !defined (_STLP_NO_WCHAR_T) - -# if defined (__BORLANDC__) && !defined (__linux__) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next <_str.h> -# else -# include _STLP_NATIVE_CPP_C_HEADER(_str.h) -# endif -# ifdef __cplusplus -using _STLP_VENDOR_CSTD::strlen; -using _STLP_VENDOR_CSTD::strspn; -# endif -# endif - -# if (((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))) && defined (__APPLE__)) || defined (__OpenBSD__) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(stddef.h) -# endif -# else -# if defined (_STLP_HAS_INCLUDE_NEXT) -# include_next -# else -# include _STLP_NATIVE_C_HEADER(wchar.h) -# endif -# endif -#endif /* !defined (_STLP_WCE_EVC3) && !defined (_STLP_NO_WCHAR_T) */ - -#ifndef _STLP_INTERNAL_MBSTATE_T -# include -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x278) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif - diff --git a/build/stlport/stlport/wctype.h b/build/stlport/stlport/wctype.h deleted file mode 100644 index c64ab9bea61b..000000000000 --- a/build/stlport/stlport/wctype.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1999 - * Boris Fomitchev - * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use or copy this software for any purpose is hereby granted - * without fee, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. - * - */ - -#if !defined (_STLP_OUTERMOST_HEADER_ID) -# define _STLP_OUTERMOST_HEADER_ID 0x279 -# include -#elif (_STLP_OUTERMOST_HEADER_ID == 0x279) && !defined (_STLP_DONT_POP_HEADER_ID) -# define _STLP_DONT_POP_HEADER_ID -#endif - -/* evc3 doesn't have wctype.h */ -#if !defined(_STLP_WCE_EVC3) -# if defined (_STLP_HAS_INCLUDE_NEXT) -# if defined (__hpux) -# include_next -# include_next -# endif -# include_next -# else -# if defined (__hpux) -# include _STLP_NATIVE_C_HEADER(stdarg.h) -# include _STLP_NATIVE_C_HEADER(wchar.h) -# endif -# include _STLP_NATIVE_C_HEADER(wctype.h) -# endif -#endif - -#if (_STLP_OUTERMOST_HEADER_ID == 0x279) -# if ! defined (_STLP_DONT_POP_HEADER_ID) -# include -# undef _STLP_OUTERMOST_HEADER_ID -# else -# undef _STLP_DONT_POP_HEADER_ID -# endif -#endif diff --git a/build/stlport/test/.gitignore b/build/stlport/test/.gitignore deleted file mode 100644 index ee40a85d1c81..000000000000 --- a/build/stlport/test/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -obj -libs diff --git a/build/templates.mozbuild b/build/templates.mozbuild index c08154c50991..85b700c2a28b 100644 --- a/build/templates.mozbuild +++ b/build/templates.mozbuild @@ -20,9 +20,6 @@ def Binary(): # haven't set it but should have). if CONFIG['STLPORT_LIBS']: OS_LIBS += [CONFIG['STLPORT_LIBS']] - elif CONFIG['OS_TARGET'] == 'Android': - if CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport': - USE_LIBS += ['stlport'] @template diff --git a/config/external/icu/common/moz.build b/config/external/icu/common/moz.build index d1d10a0e4118..031f7f8136a2 100644 --- a/config/external/icu/common/moz.build +++ b/config/external/icu/common/moz.build @@ -7,11 +7,6 @@ Library('icuuc') FINAL_LIBRARY = 'icu' -if CONFIG['OS_TARGET'] == 'Android' and CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport': - USE_LIBS += [ - 'gabi++' - ] - DEFINES['U_COMMON_IMPLEMENTATION'] = True # This normally gets defined in the SDK but our WINVER is too low. #FIXME: should probably stop including mozilla-config.h diff --git a/config/external/icu/defs.mozbuild b/config/external/icu/defs.mozbuild index 88624499c7e6..666bd4f6d677 100644 --- a/config/external/icu/defs.mozbuild +++ b/config/external/icu/defs.mozbuild @@ -47,6 +47,3 @@ if CONFIG['CLANG_CL']: '-Wno-macro-redefined', '-Wno-microsoft-include', ] - -if CONFIG['OS_TARGET'] == 'Android' and CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport': - LOCAL_INCLUDES += ['/build/gabi++/include'] diff --git a/toolkit/content/license.html b/toolkit/content/license.html index 3a8f1a18d442..28d8faba3705 100644 --- a/toolkit/content/license.html +++ b/toolkit/content/license.html @@ -142,9 +142,6 @@

  • Skia License
  • Snappy License
  • sprintf.js License
  • -#ifdef USE_STLPORT -
  • STLport License
  • -#endif
  • SunSoft License
  • SuperFastHash License
  • Unicode License
  • @@ -4909,76 +4906,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    -#ifdef USE_STLPORT -

    STLport License

    - -

    This license applies to most files in the directory - build/stlport/.

    - -
    -Boris Fomitchev grants Licensee a non-exclusive, non-transferable, royalty-free
    -license to use STLport and its documentation without fee.
    -
    -By downloading, using, or copying STLport or any portion thereof,  Licensee
    -agrees to abide by the intellectual property laws and all other applicable laws
    -of the United States of America, and to all of the terms and conditions of this
    -Agreement.
    -
    -Licensee shall maintain the following copyright and permission notices on
    -STLport sources and its documentation unchanged :
    -
    -Copyright 1999,2000 Boris Fomitchev
    -
    -This material is provided "as is", with absolutely no warranty expressed or
    -implied. Any use is at your own risk.
    -Permission to use or copy this software for any purpose is hereby granted
    -without fee, provided the above notices are retained on all copies. Permission
    -to modify the code and to distribute modified code is granted, provided the
    -above notices are retained, and a notice that the code was modified is included
    -with the above copyright notice.
    -The Licensee may distribute binaries compiled with STLport (whether original or
    -modified) without any royalties or restrictions.
    -
    -The Licensee may distribute original or modified STLport sources, provided that:
    -
    -The conditions indicated in the above permission notice are met;
    -The following copyright notices are retained when present, and conditions
    -provided in accompanying permission notices are met :
    -Copyright 1994 Hewlett-Packard Company
    -
    -Copyright 1996,97 Silicon Graphics Computer Systems, Inc.
    -
    -Copyright 1997 Moscow Center for SPARC Technology.
    -
    -Permission to use, copy, modify, distribute and sell this software and its
    -documentation for any purpose is hereby granted without fee, provided that the
    -above copyright notice appear in all copies and that both that copyright
    -notice and this permission notice appear in supporting documentation.
    -Hewlett-Packard Company makes no representations about the suitability of this
    -software for any purpose. It is provided "as is" without express or implied
    -warranty.
    -
    -Permission to use, copy, modify, distribute and sell this software and its
    -documentation for any purpose is hereby granted without fee, provided that the
    -above copyright notice appear in all copies and that both that copyright
    -notice and this permission notice appear in supporting documentation.
    -Silicon Graphics makes no representations about the suitability of this
    -software for any purpose. It is provided "as is" without express or implied
    -warranty.
    -
    -Permission to use, copy, modify, distribute and sell this software and its
    -documentation for any purpose is hereby granted without fee, provided that the
    -above copyright notice appear in all copies and that both that copyright
    -notice and this permission notice appear in supporting documentation. Moscow
    -Center for SPARC Technology  makes no representations about the suitability
    -of this software for any purpose. It is provided "as is" without express or
    -implied warranty.
    -
    - -
    - -#endif -

    SunSoft License

    This license applies to the diff --git a/toolkit/content/moz.build b/toolkit/content/moz.build index dd863e8fd775..cc86890bfa4a 100644 --- a/toolkit/content/moz.build +++ b/toolkit/content/moz.build @@ -14,8 +14,6 @@ DEFINES['CFLAGS'] = CONFIG['OS_CFLAGS'] if CONFIG['OS_TARGET'] == 'Android': DEFINES['ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME'] -if CONFIG['MOZ_ANDROID_CXX_STL'] == 'mozstlport': - DEFINES['USE_STLPORT'] = True if CONFIG['MOZ_ANDROID_CXX_STL'] == 'libc++': DEFINES['MOZ_USE_LIBCXX'] = True From bfacd8d171d2754d2a697d54cab76a53cc5b2391 Mon Sep 17 00:00:00 2001 From: Kannan Vijayan Date: Wed, 21 Sep 2016 11:31:15 -0400 Subject: [PATCH 034/117] Bug 1303454 - Change FlyWeb addon check to use paths from both desktop and android resources. r=ehsan --- dom/flyweb/FlyWebService.cpp | 48 ++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/dom/flyweb/FlyWebService.cpp b/dom/flyweb/FlyWebService.cpp index 039b92a41b4b..77550a00bf0b 100644 --- a/dom/flyweb/FlyWebService.cpp +++ b/dom/flyweb/FlyWebService.cpp @@ -964,6 +964,33 @@ MakeRejectionPromise(const char* name) return promise.forget(); } +static bool +CheckForFlyWebAddon(const nsACString& uriString) +{ + // Before proceeding, ensure that the FlyWeb system addon exists. + nsresult rv; + nsCOMPtr uri; + rv = NS_NewURI(getter_AddRefs(uri), uriString); + if (NS_FAILED(rv)) { + return false; + } + + JSAddonId *addonId = MapURIToAddonID(uri); + if (!addonId) { + return false; + } + + JSFlatString* flat = JS_ASSERT_STRING_IS_FLAT(JS::StringOfAddonId(addonId)); + nsAutoString addonIdString; + AssignJSFlatString(addonIdString, flat); + if (!addonIdString.EqualsLiteral("flyweb@mozilla.org")) { + nsCString addonIdCString = NS_ConvertUTF16toUTF8(addonIdString); + return false; + } + + return true; +} + already_AddRefed FlyWebService::PublishServer(const nsAString& aName, const FlyWebPublishOptions& aOptions, @@ -986,27 +1013,12 @@ FlyWebService::PublishServer(const nsAString& aName, server = new FlyWebPublishedServerImpl(aWindow, aName, aOptions); // Before proceeding, ensure that the FlyWeb system addon exists. - nsresult rv; - nsCOMPtr uri; - rv = NS_NewURI(getter_AddRefs(uri), NS_LITERAL_CSTRING("chrome://flyweb/skin/icon-64.png")); - if (NS_FAILED(rv)) { - return MakeRejectionPromise(__func__); - } - - JSAddonId *addonId = MapURIToAddonID(uri); - if (!addonId) { + if (!CheckForFlyWebAddon(NS_LITERAL_CSTRING("chrome://flyweb/skin/icon-64.png")) && + !CheckForFlyWebAddon(NS_LITERAL_CSTRING("chrome://flyweb/content/icon-64.png"))) + { LOG_E("PublishServer: Failed to find FlyWeb system addon."); return MakeRejectionPromise(__func__); } - - JSFlatString* flat = JS_ASSERT_STRING_IS_FLAT(JS::StringOfAddonId(addonId)); - nsAutoString addonIdString; - AssignJSFlatString(addonIdString, flat); - if (!addonIdString.EqualsLiteral("flyweb@mozilla.org")) { - nsCString addonIdCString = NS_ConvertUTF16toUTF8(addonIdString); - LOG_E("PublishServer: FlyWeb resource found on wrong system addon: %s.", addonIdCString.get()); - return MakeRejectionPromise(__func__); - } } if (aWindow) { From c92fd926492b606ec512317620ee662cafcb6198 Mon Sep 17 00:00:00 2001 From: Kannan Vijayan Date: Wed, 21 Sep 2016 11:32:36 -0400 Subject: [PATCH 035/117] Bug 1303865 - Fix shutdown leak of FlyWebService. r=mconley --- dom/flyweb/FlyWebService.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dom/flyweb/FlyWebService.cpp b/dom/flyweb/FlyWebService.cpp index 77550a00bf0b..5f3b0d66f15c 100644 --- a/dom/flyweb/FlyWebService.cpp +++ b/dom/flyweb/FlyWebService.cpp @@ -5,6 +5,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "mozilla/dom/FlyWebService.h" +#include "mozilla/ClearOnShutdown.h" #include "mozilla/StaticPtr.h" #include "mozilla/ScopeExit.h" #include "mozilla/dom/Promise.h" @@ -907,6 +908,7 @@ FlyWebService::GetOrCreate() { if (!gFlyWebService) { gFlyWebService = new FlyWebService(); + ClearOnShutdown(&gFlyWebService); ErrorResult rv = gFlyWebService->Init(); if (rv.Failed()) { gFlyWebService = nullptr; From b3a7e5c8a0fd0b5c8032cbe55e2daf577ec9304f Mon Sep 17 00:00:00 2001 From: Gabriele Svelto Date: Wed, 21 Sep 2016 17:44:50 +0200 Subject: [PATCH 036/117] Bug 1264367 - Upgrade breakpad to upstream revision 704f41ec901c419f8c321742114b415e6f5ceacc r=ted --- testing/tools/fileid/linux_fileid.cpp | 44 +- .../crashreporter/google-breakpad/.gitignore | 2 + toolkit/crashreporter/google-breakpad/DEPS | 20 +- .../crashreporter/google-breakpad/GIT-INFO | 2 +- .../crashreporter/google-breakpad/Makefile.am | 683 +- .../crashreporter/google-breakpad/Makefile.in | 8327 +++++++++++++++-- .../google-breakpad/README.ANDROID | 2 +- .../crashreporter/google-breakpad/README.md | 91 +- .../crashreporter/google-breakpad/aclocal.m4 | 60 + .../android/google_breakpad/Android.mk | 3 + .../android/sample_app/jni/Application.mk | 1 + .../google-breakpad/autotools/compile | 2 +- .../google-breakpad/autotools/config.guess | 27 +- .../google-breakpad/autotools/config.sub | 25 +- .../google-breakpad/autotools/depcomp | 2 +- .../google-breakpad/autotools/install-sh | 354 +- .../google-breakpad/autotools/missing | 2 +- .../google-breakpad/autotools/test-driver | 15 +- .../google-breakpad/codereview.settings | 7 +- .../crashreporter/google-breakpad/configure | 1186 ++- .../google-breakpad/configure.ac | 45 + .../src/breakpad_googletest_includes.h | 4 +- .../src/client/ios/Breakpad.mm | 2 +- .../crash_generation_server.cc | 3 + .../linux/dump_writer_common/thread_info.cc | 6 + .../dump_writer_common/ucontext_reader.cc | 6 + .../client/linux/handler/exception_handler.cc | 2 +- .../handler/exception_handler_unittest.cc | 27 +- .../linux/handler/microdump_extra_info.h | 6 +- .../microdump_writer/microdump_writer.cc | 184 +- .../minidump_writer/linux_core_dumper.cc | 5 +- .../linux/minidump_writer/linux_core_dumper.h | 4 +- .../linux_core_dumper_unittest.cc | 10 + .../linux/minidump_writer/linux_dumper.cc | 244 +- .../linux/minidump_writer/linux_dumper.h | 25 +- .../linux_ptrace_dumper_unittest.cc | 33 +- .../linux/minidump_writer/minidump_writer.cc | 139 +- .../minidump_writer_unittest.cc | 89 +- .../mac/Breakpad.xcodeproj/project.pbxproj | 2 - .../src/client/mac/handler/dynamic_images.cc | 8 +- .../client/mac/handler/minidump_generator.cc | 50 +- .../src/client/minidump_file_writer.cc | 78 +- .../windows/handler/exception_handler.cc | 10 +- .../src/common/android/include/sys/procfs.h | 4 +- .../src/common/android/include/sys/user.h | 12 +- .../google-breakpad/src/common/common.gyp | 7 + .../src/common/dwarf/bytereader-inl.h | 29 +- .../src/common/dwarf/bytereader.cc | 11 +- .../src/common/dwarf/bytereader.h | 31 +- .../src/common/dwarf/bytereader_unittest.cc | 50 +- .../src/common/dwarf/dwarf2diehandler.cc | 3 +- .../src/common/dwarf/dwarf2diehandler.h | 6 +- .../common/dwarf/dwarf2diehandler_unittest.cc | 11 +- .../src/common/dwarf/dwarf2enums.h | 29 +- .../src/common/dwarf/dwarf2reader.cc | 532 +- .../src/common/dwarf/dwarf2reader.h | 438 +- .../common/dwarf/dwarf2reader_cfi_unittest.cc | 48 +- .../common/dwarf/dwarf2reader_die_unittest.cc | 13 +- .../src/common/dwarf/elf_reader.cc | 1273 +++ .../src/common/dwarf/elf_reader.h | 166 + .../src/common/dwarf/moz.build | 6 + .../google-breakpad/src/common/dwarf/types.h | 8 +- .../src/common/dwarf_cu_to_module.cc | 8 +- .../src/common/dwarf_cu_to_module.h | 6 +- .../src/common/dwarf_cu_to_module_unittest.cc | 12 +- .../src/common/linux/dump_symbols.cc | 215 +- .../src/common/linux/dump_symbols.h | 6 + .../src/common/linux/dump_symbols_unittest.cc | 76 +- .../src/common/linux/elfutils.h | 8 + .../src/common/linux/file_id.cc | 79 +- .../src/common/linux/file_id.h | 35 +- .../src/common/linux/file_id_unittest.cc | 195 +- .../src/common/linux/http_upload.cc | 15 +- .../src/common/linux/http_upload.h | 3 + .../src/common/linux/ignore_ret.h | 2 +- .../src/common/linux/libcurl_wrapper.h | 2 +- .../src/common/linux/memory_mapped_file.cc | 11 - .../src/common/linux/symbol_upload.cc | 155 + .../src/common/linux/symbol_upload.h | 59 + .../src/common/linux/synth_elf.cc | 4 +- .../src/common/linux/synth_elf.h | 2 + .../src/common/mac/Breakpad.xcconfig | 12 +- .../src/common/mac/HTTPMultipartUpload.m | 69 +- .../src/common/mac/dump_syms.cc | 138 +- .../src/common/mac/dump_syms.h | 9 + .../src/common/mac/macho_reader.cc | 6 +- .../google-breakpad/src/common/mac/moz.build | 1 + .../src/common/mac/testing/GTMSenTestCase.m | 72 - .../google-breakpad/src/common/memory.h | 59 +- .../src/common/memory_unittest.cc | 27 + .../google-breakpad/src/common/module.cc | 8 +- .../google-breakpad/src/common/module.h | 5 +- .../src/common/module_unittest.cc | 11 + .../google-breakpad/src/common/moz.build | 4 + .../src/common/stdio_wrapper.h | 43 + .../src/common/windows/omap.cc | 2 +- .../google-breakpad/src/config.h.in | 3 + .../google_breakpad/common/breakpad_types.h | 6 + .../common/minidump_cpu_mips.h | 16 + .../common/minidump_exception_win32.h | 3 + .../google_breakpad/common/minidump_format.h | 89 +- .../google_breakpad/common/minidump_size.h | 6 + .../google_breakpad/processor/call_stack.h | 12 +- .../google_breakpad/processor/code_module.h | 9 +- .../google_breakpad/processor/code_modules.h | 13 + .../src/google_breakpad/processor/microdump.h | 6 + .../src/google_breakpad/processor/minidump.h | 43 +- .../google_breakpad/processor/process_state.h | 11 +- .../google_breakpad/processor/system_info.h | 10 +- .../src/processor/basic_code_module.h | 33 +- .../src/processor/basic_code_modules.cc | 63 +- .../src/processor/basic_code_modules.h | 18 +- .../processor/basic_source_line_resolver.cc | 19 +- .../basic_source_line_resolver_unittest.cc | 4 +- .../src/processor/call_stack.cc | 1 + .../src/processor/disassembler_x86.cc | 1 - .../src/processor/dump_context.cc | 14 +- .../src/processor/exploitability_linux.cc | 65 +- .../src/processor/exploitability_linux.h | 7 + .../src/processor/exploitability_unittest.cc | 60 +- .../fast_source_line_resolver_unittest.cc | 4 +- .../google-breakpad/src/processor/logging.cc | 6 +- .../src/processor/microdump.cc | 84 +- .../processor/microdump_processor_unittest.cc | 88 +- .../google-breakpad/src/processor/minidump.cc | 285 +- .../src/processor/minidump_processor.cc | 50 +- .../processor/minidump_processor_unittest.cc | 1 + .../src/processor/minidump_unittest.cc | 297 +- .../src/processor/proc_maps_linux.cc | 7 +- .../src/processor/proc_maps_linux_unittest.cc | 3 +- .../src/processor/processor.gyp | 7 +- .../src/processor/range_map-inl.h | 130 +- .../google-breakpad/src/processor/range_map.h | 67 +- .../range_map_shrink_down_unittest.cc | 355 + .../src/processor/range_map_unittest.cc | 13 +- .../src/processor/stackwalk_common.cc | 33 +- .../src/processor/stackwalker.cc | 1 + .../src/processor/stackwalker_amd64.cc | 53 +- .../src/processor/stackwalker_amd64.h | 8 + .../processor/stackwalker_amd64_unittest.cc | 335 +- .../src/processor/stackwalker_mips.cc | 414 +- .../processor/stackwalker_mips_unittest.cc | 10 + .../processor/stackwalker_unittest_utils.h | 23 +- .../src/processor/static_map_unittest.cc | 2 +- .../src/processor/symbolic_constants_win.cc | 9 +- .../src/third_party/libdisasm/libdis.h | 4 - .../src/third_party/libdisasm/libdisasm.gyp | 3 + .../src/third_party/libdisasm/x86_disasm.c | 6 +- .../third_party/lss/linux_syscall_support.h | 606 +- .../src/third_party/musl/COPYRIGHT | 163 + .../src/third_party/musl/README | 23 + .../src/third_party/musl/README.breakpad | 3 + .../src/third_party/musl/VERSION | 1 + .../src/third_party/musl/include/elf.h | 2827 ++++++ .../src/tools/linux/dump_syms/dump_syms.cc | 41 +- .../tools/linux/md2core/minidump-2-core.cc | 51 +- .../src/tools/linux/symupload/sym_upload.cc | 131 +- .../dump_syms.xcodeproj/project.pbxproj | 24 +- .../src/tools/mac/dump_syms/dump_syms_tool.cc | 13 +- .../src/tools/mac/dump_syms/macho_dump.cc | 8 +- .../src/tools/mac/dump_syms/moz.build | 2 + .../src/tools/mac/symupload/minidump_upload.m | 4 +- .../src/tools/mac/symupload/symupload.m | 30 +- toolkit/crashreporter/nsExceptionHandler.cpp | 20 +- toolkit/crashreporter/test/moz.build | 4 + toolkit/crashreporter/update-breakpad.sh | 4 +- tools/profiler/core/shared-libraries-linux.cc | 12 +- 167 files changed, 19644 insertions(+), 3006 deletions(-) create mode 100644 toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.cc create mode 100644 toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.h create mode 100644 toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.cc create mode 100644 toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.h create mode 100644 toolkit/crashreporter/google-breakpad/src/common/stdio_wrapper.h create mode 100644 toolkit/crashreporter/google-breakpad/src/processor/range_map_shrink_down_unittest.cc create mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/COPYRIGHT create mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/README create mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/README.breakpad create mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/VERSION create mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/include/elf.h diff --git a/testing/tools/fileid/linux_fileid.cpp b/testing/tools/fileid/linux_fileid.cpp index 9f9d515363c0..de1ecbd1c06c 100644 --- a/testing/tools/fileid/linux_fileid.cpp +++ b/testing/tools/fileid/linux_fileid.cpp @@ -3,49 +3,39 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include +#include #include "common/linux/file_id.h" +#include "common/memory.h" -//TODO: move this somewhere common, this is copied from dump_symbols.cc -// Format the Elf file identifier in IDENTIFIER as a UUID with the -// dashes removed. -void FormatIdentifier(unsigned char identifier[google_breakpad::kMDGUIDSize], - char result_guid[40]) { - char identifier_str[40]; - google_breakpad::FileID::ConvertIdentifierToString( - identifier, - identifier_str, - sizeof(identifier_str)); - int bufpos = 0; - for (int i = 0; identifier_str[i] != '\0'; ++i) - if (identifier_str[i] != '-') - result_guid[bufpos++] = identifier_str[i]; - // Add an extra "0" by the end. PDB files on Windows have an 'age' - // number appended to the end of the file identifier; this isn't - // really used or necessary on other platforms, but let's preserve - // the pattern. - result_guid[bufpos++] = '0'; - // And null terminate. - result_guid[bufpos] = '\0'; -} +using std::string; +using google_breakpad::auto_wasteful_vector; +using google_breakpad::FileID; +using google_breakpad::PageAllocator; int main(int argc, char** argv) { + if (argc != 2) { fprintf(stderr, "usage: fileid \n"); return 1; } - unsigned char identifier[google_breakpad::kMDGUIDSize]; - google_breakpad::FileID file_id(argv[1]); + PageAllocator allocator; + auto_wasteful_vector identifier(&allocator); + FileID file_id(argv[1]); if (!file_id.ElfFileIdentifier(identifier)) { fprintf(stderr, "%s: unable to generate file identifier\n", argv[1]); return 1; } - char result_guid[40]; - FormatIdentifier(identifier, result_guid); - printf("%s\n", result_guid); + + string result_guid = FileID::ConvertIdentifierToUUIDString(identifier); + + // Add an extra "0" at the end. PDB files on Windows have an 'age' + // number appended to the end of the file identifier; this isn't + // really used or necessary on other platforms, but be consistent. + printf("%s0\n", result_guid.c_str()); return 0; } diff --git a/toolkit/crashreporter/google-breakpad/.gitignore b/toolkit/crashreporter/google-breakpad/.gitignore index eaac5da89f15..17874aa046ec 100644 --- a/toolkit/crashreporter/google-breakpad/.gitignore +++ b/toolkit/crashreporter/google-breakpad/.gitignore @@ -31,6 +31,7 @@ # Ignore common compiled artifacts. *~ +*.dwo *.o lib*.a /breakpad.pc @@ -45,6 +46,7 @@ lib*.a /src/tools/linux/md2core/minidump-2-core /src/tools/linux/symupload/minidump_upload /src/tools/linux/symupload/sym_upload +/src/tools/mac/dump_syms/dump_syms # Ignore autotools generated artifacts. .deps diff --git a/toolkit/crashreporter/google-breakpad/DEPS b/toolkit/crashreporter/google-breakpad/DEPS index 1bc31a8a528f..2de510a5edc3 100644 --- a/toolkit/crashreporter/google-breakpad/DEPS +++ b/toolkit/crashreporter/google-breakpad/DEPS @@ -35,23 +35,31 @@ deps = { # Logging code. "src/src/third_party/glog": - "http://google-glog.googlecode.com/svn/trunk@97", + "https://github.com/google/glog.git" + + "@v0.3.4", # Testing libraries and utilities. - "src/src/testing": "http://googlemock.googlecode.com/svn/trunk@408", - "src/src/testing/gtest": "http://googletest.googlecode.com/svn/trunk@615", + "src/src/testing": + "https://github.com/google/googlemock.git" + + "@release-1.7.0", + "src/src/testing/gtest": + "https://github.com/google/googletest.git" + + "@release-1.7.0", # Protobuf. "src/src/third_party/protobuf/protobuf": - "http://protobuf.googlecode.com/svn/trunk@407", + "https://github.com/google/protobuf.git" + + "@cb6dd4ef5f82e41e06179dcd57d3b1d9246ad6ac", # GYP project generator. - "src/src/tools/gyp": "http://gyp.googlecode.com/svn/trunk@1886", + "src/src/tools/gyp": + "https://chromium.googlesource.com/external/gyp/" + + "@e8ab0833a42691cd2184bd4c45d779e43821d3e0", # Linux syscall support. "src/src/third_party/lss": "https://chromium.googlesource.com/linux-syscall-support/" + - "@9292030109847793f7a6689adac1ddafb412fe14" + "@3f6478ac95edf86cd3da300c2c0d34a438f5dbeb", } hooks = [ diff --git a/toolkit/crashreporter/google-breakpad/GIT-INFO b/toolkit/crashreporter/google-breakpad/GIT-INFO index 1b8f92b42f29..fe3520a2c669 100644 --- a/toolkit/crashreporter/google-breakpad/GIT-INFO +++ b/toolkit/crashreporter/google-breakpad/GIT-INFO @@ -1 +1 @@ -c53ed143108948eb7e2d7ee77dc8c0d92050ce7c +704f41ec901c419f8c321742114b415e6f5ceacc diff --git a/toolkit/crashreporter/google-breakpad/Makefile.am b/toolkit/crashreporter/google-breakpad/Makefile.am index 42386bee6739..5a67dc9a95db 100644 --- a/toolkit/crashreporter/google-breakpad/Makefile.am +++ b/toolkit/crashreporter/google-breakpad/Makefile.am @@ -83,6 +83,9 @@ if LINUX_HOST includeclhdir = $(includedir)/$(PACKAGE)/client/linux/handler includeclh_HEADERS = $(top_srcdir)/src/client/linux/handler/*.h +includecldwcdir = $(includedir)/$(PACKAGE)/client/linux/dump_writer_common +includecldwc_HEADERS = $(top_srcdir)/src/client/linux/dump_writer_common/*.h + includeclmdir = $(includedir)/$(PACKAGE)/client/linux/minidump_writer includeclm_HEADERS = $(top_srcdir)/src/client/linux/minidump_writer/*.h @@ -109,11 +112,41 @@ includep_HEADERS = $(top_srcdir)/src/processor/*.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = +## Common test logic +if SYSTEM_TEST_LIBS +TEST_CFLAGS = $(GTEST_CFLAGS) $(GMOCK_CFLAGS) +TEST_LIBS = $(GTEST_LIBS) -lgtest_main $(GMOCK_LIBS) +TEST_DEPS = +else +TEST_CFLAGS = \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing +TEST_LIBS = src/testing/libtesting.a +TEST_DEPS = $(TEST_LIBS) +endif + ## Libraries +check_LIBRARIES = noinst_LIBRARIES = lib_LIBRARIES = bin_PROGRAMS = check_PROGRAMS = +EXTRA_PROGRAMS = +CLEANFILES = + +check_LIBRARIES += src/testing/libtesting.a + +if !SYSTEM_TEST_LIBS +src_testing_libtesting_a_SOURCES = \ + src/breakpad_googletest_includes.h \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc +src_testing_libtesting_a_CPPFLAGS = \ + $(AM_CPPFLAGS) $(TEST_CFLAGS) +endif if !DISABLE_PROCESSOR lib_LIBRARIES += src/libbreakpad.a @@ -131,19 +164,33 @@ src_client_linux_libbreakpad_client_a_SOURCES = \ src/client/linux/dump_writer_common/thread_info.cc \ src/client/linux/dump_writer_common/ucontext_reader.cc \ src/client/linux/handler/exception_handler.cc \ + src/client/linux/handler/exception_handler.h \ src/client/linux/handler/minidump_descriptor.cc \ + src/client/linux/handler/minidump_descriptor.h \ src/client/linux/log/log.cc \ + src/client/linux/log/log.h \ src/client/linux/microdump_writer/microdump_writer.cc \ + src/client/linux/microdump_writer/microdump_writer.h \ + src/client/linux/minidump_writer/linux_core_dumper.cc \ src/client/linux/minidump_writer/linux_dumper.cc \ src/client/linux/minidump_writer/linux_ptrace_dumper.cc \ src/client/linux/minidump_writer/minidump_writer.cc \ + src/client/minidump_file_writer-inl.h \ src/client/minidump_file_writer.cc \ + src/client/minidump_file_writer.h \ src/common/convert_UTF.c \ + src/common/convert_UTF.h \ src/common/md5.cc \ + src/common/md5.h \ src/common/string_conversion.cc \ + src/common/string_conversion.h \ + src/common/linux/elf_core_dump.cc \ src/common/linux/elfutils.cc \ + src/common/linux/elfutils.h \ src/common/linux/file_id.cc \ + src/common/linux/file_id.h \ src/common/linux/guid_creator.cc \ + src/common/linux/guid_creator.h \ src/common/linux/linux_libc_support.cc \ src/common/linux/memory_mapped_file.cc \ src/common/linux/safe_readlink.cc @@ -270,8 +317,6 @@ src_libbreakpad_a_SOURCES = \ src/processor/tokenize.cc \ src/processor/tokenize.h -src_libbreakpad_a_LIBADD = src/third_party/libdisasm/libdisasm.a - src_third_party_libdisasm_libdisasm_a_SOURCES = \ src/third_party/libdisasm/ia32_implicit.c \ src/third_party/libdisasm/ia32_implicit.h \ @@ -308,7 +353,9 @@ bin_PROGRAMS += \ endif !DISABLE_PROCESSOR if LINUX_HOST -bin_PROGRAMS += \ +EXTRA_PROGRAMS += \ + src/client/linux/linux_dumper_unittest_helper +CLEANFILES += \ src/client/linux/linux_dumper_unittest_helper if !DISABLE_TOOLS @@ -317,8 +364,11 @@ bin_PROGRAMS += \ src/tools/linux/dump_syms/dump_syms \ src/tools/linux/md2core/minidump-2-core \ src/tools/linux/symupload/minidump_upload \ - src/tools/linux/symupload/sym_upload \ - src/tools/mac/dump_syms/dump_syms + src/tools/linux/symupload/sym_upload +if X86_HOST +bin_PROGRAMS += \ + src/tools/mac/dump_syms/dump_syms_mac +endif endif endif LINUX_HOST @@ -345,18 +395,22 @@ check_PROGRAMS += \ src/processor/pathname_stripper_unittest \ src/processor/postfix_evaluator_unittest \ src/processor/proc_maps_linux_unittest \ + src/processor/range_map_shrink_down_unittest \ src/processor/range_map_unittest \ src/processor/stackwalker_amd64_unittest \ src/processor/stackwalker_arm_unittest \ src/processor/stackwalker_arm64_unittest \ src/processor/stackwalker_address_list_unittest \ src/processor/stackwalker_mips_unittest \ + src/processor/stackwalker_mips64_unittest \ src/processor/stackwalker_x86_unittest \ src/processor/synth_minidump_unittest endif if LINUX_HOST -EXTRA_PROGRAMS = \ +EXTRA_PROGRAMS += \ + src/client/linux/linux_client_unittest_shlib +CLEANFILES += \ src/client/linux/linux_client_unittest_shlib check_PROGRAMS += \ @@ -365,8 +419,11 @@ check_PROGRAMS += \ if !DISABLE_TOOLS check_PROGRAMS += \ src/common/dumper_unittest \ - src/common/mac/macho_reader_unittest \ src/tools/linux/md2core/minidump_2_core_unittest +if X86_HOST +check_PROGRAMS += \ + src/common/mac/macho_reader_unittest +endif endif endif LINUX_HOST @@ -413,6 +470,7 @@ src_client_linux_linux_dumper_unittest_helper_CXXFLAGS=$(PTHREAD_CFLAGS) endif src_client_linux_linux_client_unittest_shlib_SOURCES = \ + $(src_testing_libtesting_a_SOURCES) \ src/client/linux/handler/exception_handler_unittest.cc \ src/client/linux/minidump_writer/directory_reader_unittest.cc \ src/client/linux/minidump_writer/cpu_set_unittest.cc \ @@ -425,12 +483,12 @@ src_client_linux_linux_client_unittest_shlib_SOURCES = \ src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \ src/common/linux/elf_core_dump.cc \ src/common/linux/linux_libc_support_unittest.cc \ + src/common/linux/tests/auto_testfile.h \ src/common/linux/tests/crash_generator.cc \ src/common/memory_unittest.cc \ + src/common/tests/auto_tempdir.h \ src/common/tests/file_utils.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc \ + src/common/tests/file_utils.h \ src/processor/basic_code_modules.cc \ src/processor/dump_context.cc \ src/processor/dump_object.cc \ @@ -448,11 +506,7 @@ src_client_linux_linux_client_unittest_shlib_SOURCES += \ endif src_client_linux_linux_client_unittest_shlib_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_client_linux_linux_client_unittest_shlib_LDFLAGS = \ -shared \ -Wl,-h,linux_client_unittest_shlib @@ -477,6 +531,7 @@ src_client_linux_linux_client_unittest_shlib_LDADD = \ src/common/linux/memory_mapped_file.o \ src/common/linux/safe_readlink.o \ src/common/string_conversion.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) if ANDROID_HOST src_client_linux_linux_client_unittest_shlib_SOURCES += \ @@ -488,27 +543,29 @@ endif src_client_linux_linux_client_unittest_shlib_DEPENDENCIES = \ src/client/linux/linux_dumper_unittest_helper \ src/client/linux/libbreakpad_client.a \ + $(TEST_DEPS) \ src/libbreakpad.a src_client_linux_linux_client_unittest_SOURCES = +# The extra-long build id is for a test in minidump_writer_unittest.cc. src_client_linux_linux_client_unittest_LDFLAGS = \ - -Wl,-rpath,'$$ORIGIN' + -Wl,-rpath,'$$ORIGIN' \ + -Wl,--build-id=0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f if ANDROID_HOST src_client_linux_linux_client_unittest_LDFLAGS += \ -llog endif src_client_linux_linux_client_unittest_LDADD = \ - src/client/linux/linux_client_unittest_shlib + src/client/linux/linux_client_unittest_shlib \ + $(TEST_LIBS) src_client_linux_linux_client_unittest_DEPENDENCIES = \ src/client/linux/linux_client_unittest_shlib if !DISABLE_TOOLS src_tools_linux_core2md_core2md_SOURCES = \ - src/tools/linux/core2md/core2md.cc \ - src/client/linux/minidump_writer/linux_core_dumper.cc \ - src/common/linux/elf_core_dump.cc + src/tools/linux/core2md/core2md.cc src_tools_linux_core2md_core2md_LDADD = \ src/client/linux/libbreakpad_client.a @@ -524,9 +581,12 @@ src_tools_linux_dump_syms_dump_syms_SOURCES = \ src/common/dwarf/bytereader.cc \ src/common/dwarf/dwarf2diehandler.cc \ src/common/dwarf/dwarf2reader.cc \ + src/common/dwarf/elf_reader.cc \ src/common/linux/crc32.cc \ src/common/linux/dump_symbols.cc \ + src/common/linux/dump_symbols.h \ src/common/linux/elf_symbols_to_module.cc \ + src/common/linux/elf_symbols_to_module.h \ src/common/linux/elfutils.cc \ src/common/linux/file_id.cc \ src/common/linux/linux_libc_support.cc \ @@ -536,7 +596,8 @@ src_tools_linux_dump_syms_dump_syms_SOURCES = \ src_tools_linux_md2core_minidump_2_core_SOURCES = \ src/common/linux/memory_mapped_file.cc \ - src/tools/linux/md2core/minidump-2-core.cc + src/tools/linux/md2core/minidump-2-core.cc \ + src/tools/linux/md2core/minidump_memory_range.h src_tools_linux_symupload_minidump_upload_SOURCES = \ src/common/linux/http_upload.cc \ @@ -545,10 +606,13 @@ src_tools_linux_symupload_minidump_upload_LDADD = -ldl src_tools_linux_symupload_sym_upload_SOURCES = \ src/common/linux/http_upload.cc \ + src/common/linux/http_upload.h \ + src/common/linux/symbol_upload.cc \ + src/common/linux/symbol_upload.h \ src/tools/linux/symupload/sym_upload.cc src_tools_linux_symupload_sym_upload_LDADD = -ldl -src_tools_mac_dump_syms_dump_syms_SOURCES = \ +src_tools_mac_dump_syms_dump_syms_mac_SOURCES = \ src/common/dwarf_cfi_to_module.cc \ src/common/dwarf_cu_to_module.cc \ src/common/dwarf_line_to_module.cc \ @@ -560,15 +624,22 @@ src_tools_mac_dump_syms_dump_syms_SOURCES = \ src/common/dwarf/bytereader.cc \ src/common/dwarf/dwarf2diehandler.cc \ src/common/dwarf/dwarf2reader.cc \ + src/common/dwarf/elf_reader.cc \ src/common/mac/arch_utilities.cc \ src/common/mac/dump_syms.cc \ + src/common/mac/dump_syms.h \ src/common/mac/file_id.cc \ + src/common/mac/file_id.h \ src/common/mac/macho_id.cc \ + src/common/mac/macho_id.h \ src/common/mac/macho_reader.cc \ + src/common/mac/macho_reader.h \ src/common/mac/macho_utilities.cc \ + src/common/mac/macho_utilities.h \ src/common/mac/macho_walker.cc \ + src/common/mac/macho_walker.h \ src/tools/mac/dump_syms/dump_syms_tool.cc -src_tools_mac_dump_syms_dump_syms_CXXFLAGS= \ +src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS= \ -I$(top_srcdir)/src/third_party/mac_headers \ -DHAVE_MACH_O_NLIST_H @@ -590,13 +661,20 @@ src_common_dumper_unittest_SOURCES = \ src/common/stabs_to_module_unittest.cc \ src/common/test_assembler.cc \ src/common/dwarf/bytereader.cc \ + src/common/dwarf/bytereader.h \ + src/common/dwarf/bytereader-inl.h \ src/common/dwarf/bytereader_unittest.cc \ src/common/dwarf/cfi_assembler.cc \ + src/common/dwarf/cfi_assembler.h \ src/common/dwarf/dwarf2diehandler.cc \ src/common/dwarf/dwarf2diehandler_unittest.cc \ src/common/dwarf/dwarf2reader.cc \ + src/common/dwarf/dwarf2reader.h \ + src/common/dwarf/elf_reader.cc \ + src/common/dwarf/elf_reader.h \ src/common/dwarf/dwarf2reader_cfi_unittest.cc \ src/common/dwarf/dwarf2reader_die_unittest.cc \ + src/common/dwarf/dwarf2reader_test_common.h \ src/common/linux/crc32.cc \ src/common/linux/dump_symbols.cc \ src/common/linux/dump_symbols_unittest.cc \ @@ -615,18 +693,15 @@ src_common_dumper_unittest_SOURCES = \ src/common/linux/synth_elf.cc \ src/common/linux/synth_elf_unittest.cc \ src/common/linux/tests/crash_generator.cc \ - src/common/tests/file_utils.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/common/linux/tests/crash_generator.h \ + src/common/testdata/func-line-pairing.h \ + src/common/tests/file_utils.cc src_common_dumper_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing \ + $(AM_CPPFLAGS) $(TEST_CFLAGS) \ $(PTHREAD_CFLAGS) -src_common_dumper_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) +src_common_dumper_unittest_LDADD = \ + $(TEST_LIBS) \ + $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_common_mac_macho_reader_unittest_SOURCES = \ src/common/dwarf_cfi_to_module.cc \ @@ -642,6 +717,7 @@ src_common_mac_macho_reader_unittest_SOURCES = \ src/common/dwarf/cfi_assembler.cc \ src/common/dwarf/dwarf2diehandler.cc \ src/common/dwarf/dwarf2reader.cc \ + src/common/dwarf/elf_reader.cc \ src/common/mac/arch_utilities.cc \ src/common/mac/file_id.cc \ src/common/mac/macho_id.cc \ @@ -649,34 +725,23 @@ src_common_mac_macho_reader_unittest_SOURCES = \ src/common/mac/macho_reader_unittest.cc \ src/common/mac/macho_utilities.cc \ src/common/mac/macho_walker.cc \ - src/common/tests/file_utils.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/common/tests/file_utils.cc src_common_mac_macho_reader_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing \ + $(AM_CPPFLAGS) $(TEST_CFLAGS) \ -I$(top_srcdir)/src/third_party/mac_headers \ -DHAVE_MACH_O_NLIST_H \ $(PTHREAD_CFLAGS) -src_common_mac_macho_reader_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) +src_common_mac_macho_reader_unittest_LDADD = \ + $(TEST_LIBS) \ + $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) endif src_tools_linux_md2core_minidump_2_core_unittest_SOURCES = \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc \ src/tools/linux/md2core/minidump_memory_range_unittest.cc src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_tools_linux_md2core_minidump_2_core_unittest_LDADD = \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) endif LINUX_HOST @@ -689,15 +754,9 @@ src_processor_address_map_unittest_LDADD = \ src/processor/pathname_stripper.o src_processor_basic_source_line_resolver_unittest_SOURCES = \ - src/processor/basic_source_line_resolver_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/basic_source_line_resolver_unittest.cc src_processor_basic_source_line_resolver_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_basic_source_line_resolver_unittest_LDADD = \ src/processor/basic_source_line_resolver.o \ src/processor/cfi_frame_info.o \ @@ -705,24 +764,19 @@ src_processor_basic_source_line_resolver_unittest_LDADD = \ src/processor/logging.o \ src/processor/source_line_resolver_base.o \ src/processor/tokenize.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_cfi_frame_info_unittest_SOURCES = \ - src/processor/cfi_frame_info_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/cfi_frame_info_unittest.cc src_processor_cfi_frame_info_unittest_LDADD = \ src/processor/cfi_frame_info.o \ src/processor/logging.o \ src/processor/pathname_stripper.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_cfi_frame_info_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_contained_range_map_unittest_SOURCES = \ src/processor/contained_range_map_unittest.cc @@ -731,16 +785,9 @@ src_processor_contained_range_map_unittest_LDADD = \ src/processor/pathname_stripper.o src_processor_exploitability_unittest_SOURCES = \ - src/processor/exploitability_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/exploitability_unittest.cc src_processor_exploitability_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_exploitability_unittest_LDADD = \ src/processor/minidump_processor.o \ src/processor/process_state.o \ @@ -775,34 +822,23 @@ src_processor_exploitability_unittest_LDADD = \ src/processor/symbolic_constants_win.o \ src/processor/tokenize.o \ src/third_party/libdisasm/libdisasm.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_disassembler_x86_unittest_SOURCES = \ - src/processor/disassembler_x86_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/disassembler_x86_unittest.cc src_processor_disassembler_x86_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_disassembler_x86_unittest_LDADD = \ src/processor/disassembler_x86.o \ src/third_party/libdisasm/libdisasm.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_fast_source_line_resolver_unittest_SOURCES = \ - src/processor/fast_source_line_resolver_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/fast_source_line_resolver_unittest.cc src_processor_fast_source_line_resolver_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_fast_source_line_resolver_unittest_LDADD = \ src/processor/fast_source_line_resolver.o \ src/processor/basic_source_line_resolver.o \ @@ -813,33 +849,23 @@ src_processor_fast_source_line_resolver_unittest_LDADD = \ src/processor/logging.o \ src/processor/source_line_resolver_base.o \ src/processor/tokenize.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_map_serializers_unittest_SOURCES = \ - src/processor/map_serializers_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/map_serializers_unittest.cc src_processor_map_serializers_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_map_serializers_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_microdump_processor_unittest_SOURCES = \ - src/processor/microdump_processor_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/microdump_processor_unittest.cc src_processor_microdump_processor_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_microdump_processor_unittest_LDADD = \ src/processor/basic_code_modules.o \ src/processor/basic_source_line_resolver.o \ @@ -866,18 +892,13 @@ src_processor_microdump_processor_unittest_LDADD = \ src/processor/stackwalker_sparc.o \ src/processor/stackwalker_x86.o \ src/processor/tokenize.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_minidump_processor_unittest_SOURCES = \ - src/processor/minidump_processor_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/minidump_processor_unittest.cc src_processor_minidump_processor_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_minidump_processor_unittest_LDADD = \ src/processor/basic_code_modules.o \ src/processor/basic_source_line_resolver.o \ @@ -911,21 +932,15 @@ src_processor_minidump_processor_unittest_LDADD = \ src/processor/symbolic_constants_win.o \ src/processor/tokenize.o \ src/third_party/libdisasm/libdisasm.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_minidump_unittest_SOURCES = \ src/common/test_assembler.cc \ src/processor/minidump_unittest.cc \ - src/processor/synth_minidump.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/synth_minidump.cc src_processor_minidump_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_minidump_unittest_LDADD = \ src/processor/basic_code_modules.o \ src/processor/dump_context.o \ @@ -934,84 +949,59 @@ src_processor_minidump_unittest_LDADD = \ src/processor/minidump.o \ src/processor/pathname_stripper.o \ src/processor/proc_maps_linux.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_proc_maps_linux_unittest_SOURCES = \ src/processor/proc_maps_linux.cc \ - src/processor/proc_maps_linux_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/proc_maps_linux_unittest.cc src_processor_proc_maps_linux_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_proc_maps_linux_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ src/third_party/libdisasm/libdisasm.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_static_address_map_unittest_SOURCES = \ - src/processor/static_address_map_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/static_address_map_unittest.cc src_processor_static_address_map_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_static_address_map_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_static_contained_range_map_unittest_SOURCES = \ - src/processor/static_contained_range_map_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/static_contained_range_map_unittest.cc src_processor_static_contained_range_map_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_static_contained_range_map_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_static_map_unittest_SOURCES = \ - src/processor/static_map_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/static_map_unittest.cc src_processor_static_map_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_static_map_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_static_range_map_unittest_SOURCES = \ - src/processor/static_range_map_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc + src/processor/static_range_map_unittest.cc src_processor_static_range_map_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_static_range_map_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_pathname_stripper_unittest_SOURCES = \ @@ -1027,6 +1017,16 @@ src_processor_postfix_evaluator_unittest_LDADD = \ src/processor/pathname_stripper.o \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) +src_processor_range_map_shrink_down_unittest_SOURCES = \ + src/processor/range_map_shrink_down_unittest.cc +src_processor_range_map_shrink_down_unittest_LDADD = \ + src/processor/logging.o \ + src/processor/pathname_stripper.o \ + $(TEST_LIBS) \ + $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) +src_processor_range_map_shrink_down_unittest_CPPFLAGS = \ + $(AM_CPPFLAGS) $(TEST_CFLAGS) + src_processor_range_map_unittest_SOURCES = \ src/processor/range_map_unittest.cc src_processor_range_map_unittest_LDADD = \ @@ -1066,131 +1066,95 @@ src_processor_stackwalker_selftest_LDADD = \ src_processor_stackwalker_amd64_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_amd64_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/stackwalker_amd64_unittest.cc src_processor_stackwalker_amd64_unittest_LDADD = \ src/libbreakpad.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_amd64_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_stackwalker_arm_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_arm_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/stackwalker_arm_unittest.cc src_processor_stackwalker_arm_unittest_LDADD = \ src/libbreakpad.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_arm_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_stackwalker_arm64_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_arm64_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/stackwalker_arm64_unittest.cc src_processor_stackwalker_arm64_unittest_LDADD = \ src/libbreakpad.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_arm64_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_stackwalker_address_list_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_address_list_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/stackwalker_address_list_unittest.cc src_processor_stackwalker_address_list_unittest_LDADD = \ src/libbreakpad.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_address_list_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_stackwalker_mips_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_mips_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/stackwalker_mips_unittest.cc src_processor_stackwalker_mips_unittest_LDADD = \ src/libbreakpad.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_mips_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) + +src_processor_stackwalker_mips64_unittest_SOURCES = \ + src/common/test_assembler.cc \ + src/processor/stackwalker_mips64_unittest.cc +src_processor_stackwalker_mips64_unittest_LDADD = \ + src/libbreakpad.a \ + $(TEST_LIBS) \ + $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) +src_processor_stackwalker_mips64_unittest_CPPFLAGS = \ + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_stackwalker_x86_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_x86_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/processor/stackwalker_x86_unittest.cc src_processor_stackwalker_x86_unittest_LDADD = \ src/libbreakpad.a \ + $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_x86_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing + $(AM_CPPFLAGS) $(TEST_CFLAGS) src_processor_synth_minidump_unittest_SOURCES = \ src/common/test_assembler.cc \ src/common/test_assembler.h \ src/processor/synth_minidump_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc \ src/processor/synth_minidump.cc \ src/processor/synth_minidump.h src_processor_synth_minidump_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing -src_processor_synth_minidump_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + $(AM_CPPFLAGS) $(TEST_CFLAGS) +src_processor_synth_minidump_unittest_LDADD = \ + $(TEST_LIBS) \ + $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_common_test_assembler_unittest_SOURCES = \ src/common/test_assembler.cc \ src/common/test_assembler.h \ - src/common/test_assembler_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc + src/common/test_assembler_unittest.cc src_common_test_assembler_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing -src_common_test_assembler_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + $(AM_CPPFLAGS) $(TEST_CFLAGS) +src_common_test_assembler_unittest_LDADD = \ + $(TEST_LIBS) \ + $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) ## Non-installables noinst_PROGRAMS = @@ -1287,33 +1251,32 @@ endif !DISABLE_PROCESSOR ## sed -e s/'^\(.*\)$'/'\t\1 \\'/ EXTRA_DIST = \ $(SCRIPTS) \ - src/processor/stackwalk_selftest_sol.s \ - src/client/linux/handler/Makefile \ - src/client/linux/handler/exception_handler.cc \ - src/client/linux/handler/exception_handler.h \ - src/client/linux/handler/minidump_descriptor.cc \ - src/client/linux/handler/minidump_descriptor.h \ - src/client/linux/handler/exception_handler_test.cc \ - src/client/linux/handler/linux_thread.cc \ - src/client/linux/handler/linux_thread.h \ - src/client/linux/handler/linux_thread_test.cc \ - src/client/linux/handler/minidump_generator.cc \ - src/client/linux/handler/minidump_generator.h \ - src/client/linux/handler/minidump_test.cc \ + src/client/linux/data/linux-gate-amd.sym \ + src/client/linux/data/linux-gate-intel.sym \ + src/client/mac/handler/breakpad_nlist_64.cc \ + src/client/mac/handler/breakpad_nlist_64.h \ src/client/mac/handler/dynamic_images.cc \ src/client/mac/handler/dynamic_images.h \ src/client/mac/handler/exception_handler.cc \ src/client/mac/handler/exception_handler.h \ - src/client/mac/handler/exception_handler_test.cc \ + src/client/mac/handler/mach_vm_compat.h \ src/client/mac/handler/minidump_generator.cc \ src/client/mac/handler/minidump_generator.h \ - src/client/mac/handler/minidump_generator_test.cc \ src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj \ + src/client/mac/handler/minidump_tests32-Info.plist \ + src/client/mac/handler/minidump_tests64-Info.plist \ + src/client/mac/handler/obj-cTestCases-Info.plist \ src/client/mac/handler/protected_memory_allocator.cc \ src/client/mac/handler/protected_memory_allocator.h \ - src/client/minidump_file_writer-inl.h \ - src/client/minidump_file_writer.cc \ - src/client/minidump_file_writer.h \ + src/client/mac/handler/ucontext_compat.h \ + src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym \ + src/client/mac/tests/BreakpadFramework_Test.mm \ + src/client/mac/tests/crash_generation_server_test.cc \ + src/client/mac/tests/exception_handler_test.cc \ + src/client/mac/tests/minidump_generator_test.cc \ + src/client/mac/tests/minidump_generator_test_helper.cc \ + src/client/mac/tests/spawn_child_process.h \ + src/client/mac/tests/testlogging.h \ src/client/minidump_file_writer_unittest.cc \ src/client/solaris/handler/Makefile \ src/client/solaris/handler/exception_handler.cc \ @@ -1324,44 +1287,24 @@ EXTRA_DIST = \ src/client/solaris/handler/minidump_test.cc \ src/client/solaris/handler/solaris_lwp.cc \ src/client/solaris/handler/solaris_lwp.h \ - src/client/windows/breakpad_client.sln \ + src/client/windows/breakpad_client.gyp \ src/client/windows/handler/exception_handler.cc \ src/client/windows/handler/exception_handler.h \ - src/client/windows/handler/exception_handler.vcproj \ + src/client/windows/handler/exception_handler.gyp \ src/client/windows/sender/crash_report_sender.cc \ src/client/windows/sender/crash_report_sender.h \ - src/client/windows/sender/crash_report_sender.vcproj \ - src/common/convert_UTF.c \ - src/common/convert_UTF.h \ - src/common/linux/crc32.cc \ - src/common/linux/dump_symbols.cc \ - src/common/linux/dump_symbols.h \ - src/common/linux/elf_symbols_to_module.cc \ - src/common/linux/elf_symbols_to_module.h \ - src/common/linux/elfutils.cc \ - src/common/linux/elfutils.h \ - src/common/linux/file_id.cc \ - src/common/linux/file_id.h \ - src/common/linux/guid_creator.cc \ - src/common/linux/guid_creator.h \ - src/common/linux/http_upload.cc \ - src/common/linux/http_upload.h \ + src/client/windows/sender/crash_report_sender.gyp \ + src/common/dwarf/dwarf2diehandler.h \ + src/common/dwarf/dwarf2enums.h \ + src/common/dwarf/line_state_machine.h \ + src/common/dwarf/types.h \ + src/common/mac/arch_utilities.h \ + src/common/mac/byteswap.h \ src/common/mac/HTTPMultipartUpload.h \ src/common/mac/HTTPMultipartUpload.m \ - src/common/mac/dump_syms.h \ - src/common/mac/dump_syms.cc \ - src/common/mac/file_id.cc \ - src/common/mac/file_id.h \ - src/common/mac/macho_id.cc \ - src/common/mac/macho_id.h \ - src/common/mac/macho_utilities.cc \ - src/common/mac/macho_utilities.h \ - src/common/mac/macho_walker.cc \ - src/common/mac/macho_walker.h \ src/common/mac/string_utilities.cc \ src/common/mac/string_utilities.h \ - src/common/md5.cc \ - src/common/md5.h \ + src/common/mac/super_fat_arch.h \ src/common/scoped_ptr.h \ src/common/solaris/dump_symbols.cc \ src/common/solaris/dump_symbols.h \ @@ -1370,8 +1313,6 @@ EXTRA_DIST = \ src/common/solaris/guid_creator.cc \ src/common/solaris/guid_creator.h \ src/common/solaris/message_output.h \ - src/common/string_conversion.cc \ - src/common/string_conversion.h \ src/common/windows/guid_string.cc \ src/common/windows/guid_string.h \ src/common/windows/http_upload.cc \ @@ -1380,22 +1321,158 @@ EXTRA_DIST = \ src/common/windows/pdb_source_line_writer.h \ src/common/windows/string_utils-inl.h \ src/common/windows/string_utils.cc \ + src/processor/stackwalk_common.cc \ + src/processor/stackwalk_common.h \ + src/processor/stackwalker_selftest_sol.s \ + src/processor/testdata/ascii_read_av_block_write.dmp \ + src/processor/testdata/ascii_read_av_clobber_write.dmp \ + src/processor/testdata/ascii_read_av_conditional.dmp \ + src/processor/testdata/ascii_read_av.dmp \ + src/processor/testdata/ascii_read_av_then_jmp.dmp \ + src/processor/testdata/ascii_read_av_xchg_write.dmp \ + src/processor/testdata/ascii_write_av_arg_to_call.dmp \ + src/processor/testdata/ascii_write_av.dmp \ + src/processor/testdata/exec_av_on_stack.dmp \ + src/processor/testdata/linux_divide_by_zero.dmp \ + src/processor/testdata/linux_executable_heap.dmp \ + src/processor/testdata/linux_executable_stack.dmp \ + src/processor/testdata/linux_inside_module_exe_region1.dmp \ + src/processor/testdata/linux_inside_module_exe_region2.dmp \ + src/processor/testdata/linux_jmp_to_0.dmp \ + src/processor/testdata/linux_jmp_to_module_not_exe_region.dmp \ + src/processor/testdata/linux_null_dereference.dmp \ + src/processor/testdata/linux_null_read_av.dmp \ + src/processor/testdata/linux_outside_module.dmp \ + src/processor/testdata/linux_overflow.dmp \ + src/processor/testdata/linux_raise_sigabrt.dmp \ + src/processor/testdata/linux_stack_pointer_in_module.dmp \ + src/processor/testdata/linux_stack_pointer_in_stack.dmp \ + src/processor/testdata/linux_stacksmash.dmp \ + src/processor/testdata/linux_write_to_nonwritable_module.dmp \ + src/processor/testdata/linux_write_to_nonwritable_region_math.dmp \ + src/processor/testdata/linux_write_to_outside_module.dmp \ + src/processor/testdata/linux_write_to_outside_module_via_math.dmp \ + src/processor/testdata/linux_write_to_under_4k.dmp \ + src/processor/testdata/microdump-arm64.dmp \ + src/processor/testdata/microdump-arm.dmp \ + src/processor/testdata/microdump-mips32.dmp \ + src/processor/testdata/microdump-mips64.dmp \ + src/processor/testdata/microdump-multiple.dmp \ + src/processor/testdata/microdump.stackwalk-arm64.out \ + src/processor/testdata/microdump.stackwalk-arm.out \ + src/processor/testdata/microdump.stackwalk.machine_readable-arm64.out \ + src/processor/testdata/microdump.stackwalk.machine_readable-arm.out \ + src/processor/testdata/microdump-x86.dmp \ src/processor/testdata/minidump2.dmp \ src/processor/testdata/minidump2.dump.out \ src/processor/testdata/minidump2.stackwalk.machine_readable.out \ src/processor/testdata/minidump2.stackwalk.out \ + src/processor/testdata/module0.out \ src/processor/testdata/module1.out \ src/processor/testdata/module2.out \ src/processor/testdata/module3_bad.out \ src/processor/testdata/module4_bad.out \ + src/processor/testdata/null_read_av.dmp \ + src/processor/testdata/null_write_av.dmp \ + src/processor/testdata/read_av_clobber_write.dmp \ + src/processor/testdata/read_av_conditional.dmp \ + src/processor/testdata/read_av_non_null.dmp \ + src/processor/testdata/stack_exhaustion.dmp \ + src/processor/testdata/write_av_non_null.dmp \ src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \ + src/processor/testdata/symbols/ld-2.13.so/C32AD7E235EA6112E02A5B9D6219C4850/ld-2.13.so.sym \ + src/processor/testdata/symbols/libc-2.13.so/F4F8DFCD5A5FB5A7CE64717E9E6AE3890/libc-2.13.so.sym \ + src/processor/testdata/symbols/libgcc_s.so.1/18B180F90887D8F8B5C35D185444AF4C0/libgcc_s.so.1.sym \ + src/processor/testdata/symbols/microdump/breakpad_unittests/D6D1FEC9A15DE7F38A236898871A2E770/breakpad_unittests.sym \ + src/processor/testdata/symbols/microdump/breakpad_unittests/DA7778FB66018A4E9B4110ED06E730D00/breakpad_unittests.sym \ + src/processor/testdata/symbols/microdump/crash_example/6E72E2F1A5F59AB3D51356FDFE394D490/crash_example.sym \ + src/processor/testdata/symbols/microdump/crash_example/8F36148CC4647A8116CAF2A25F591F570/crash_example.sym \ + src/processor/testdata/symbols/null_read_av/7B7D1968FF0D47AE4366E9C3A7E1B6750/null_read_av.sym \ + src/processor/testdata/symbols/overflow/B0E1FC01EF48E39CAF5C881D2DF0C3840/overflow.sym \ src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym \ src/processor/testdata/test_app.cc \ - src/tools/linux/dump_syms/Makefile \ - src/tools/linux/dump_syms/dump_syms.cc \ - src/tools/linux/symupload/Makefile \ - src/tools/linux/symupload/minidump_upload.cc \ - src/tools/linux/symupload/sym_upload.cc \ + src/testing/gtest/include/gtest/gtest.h \ + src/testing/gtest/include/gtest/gtest-death-test.h \ + src/testing/gtest/include/gtest/gtest-message.h \ + src/testing/gtest/include/gtest/gtest-param-test.h \ + src/testing/gtest/include/gtest/gtest-printers.h \ + src/testing/gtest/include/gtest/gtest-spi.h \ + src/testing/gtest/include/gtest/gtest-test-part.h \ + src/testing/gtest/include/gtest/gtest-typed-test.h \ + src/testing/gtest/include/gtest/gtest_pred_impl.h \ + src/testing/gtest/include/gtest/gtest_prod.h \ + src/testing/gtest/include/gtest/internal/gtest-death-test-internal.h \ + src/testing/gtest/include/gtest/internal/gtest-filepath.h \ + src/testing/gtest/include/gtest/internal/gtest-internal.h \ + src/testing/gtest/include/gtest/internal/gtest-linked_ptr.h \ + src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h \ + src/testing/gtest/include/gtest/internal/gtest-param-util.h \ + src/testing/gtest/include/gtest/internal/gtest-port.h \ + src/testing/gtest/include/gtest/internal/gtest-string.h \ + src/testing/gtest/include/gtest/internal/gtest-tuple.h \ + src/testing/gtest/include/gtest/internal/gtest-type-util.h \ + src/testing/gtest/src/gtest.cc \ + src/testing/gtest/src/gtest-death-test.cc \ + src/testing/gtest/src/gtest-filepath.cc \ + src/testing/gtest/src/gtest-internal-inl.h \ + src/testing/gtest/src/gtest-port.cc \ + src/testing/gtest/src/gtest-printers.cc \ + src/testing/gtest/src/gtest-test-part.cc \ + src/testing/gtest/src/gtest-typed-test.cc \ + src/testing/include/gmock/gmock.h \ + src/testing/include/gmock/gmock-actions.h \ + src/testing/include/gmock/gmock-cardinalities.h \ + src/testing/include/gmock/gmock-generated-actions.h \ + src/testing/include/gmock/gmock-generated-function-mockers.h \ + src/testing/include/gmock/gmock-generated-matchers.h \ + src/testing/include/gmock/gmock-generated-nice-strict.h \ + src/testing/include/gmock/gmock-matchers.h \ + src/testing/include/gmock/gmock-more-actions.h \ + src/testing/include/gmock/gmock-more-matchers.h \ + src/testing/include/gmock/gmock-spec-builders.h \ + src/testing/include/gmock/internal/gmock-generated-internal-utils.h \ + src/testing/include/gmock/internal/gmock-internal-utils.h \ + src/testing/include/gmock/internal/gmock-port.h \ + src/testing/src/gmock.cc \ + src/testing/src/gmock-cardinalities.cc \ + src/testing/src/gmock-internal-utils.cc \ + src/testing/src/gmock-matchers.cc \ + src/testing/src/gmock-spec-builders.cc \ + src/testing/src/gmock_main.cc \ + src/third_party/curl/COPYING \ + src/third_party/curl/curlbuild.h \ + src/third_party/curl/curl.h \ + src/third_party/curl/curlrules.h \ + src/third_party/curl/curlver.h \ + src/third_party/curl/easy.h \ + src/third_party/curl/mprintf.h \ + src/third_party/curl/multi.h \ + src/third_party/curl/stdcheaders.h \ + src/third_party/curl/typecheck-gcc.h \ + src/third_party/curl/types.h \ + src/third_party/mac_headers/architecture/byte_order.h \ + src/third_party/mac_headers/i386/_types.h \ + src/third_party/mac_headers/mach/boolean.h \ + src/third_party/mac_headers/mach/i386/boolean.h \ + src/third_party/mac_headers/mach/i386/vm_param.h \ + src/third_party/mac_headers/mach/i386/vm_types.h \ + src/third_party/mac_headers/mach/machine/boolean.h \ + src/third_party/mac_headers/mach/machine.h \ + src/third_party/mac_headers/mach/machine/thread_state.h \ + src/third_party/mac_headers/mach/machine/thread_status.h \ + src/third_party/mac_headers/mach/machine/vm_types.h \ + src/third_party/mac_headers/mach-o/arch.h \ + src/third_party/mac_headers/mach-o/fat.h \ + src/third_party/mac_headers/mach-o/loader.h \ + src/third_party/mac_headers/mach-o/nlist.h \ + src/third_party/mac_headers/mach/thread_status.h \ + src/third_party/mac_headers/mach/vm_prot.h \ + src/third_party/mac_headers/README \ + src/third_party/musl/README \ + src/third_party/musl/COPYRIGHT \ + src/third_party/musl/README.breakpad \ + src/third_party/musl/VERSION \ + src/third_party/musl/include/elf.h \ src/tools/mac/crash_report/crash_report.mm \ src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj \ src/tools/mac/crash_report/on_demand_symbol_supplier.h \ @@ -1414,12 +1491,20 @@ EXTRA_DIST = \ src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym \ src/tools/windows/converter/ms_symbol_server_converter.cc \ src/tools/windows/converter/ms_symbol_server_converter.h \ - src/tools/windows/converter/ms_symbol_server_converter.vcproj \ + src/tools/windows/converter/ms_symbol_server_converter.gyp \ src/tools/windows/dump_syms/dump_syms.cc \ - src/tools/windows/dump_syms/dump_syms.vcproj \ + src/tools/windows/dump_syms/dump_syms.gyp \ src/tools/windows/dump_syms/run_regtest.sh \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym \ + src/tools/windows/dump_syms/testdata/dump_syms_regtest64.sym \ + src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym \ + src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym \ + src/tools/windows/dump_syms/testdata/omap_stretched.sym \ + src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym \ src/tools/windows/symupload/symupload.cc \ - src/tools/windows/symupload/symupload.vcproj + src/tools/windows/symupload/symupload.gyp + +mostlyclean-local: + -find src -name '*.dwo' -exec rm -f {} + diff --git a/toolkit/crashreporter/google-breakpad/Makefile.in b/toolkit/crashreporter/google-breakpad/Makefile.in index b3fa7c7351e4..06a112d50f34 100644 --- a/toolkit/crashreporter/google-breakpad/Makefile.in +++ b/toolkit/crashreporter/google-breakpad/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.10 from Makefile.am. +# Makefile.in generated by automake 1.15 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,7 +14,7 @@ @SET_MAKE@ -# Copyright (c) 2006, Google Inc. +# Copyright (c) 2011, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -46,10 +46,67 @@ + VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -64,242 +121,1811 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -bin_PROGRAMS = src/processor/minidump_dump$(EXEEXT) \ - src/processor/minidump_stackwalk$(EXEEXT) -check_PROGRAMS = src/processor/address_map_unittest$(EXEEXT) \ - src/processor/basic_source_line_resolver_unittest$(EXEEXT) \ - src/processor/contained_range_map_unittest$(EXEEXT) \ - src/processor/minidump_processor_unittest$(EXEEXT) \ - src/processor/pathname_stripper_unittest$(EXEEXT) \ - src/processor/postfix_evaluator_unittest$(EXEEXT) \ - src/processor/range_map_unittest$(EXEEXT) $(am__EXEEXT_1) -@SELFTEST_TRUE@am__append_1 = \ -@SELFTEST_TRUE@ src/processor/stackwalker_selftest + +# This allows using fixed NDK headers when building for Android. +# This is only necessary for building the unit tests until GTest is upgraded +# to a future version. +@ANDROID_HOST_TRUE@am__append_1 = \ +@ANDROID_HOST_TRUE@ -I$(top_srcdir)/src/common/android/include \ +@ANDROID_HOST_TRUE@ -I$(top_srcdir)/src/common/android/testing/include + +# These are good warnings to be treated as errors +@GCC_TRUE@am__append_2 = \ +@GCC_TRUE@ -Werror=missing-braces \ +@GCC_TRUE@ -Werror=non-virtual-dtor \ +@GCC_TRUE@ -Werror=overloaded-virtual \ +@GCC_TRUE@ -Werror=reorder \ +@GCC_TRUE@ -Werror=sign-compare \ +@GCC_TRUE@ -Werror=unused-variable \ +@GCC_TRUE@ -Werror=vla + + +# Build as PIC on Linux, for linux_client_unittest_shlib +@LINUX_HOST_TRUE@am__append_3 = -fPIC +@LINUX_HOST_TRUE@am__append_4 = -fPIC +bin_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) +check_PROGRAMS = $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \ + $(am__EXEEXT_8) $(am__EXEEXT_9) +EXTRA_PROGRAMS = $(am__EXEEXT_1) +@DISABLE_PROCESSOR_FALSE@am__append_5 = src/libbreakpad.a +@DISABLE_PROCESSOR_FALSE@am__append_6 = breakpad.pc +@DISABLE_PROCESSOR_FALSE@am__append_7 = src/third_party/libdisasm/libdisasm.a +@LINUX_HOST_TRUE@am__append_8 = src/client/linux/libbreakpad_client.a +@LINUX_HOST_TRUE@am__append_9 = breakpad-client.pc +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_10 = \ +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ src/common/android/breakpad_getcontext.S + +@DISABLE_PROCESSOR_FALSE@am__append_11 = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_stackwalk \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_dump \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk + +@LINUX_HOST_TRUE@am__append_12 = src/client/linux/linux_dumper_unittest_helper \ +@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib +@LINUX_HOST_TRUE@am__append_13 = src/client/linux/linux_dumper_unittest_helper \ +@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__append_14 = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/core2md/core2md \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/dump_syms/dump_syms \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump-2-core \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/minidump_upload \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/sym_upload + +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@am__append_15 = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@ src/tools/mac/dump_syms/dump_syms_mac + +@DISABLE_PROCESSOR_FALSE@am__append_16 = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/address_map_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_shrink_down_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips64_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86_unittest \ +@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump_unittest + +@LINUX_HOST_TRUE@am__append_17 = \ +@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest + +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__append_18 = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dumper_unittest \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump_2_core_unittest + +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@am__append_19 = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@ src/common/mac/macho_reader_unittest + +@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@am__append_20 = \ +@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@ src/processor/stackwalker_selftest + +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_21 = \ +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ src/common/android/breakpad_getcontext.S + +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_22 = \ +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ src/common/android/breakpad_getcontext_unittest.cc + +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_23 = \ +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ -llog -lm + +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_24 = \ +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ -llog noinst_PROGRAMS = subdir = . -DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/configure $(top_srcdir)/src/config.h.in AUTHORS \ - COPYING ChangeLog INSTALL NEWS autotools/config.guess \ - autotools/config.sub autotools/depcomp autotools/install-sh \ - autotools/ltmain.sh autotools/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ + $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ + $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(dist_doc_DATA) $(includec_HEADERS) \ + $(am__includecl_HEADERS_DIST) $(am__includeclc_HEADERS_DIST) \ + $(am__includecldwc_HEADERS_DIST) \ + $(am__includeclh_HEADERS_DIST) $(am__includeclm_HEADERS_DIST) \ + $(includegbc_HEADERS) $(am__includelss_HEADERS_DIST) \ + $(includep_HEADERS) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h -CONFIG_CLEAN_FILES = +CONFIG_CLEAN_FILES = breakpad.pc breakpad-client.pc +CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(docdir)" -libLTLIBRARIES_INSTALL = $(INSTALL) -LTLIBRARIES = $(lib_LTLIBRARIES) -src_libbreakpad_la_LIBADD = + "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" \ + "$(DESTDIR)$(includecdir)" "$(DESTDIR)$(includecldir)" \ + "$(DESTDIR)$(includeclcdir)" "$(DESTDIR)$(includecldwcdir)" \ + "$(DESTDIR)$(includeclhdir)" "$(DESTDIR)$(includeclmdir)" \ + "$(DESTDIR)$(includegbcdir)" "$(DESTDIR)$(includelssdir)" \ + "$(DESTDIR)$(includepdir)" +LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +src_client_linux_libbreakpad_client_a_AR = $(AR) $(ARFLAGS) +src_client_linux_libbreakpad_client_a_LIBADD = +am__src_client_linux_libbreakpad_client_a_SOURCES_DIST = \ + src/client/linux/crash_generation/crash_generation_client.cc \ + src/client/linux/crash_generation/crash_generation_server.cc \ + src/client/linux/dump_writer_common/thread_info.cc \ + src/client/linux/dump_writer_common/ucontext_reader.cc \ + src/client/linux/handler/exception_handler.cc \ + src/client/linux/handler/exception_handler.h \ + src/client/linux/handler/minidump_descriptor.cc \ + src/client/linux/handler/minidump_descriptor.h \ + src/client/linux/log/log.cc src/client/linux/log/log.h \ + src/client/linux/microdump_writer/microdump_writer.cc \ + src/client/linux/microdump_writer/microdump_writer.h \ + src/client/linux/minidump_writer/linux_core_dumper.cc \ + src/client/linux/minidump_writer/linux_dumper.cc \ + src/client/linux/minidump_writer/linux_ptrace_dumper.cc \ + src/client/linux/minidump_writer/minidump_writer.cc \ + src/client/minidump_file_writer-inl.h \ + src/client/minidump_file_writer.cc \ + src/client/minidump_file_writer.h src/common/convert_UTF.c \ + src/common/convert_UTF.h src/common/md5.cc src/common/md5.h \ + src/common/string_conversion.cc src/common/string_conversion.h \ + src/common/linux/elf_core_dump.cc src/common/linux/elfutils.cc \ + src/common/linux/elfutils.h src/common/linux/file_id.cc \ + src/common/linux/file_id.h src/common/linux/guid_creator.cc \ + src/common/linux/guid_creator.h \ + src/common/linux/linux_libc_support.cc \ + src/common/linux/memory_mapped_file.cc \ + src/common/linux/safe_readlink.cc \ + src/common/android/breakpad_getcontext.S am__dirstamp = $(am__leading_dot)dirstamp -am_src_libbreakpad_la_OBJECTS = src/processor/basic_code_modules.lo \ - src/processor/basic_source_line_resolver.lo \ - src/processor/call_stack.lo src/processor/logging.lo \ - src/processor/minidump.lo src/processor/minidump_processor.lo \ - src/processor/pathname_stripper.lo \ - src/processor/process_state.lo \ - src/processor/simple_symbol_supplier.lo \ - src/processor/stackwalker.lo \ - src/processor/stackwalker_amd64.lo \ - src/processor/stackwalker_ppc.lo \ - src/processor/stackwalker_sparc.lo \ - src/processor/stackwalker_x86.lo -src_libbreakpad_la_OBJECTS = $(am_src_libbreakpad_la_OBJECTS) -binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -@SELFTEST_TRUE@am__EXEEXT_1 = \ -@SELFTEST_TRUE@ src/processor/stackwalker_selftest$(EXEEXT) +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_1 = src/common/android/breakpad_getcontext.$(OBJEXT) +@LINUX_HOST_TRUE@am_src_client_linux_libbreakpad_client_a_OBJECTS = src/client/linux/crash_generation/crash_generation_client.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/crash_generation/crash_generation_server.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/thread_info.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/ucontext_reader.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/handler/minidump_descriptor.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/log/log.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_core_dumper.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_dumper.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_ptrace_dumper.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/minidump_file_writer.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/convert_UTF.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/md5.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/string_conversion.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/elfutils.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/file_id.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/guid_creator.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.$(OBJEXT) \ +@LINUX_HOST_TRUE@ $(am__objects_1) +src_client_linux_libbreakpad_client_a_OBJECTS = \ + $(am_src_client_linux_libbreakpad_client_a_OBJECTS) +src_libbreakpad_a_AR = $(AR) $(ARFLAGS) +src_libbreakpad_a_LIBADD = +am__src_libbreakpad_a_SOURCES_DIST = \ + src/google_breakpad/common/breakpad_types.h \ + src/google_breakpad/common/minidump_format.h \ + src/google_breakpad/common/minidump_size.h \ + src/google_breakpad/processor/basic_source_line_resolver.h \ + src/google_breakpad/processor/call_stack.h \ + src/google_breakpad/processor/code_module.h \ + src/google_breakpad/processor/code_modules.h \ + src/google_breakpad/processor/dump_context.h \ + src/google_breakpad/processor/dump_object.h \ + src/google_breakpad/processor/exploitability.h \ + src/google_breakpad/processor/fast_source_line_resolver.h \ + src/google_breakpad/processor/memory_region.h \ + src/google_breakpad/processor/microdump.h \ + src/google_breakpad/processor/microdump_processor.h \ + src/google_breakpad/processor/minidump.h \ + src/google_breakpad/processor/minidump_processor.h \ + src/google_breakpad/processor/process_result.h \ + src/google_breakpad/processor/process_state.h \ + src/google_breakpad/processor/proc_maps_linux.h \ + src/google_breakpad/processor/source_line_resolver_base.h \ + src/google_breakpad/processor/source_line_resolver_interface.h \ + src/google_breakpad/processor/stack_frame.h \ + src/google_breakpad/processor/stack_frame_cpu.h \ + src/google_breakpad/processor/stack_frame_symbolizer.h \ + src/google_breakpad/processor/stackwalker.h \ + src/google_breakpad/processor/symbol_supplier.h \ + src/google_breakpad/processor/system_info.h \ + src/processor/address_map-inl.h src/processor/address_map.h \ + src/processor/basic_code_module.h \ + src/processor/basic_code_modules.cc \ + src/processor/basic_code_modules.h \ + src/processor/basic_source_line_resolver_types.h \ + src/processor/basic_source_line_resolver.cc \ + src/processor/call_stack.cc src/processor/cfi_frame_info.cc \ + src/processor/cfi_frame_info.h \ + src/processor/contained_range_map-inl.h \ + src/processor/contained_range_map.h \ + src/processor/disassembler_x86.h \ + src/processor/disassembler_x86.cc \ + src/processor/dump_context.cc src/processor/dump_object.cc \ + src/processor/exploitability.cc \ + src/processor/exploitability_linux.h \ + src/processor/exploitability_linux.cc \ + src/processor/exploitability_win.h \ + src/processor/exploitability_win.cc \ + src/processor/fast_source_line_resolver_types.h \ + src/processor/fast_source_line_resolver.cc \ + src/processor/linked_ptr.h src/processor/logging.h \ + src/processor/logging.cc src/processor/map_serializers-inl.h \ + src/processor/map_serializers.h src/processor/microdump.cc \ + src/processor/microdump_processor.cc src/processor/minidump.cc \ + src/processor/minidump_processor.cc \ + src/processor/module_comparer.cc \ + src/processor/module_comparer.h src/processor/module_factory.h \ + src/processor/module_serializer.cc \ + src/processor/module_serializer.h \ + src/processor/pathname_stripper.cc \ + src/processor/pathname_stripper.h \ + src/processor/postfix_evaluator-inl.h \ + src/processor/postfix_evaluator.h \ + src/processor/process_state.cc \ + src/processor/proc_maps_linux.cc src/processor/range_map-inl.h \ + src/processor/range_map.h \ + src/processor/simple_serializer-inl.h \ + src/processor/simple_serializer.h \ + src/processor/simple_symbol_supplier.cc \ + src/processor/simple_symbol_supplier.h \ + src/processor/windows_frame_info.h \ + src/processor/source_line_resolver_base_types.h \ + src/processor/source_line_resolver_base.cc \ + src/processor/stack_frame_cpu.cc \ + src/processor/stack_frame_symbolizer.cc \ + src/processor/stackwalker.cc \ + src/processor/stackwalker_amd64.cc \ + src/processor/stackwalker_amd64.h \ + src/processor/stackwalker_arm.cc \ + src/processor/stackwalker_arm.h \ + src/processor/stackwalker_arm64.cc \ + src/processor/stackwalker_arm64.h \ + src/processor/stackwalker_address_list.cc \ + src/processor/stackwalker_address_list.h \ + src/processor/stackwalker_mips.cc \ + src/processor/stackwalker_mips.h \ + src/processor/stackwalker_ppc.cc \ + src/processor/stackwalker_ppc.h \ + src/processor/stackwalker_ppc64.cc \ + src/processor/stackwalker_ppc64.h \ + src/processor/stackwalker_sparc.cc \ + src/processor/stackwalker_sparc.h \ + src/processor/stackwalker_x86.cc \ + src/processor/stackwalker_x86.h \ + src/processor/static_address_map-inl.h \ + src/processor/static_address_map.h \ + src/processor/static_contained_range_map-inl.h \ + src/processor/static_contained_range_map.h \ + src/processor/static_map_iterator-inl.h \ + src/processor/static_map_iterator.h \ + src/processor/static_map-inl.h src/processor/static_map.h \ + src/processor/static_range_map-inl.h \ + src/processor/static_range_map.h \ + src/processor/symbolic_constants_win.cc \ + src/processor/symbolic_constants_win.h \ + src/processor/tokenize.cc src/processor/tokenize.h +@DISABLE_PROCESSOR_FALSE@am_src_libbreakpad_a_OBJECTS = src/processor/basic_code_modules.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.$(OBJEXT) +src_libbreakpad_a_OBJECTS = $(am_src_libbreakpad_a_OBJECTS) +src_testing_libtesting_a_AR = $(AR) $(ARFLAGS) +src_testing_libtesting_a_LIBADD = +am__src_testing_libtesting_a_SOURCES_DIST = \ + src/breakpad_googletest_includes.h \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc +@SYSTEM_TEST_LIBS_FALSE@am_src_testing_libtesting_a_OBJECTS = src/testing/gtest/src/src_testing_libtesting_a-gtest-all.$(OBJEXT) \ +@SYSTEM_TEST_LIBS_FALSE@ src/testing/gtest/src/src_testing_libtesting_a-gtest_main.$(OBJEXT) \ +@SYSTEM_TEST_LIBS_FALSE@ src/testing/src/src_testing_libtesting_a-gmock-all.$(OBJEXT) +src_testing_libtesting_a_OBJECTS = \ + $(am_src_testing_libtesting_a_OBJECTS) +src_third_party_libdisasm_libdisasm_a_AR = $(AR) $(ARFLAGS) +src_third_party_libdisasm_libdisasm_a_LIBADD = +am__src_third_party_libdisasm_libdisasm_a_SOURCES_DIST = \ + src/third_party/libdisasm/ia32_implicit.c \ + src/third_party/libdisasm/ia32_implicit.h \ + src/third_party/libdisasm/ia32_insn.c \ + src/third_party/libdisasm/ia32_insn.h \ + src/third_party/libdisasm/ia32_invariant.c \ + src/third_party/libdisasm/ia32_invariant.h \ + src/third_party/libdisasm/ia32_modrm.c \ + src/third_party/libdisasm/ia32_modrm.h \ + src/third_party/libdisasm/ia32_opcode_tables.c \ + src/third_party/libdisasm/ia32_opcode_tables.h \ + src/third_party/libdisasm/ia32_operand.c \ + src/third_party/libdisasm/ia32_operand.h \ + src/third_party/libdisasm/ia32_reg.c \ + src/third_party/libdisasm/ia32_reg.h \ + src/third_party/libdisasm/ia32_settings.c \ + src/third_party/libdisasm/ia32_settings.h \ + src/third_party/libdisasm/libdis.h \ + src/third_party/libdisasm/qword.h \ + src/third_party/libdisasm/x86_disasm.c \ + src/third_party/libdisasm/x86_format.c \ + src/third_party/libdisasm/x86_imm.c \ + src/third_party/libdisasm/x86_imm.h \ + src/third_party/libdisasm/x86_insn.c \ + src/third_party/libdisasm/x86_misc.c \ + src/third_party/libdisasm/x86_operand_list.c \ + src/third_party/libdisasm/x86_operand_list.h +@DISABLE_PROCESSOR_FALSE@am_src_third_party_libdisasm_libdisasm_a_OBJECTS = src/third_party/libdisasm/ia32_implicit.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_insn.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_invariant.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_modrm.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_opcode_tables.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_operand.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_reg.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_settings.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_disasm.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_format.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_imm.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_insn.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_misc.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_operand_list.$(OBJEXT) +src_third_party_libdisasm_libdisasm_a_OBJECTS = \ + $(am_src_third_party_libdisasm_libdisasm_a_OBJECTS) +@LINUX_HOST_TRUE@am__EXEEXT_1 = src/client/linux/linux_dumper_unittest_helper$(EXEEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib$(EXEEXT) +@DISABLE_PROCESSOR_FALSE@am__EXEEXT_2 = src/processor/microdump_stackwalk$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_dump$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk$(EXEEXT) +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__EXEEXT_3 = src/tools/linux/core2md/core2md$(EXEEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/dump_syms/dump_syms$(EXEEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump-2-core$(EXEEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/minidump_upload$(EXEEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/sym_upload$(EXEEXT) +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@am__EXEEXT_4 = src/tools/mac/dump_syms/dump_syms_mac$(EXEEXT) +@DISABLE_PROCESSOR_FALSE@am__EXEEXT_5 = src/common/test_assembler_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/address_map_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_shrink_down_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips64_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86_unittest$(EXEEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump_unittest$(EXEEXT) +@LINUX_HOST_TRUE@am__EXEEXT_6 = src/client/linux/linux_client_unittest$(EXEEXT) +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__EXEEXT_7 = src/common/dumper_unittest$(EXEEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT) +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@am__EXEEXT_8 = src/common/mac/macho_reader_unittest$(EXEEXT) +@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@am__EXEEXT_9 = src/processor/stackwalker_selftest$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) -am_src_processor_address_map_unittest_OBJECTS = \ - src/processor/address_map_unittest.$(OBJEXT) +am_src_client_linux_linux_client_unittest_OBJECTS = +src_client_linux_linux_client_unittest_OBJECTS = \ + $(am_src_client_linux_linux_client_unittest_OBJECTS) +am__DEPENDENCIES_1 = +@SYSTEM_TEST_LIBS_FALSE@am__DEPENDENCIES_2 = src/testing/libtesting.a +@SYSTEM_TEST_LIBS_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) \ +@SYSTEM_TEST_LIBS_TRUE@ $(am__DEPENDENCIES_1) +src_client_linux_linux_client_unittest_LINK = $(CCLD) $(AM_CFLAGS) \ + $(CFLAGS) $(src_client_linux_linux_client_unittest_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__src_client_linux_linux_client_unittest_shlib_SOURCES_DIST = \ + src/breakpad_googletest_includes.h \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc \ + src/client/linux/handler/exception_handler_unittest.cc \ + src/client/linux/minidump_writer/directory_reader_unittest.cc \ + src/client/linux/minidump_writer/cpu_set_unittest.cc \ + src/client/linux/minidump_writer/line_reader_unittest.cc \ + src/client/linux/minidump_writer/linux_core_dumper.cc \ + src/client/linux/minidump_writer/linux_core_dumper_unittest.cc \ + src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc \ + src/client/linux/minidump_writer/minidump_writer_unittest.cc \ + src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc \ + src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \ + src/common/linux/elf_core_dump.cc \ + src/common/linux/linux_libc_support_unittest.cc \ + src/common/linux/tests/auto_testfile.h \ + src/common/linux/tests/crash_generator.cc \ + src/common/memory_unittest.cc src/common/tests/auto_tempdir.h \ + src/common/tests/file_utils.cc src/common/tests/file_utils.h \ + src/processor/basic_code_modules.cc \ + src/processor/dump_context.cc src/processor/dump_object.cc \ + src/processor/logging.cc src/processor/minidump.cc \ + src/processor/pathname_stripper.cc \ + src/processor/proc_maps_linux.cc \ + src/common/android/breakpad_getcontext.S \ + src/client/linux/microdump_writer/microdump_writer_unittest.cc \ + src/common/android/breakpad_getcontext_unittest.cc +@SYSTEM_TEST_LIBS_FALSE@am__objects_2 = src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.$(OBJEXT) \ +@SYSTEM_TEST_LIBS_FALSE@ src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.$(OBJEXT) \ +@SYSTEM_TEST_LIBS_FALSE@ src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.$(OBJEXT) +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_3 = src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.$(OBJEXT) +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_4 = src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.$(OBJEXT) +@LINUX_HOST_TRUE@am_src_client_linux_linux_client_unittest_shlib_OBJECTS = \ +@LINUX_HOST_TRUE@ $(am__objects_2) \ +@LINUX_HOST_TRUE@ src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-logging.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-minidump.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.$(OBJEXT) \ +@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.$(OBJEXT) \ +@LINUX_HOST_TRUE@ $(am__objects_3) \ +@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.$(OBJEXT) \ +@LINUX_HOST_TRUE@ $(am__objects_4) +src_client_linux_linux_client_unittest_shlib_OBJECTS = \ + $(am_src_client_linux_linux_client_unittest_shlib_OBJECTS) +src_client_linux_linux_client_unittest_shlib_LINK = $(CXXLD) \ + $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(src_client_linux_linux_client_unittest_shlib_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__src_client_linux_linux_dumper_unittest_helper_SOURCES_DIST = src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc +@LINUX_HOST_TRUE@am_src_client_linux_linux_dumper_unittest_helper_OBJECTS = src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.$(OBJEXT) +src_client_linux_linux_dumper_unittest_helper_OBJECTS = \ + $(am_src_client_linux_linux_dumper_unittest_helper_OBJECTS) +src_client_linux_linux_dumper_unittest_helper_LDADD = $(LDADD) +src_client_linux_linux_dumper_unittest_helper_LINK = $(CXXLD) \ + $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) \ + $(CXXFLAGS) \ + $(src_client_linux_linux_dumper_unittest_helper_LDFLAGS) \ + $(LDFLAGS) -o $@ +am__src_common_dumper_unittest_SOURCES_DIST = \ + src/common/byte_cursor_unittest.cc \ + src/common/dwarf_cfi_to_module.cc \ + src/common/dwarf_cfi_to_module_unittest.cc \ + src/common/dwarf_cu_to_module.cc \ + src/common/dwarf_cu_to_module_unittest.cc \ + src/common/dwarf_line_to_module.cc \ + src/common/dwarf_line_to_module_unittest.cc \ + src/common/language.cc src/common/memory_range_unittest.cc \ + src/common/module.cc src/common/module_unittest.cc \ + src/common/stabs_reader.cc src/common/stabs_reader_unittest.cc \ + src/common/stabs_to_module.cc \ + src/common/stabs_to_module_unittest.cc \ + src/common/test_assembler.cc src/common/dwarf/bytereader.cc \ + src/common/dwarf/bytereader.h \ + src/common/dwarf/bytereader-inl.h \ + src/common/dwarf/bytereader_unittest.cc \ + src/common/dwarf/cfi_assembler.cc \ + src/common/dwarf/cfi_assembler.h \ + src/common/dwarf/dwarf2diehandler.cc \ + src/common/dwarf/dwarf2diehandler_unittest.cc \ + src/common/dwarf/dwarf2reader.cc \ + src/common/dwarf/dwarf2reader.h src/common/dwarf/elf_reader.cc \ + src/common/dwarf/elf_reader.h \ + src/common/dwarf/dwarf2reader_cfi_unittest.cc \ + src/common/dwarf/dwarf2reader_die_unittest.cc \ + src/common/dwarf/dwarf2reader_test_common.h \ + src/common/linux/crc32.cc src/common/linux/dump_symbols.cc \ + src/common/linux/dump_symbols_unittest.cc \ + src/common/linux/elf_core_dump.cc \ + src/common/linux/elf_core_dump_unittest.cc \ + src/common/linux/elf_symbols_to_module.cc \ + src/common/linux/elf_symbols_to_module_unittest.cc \ + src/common/linux/elfutils.cc src/common/linux/file_id.cc \ + src/common/linux/file_id_unittest.cc \ + src/common/linux/linux_libc_support.cc \ + src/common/linux/memory_mapped_file.cc \ + src/common/linux/memory_mapped_file_unittest.cc \ + src/common/linux/safe_readlink.cc \ + src/common/linux/safe_readlink_unittest.cc \ + src/common/linux/synth_elf.cc \ + src/common/linux/synth_elf_unittest.cc \ + src/common/linux/tests/crash_generator.cc \ + src/common/linux/tests/crash_generator.h \ + src/common/testdata/func-line-pairing.h \ + src/common/tests/file_utils.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_common_dumper_unittest_OBJECTS = src/common/src_common_dumper_unittest-byte_cursor_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_cfi_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_cu_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_line_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-language.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-memory_range_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-module_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-stabs_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-stabs_reader_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-stabs_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-stabs_to_module_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-bytereader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-cfi_assembler.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-elf_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-crc32.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-dump_symbols.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elf_core_dump.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elfutils.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-file_id.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-file_id_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-linux_libc_support.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-memory_mapped_file.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-safe_readlink.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-synth_elf.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-synth_elf_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/tests/src_common_dumper_unittest-crash_generator.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/tests/src_common_dumper_unittest-file_utils.$(OBJEXT) +src_common_dumper_unittest_OBJECTS = \ + $(am_src_common_dumper_unittest_OBJECTS) +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_DEPENDENCIES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_2) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) +am__src_common_mac_macho_reader_unittest_SOURCES_DIST = \ + src/common/dwarf_cfi_to_module.cc \ + src/common/dwarf_cu_to_module.cc \ + src/common/dwarf_line_to_module.cc src/common/language.cc \ + src/common/md5.cc src/common/module.cc \ + src/common/stabs_reader.cc src/common/stabs_to_module.cc \ + src/common/test_assembler.cc src/common/dwarf/bytereader.cc \ + src/common/dwarf/cfi_assembler.cc \ + src/common/dwarf/dwarf2diehandler.cc \ + src/common/dwarf/dwarf2reader.cc \ + src/common/dwarf/elf_reader.cc \ + src/common/mac/arch_utilities.cc src/common/mac/file_id.cc \ + src/common/mac/macho_id.cc src/common/mac/macho_reader.cc \ + src/common/mac/macho_reader_unittest.cc \ + src/common/mac/macho_utilities.cc \ + src/common/mac/macho_walker.cc src/common/tests/file_utils.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_common_mac_macho_reader_unittest_OBJECTS = src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-language.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-md5.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-stabs_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-stabs_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-file_id.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_id.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/tests/src_common_mac_macho_reader_unittest-file_utils.$(OBJEXT) +src_common_mac_macho_reader_unittest_OBJECTS = \ + $(am_src_common_mac_macho_reader_unittest_OBJECTS) +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_mac_macho_reader_unittest_DEPENDENCIES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_2) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) +am__src_common_test_assembler_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc src/common/test_assembler.h \ + src/common/test_assembler_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_common_test_assembler_unittest_OBJECTS = src/common/src_common_test_assembler_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/common/src_common_test_assembler_unittest-test_assembler_unittest.$(OBJEXT) +src_common_test_assembler_unittest_OBJECTS = \ + $(am_src_common_test_assembler_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_address_map_unittest_SOURCES_DIST = \ + src/processor/address_map_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_address_map_unittest_OBJECTS = src/processor/address_map_unittest.$(OBJEXT) src_processor_address_map_unittest_OBJECTS = \ $(am_src_processor_address_map_unittest_OBJECTS) -src_processor_address_map_unittest_DEPENDENCIES = \ - src/processor/logging.lo src/processor/pathname_stripper.lo -am_src_processor_basic_source_line_resolver_unittest_OBJECTS = \ - src/processor/basic_source_line_resolver_unittest.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o +am__src_processor_basic_source_line_resolver_unittest_SOURCES_DIST = \ + src/processor/basic_source_line_resolver_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_basic_source_line_resolver_unittest_OBJECTS = src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.$(OBJEXT) src_processor_basic_source_line_resolver_unittest_OBJECTS = $(am_src_processor_basic_source_line_resolver_unittest_OBJECTS) -src_processor_basic_source_line_resolver_unittest_DEPENDENCIES = \ - src/processor/basic_source_line_resolver.lo \ - src/processor/pathname_stripper.lo src/processor/logging.lo -am_src_processor_contained_range_map_unittest_OBJECTS = \ - src/processor/contained_range_map_unittest.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_DEPENDENCIES = src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_cfi_frame_info_unittest_SOURCES_DIST = \ + src/processor/cfi_frame_info_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_cfi_frame_info_unittest_OBJECTS = src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.$(OBJEXT) +src_processor_cfi_frame_info_unittest_OBJECTS = \ + $(am_src_processor_cfi_frame_info_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_contained_range_map_unittest_SOURCES_DIST = \ + src/processor/contained_range_map_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_contained_range_map_unittest_OBJECTS = src/processor/contained_range_map_unittest.$(OBJEXT) src_processor_contained_range_map_unittest_OBJECTS = \ $(am_src_processor_contained_range_map_unittest_OBJECTS) -src_processor_contained_range_map_unittest_DEPENDENCIES = \ - src/processor/logging.lo src/processor/pathname_stripper.lo -am_src_processor_minidump_dump_OBJECTS = \ - src/processor/minidump_dump.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o +am__src_processor_disassembler_x86_unittest_SOURCES_DIST = \ + src/processor/disassembler_x86_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_disassembler_x86_unittest_OBJECTS = src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.$(OBJEXT) +src_processor_disassembler_x86_unittest_OBJECTS = \ + $(am_src_processor_disassembler_x86_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_exploitability_unittest_SOURCES_DIST = \ + src/processor/exploitability_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_exploitability_unittest_OBJECTS = src/processor/src_processor_exploitability_unittest-exploitability_unittest.$(OBJEXT) +src_processor_exploitability_unittest_OBJECTS = \ + $(am_src_processor_exploitability_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_fast_source_line_resolver_unittest_SOURCES_DIST = \ + src/processor/fast_source_line_resolver_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_fast_source_line_resolver_unittest_OBJECTS = src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.$(OBJEXT) +src_processor_fast_source_line_resolver_unittest_OBJECTS = $(am_src_processor_fast_source_line_resolver_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_DEPENDENCIES = src/processor/fast_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_map_serializers_unittest_SOURCES_DIST = \ + src/processor/map_serializers_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_map_serializers_unittest_OBJECTS = src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.$(OBJEXT) +src_processor_map_serializers_unittest_OBJECTS = \ + $(am_src_processor_map_serializers_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_microdump_processor_unittest_SOURCES_DIST = \ + src/processor/microdump_processor_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_microdump_processor_unittest_OBJECTS = src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.$(OBJEXT) +src_processor_microdump_processor_unittest_OBJECTS = \ + $(am_src_processor_microdump_processor_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_microdump_stackwalk_SOURCES_DIST = \ + src/processor/microdump_stackwalk.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_microdump_stackwalk_OBJECTS = src/processor/microdump_stackwalk.$(OBJEXT) +src_processor_microdump_stackwalk_OBJECTS = \ + $(am_src_processor_microdump_stackwalk_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalk_common.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a +am__src_processor_minidump_dump_SOURCES_DIST = \ + src/processor/minidump_dump.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_dump_OBJECTS = src/processor/minidump_dump.$(OBJEXT) src_processor_minidump_dump_OBJECTS = \ $(am_src_processor_minidump_dump_OBJECTS) -src_processor_minidump_dump_DEPENDENCIES = \ - src/processor/basic_code_modules.lo src/processor/logging.lo \ - src/processor/minidump.lo src/processor/pathname_stripper.lo -am_src_processor_minidump_processor_unittest_OBJECTS = src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT) \ - src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJEXT) \ - src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o +am__src_processor_minidump_processor_unittest_SOURCES_DIST = \ + src/processor/minidump_processor_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_processor_unittest_OBJECTS = src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT) src_processor_minidump_processor_unittest_OBJECTS = \ $(am_src_processor_minidump_processor_unittest_OBJECTS) -src_processor_minidump_processor_unittest_DEPENDENCIES = \ - src/processor/basic_code_modules.lo \ - src/processor/basic_source_line_resolver.lo \ - src/processor/call_stack.lo src/processor/logging.lo \ - src/processor/minidump_processor.lo src/processor/minidump.lo \ - src/processor/pathname_stripper.lo \ - src/processor/process_state.lo src/processor/stackwalker.lo \ - src/processor/stackwalker_amd64.lo \ - src/processor/stackwalker_ppc.lo \ - src/processor/stackwalker_sparc.lo \ - src/processor/stackwalker_x86.lo -am_src_processor_minidump_stackwalk_OBJECTS = \ - src/processor/minidump_stackwalk.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_minidump_stackwalk_SOURCES_DIST = \ + src/processor/minidump_stackwalk.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_stackwalk_OBJECTS = src/processor/minidump_stackwalk.$(OBJEXT) src_processor_minidump_stackwalk_OBJECTS = \ $(am_src_processor_minidump_stackwalk_OBJECTS) -src_processor_minidump_stackwalk_DEPENDENCIES = \ - src/processor/basic_code_modules.lo \ - src/processor/basic_source_line_resolver.lo \ - src/processor/call_stack.lo src/processor/logging.lo \ - src/processor/minidump.lo src/processor/minidump_processor.lo \ - src/processor/pathname_stripper.lo \ - src/processor/process_state.lo \ - src/processor/simple_symbol_supplier.lo \ - src/processor/stackwalker.lo \ - src/processor/stackwalker_amd64.lo \ - src/processor/stackwalker_ppc.lo \ - src/processor/stackwalker_sparc.lo \ - src/processor/stackwalker_x86.lo -am_src_processor_pathname_stripper_unittest_OBJECTS = \ - src/processor/pathname_stripper_unittest.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalk_common.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a +am__src_processor_minidump_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc \ + src/processor/minidump_unittest.cc \ + src/processor/synth_minidump.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_unittest_OBJECTS = src/common/src_processor_minidump_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_minidump_unittest-minidump_unittest.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_minidump_unittest-synth_minidump.$(OBJEXT) +src_processor_minidump_unittest_OBJECTS = \ + $(am_src_processor_minidump_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_pathname_stripper_unittest_SOURCES_DIST = \ + src/processor/pathname_stripper_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_pathname_stripper_unittest_OBJECTS = src/processor/pathname_stripper_unittest.$(OBJEXT) src_processor_pathname_stripper_unittest_OBJECTS = \ $(am_src_processor_pathname_stripper_unittest_OBJECTS) -src_processor_pathname_stripper_unittest_DEPENDENCIES = \ - src/processor/pathname_stripper.lo -am_src_processor_postfix_evaluator_unittest_OBJECTS = \ - src/processor/postfix_evaluator_unittest.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_postfix_evaluator_unittest_SOURCES_DIST = \ + src/processor/postfix_evaluator_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_postfix_evaluator_unittest_OBJECTS = src/processor/postfix_evaluator_unittest.$(OBJEXT) src_processor_postfix_evaluator_unittest_OBJECTS = \ $(am_src_processor_postfix_evaluator_unittest_OBJECTS) -src_processor_postfix_evaluator_unittest_DEPENDENCIES = \ - src/processor/logging.lo src/processor/pathname_stripper.lo -am_src_processor_range_map_unittest_OBJECTS = \ - src/processor/range_map_unittest.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_proc_maps_linux_unittest_SOURCES_DIST = \ + src/processor/proc_maps_linux.cc \ + src/processor/proc_maps_linux_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_proc_maps_linux_unittest_OBJECTS = src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.$(OBJEXT) +src_processor_proc_maps_linux_unittest_OBJECTS = \ + $(am_src_processor_proc_maps_linux_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_proc_maps_linux_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_range_map_shrink_down_unittest_SOURCES_DIST = \ + src/processor/range_map_shrink_down_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_range_map_shrink_down_unittest_OBJECTS = src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.$(OBJEXT) +src_processor_range_map_shrink_down_unittest_OBJECTS = \ + $(am_src_processor_range_map_shrink_down_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_range_map_shrink_down_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_range_map_unittest_SOURCES_DIST = \ + src/processor/range_map_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_range_map_unittest_OBJECTS = src/processor/range_map_unittest.$(OBJEXT) src_processor_range_map_unittest_OBJECTS = \ $(am_src_processor_range_map_unittest_OBJECTS) -src_processor_range_map_unittest_DEPENDENCIES = \ - src/processor/logging.lo src/processor/pathname_stripper.lo -am_src_processor_stackwalker_selftest_OBJECTS = \ - src/processor/stackwalker_selftest.$(OBJEXT) +@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_stackwalker_address_list_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc \ + src/processor/stackwalker_address_list_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_address_list_unittest_OBJECTS = src/common/src_processor_stackwalker_address_list_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.$(OBJEXT) +src_processor_stackwalker_address_list_unittest_OBJECTS = \ + $(am_src_processor_stackwalker_address_list_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_stackwalker_amd64_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc \ + src/processor/stackwalker_amd64_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_amd64_unittest_OBJECTS = src/common/src_processor_stackwalker_amd64_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.$(OBJEXT) +src_processor_stackwalker_amd64_unittest_OBJECTS = \ + $(am_src_processor_stackwalker_amd64_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_stackwalker_arm64_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc \ + src/processor/stackwalker_arm64_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_arm64_unittest_OBJECTS = src/common/src_processor_stackwalker_arm64_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.$(OBJEXT) +src_processor_stackwalker_arm64_unittest_OBJECTS = \ + $(am_src_processor_stackwalker_arm64_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_stackwalker_arm_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc \ + src/processor/stackwalker_arm_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_arm_unittest_OBJECTS = src/common/src_processor_stackwalker_arm_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.$(OBJEXT) +src_processor_stackwalker_arm_unittest_OBJECTS = \ + $(am_src_processor_stackwalker_arm_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_stackwalker_mips64_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc \ + src/processor/stackwalker_mips64_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_mips64_unittest_OBJECTS = src/common/src_processor_stackwalker_mips64_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.$(OBJEXT) +src_processor_stackwalker_mips64_unittest_OBJECTS = \ + $(am_src_processor_stackwalker_mips64_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips64_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_stackwalker_mips_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc \ + src/processor/stackwalker_mips_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_mips_unittest_OBJECTS = src/common/src_processor_stackwalker_mips_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.$(OBJEXT) +src_processor_stackwalker_mips_unittest_OBJECTS = \ + $(am_src_processor_stackwalker_mips_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_stackwalker_selftest_SOURCES_DIST = \ + src/processor/stackwalker_selftest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_selftest_OBJECTS = src/processor/stackwalker_selftest.$(OBJEXT) src_processor_stackwalker_selftest_OBJECTS = \ $(am_src_processor_stackwalker_selftest_OBJECTS) -src_processor_stackwalker_selftest_DEPENDENCIES = \ - src/processor/basic_code_modules.lo \ - src/processor/basic_source_line_resolver.lo \ - src/processor/call_stack.lo src/processor/logging.lo \ - src/processor/minidump.lo src/processor/pathname_stripper.lo \ - src/processor/stackwalker.lo \ - src/processor/stackwalker_amd64.lo \ - src/processor/stackwalker_ppc.lo \ - src/processor/stackwalker_sparc.lo \ - src/processor/stackwalker_x86.lo +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_stackwalker_x86_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc \ + src/processor/stackwalker_x86_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_x86_unittest_OBJECTS = src/common/src_processor_stackwalker_x86_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.$(OBJEXT) +src_processor_stackwalker_x86_unittest_OBJECTS = \ + $(am_src_processor_stackwalker_x86_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_static_address_map_unittest_SOURCES_DIST = \ + src/processor/static_address_map_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_static_address_map_unittest_OBJECTS = src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.$(OBJEXT) +src_processor_static_address_map_unittest_OBJECTS = \ + $(am_src_processor_static_address_map_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_static_contained_range_map_unittest_SOURCES_DIST = \ + src/processor/static_contained_range_map_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_static_contained_range_map_unittest_OBJECTS = src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.$(OBJEXT) +src_processor_static_contained_range_map_unittest_OBJECTS = $(am_src_processor_static_contained_range_map_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_static_map_unittest_SOURCES_DIST = \ + src/processor/static_map_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_static_map_unittest_OBJECTS = src/processor/src_processor_static_map_unittest-static_map_unittest.$(OBJEXT) +src_processor_static_map_unittest_OBJECTS = \ + $(am_src_processor_static_map_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_static_range_map_unittest_SOURCES_DIST = \ + src/processor/static_range_map_unittest.cc +@DISABLE_PROCESSOR_FALSE@am_src_processor_static_range_map_unittest_OBJECTS = src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT) +src_processor_static_range_map_unittest_OBJECTS = \ + $(am_src_processor_static_range_map_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_processor_synth_minidump_unittest_SOURCES_DIST = \ + src/common/test_assembler.cc src/common/test_assembler.h \ + src/processor/synth_minidump_unittest.cc \ + src/processor/synth_minidump.cc src/processor/synth_minidump.h +@DISABLE_PROCESSOR_FALSE@am_src_processor_synth_minidump_unittest_OBJECTS = src/common/src_processor_synth_minidump_unittest-test_assembler.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.$(OBJEXT) \ +@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT) +src_processor_synth_minidump_unittest_OBJECTS = \ + $(am_src_processor_synth_minidump_unittest_OBJECTS) +@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_DEPENDENCIES = \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ +@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) +am__src_tools_linux_core2md_core2md_SOURCES_DIST = \ + src/tools/linux/core2md/core2md.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_core2md_core2md_OBJECTS = src/tools/linux/core2md/core2md.$(OBJEXT) +src_tools_linux_core2md_core2md_OBJECTS = \ + $(am_src_tools_linux_core2md_core2md_OBJECTS) +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_DEPENDENCIES = src/client/linux/libbreakpad_client.a +am__src_tools_linux_dump_syms_dump_syms_SOURCES_DIST = \ + src/common/dwarf_cfi_to_module.cc \ + src/common/dwarf_cu_to_module.cc \ + src/common/dwarf_line_to_module.cc src/common/language.cc \ + src/common/module.cc src/common/stabs_reader.cc \ + src/common/stabs_to_module.cc src/common/dwarf/bytereader.cc \ + src/common/dwarf/dwarf2diehandler.cc \ + src/common/dwarf/dwarf2reader.cc \ + src/common/dwarf/elf_reader.cc src/common/linux/crc32.cc \ + src/common/linux/dump_symbols.cc \ + src/common/linux/dump_symbols.h \ + src/common/linux/elf_symbols_to_module.cc \ + src/common/linux/elf_symbols_to_module.h \ + src/common/linux/elfutils.cc src/common/linux/file_id.cc \ + src/common/linux/linux_libc_support.cc \ + src/common/linux/memory_mapped_file.cc \ + src/common/linux/safe_readlink.cc \ + src/tools/linux/dump_syms/dump_syms.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_dump_syms_dump_syms_OBJECTS = src/common/dwarf_cfi_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/crc32.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elfutils.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/file_id.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/dump_syms/dump_syms.$(OBJEXT) +src_tools_linux_dump_syms_dump_syms_OBJECTS = \ + $(am_src_tools_linux_dump_syms_dump_syms_OBJECTS) +src_tools_linux_dump_syms_dump_syms_LDADD = $(LDADD) +am__src_tools_linux_md2core_minidump_2_core_SOURCES_DIST = \ + src/common/linux/memory_mapped_file.cc \ + src/tools/linux/md2core/minidump-2-core.cc \ + src/tools/linux/md2core/minidump_memory_range.h +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_md2core_minidump_2_core_OBJECTS = src/common/linux/memory_mapped_file.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump-2-core.$(OBJEXT) +src_tools_linux_md2core_minidump_2_core_OBJECTS = \ + $(am_src_tools_linux_md2core_minidump_2_core_OBJECTS) +src_tools_linux_md2core_minidump_2_core_LDADD = $(LDADD) +am__src_tools_linux_md2core_minidump_2_core_unittest_SOURCES_DIST = \ + src/tools/linux/md2core/minidump_memory_range_unittest.cc +@LINUX_HOST_TRUE@am_src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS = src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.$(OBJEXT) +src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS = $(am_src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) +@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES = \ +@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ +@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) +am__src_tools_linux_symupload_minidump_upload_SOURCES_DIST = \ + src/common/linux/http_upload.cc \ + src/tools/linux/symupload/minidump_upload.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_symupload_minidump_upload_OBJECTS = src/common/linux/http_upload.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/minidump_upload.$(OBJEXT) +src_tools_linux_symupload_minidump_upload_OBJECTS = \ + $(am_src_tools_linux_symupload_minidump_upload_OBJECTS) +src_tools_linux_symupload_minidump_upload_DEPENDENCIES = +am__src_tools_linux_symupload_sym_upload_SOURCES_DIST = \ + src/common/linux/http_upload.cc src/common/linux/http_upload.h \ + src/common/linux/symbol_upload.cc \ + src/common/linux/symbol_upload.h \ + src/tools/linux/symupload/sym_upload.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_symupload_sym_upload_OBJECTS = src/common/linux/http_upload.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/symbol_upload.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/sym_upload.$(OBJEXT) +src_tools_linux_symupload_sym_upload_OBJECTS = \ + $(am_src_tools_linux_symupload_sym_upload_OBJECTS) +src_tools_linux_symupload_sym_upload_DEPENDENCIES = +am__src_tools_mac_dump_syms_dump_syms_mac_SOURCES_DIST = \ + src/common/dwarf_cfi_to_module.cc \ + src/common/dwarf_cu_to_module.cc \ + src/common/dwarf_line_to_module.cc src/common/language.cc \ + src/common/md5.cc src/common/module.cc \ + src/common/stabs_reader.cc src/common/stabs_to_module.cc \ + src/common/dwarf/bytereader.cc \ + src/common/dwarf/dwarf2diehandler.cc \ + src/common/dwarf/dwarf2reader.cc \ + src/common/dwarf/elf_reader.cc \ + src/common/mac/arch_utilities.cc src/common/mac/dump_syms.cc \ + src/common/mac/dump_syms.h src/common/mac/file_id.cc \ + src/common/mac/file_id.h src/common/mac/macho_id.cc \ + src/common/mac/macho_id.h src/common/mac/macho_reader.cc \ + src/common/mac/macho_reader.h \ + src/common/mac/macho_utilities.cc \ + src/common/mac/macho_utilities.h \ + src/common/mac/macho_walker.cc src/common/mac/macho_walker.h \ + src/tools/mac/dump_syms/dump_syms_tool.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_mac_dump_syms_dump_syms_mac_OBJECTS = src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-language.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.$(OBJEXT) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.$(OBJEXT) +src_tools_mac_dump_syms_dump_syms_mac_OBJECTS = \ + $(am_src_tools_mac_dump_syms_dump_syms_mac_OBJECTS) +src_tools_mac_dump_syms_dump_syms_mac_LDADD = $(LDADD) +src_tools_mac_dump_syms_dump_syms_mac_LINK = $(CXXLD) \ + $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ SCRIPTS = $(noinst_SCRIPTS) -DEFAULT_INCLUDES = -I. -I$(top_builddir)/src@am__isrc@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp am__depfiles_maybe = depfiles -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -CXXLD = $(CXX) -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ +am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) +AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) +am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) +am__v_CPPAS_0 = @echo " CPPAS " $@; +am__v_CPPAS_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(src_libbreakpad_la_SOURCES) \ +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(src_client_linux_libbreakpad_client_a_SOURCES) \ + $(src_libbreakpad_a_SOURCES) \ + $(src_testing_libtesting_a_SOURCES) \ + $(src_third_party_libdisasm_libdisasm_a_SOURCES) \ + $(src_client_linux_linux_client_unittest_SOURCES) \ + $(src_client_linux_linux_client_unittest_shlib_SOURCES) \ + $(src_client_linux_linux_dumper_unittest_helper_SOURCES) \ + $(src_common_dumper_unittest_SOURCES) \ + $(src_common_mac_macho_reader_unittest_SOURCES) \ + $(src_common_test_assembler_unittest_SOURCES) \ $(src_processor_address_map_unittest_SOURCES) \ $(src_processor_basic_source_line_resolver_unittest_SOURCES) \ + $(src_processor_cfi_frame_info_unittest_SOURCES) \ $(src_processor_contained_range_map_unittest_SOURCES) \ + $(src_processor_disassembler_x86_unittest_SOURCES) \ + $(src_processor_exploitability_unittest_SOURCES) \ + $(src_processor_fast_source_line_resolver_unittest_SOURCES) \ + $(src_processor_map_serializers_unittest_SOURCES) \ + $(src_processor_microdump_processor_unittest_SOURCES) \ + $(src_processor_microdump_stackwalk_SOURCES) \ $(src_processor_minidump_dump_SOURCES) \ $(src_processor_minidump_processor_unittest_SOURCES) \ $(src_processor_minidump_stackwalk_SOURCES) \ + $(src_processor_minidump_unittest_SOURCES) \ $(src_processor_pathname_stripper_unittest_SOURCES) \ $(src_processor_postfix_evaluator_unittest_SOURCES) \ + $(src_processor_proc_maps_linux_unittest_SOURCES) \ + $(src_processor_range_map_shrink_down_unittest_SOURCES) \ $(src_processor_range_map_unittest_SOURCES) \ - $(src_processor_stackwalker_selftest_SOURCES) -DIST_SOURCES = $(src_libbreakpad_la_SOURCES) \ - $(src_processor_address_map_unittest_SOURCES) \ - $(src_processor_basic_source_line_resolver_unittest_SOURCES) \ - $(src_processor_contained_range_map_unittest_SOURCES) \ - $(src_processor_minidump_dump_SOURCES) \ - $(src_processor_minidump_processor_unittest_SOURCES) \ - $(src_processor_minidump_stackwalk_SOURCES) \ - $(src_processor_pathname_stripper_unittest_SOURCES) \ - $(src_processor_postfix_evaluator_unittest_SOURCES) \ - $(src_processor_range_map_unittest_SOURCES) \ - $(src_processor_stackwalker_selftest_SOURCES) -dist_docDATA_INSTALL = $(INSTALL_DATA) -DATA = $(dist_doc_DATA) + $(src_processor_stackwalker_address_list_unittest_SOURCES) \ + $(src_processor_stackwalker_amd64_unittest_SOURCES) \ + $(src_processor_stackwalker_arm64_unittest_SOURCES) \ + $(src_processor_stackwalker_arm_unittest_SOURCES) \ + $(src_processor_stackwalker_mips64_unittest_SOURCES) \ + $(src_processor_stackwalker_mips_unittest_SOURCES) \ + $(src_processor_stackwalker_selftest_SOURCES) \ + $(src_processor_stackwalker_x86_unittest_SOURCES) \ + $(src_processor_static_address_map_unittest_SOURCES) \ + $(src_processor_static_contained_range_map_unittest_SOURCES) \ + $(src_processor_static_map_unittest_SOURCES) \ + $(src_processor_static_range_map_unittest_SOURCES) \ + $(src_processor_synth_minidump_unittest_SOURCES) \ + $(src_tools_linux_core2md_core2md_SOURCES) \ + $(src_tools_linux_dump_syms_dump_syms_SOURCES) \ + $(src_tools_linux_md2core_minidump_2_core_SOURCES) \ + $(src_tools_linux_md2core_minidump_2_core_unittest_SOURCES) \ + $(src_tools_linux_symupload_minidump_upload_SOURCES) \ + $(src_tools_linux_symupload_sym_upload_SOURCES) \ + $(src_tools_mac_dump_syms_dump_syms_mac_SOURCES) +DIST_SOURCES = \ + $(am__src_client_linux_libbreakpad_client_a_SOURCES_DIST) \ + $(am__src_libbreakpad_a_SOURCES_DIST) \ + $(am__src_testing_libtesting_a_SOURCES_DIST) \ + $(am__src_third_party_libdisasm_libdisasm_a_SOURCES_DIST) \ + $(src_client_linux_linux_client_unittest_SOURCES) \ + $(am__src_client_linux_linux_client_unittest_shlib_SOURCES_DIST) \ + $(am__src_client_linux_linux_dumper_unittest_helper_SOURCES_DIST) \ + $(am__src_common_dumper_unittest_SOURCES_DIST) \ + $(am__src_common_mac_macho_reader_unittest_SOURCES_DIST) \ + $(am__src_common_test_assembler_unittest_SOURCES_DIST) \ + $(am__src_processor_address_map_unittest_SOURCES_DIST) \ + $(am__src_processor_basic_source_line_resolver_unittest_SOURCES_DIST) \ + $(am__src_processor_cfi_frame_info_unittest_SOURCES_DIST) \ + $(am__src_processor_contained_range_map_unittest_SOURCES_DIST) \ + $(am__src_processor_disassembler_x86_unittest_SOURCES_DIST) \ + $(am__src_processor_exploitability_unittest_SOURCES_DIST) \ + $(am__src_processor_fast_source_line_resolver_unittest_SOURCES_DIST) \ + $(am__src_processor_map_serializers_unittest_SOURCES_DIST) \ + $(am__src_processor_microdump_processor_unittest_SOURCES_DIST) \ + $(am__src_processor_microdump_stackwalk_SOURCES_DIST) \ + $(am__src_processor_minidump_dump_SOURCES_DIST) \ + $(am__src_processor_minidump_processor_unittest_SOURCES_DIST) \ + $(am__src_processor_minidump_stackwalk_SOURCES_DIST) \ + $(am__src_processor_minidump_unittest_SOURCES_DIST) \ + $(am__src_processor_pathname_stripper_unittest_SOURCES_DIST) \ + $(am__src_processor_postfix_evaluator_unittest_SOURCES_DIST) \ + $(am__src_processor_proc_maps_linux_unittest_SOURCES_DIST) \ + $(am__src_processor_range_map_shrink_down_unittest_SOURCES_DIST) \ + $(am__src_processor_range_map_unittest_SOURCES_DIST) \ + $(am__src_processor_stackwalker_address_list_unittest_SOURCES_DIST) \ + $(am__src_processor_stackwalker_amd64_unittest_SOURCES_DIST) \ + $(am__src_processor_stackwalker_arm64_unittest_SOURCES_DIST) \ + $(am__src_processor_stackwalker_arm_unittest_SOURCES_DIST) \ + $(am__src_processor_stackwalker_mips64_unittest_SOURCES_DIST) \ + $(am__src_processor_stackwalker_mips_unittest_SOURCES_DIST) \ + $(am__src_processor_stackwalker_selftest_SOURCES_DIST) \ + $(am__src_processor_stackwalker_x86_unittest_SOURCES_DIST) \ + $(am__src_processor_static_address_map_unittest_SOURCES_DIST) \ + $(am__src_processor_static_contained_range_map_unittest_SOURCES_DIST) \ + $(am__src_processor_static_map_unittest_SOURCES_DIST) \ + $(am__src_processor_static_range_map_unittest_SOURCES_DIST) \ + $(am__src_processor_synth_minidump_unittest_SOURCES_DIST) \ + $(am__src_tools_linux_core2md_core2md_SOURCES_DIST) \ + $(am__src_tools_linux_dump_syms_dump_syms_SOURCES_DIST) \ + $(am__src_tools_linux_md2core_minidump_2_core_SOURCES_DIST) \ + $(am__src_tools_linux_md2core_minidump_2_core_unittest_SOURCES_DIST) \ + $(am__src_tools_linux_symupload_minidump_upload_SOURCES_DIST) \ + $(am__src_tools_linux_symupload_sym_upload_SOURCES_DIST) \ + $(am__src_tools_mac_dump_syms_dump_syms_mac_SOURCES_DIST) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(dist_doc_DATA) $(pkgconfig_DATA) +am__includecl_HEADERS_DIST = $(top_srcdir)/src/common/linux/*.h +am__includeclc_HEADERS_DIST = \ + $(top_srcdir)/src/client/linux/crash_generation/*.h +am__includecldwc_HEADERS_DIST = \ + $(top_srcdir)/src/client/linux/dump_writer_common/*.h +am__includeclh_HEADERS_DIST = \ + $(top_srcdir)/src/client/linux/handler/*.h +am__includeclm_HEADERS_DIST = \ + $(top_srcdir)/src/client/linux/minidump_writer/*.h +am__includelss_HEADERS_DIST = $(top_srcdir)/src/third_party/lss/*.h +HEADERS = $(includec_HEADERS) $(includecl_HEADERS) \ + $(includeclc_HEADERS) $(includecldwc_HEADERS) \ + $(includeclh_HEADERS) $(includeclm_HEADERS) \ + $(includegbc_HEADERS) $(includelss_HEADERS) \ + $(includep_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +CSCOPE = cscope +AM_RECURSIVE_TARGETS = cscope check recheck +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/autotools/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(srcdir)/breakpad-client.pc.in $(srcdir)/breakpad.pc.in \ + $(top_srcdir)/autotools/ar-lib $(top_srcdir)/autotools/compile \ + $(top_srcdir)/autotools/config.guess \ + $(top_srcdir)/autotools/config.sub \ + $(top_srcdir)/autotools/depcomp \ + $(top_srcdir)/autotools/install-sh \ + $(top_srcdir)/autotools/missing \ + $(top_srcdir)/autotools/test-driver \ + $(top_srcdir)/src/config.h.in AUTHORS ChangeLog INSTALL NEWS \ + autotools/ar-lib autotools/compile autotools/config.guess \ + autotools/config.sub autotools/depcomp autotools/install-sh \ + autotools/ltmain.sh autotools/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - { test ! -d $(distdir) \ - || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr $(distdir); }; } + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best +DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ +CCAS = @CCAS@ +CCASDEPMODE = @CCASDEPMODE@ +CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ -CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ -DSYMUTIL = @DSYMUTIL@ -ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -F77 = @F77@ -FFLAGS = @FFLAGS@ +GMOCK_CFLAGS = @GMOCK_CFLAGS@ +GMOCK_CONFIG = @GMOCK_CONFIG@ +GMOCK_LIBS = @GMOCK_LIBS@ GREP = @GREP@ +GTEST_CFLAGS = @GTEST_CFLAGS@ +GTEST_CONFIG = @GTEST_CONFIG@ +GTEST_LIBS = @GTEST_LIBS@ +HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -308,23 +1934,23 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ -NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ -SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -333,14 +1959,15 @@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ -ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ +ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -378,220 +2005,1118 @@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # This allows #includes to be relative to src/ AM_CPPFLAGS = -I$(top_srcdir)/src +AM_CFLAGS = $(am__append_3) +AM_CXXFLAGS = $(am__append_1) $(am__append_2) $(am__append_4) + +# Specify include paths for ac macros +ACLOCAL_AMFLAGS = -I m4 + +# License file is called LICENSE not COPYING +AUTOMAKE_OPTIONS = foreign dist_doc_DATA = \ AUTHORS \ - COPYING \ ChangeLog \ INSTALL \ + LICENSE \ NEWS \ - README + README.md -lib_LTLIBRARIES = src/libbreakpad.la -src_libbreakpad_la_SOURCES = \ - src/google_breakpad/common/breakpad_types.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_size.h \ - src/google_breakpad/processor/basic_source_line_resolver.h \ - src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/processor/minidump.h \ - src/google_breakpad/processor/minidump_processor.h \ - src/google_breakpad/processor/process_state.h \ - src/google_breakpad/processor/source_line_resolver_interface.h \ - src/google_breakpad/processor/stack_frame.h \ - src/google_breakpad/processor/stack_frame_cpu.h \ - src/google_breakpad/processor/stackwalker.h \ - src/google_breakpad/processor/symbol_supplier.h \ - src/google_breakpad/processor/system_info.h \ - src/processor/address_map-inl.h \ - src/processor/address_map.h \ - src/processor/basic_code_module.h \ - src/processor/basic_code_modules.cc \ - src/processor/basic_code_modules.h \ - src/processor/basic_source_line_resolver.cc \ - src/processor/call_stack.cc \ - src/processor/contained_range_map-inl.h \ - src/processor/contained_range_map.h \ - src/processor/linked_ptr.h \ - src/processor/logging.h \ - src/processor/logging.cc \ - src/processor/minidump.cc \ - src/processor/minidump_processor.cc \ - src/processor/pathname_stripper.cc \ - src/processor/pathname_stripper.h \ - src/processor/postfix_evaluator-inl.h \ - src/processor/postfix_evaluator.h \ - src/processor/process_state.cc \ - src/processor/range_map-inl.h \ - src/processor/range_map.h \ - src/processor/scoped_ptr.h \ - src/processor/simple_symbol_supplier.cc \ - src/processor/simple_symbol_supplier.h \ - src/processor/stack_frame_info.h \ - src/processor/stackwalker.cc \ - src/processor/stackwalker_amd64.cc \ - src/processor/stackwalker_amd64.h \ - src/processor/stackwalker_ppc.cc \ - src/processor/stackwalker_ppc.h \ - src/processor/stackwalker_sparc.cc \ - src/processor/stackwalker_sparc.h \ - src/processor/stackwalker_x86.cc \ - src/processor/stackwalker_x86.h +@LINUX_HOST_TRUE@includeclhdir = $(includedir)/$(PACKAGE)/client/linux/handler +@LINUX_HOST_TRUE@includeclh_HEADERS = $(top_srcdir)/src/client/linux/handler/*.h +@LINUX_HOST_TRUE@includecldwcdir = $(includedir)/$(PACKAGE)/client/linux/dump_writer_common +@LINUX_HOST_TRUE@includecldwc_HEADERS = $(top_srcdir)/src/client/linux/dump_writer_common/*.h +@LINUX_HOST_TRUE@includeclmdir = $(includedir)/$(PACKAGE)/client/linux/minidump_writer +@LINUX_HOST_TRUE@includeclm_HEADERS = $(top_srcdir)/src/client/linux/minidump_writer/*.h +@LINUX_HOST_TRUE@includeclcdir = $(includedir)/$(PACKAGE)/client/linux/crash_generation +@LINUX_HOST_TRUE@includeclc_HEADERS = $(top_srcdir)/src/client/linux/crash_generation/*.h +@LINUX_HOST_TRUE@includelssdir = $(includedir)/$(PACKAGE)/third_party/lss +@LINUX_HOST_TRUE@includelss_HEADERS = $(top_srcdir)/src/third_party/lss/*.h +@LINUX_HOST_TRUE@includecldir = $(includedir)/$(PACKAGE)/common/linux +@LINUX_HOST_TRUE@includecl_HEADERS = $(top_srcdir)/src/common/linux/*.h +includegbcdir = $(includedir)/$(PACKAGE)/google_breakpad/common +includegbc_HEADERS = $(top_srcdir)/src/google_breakpad/common/*.h +includecdir = $(includedir)/$(PACKAGE)/common +includec_HEADERS = $(top_srcdir)/src/common/*.h +includepdir = $(includedir)/$(PACKAGE)/processor +includep_HEADERS = $(top_srcdir)/src/processor/*.h +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = $(am__append_6) $(am__append_9) +@SYSTEM_TEST_LIBS_FALSE@TEST_CFLAGS = \ +@SYSTEM_TEST_LIBS_FALSE@ -I$(top_srcdir)/src/testing/include \ +@SYSTEM_TEST_LIBS_FALSE@ -I$(top_srcdir)/src/testing/gtest/include \ +@SYSTEM_TEST_LIBS_FALSE@ -I$(top_srcdir)/src/testing/gtest \ +@SYSTEM_TEST_LIBS_FALSE@ -I$(top_srcdir)/src/testing -check_SCRIPTS = \ - src/processor/minidump_dump_test \ - src/processor/minidump_stackwalk_test \ - src/processor/minidump_stackwalk_machine_readable_test +@SYSTEM_TEST_LIBS_TRUE@TEST_CFLAGS = $(GTEST_CFLAGS) $(GMOCK_CFLAGS) +@SYSTEM_TEST_LIBS_FALSE@TEST_LIBS = src/testing/libtesting.a +@SYSTEM_TEST_LIBS_TRUE@TEST_LIBS = $(GTEST_LIBS) -lgtest_main $(GMOCK_LIBS) +@SYSTEM_TEST_LIBS_FALSE@TEST_DEPS = $(TEST_LIBS) +@SYSTEM_TEST_LIBS_TRUE@TEST_DEPS = +check_LIBRARIES = src/testing/libtesting.a +noinst_LIBRARIES = $(am__append_7) +lib_LIBRARIES = $(am__append_5) $(am__append_8) +CLEANFILES = $(am__append_13) +@SYSTEM_TEST_LIBS_FALSE@src_testing_libtesting_a_SOURCES = \ +@SYSTEM_TEST_LIBS_FALSE@ src/breakpad_googletest_includes.h \ +@SYSTEM_TEST_LIBS_FALSE@ src/testing/gtest/src/gtest-all.cc \ +@SYSTEM_TEST_LIBS_FALSE@ src/testing/gtest/src/gtest_main.cc \ +@SYSTEM_TEST_LIBS_FALSE@ src/testing/src/gmock-all.cc + +@SYSTEM_TEST_LIBS_FALSE@src_testing_libtesting_a_CPPFLAGS = \ +@SYSTEM_TEST_LIBS_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@LINUX_HOST_TRUE@src_client_linux_libbreakpad_client_a_SOURCES = src/client/linux/crash_generation/crash_generation_client.cc \ +@LINUX_HOST_TRUE@ src/client/linux/crash_generation/crash_generation_server.cc \ +@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/thread_info.cc \ +@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/ucontext_reader.cc \ +@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler.cc \ +@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler.h \ +@LINUX_HOST_TRUE@ src/client/linux/handler/minidump_descriptor.cc \ +@LINUX_HOST_TRUE@ src/client/linux/handler/minidump_descriptor.h \ +@LINUX_HOST_TRUE@ src/client/linux/log/log.cc \ +@LINUX_HOST_TRUE@ src/client/linux/log/log.h \ +@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer.cc \ +@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer.h \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_core_dumper.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_dumper.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_ptrace_dumper.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer.cc \ +@LINUX_HOST_TRUE@ src/client/minidump_file_writer-inl.h \ +@LINUX_HOST_TRUE@ src/client/minidump_file_writer.cc \ +@LINUX_HOST_TRUE@ src/client/minidump_file_writer.h \ +@LINUX_HOST_TRUE@ src/common/convert_UTF.c \ +@LINUX_HOST_TRUE@ src/common/convert_UTF.h src/common/md5.cc \ +@LINUX_HOST_TRUE@ src/common/md5.h \ +@LINUX_HOST_TRUE@ src/common/string_conversion.cc \ +@LINUX_HOST_TRUE@ src/common/string_conversion.h \ +@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump.cc \ +@LINUX_HOST_TRUE@ src/common/linux/elfutils.cc \ +@LINUX_HOST_TRUE@ src/common/linux/elfutils.h \ +@LINUX_HOST_TRUE@ src/common/linux/file_id.cc \ +@LINUX_HOST_TRUE@ src/common/linux/file_id.h \ +@LINUX_HOST_TRUE@ src/common/linux/guid_creator.cc \ +@LINUX_HOST_TRUE@ src/common/linux/guid_creator.h \ +@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.cc \ +@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.cc \ +@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.cc \ +@LINUX_HOST_TRUE@ $(am__append_10) +@DISABLE_PROCESSOR_FALSE@src_libbreakpad_a_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/common/breakpad_types.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/common/minidump_format.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/common/minidump_size.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/basic_source_line_resolver.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/call_stack.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/code_module.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/code_modules.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/dump_context.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/dump_object.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/exploitability.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/fast_source_line_resolver.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/memory_region.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/microdump.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/microdump_processor.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/minidump.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/minidump_processor.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/process_result.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/process_state.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/proc_maps_linux.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/source_line_resolver_base.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/source_line_resolver_interface.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame_cpu.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame_symbolizer.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stackwalker.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/symbol_supplier.h \ +@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/system_info.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/address_map-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/address_map.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_module.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver_types.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_types.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/linked_ptr.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_factory.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/range_map-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/range_map.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_serializer-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_serializer.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/windows_frame_info.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base_types.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_iterator-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_iterator.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_map-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_map.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map-inl.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.h + +@DISABLE_PROCESSOR_FALSE@src_third_party_libdisasm_libdisasm_a_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_implicit.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_implicit.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_insn.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_insn.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_invariant.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_invariant.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_modrm.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_modrm.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_opcode_tables.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_opcode_tables.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_operand.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_operand.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_reg.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_reg.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_settings.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_settings.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdis.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/qword.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_disasm.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_format.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_imm.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_imm.h \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_insn.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_misc.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_operand_list.c \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_operand_list.h + +@DISABLE_PROCESSOR_FALSE@check_SCRIPTS = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_stackwalk_test \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_stackwalk_machine_readable_test \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_dump_test \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk_test \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk_machine_readable_test TESTS = $(check_PROGRAMS) $(check_SCRIPTS) -TESTS_ENVIRONMENT = -src_processor_address_map_unittest_SOURCES = \ - src/processor/address_map_unittest.cc +# The default Autotools test driver script. +@ANDROID_HOST_FALSE@LOG_DRIVER = $(top_srcdir)/autotools/test-driver -src_processor_address_map_unittest_LDADD = \ - src/processor/logging.lo \ - src/processor/pathname_stripper.lo +# Since Autotools 1.2, tests are run through a special "test driver" script. +# Unfortunately, it's not possible anymore to specify an alternative shell to +# run them on connected devices, so use a slightly modified version of the +# driver for Android. +@ANDROID_HOST_TRUE@LOG_DRIVER = $(top_srcdir)/android/test-driver +@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_SOURCES = \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc -src_processor_basic_source_line_resolver_unittest_SOURCES = \ - src/processor/basic_source_line_resolver_unittest.cc +@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_LDFLAGS = $(PTHREAD_CFLAGS) +@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CC = $(PTHREAD_CC) +@ANDROID_HOST_FALSE@@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CXXFLAGS = $(PTHREAD_CFLAGS) +# On Android PTHREAD_CFLAGS is empty, and adding src/common/android/include +# to the include path is necessary to build this program. +@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CXXFLAGS = $(AM_CXXFLAGS) +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_SOURCES = \ +@LINUX_HOST_TRUE@ $(src_testing_libtesting_a_SOURCES) \ +@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler_unittest.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/directory_reader_unittest.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/cpu_set_unittest.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/line_reader_unittest.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_core_dumper.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_core_dumper_unittest.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer_unittest.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \ +@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump.cc \ +@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support_unittest.cc \ +@LINUX_HOST_TRUE@ src/common/linux/tests/auto_testfile.h \ +@LINUX_HOST_TRUE@ src/common/linux/tests/crash_generator.cc \ +@LINUX_HOST_TRUE@ src/common/memory_unittest.cc \ +@LINUX_HOST_TRUE@ src/common/tests/auto_tempdir.h \ +@LINUX_HOST_TRUE@ src/common/tests/file_utils.cc \ +@LINUX_HOST_TRUE@ src/common/tests/file_utils.h \ +@LINUX_HOST_TRUE@ src/processor/basic_code_modules.cc \ +@LINUX_HOST_TRUE@ src/processor/dump_context.cc \ +@LINUX_HOST_TRUE@ src/processor/dump_object.cc \ +@LINUX_HOST_TRUE@ src/processor/logging.cc \ +@LINUX_HOST_TRUE@ src/processor/minidump.cc \ +@LINUX_HOST_TRUE@ src/processor/pathname_stripper.cc \ +@LINUX_HOST_TRUE@ src/processor/proc_maps_linux.cc \ +@LINUX_HOST_TRUE@ $(am__append_21) \ +@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer_unittest.cc \ +@LINUX_HOST_TRUE@ $(am__append_22) +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_CPPFLAGS = \ +@LINUX_HOST_TRUE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) -src_processor_basic_source_line_resolver_unittest_LDADD = \ - src/processor/basic_source_line_resolver.lo \ - src/processor/pathname_stripper.lo \ - src/processor/logging.lo +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_LDFLAGS = \ +@LINUX_HOST_TRUE@ -shared -Wl,-h,linux_client_unittest_shlib \ +@LINUX_HOST_TRUE@ $(am__append_23) +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_LDADD = \ +@LINUX_HOST_TRUE@ src/client/linux/crash_generation/crash_generation_client.o \ +@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/thread_info.o \ +@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/ucontext_reader.o \ +@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler.o \ +@LINUX_HOST_TRUE@ src/client/linux/handler/minidump_descriptor.o \ +@LINUX_HOST_TRUE@ src/client/linux/log/log.o \ +@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer.o \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_dumper.o \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_ptrace_dumper.o \ +@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer.o \ +@LINUX_HOST_TRUE@ src/client/minidump_file_writer.o \ +@LINUX_HOST_TRUE@ src/common/convert_UTF.o \ +@LINUX_HOST_TRUE@ src/common/md5.o \ +@LINUX_HOST_TRUE@ src/common/linux/elfutils.o \ +@LINUX_HOST_TRUE@ src/common/linux/file_id.o \ +@LINUX_HOST_TRUE@ src/common/linux/guid_creator.o \ +@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.o \ +@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.o \ +@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.o \ +@LINUX_HOST_TRUE@ src/common/string_conversion.o \ +@LINUX_HOST_TRUE@ $(TEST_LIBS) \ +@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) -src_processor_contained_range_map_unittest_SOURCES = \ - src/processor/contained_range_map_unittest.cc +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_DEPENDENCIES = \ +@LINUX_HOST_TRUE@ src/client/linux/linux_dumper_unittest_helper \ +@LINUX_HOST_TRUE@ src/client/linux/libbreakpad_client.a \ +@LINUX_HOST_TRUE@ $(TEST_DEPS) \ +@LINUX_HOST_TRUE@ src/libbreakpad.a -src_processor_contained_range_map_unittest_LDADD = \ - src/processor/logging.lo \ - src/processor/pathname_stripper.lo +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_SOURCES = +# The extra-long build id is for a test in minidump_writer_unittest.cc. +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_LDFLAGS = \ +@LINUX_HOST_TRUE@ -Wl,-rpath,'$$ORIGIN' \ +@LINUX_HOST_TRUE@ -Wl,--build-id=0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f \ +@LINUX_HOST_TRUE@ $(am__append_24) +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_LDADD = \ +@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib \ +@LINUX_HOST_TRUE@ $(TEST_LIBS) -src_processor_minidump_processor_unittest_SOURCES = \ - src/processor/minidump_processor_unittest.cc \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/src/gmock-all.cc +@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_DEPENDENCIES = \ +@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib -src_processor_minidump_processor_unittest_CPPFLAGS = \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_SOURCES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/core2md/core2md.cc -src_processor_minidump_processor_unittest_LDADD = \ - src/processor/basic_code_modules.lo \ - src/processor/basic_source_line_resolver.lo \ - src/processor/call_stack.lo \ - src/processor/logging.lo \ - src/processor/minidump_processor.lo \ - src/processor/minidump.lo \ - src/processor/pathname_stripper.lo \ - src/processor/process_state.lo \ - src/processor/stackwalker.lo \ - src/processor/stackwalker_amd64.lo \ - src/processor/stackwalker_ppc.lo \ - src/processor/stackwalker_sparc.lo \ - src/processor/stackwalker_x86.lo +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_LDADD = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/client/linux/libbreakpad_client.a -src_processor_pathname_stripper_unittest_SOURCES = \ - src/processor/pathname_stripper_unittest.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_dump_syms_dump_syms_SOURCES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/crc32.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elfutils.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/file_id.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/dump_syms/dump_syms.cc -src_processor_pathname_stripper_unittest_LDADD = \ - src/processor/pathname_stripper.lo +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_SOURCES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump-2-core.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump_memory_range.h -src_processor_postfix_evaluator_unittest_SOURCES = \ - src/processor/postfix_evaluator_unittest.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_minidump_upload_SOURCES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/http_upload.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/minidump_upload.cc -src_processor_postfix_evaluator_unittest_LDADD = \ - src/processor/logging.lo \ - src/processor/pathname_stripper.lo +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_minidump_upload_LDADD = -ldl +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_sym_upload_SOURCES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/http_upload.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/http_upload.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/symbol_upload.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/symbol_upload.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/sym_upload.cc -src_processor_range_map_unittest_SOURCES = \ - src/processor/range_map_unittest.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_sym_upload_LDADD = -ldl +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_mac_dump_syms_dump_syms_mac_SOURCES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/md5.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/arch_utilities.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/dump_syms.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/dump_syms.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/file_id.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/file_id.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_id.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_id.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_reader.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_utilities.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_utilities.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_walker.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_walker.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/mac/dump_syms/dump_syms_tool.cc -src_processor_range_map_unittest_LDADD = \ - src/processor/logging.lo \ - src/processor/pathname_stripper.lo +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ -I$(top_srcdir)/src/third_party/mac_headers \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ -DHAVE_MACH_O_NLIST_H -src_processor_stackwalker_selftest_SOURCES = \ - src/processor/stackwalker_selftest.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_SOURCES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/byte_cursor_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/memory_range_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/test_assembler.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader-inl.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/cfi_assembler.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/cfi_assembler.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader_cfi_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader_die_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader_test_common.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/crc32.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elfutils.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/file_id.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/file_id_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/safe_readlink_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/synth_elf.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/synth_elf_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/tests/crash_generator.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/tests/crash_generator.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/testdata/func-line-pairing.h \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/tests/file_utils.cc -src_processor_stackwalker_selftest_LDADD = \ - src/processor/basic_code_modules.lo \ - src/processor/basic_source_line_resolver.lo \ - src/processor/call_stack.lo \ - src/processor/logging.lo \ - src/processor/minidump.lo \ - src/processor/pathname_stripper.lo \ - src/processor/stackwalker.lo \ - src/processor/stackwalker_amd64.lo \ - src/processor/stackwalker_ppc.lo \ - src/processor/stackwalker_sparc.lo \ - src/processor/stackwalker_x86.lo +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_CPPFLAGS = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) -noinst_SCRIPTS = $(check_SCRIPTS) -src_processor_minidump_dump_SOURCES = \ - src/processor/minidump_dump.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_LDADD = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(TEST_LIBS) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) -src_processor_minidump_dump_LDADD = \ - src/processor/basic_code_modules.lo \ - src/processor/logging.lo \ - src/processor/minidump.lo \ - src/processor/pathname_stripper.lo +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_mac_macho_reader_unittest_SOURCES = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/md5.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/test_assembler.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/cfi_assembler.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/arch_utilities.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/file_id.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_id.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_reader.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_reader_unittest.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_utilities.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_walker.cc \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/tests/file_utils.cc -src_processor_minidump_stackwalk_SOURCES = \ - src/processor/minidump_stackwalk.cc +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_mac_macho_reader_unittest_CPPFLAGS = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ -I$(top_srcdir)/src/third_party/mac_headers \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ -DHAVE_MACH_O_NLIST_H \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) -src_processor_minidump_stackwalk_LDADD = \ - src/processor/basic_code_modules.lo \ - src/processor/basic_source_line_resolver.lo \ - src/processor/call_stack.lo \ - src/processor/logging.lo \ - src/processor/minidump.lo \ - src/processor/minidump_processor.lo \ - src/processor/pathname_stripper.lo \ - src/processor/process_state.lo \ - src/processor/simple_symbol_supplier.lo \ - src/processor/stackwalker.lo \ - src/processor/stackwalker_amd64.lo \ - src/processor/stackwalker_ppc.lo \ - src/processor/stackwalker_sparc.lo \ - src/processor/stackwalker_x86.lo +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_mac_macho_reader_unittest_LDADD = \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(TEST_LIBS) \ +@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_SOURCES = \ +@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump_memory_range_unittest.cc + +@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS = \ +@LINUX_HOST_TRUE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_LDADD = \ +@LINUX_HOST_TRUE@ $(TEST_LIBS) \ +@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/address_map_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o + +@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o + +@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_unittest.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_proc_maps_linux_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_proc_maps_linux_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_proc_maps_linux_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_range_map_shrink_down_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_shrink_down_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_range_map_shrink_down_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_range_map_shrink_down_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_selftest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips64_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips64_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips64_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips64_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.h \ +@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump_unittest.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump.cc \ +@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump.h + +@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.h \ +@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler_unittest.cc + +@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_CPPFLAGS = \ +@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) + +@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ +@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + +@DISABLE_PROCESSOR_FALSE@noinst_SCRIPTS = $(check_SCRIPTS) +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_dump.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o + +@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_stackwalk.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalk_common.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_SOURCES = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk.cc + +@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_LDADD = \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalk_common.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ +@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ +@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a EXTRA_DIST = \ $(SCRIPTS) \ - src/processor/stackwalk_selftest_sol.s \ - src/client/linux/handler/Makefile \ - src/client/linux/handler/exception_handler.cc \ - src/client/linux/handler/exception_handler.h \ - src/client/linux/handler/exception_handler_test.cc \ - src/client/linux/handler/linux_thread.cc \ - src/client/linux/handler/linux_thread.h \ - src/client/linux/handler/linux_thread_test.cc \ - src/client/linux/handler/minidump_generator.cc \ - src/client/linux/handler/minidump_generator.h \ - src/client/linux/handler/minidump_test.cc \ + src/client/linux/data/linux-gate-amd.sym \ + src/client/linux/data/linux-gate-intel.sym \ + src/client/mac/handler/breakpad_nlist_64.cc \ + src/client/mac/handler/breakpad_nlist_64.h \ src/client/mac/handler/dynamic_images.cc \ src/client/mac/handler/dynamic_images.h \ src/client/mac/handler/exception_handler.cc \ src/client/mac/handler/exception_handler.h \ - src/client/mac/handler/exception_handler_test.cc \ + src/client/mac/handler/mach_vm_compat.h \ src/client/mac/handler/minidump_generator.cc \ src/client/mac/handler/minidump_generator.h \ - src/client/mac/handler/minidump_generator_test.cc \ src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj \ + src/client/mac/handler/minidump_tests32-Info.plist \ + src/client/mac/handler/minidump_tests64-Info.plist \ + src/client/mac/handler/obj-cTestCases-Info.plist \ src/client/mac/handler/protected_memory_allocator.cc \ src/client/mac/handler/protected_memory_allocator.h \ - src/client/minidump_file_writer-inl.h \ - src/client/minidump_file_writer.cc \ - src/client/minidump_file_writer.h \ + src/client/mac/handler/ucontext_compat.h \ + src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym \ + src/client/mac/tests/BreakpadFramework_Test.mm \ + src/client/mac/tests/crash_generation_server_test.cc \ + src/client/mac/tests/exception_handler_test.cc \ + src/client/mac/tests/minidump_generator_test.cc \ + src/client/mac/tests/minidump_generator_test_helper.cc \ + src/client/mac/tests/spawn_child_process.h \ + src/client/mac/tests/testlogging.h \ src/client/minidump_file_writer_unittest.cc \ src/client/solaris/handler/Makefile \ src/client/solaris/handler/exception_handler.cc \ @@ -602,39 +3127,25 @@ EXTRA_DIST = \ src/client/solaris/handler/minidump_test.cc \ src/client/solaris/handler/solaris_lwp.cc \ src/client/solaris/handler/solaris_lwp.h \ - src/client/windows/breakpad_client.sln \ + src/client/windows/breakpad_client.gyp \ src/client/windows/handler/exception_handler.cc \ src/client/windows/handler/exception_handler.h \ - src/client/windows/handler/exception_handler.vcproj \ + src/client/windows/handler/exception_handler.gyp \ src/client/windows/sender/crash_report_sender.cc \ src/client/windows/sender/crash_report_sender.h \ - src/client/windows/sender/crash_report_sender.vcproj \ - src/common/convert_UTF.c \ - src/common/convert_UTF.h \ - src/common/linux/dump_symbols.cc \ - src/common/linux/dump_symbols.h \ - src/common/linux/file_id.cc \ - src/common/linux/file_id.h \ - src/common/linux/guid_creator.cc \ - src/common/linux/guid_creator.h \ - src/common/linux/http_upload.cc \ - src/common/linux/http_upload.h \ + src/client/windows/sender/crash_report_sender.gyp \ + src/common/dwarf/dwarf2diehandler.h \ + src/common/dwarf/dwarf2enums.h \ + src/common/dwarf/line_state_machine.h \ + src/common/dwarf/types.h \ + src/common/mac/arch_utilities.h \ + src/common/mac/byteswap.h \ src/common/mac/HTTPMultipartUpload.h \ src/common/mac/HTTPMultipartUpload.m \ - src/common/mac/dump_syms.h \ - src/common/mac/dump_syms.mm \ - src/common/mac/file_id.cc \ - src/common/mac/file_id.h \ - src/common/mac/macho_id.cc \ - src/common/mac/macho_id.h \ - src/common/mac/macho_utilities.cc \ - src/common/mac/macho_utilities.h \ - src/common/mac/macho_walker.cc \ - src/common/mac/macho_walker.h \ src/common/mac/string_utilities.cc \ src/common/mac/string_utilities.h \ - src/common/md5.cc \ - src/common/md5.h \ + src/common/mac/super_fat_arch.h \ + src/common/scoped_ptr.h \ src/common/solaris/dump_symbols.cc \ src/common/solaris/dump_symbols.h \ src/common/solaris/file_id.cc \ @@ -642,8 +3153,6 @@ EXTRA_DIST = \ src/common/solaris/guid_creator.cc \ src/common/solaris/guid_creator.h \ src/common/solaris/message_output.h \ - src/common/string_conversion.cc \ - src/common/string_conversion.h \ src/common/windows/guid_string.cc \ src/common/windows/guid_string.h \ src/common/windows/http_upload.cc \ @@ -652,28 +3161,164 @@ EXTRA_DIST = \ src/common/windows/pdb_source_line_writer.h \ src/common/windows/string_utils-inl.h \ src/common/windows/string_utils.cc \ + src/processor/stackwalk_common.cc \ + src/processor/stackwalk_common.h \ + src/processor/stackwalker_selftest_sol.s \ + src/processor/testdata/ascii_read_av_block_write.dmp \ + src/processor/testdata/ascii_read_av_clobber_write.dmp \ + src/processor/testdata/ascii_read_av_conditional.dmp \ + src/processor/testdata/ascii_read_av.dmp \ + src/processor/testdata/ascii_read_av_then_jmp.dmp \ + src/processor/testdata/ascii_read_av_xchg_write.dmp \ + src/processor/testdata/ascii_write_av_arg_to_call.dmp \ + src/processor/testdata/ascii_write_av.dmp \ + src/processor/testdata/exec_av_on_stack.dmp \ + src/processor/testdata/linux_divide_by_zero.dmp \ + src/processor/testdata/linux_executable_heap.dmp \ + src/processor/testdata/linux_executable_stack.dmp \ + src/processor/testdata/linux_inside_module_exe_region1.dmp \ + src/processor/testdata/linux_inside_module_exe_region2.dmp \ + src/processor/testdata/linux_jmp_to_0.dmp \ + src/processor/testdata/linux_jmp_to_module_not_exe_region.dmp \ + src/processor/testdata/linux_null_dereference.dmp \ + src/processor/testdata/linux_null_read_av.dmp \ + src/processor/testdata/linux_outside_module.dmp \ + src/processor/testdata/linux_overflow.dmp \ + src/processor/testdata/linux_raise_sigabrt.dmp \ + src/processor/testdata/linux_stack_pointer_in_module.dmp \ + src/processor/testdata/linux_stack_pointer_in_stack.dmp \ + src/processor/testdata/linux_stacksmash.dmp \ + src/processor/testdata/linux_write_to_nonwritable_module.dmp \ + src/processor/testdata/linux_write_to_nonwritable_region_math.dmp \ + src/processor/testdata/linux_write_to_outside_module.dmp \ + src/processor/testdata/linux_write_to_outside_module_via_math.dmp \ + src/processor/testdata/linux_write_to_under_4k.dmp \ + src/processor/testdata/microdump-arm64.dmp \ + src/processor/testdata/microdump-arm.dmp \ + src/processor/testdata/microdump-mips32.dmp \ + src/processor/testdata/microdump-mips64.dmp \ + src/processor/testdata/microdump-multiple.dmp \ + src/processor/testdata/microdump.stackwalk-arm64.out \ + src/processor/testdata/microdump.stackwalk-arm.out \ + src/processor/testdata/microdump.stackwalk.machine_readable-arm64.out \ + src/processor/testdata/microdump.stackwalk.machine_readable-arm.out \ + src/processor/testdata/microdump-x86.dmp \ src/processor/testdata/minidump2.dmp \ src/processor/testdata/minidump2.dump.out \ src/processor/testdata/minidump2.stackwalk.machine_readable.out \ src/processor/testdata/minidump2.stackwalk.out \ + src/processor/testdata/module0.out \ src/processor/testdata/module1.out \ src/processor/testdata/module2.out \ src/processor/testdata/module3_bad.out \ src/processor/testdata/module4_bad.out \ + src/processor/testdata/null_read_av.dmp \ + src/processor/testdata/null_write_av.dmp \ + src/processor/testdata/read_av_clobber_write.dmp \ + src/processor/testdata/read_av_conditional.dmp \ + src/processor/testdata/read_av_non_null.dmp \ + src/processor/testdata/stack_exhaustion.dmp \ + src/processor/testdata/write_av_non_null.dmp \ src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \ + src/processor/testdata/symbols/ld-2.13.so/C32AD7E235EA6112E02A5B9D6219C4850/ld-2.13.so.sym \ + src/processor/testdata/symbols/libc-2.13.so/F4F8DFCD5A5FB5A7CE64717E9E6AE3890/libc-2.13.so.sym \ + src/processor/testdata/symbols/libgcc_s.so.1/18B180F90887D8F8B5C35D185444AF4C0/libgcc_s.so.1.sym \ + src/processor/testdata/symbols/microdump/breakpad_unittests/D6D1FEC9A15DE7F38A236898871A2E770/breakpad_unittests.sym \ + src/processor/testdata/symbols/microdump/breakpad_unittests/DA7778FB66018A4E9B4110ED06E730D00/breakpad_unittests.sym \ + src/processor/testdata/symbols/microdump/crash_example/6E72E2F1A5F59AB3D51356FDFE394D490/crash_example.sym \ + src/processor/testdata/symbols/microdump/crash_example/8F36148CC4647A8116CAF2A25F591F570/crash_example.sym \ + src/processor/testdata/symbols/null_read_av/7B7D1968FF0D47AE4366E9C3A7E1B6750/null_read_av.sym \ + src/processor/testdata/symbols/overflow/B0E1FC01EF48E39CAF5C881D2DF0C3840/overflow.sym \ src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym \ src/processor/testdata/test_app.cc \ - src/tools/linux/dump_syms/Makefile \ - src/tools/linux/dump_syms/dump_syms.cc \ - src/tools/linux/symupload/Makefile \ - src/tools/linux/symupload/minidump_upload.cc \ - src/tools/linux/symupload/sym_upload.cc \ + src/testing/gtest/include/gtest/gtest.h \ + src/testing/gtest/include/gtest/gtest-death-test.h \ + src/testing/gtest/include/gtest/gtest-message.h \ + src/testing/gtest/include/gtest/gtest-param-test.h \ + src/testing/gtest/include/gtest/gtest-printers.h \ + src/testing/gtest/include/gtest/gtest-spi.h \ + src/testing/gtest/include/gtest/gtest-test-part.h \ + src/testing/gtest/include/gtest/gtest-typed-test.h \ + src/testing/gtest/include/gtest/gtest_pred_impl.h \ + src/testing/gtest/include/gtest/gtest_prod.h \ + src/testing/gtest/include/gtest/internal/gtest-death-test-internal.h \ + src/testing/gtest/include/gtest/internal/gtest-filepath.h \ + src/testing/gtest/include/gtest/internal/gtest-internal.h \ + src/testing/gtest/include/gtest/internal/gtest-linked_ptr.h \ + src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h \ + src/testing/gtest/include/gtest/internal/gtest-param-util.h \ + src/testing/gtest/include/gtest/internal/gtest-port.h \ + src/testing/gtest/include/gtest/internal/gtest-string.h \ + src/testing/gtest/include/gtest/internal/gtest-tuple.h \ + src/testing/gtest/include/gtest/internal/gtest-type-util.h \ + src/testing/gtest/src/gtest.cc \ + src/testing/gtest/src/gtest-death-test.cc \ + src/testing/gtest/src/gtest-filepath.cc \ + src/testing/gtest/src/gtest-internal-inl.h \ + src/testing/gtest/src/gtest-port.cc \ + src/testing/gtest/src/gtest-printers.cc \ + src/testing/gtest/src/gtest-test-part.cc \ + src/testing/gtest/src/gtest-typed-test.cc \ + src/testing/include/gmock/gmock.h \ + src/testing/include/gmock/gmock-actions.h \ + src/testing/include/gmock/gmock-cardinalities.h \ + src/testing/include/gmock/gmock-generated-actions.h \ + src/testing/include/gmock/gmock-generated-function-mockers.h \ + src/testing/include/gmock/gmock-generated-matchers.h \ + src/testing/include/gmock/gmock-generated-nice-strict.h \ + src/testing/include/gmock/gmock-matchers.h \ + src/testing/include/gmock/gmock-more-actions.h \ + src/testing/include/gmock/gmock-more-matchers.h \ + src/testing/include/gmock/gmock-spec-builders.h \ + src/testing/include/gmock/internal/gmock-generated-internal-utils.h \ + src/testing/include/gmock/internal/gmock-internal-utils.h \ + src/testing/include/gmock/internal/gmock-port.h \ + src/testing/src/gmock.cc \ + src/testing/src/gmock-cardinalities.cc \ + src/testing/src/gmock-internal-utils.cc \ + src/testing/src/gmock-matchers.cc \ + src/testing/src/gmock-spec-builders.cc \ + src/testing/src/gmock_main.cc \ + src/third_party/curl/COPYING \ + src/third_party/curl/curlbuild.h \ + src/third_party/curl/curl.h \ + src/third_party/curl/curlrules.h \ + src/third_party/curl/curlver.h \ + src/third_party/curl/easy.h \ + src/third_party/curl/mprintf.h \ + src/third_party/curl/multi.h \ + src/third_party/curl/stdcheaders.h \ + src/third_party/curl/typecheck-gcc.h \ + src/third_party/curl/types.h \ + src/third_party/mac_headers/architecture/byte_order.h \ + src/third_party/mac_headers/i386/_types.h \ + src/third_party/mac_headers/mach/boolean.h \ + src/third_party/mac_headers/mach/i386/boolean.h \ + src/third_party/mac_headers/mach/i386/vm_param.h \ + src/third_party/mac_headers/mach/i386/vm_types.h \ + src/third_party/mac_headers/mach/machine/boolean.h \ + src/third_party/mac_headers/mach/machine.h \ + src/third_party/mac_headers/mach/machine/thread_state.h \ + src/third_party/mac_headers/mach/machine/thread_status.h \ + src/third_party/mac_headers/mach/machine/vm_types.h \ + src/third_party/mac_headers/mach-o/arch.h \ + src/third_party/mac_headers/mach-o/fat.h \ + src/third_party/mac_headers/mach-o/loader.h \ + src/third_party/mac_headers/mach-o/nlist.h \ + src/third_party/mac_headers/mach/thread_status.h \ + src/third_party/mac_headers/mach/vm_prot.h \ + src/third_party/mac_headers/README \ + src/third_party/musl/README \ + src/third_party/musl/COPYRIGHT \ + src/third_party/musl/README.breakpad \ + src/third_party/musl/VERSION \ + src/third_party/musl/include/elf.h \ src/tools/mac/crash_report/crash_report.mm \ src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj \ src/tools/mac/crash_report/on_demand_symbol_supplier.h \ src/tools/mac/crash_report/on_demand_symbol_supplier.mm \ src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj \ - src/tools/mac/dump_syms/dump_syms_tool.m \ + src/tools/mac/dump_syms/dump_syms_tool.cc \ src/tools/mac/symupload/minidump_upload.m \ src/tools/mac/symupload/symupload.m \ src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj \ @@ -686,36 +3331,40 @@ EXTRA_DIST = \ src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym \ src/tools/windows/converter/ms_symbol_server_converter.cc \ src/tools/windows/converter/ms_symbol_server_converter.h \ - src/tools/windows/converter/ms_symbol_server_converter.vcproj \ + src/tools/windows/converter/ms_symbol_server_converter.gyp \ src/tools/windows/dump_syms/dump_syms.cc \ - src/tools/windows/dump_syms/dump_syms.vcproj \ + src/tools/windows/dump_syms/dump_syms.gyp \ src/tools/windows/dump_syms/run_regtest.sh \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym \ + src/tools/windows/dump_syms/testdata/dump_syms_regtest64.sym \ + src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym \ + src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym \ + src/tools/windows/dump_syms/testdata/omap_stretched.sym \ + src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym \ src/tools/windows/symupload/symupload.cc \ - src/tools/windows/symupload/symupload.vcproj + src/tools/windows/symupload/symupload.gyp all: all-am .SUFFIXES: -.SUFFIXES: .cc .lo .o .obj -am--refresh: +.SUFFIXES: .S .c .cc .log .o .obj .test .test$(EXEEXT) .trs +am--refresh: Makefile @: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ - cd $(srcdir) && $(AUTOMAKE) --gnu \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu Makefile -.PRECIOUS: Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -729,170 +3378,325 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck -$(top_srcdir)/configure: $(am__configure_deps) - cd $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): src/config.h: src/stamp-h1 - @if test ! -f $@; then \ - rm -f src/stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1; \ - else :; fi + @test -f $@ || rm -f src/stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1 src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status @rm -f src/stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status src/config.h -$(top_srcdir)/src/config.h.in: $(am__configure_deps) - cd $(top_srcdir) && $(AUTOHEADER) +$(top_srcdir)/src/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f src/stamp-h1 touch $@ distclean-hdr: -rm -f src/config.h src/stamp-h1 -install-libLTLIBRARIES: $(lib_LTLIBRARIES) +breakpad.pc: $(top_builddir)/config.status $(srcdir)/breakpad.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +breakpad-client.pc: $(top_builddir)/config.status $(srcdir)/breakpad-client.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +clean-checkLIBRARIES: + -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES) +install-libLIBRARIES: $(lib_LIBRARIES) @$(NORMAL_INSTALL) - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ if test -f $$p; then \ - f=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } + @$(POST_INSTALL) + @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + if test -f $$p; then \ + $(am__strip_dir) \ + echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \ + ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \ else :; fi; \ done -uninstall-libLTLIBRARIES: +uninstall-libLIBRARIES: @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - p=$(am__strip_dir) \ - echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ - $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ - done + @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir) -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done +clean-libLIBRARIES: + -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +src/client/linux/crash_generation/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/crash_generation + @: > src/client/linux/crash_generation/$(am__dirstamp) +src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/crash_generation/$(DEPDIR) + @: > src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp) +src/client/linux/crash_generation/crash_generation_client.$(OBJEXT): \ + src/client/linux/crash_generation/$(am__dirstamp) \ + src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp) +src/client/linux/crash_generation/crash_generation_server.$(OBJEXT): \ + src/client/linux/crash_generation/$(am__dirstamp) \ + src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp) +src/client/linux/dump_writer_common/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/dump_writer_common + @: > src/client/linux/dump_writer_common/$(am__dirstamp) +src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/dump_writer_common/$(DEPDIR) + @: > src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp) +src/client/linux/dump_writer_common/thread_info.$(OBJEXT): \ + src/client/linux/dump_writer_common/$(am__dirstamp) \ + src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp) +src/client/linux/dump_writer_common/ucontext_reader.$(OBJEXT): \ + src/client/linux/dump_writer_common/$(am__dirstamp) \ + src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp) +src/client/linux/handler/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/handler + @: > src/client/linux/handler/$(am__dirstamp) +src/client/linux/handler/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/handler/$(DEPDIR) + @: > src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) +src/client/linux/handler/exception_handler.$(OBJEXT): \ + src/client/linux/handler/$(am__dirstamp) \ + src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) +src/client/linux/handler/minidump_descriptor.$(OBJEXT): \ + src/client/linux/handler/$(am__dirstamp) \ + src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) +src/client/linux/log/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/log + @: > src/client/linux/log/$(am__dirstamp) +src/client/linux/log/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/log/$(DEPDIR) + @: > src/client/linux/log/$(DEPDIR)/$(am__dirstamp) +src/client/linux/log/log.$(OBJEXT): \ + src/client/linux/log/$(am__dirstamp) \ + src/client/linux/log/$(DEPDIR)/$(am__dirstamp) +src/client/linux/microdump_writer/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/microdump_writer + @: > src/client/linux/microdump_writer/$(am__dirstamp) +src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/microdump_writer/$(DEPDIR) + @: > src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/microdump_writer/microdump_writer.$(OBJEXT): \ + src/client/linux/microdump_writer/$(am__dirstamp) \ + src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/minidump_writer + @: > src/client/linux/minidump_writer/$(am__dirstamp) +src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/client/linux/minidump_writer/$(DEPDIR) + @: > src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/linux_core_dumper.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/linux_dumper.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/linux_ptrace_dumper.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/minidump_writer.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/$(am__dirstamp): + @$(MKDIR_P) src/client + @: > src/client/$(am__dirstamp) +src/client/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/client/$(DEPDIR) + @: > src/client/$(DEPDIR)/$(am__dirstamp) +src/client/minidump_file_writer.$(OBJEXT): src/client/$(am__dirstamp) \ + src/client/$(DEPDIR)/$(am__dirstamp) +src/common/$(am__dirstamp): + @$(MKDIR_P) src/common + @: > src/common/$(am__dirstamp) +src/common/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/common/$(DEPDIR) + @: > src/common/$(DEPDIR)/$(am__dirstamp) +src/common/convert_UTF.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/md5.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/string_conversion.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/linux/$(am__dirstamp): + @$(MKDIR_P) src/common/linux + @: > src/common/linux/$(am__dirstamp) +src/common/linux/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/common/linux/$(DEPDIR) + @: > src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/elf_core_dump.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/elfutils.$(OBJEXT): src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/file_id.$(OBJEXT): src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/guid_creator.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/linux_libc_support.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/memory_mapped_file.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/safe_readlink.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/android/$(am__dirstamp): + @$(MKDIR_P) src/common/android + @: > src/common/android/$(am__dirstamp) +src/common/android/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/common/android/$(DEPDIR) + @: > src/common/android/$(DEPDIR)/$(am__dirstamp) +src/common/android/breakpad_getcontext.$(OBJEXT): \ + src/common/android/$(am__dirstamp) \ + src/common/android/$(DEPDIR)/$(am__dirstamp) +src/client/linux/$(am__dirstamp): + @$(MKDIR_P) src/client/linux + @: > src/client/linux/$(am__dirstamp) + +src/client/linux/libbreakpad_client.a: $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_DEPENDENCIES) $(EXTRA_src_client_linux_libbreakpad_client_a_DEPENDENCIES) src/client/linux/$(am__dirstamp) + $(AM_V_at)-rm -f src/client/linux/libbreakpad_client.a + $(AM_V_AR)$(src_client_linux_libbreakpad_client_a_AR) src/client/linux/libbreakpad_client.a $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_LIBADD) + $(AM_V_at)$(RANLIB) src/client/linux/libbreakpad_client.a src/processor/$(am__dirstamp): @$(MKDIR_P) src/processor @: > src/processor/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/processor/$(DEPDIR) @: > src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/basic_code_modules.lo: src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/basic_source_line_resolver.lo: \ +src/processor/basic_code_modules.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/call_stack.lo: src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/logging.lo: src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/minidump.lo: src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/minidump_processor.lo: src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/pathname_stripper.lo: src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/process_state.lo: src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/simple_symbol_supplier.lo: \ +src/processor/basic_source_line_resolver.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker.lo: src/processor/$(am__dirstamp) \ +src/processor/call_stack.$(OBJEXT): src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_amd64.lo: src/processor/$(am__dirstamp) \ +src/processor/cfi_frame_info.$(OBJEXT): src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_ppc.lo: src/processor/$(am__dirstamp) \ +src/processor/disassembler_x86.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_sparc.lo: src/processor/$(am__dirstamp) \ +src/processor/dump_context.$(OBJEXT): src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_x86.lo: src/processor/$(am__dirstamp) \ +src/processor/dump_object.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/exploitability.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/exploitability_linux.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/exploitability_win.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/fast_source_line_resolver.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/logging.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/microdump.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/microdump_processor.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/minidump.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/minidump_processor.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/module_comparer.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/module_serializer.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/pathname_stripper.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/process_state.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/proc_maps_linux.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/simple_symbol_supplier.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/source_line_resolver_base.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stack_frame_cpu.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stack_frame_symbolizer.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_amd64.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_arm.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_arm64.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_address_list.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_mips.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_ppc.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_ppc64.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_sparc.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/stackwalker_x86.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/symbolic_constants_win.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/tokenize.$(OBJEXT): src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) src/$(am__dirstamp): @$(MKDIR_P) src @: > src/$(am__dirstamp) -src/libbreakpad.la: $(src_libbreakpad_la_OBJECTS) $(src_libbreakpad_la_DEPENDENCIES) src/$(am__dirstamp) - $(CXXLINK) -rpath $(libdir) $(src_libbreakpad_la_OBJECTS) $(src_libbreakpad_la_LIBADD) $(LIBS) -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - if test -f $$p \ - || test -f $$p1 \ - ; then \ - f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ - $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ - else :; fi; \ - done -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ - echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ - rm -f "$(DESTDIR)$(bindir)/$$f"; \ - done - -clean-binPROGRAMS: - @list='$(bin_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; for p in $$list; do \ - f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f $$p $$f"; \ - rm -f $$p $$f ; \ - done -src/processor/address_map_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/address_map_unittest$(EXEEXT): $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/address_map_unittest$(EXEEXT) - $(CXXLINK) $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_LDADD) $(LIBS) -src/processor/basic_source_line_resolver_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/basic_source_line_resolver_unittest$(EXEEXT): $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/basic_source_line_resolver_unittest$(EXEEXT) - $(CXXLINK) $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_LDADD) $(LIBS) -src/processor/contained_range_map_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/contained_range_map_unittest$(EXEEXT): $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/contained_range_map_unittest$(EXEEXT) - $(CXXLINK) $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_LDADD) $(LIBS) -src/processor/minidump_dump.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/minidump_dump$(EXEEXT): $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/minidump_dump$(EXEEXT) - $(CXXLINK) $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_LDADD) $(LIBS) -src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) +src/libbreakpad.a: $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_DEPENDENCIES) $(EXTRA_src_libbreakpad_a_DEPENDENCIES) src/$(am__dirstamp) + $(AM_V_at)-rm -f src/libbreakpad.a + $(AM_V_AR)$(src_libbreakpad_a_AR) src/libbreakpad.a $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_LIBADD) + $(AM_V_at)$(RANLIB) src/libbreakpad.a src/testing/gtest/src/$(am__dirstamp): @$(MKDIR_P) src/testing/gtest/src @: > src/testing/gtest/src/$(am__dirstamp) src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/testing/gtest/src/$(DEPDIR) @: > src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) -src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJEXT): \ +src/testing/gtest/src/src_testing_libtesting_a-gtest-all.$(OBJEXT): \ + src/testing/gtest/src/$(am__dirstamp) \ + src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) +src/testing/gtest/src/src_testing_libtesting_a-gtest_main.$(OBJEXT): \ src/testing/gtest/src/$(am__dirstamp) \ src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(am__dirstamp): @@ -901,334 +3705,4138 @@ src/testing/src/$(am__dirstamp): src/testing/src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/testing/src/$(DEPDIR) @: > src/testing/src/$(DEPDIR)/$(am__dirstamp) -src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT): \ +src/testing/src/src_testing_libtesting_a-gmock-all.$(OBJEXT): \ src/testing/src/$(am__dirstamp) \ src/testing/src/$(DEPDIR)/$(am__dirstamp) -src/processor/minidump_processor_unittest$(EXEEXT): $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) +src/testing/$(am__dirstamp): + @$(MKDIR_P) src/testing + @: > src/testing/$(am__dirstamp) + +src/testing/libtesting.a: $(src_testing_libtesting_a_OBJECTS) $(src_testing_libtesting_a_DEPENDENCIES) $(EXTRA_src_testing_libtesting_a_DEPENDENCIES) src/testing/$(am__dirstamp) + $(AM_V_at)-rm -f src/testing/libtesting.a + $(AM_V_AR)$(src_testing_libtesting_a_AR) src/testing/libtesting.a $(src_testing_libtesting_a_OBJECTS) $(src_testing_libtesting_a_LIBADD) + $(AM_V_at)$(RANLIB) src/testing/libtesting.a +src/third_party/libdisasm/$(am__dirstamp): + @$(MKDIR_P) src/third_party/libdisasm + @: > src/third_party/libdisasm/$(am__dirstamp) +src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/third_party/libdisasm/$(DEPDIR) + @: > src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/ia32_implicit.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/ia32_insn.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/ia32_invariant.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/ia32_modrm.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/ia32_opcode_tables.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/ia32_operand.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/ia32_reg.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/ia32_settings.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/x86_disasm.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/x86_format.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/x86_imm.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/x86_insn.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/x86_misc.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) +src/third_party/libdisasm/x86_operand_list.$(OBJEXT): \ + src/third_party/libdisasm/$(am__dirstamp) \ + src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) + +src/third_party/libdisasm/libdisasm.a: $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) $(EXTRA_src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) src/third_party/libdisasm/$(am__dirstamp) + $(AM_V_at)-rm -f src/third_party/libdisasm/libdisasm.a + $(AM_V_AR)$(src_third_party_libdisasm_libdisasm_a_AR) src/third_party/libdisasm/libdisasm.a $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_LIBADD) + $(AM_V_at)$(RANLIB) src/third_party/libdisasm/libdisasm.a +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +clean-checkPROGRAMS: + -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) + +clean-noinstPROGRAMS: + -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) + +src/client/linux/linux_client_unittest$(EXEEXT): $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_DEPENDENCIES) $(EXTRA_src_client_linux_linux_client_unittest_DEPENDENCIES) src/client/linux/$(am__dirstamp) + @rm -f src/client/linux/linux_client_unittest$(EXEEXT) + $(AM_V_CCLD)$(src_client_linux_linux_client_unittest_LINK) $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_LDADD) $(LIBS) +src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.$(OBJEXT): \ + src/testing/gtest/src/$(am__dirstamp) \ + src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) +src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.$(OBJEXT): \ + src/testing/gtest/src/$(am__dirstamp) \ + src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) +src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.$(OBJEXT): \ + src/testing/src/$(am__dirstamp) \ + src/testing/src/$(DEPDIR)/$(am__dirstamp) +src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.$(OBJEXT): \ + src/client/linux/handler/$(am__dirstamp) \ + src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/tests/$(am__dirstamp): + @$(MKDIR_P) src/common/linux/tests + @: > src/common/linux/tests/$(am__dirstamp) +src/common/linux/tests/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/common/linux/tests/$(DEPDIR) + @: > src/common/linux/tests/$(DEPDIR)/$(am__dirstamp) +src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.$(OBJEXT): \ + src/common/linux/tests/$(am__dirstamp) \ + src/common/linux/tests/$(DEPDIR)/$(am__dirstamp) +src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/tests/$(am__dirstamp): + @$(MKDIR_P) src/common/tests + @: > src/common/tests/$(am__dirstamp) +src/common/tests/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/common/tests/$(DEPDIR) + @: > src/common/tests/$(DEPDIR)/$(am__dirstamp) +src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.$(OBJEXT): \ + src/common/tests/$(am__dirstamp) \ + src/common/tests/$(DEPDIR)/$(am__dirstamp) +src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_client_linux_linux_client_unittest_shlib-logging.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_client_linux_linux_client_unittest_shlib-minidump.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.$(OBJEXT): \ + src/common/android/$(am__dirstamp) \ + src/common/android/$(DEPDIR)/$(am__dirstamp) +src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.$(OBJEXT): \ + src/client/linux/microdump_writer/$(am__dirstamp) \ + src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp) +src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.$(OBJEXT): \ + src/common/android/$(am__dirstamp) \ + src/common/android/$(DEPDIR)/$(am__dirstamp) + +src/client/linux/linux_client_unittest_shlib$(EXEEXT): $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) $(EXTRA_src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) src/client/linux/$(am__dirstamp) + @rm -f src/client/linux/linux_client_unittest_shlib$(EXEEXT) + $(AM_V_CXXLD)$(src_client_linux_linux_client_unittest_shlib_LINK) $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_LDADD) $(LIBS) +src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.$(OBJEXT): \ + src/client/linux/minidump_writer/$(am__dirstamp) \ + src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) + +src/client/linux/linux_dumper_unittest_helper$(EXEEXT): $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) $(EXTRA_src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) src/client/linux/$(am__dirstamp) + @rm -f src/client/linux/linux_dumper_unittest_helper$(EXEEXT) + $(AM_V_CXXLD)$(src_client_linux_linux_dumper_unittest_helper_LINK) $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_LDADD) $(LIBS) +src/common/src_common_dumper_unittest-byte_cursor_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-dwarf_cfi_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-dwarf_cu_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-dwarf_line_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-language.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-memory_range_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-module_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-stabs_reader.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-stabs_reader_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-stabs_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-stabs_to_module_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_dumper_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/$(am__dirstamp): + @$(MKDIR_P) src/common/dwarf + @: > src/common/dwarf/$(am__dirstamp) +src/common/dwarf/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/common/dwarf/$(DEPDIR) + @: > src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-bytereader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-cfi_assembler.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-dwarf2reader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-elf_reader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-crc32.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-dump_symbols.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-elf_core_dump.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-elfutils.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-file_id.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-file_id_unittest.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-linux_libc_support.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-memory_mapped_file.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-safe_readlink.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-synth_elf.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/src_common_dumper_unittest-synth_elf_unittest.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/tests/src_common_dumper_unittest-crash_generator.$(OBJEXT): \ + src/common/linux/tests/$(am__dirstamp) \ + src/common/linux/tests/$(DEPDIR)/$(am__dirstamp) +src/common/tests/src_common_dumper_unittest-file_utils.$(OBJEXT): \ + src/common/tests/$(am__dirstamp) \ + src/common/tests/$(DEPDIR)/$(am__dirstamp) + +src/common/dumper_unittest$(EXEEXT): $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_DEPENDENCIES) $(EXTRA_src_common_dumper_unittest_DEPENDENCIES) src/common/$(am__dirstamp) + @rm -f src/common/dumper_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_LDADD) $(LIBS) +src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_mac_macho_reader_unittest-language.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_mac_macho_reader_unittest-md5.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_mac_macho_reader_unittest-module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_mac_macho_reader_unittest-stabs_reader.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_mac_macho_reader_unittest-stabs_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_mac_macho_reader_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/mac/$(am__dirstamp): + @$(MKDIR_P) src/common/mac + @: > src/common/mac/$(am__dirstamp) +src/common/mac/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/common/mac/$(DEPDIR) + @: > src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_common_mac_macho_reader_unittest-file_id.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_common_mac_macho_reader_unittest-macho_id.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/tests/src_common_mac_macho_reader_unittest-file_utils.$(OBJEXT): \ + src/common/tests/$(am__dirstamp) \ + src/common/tests/$(DEPDIR)/$(am__dirstamp) + +src/common/mac/macho_reader_unittest$(EXEEXT): $(src_common_mac_macho_reader_unittest_OBJECTS) $(src_common_mac_macho_reader_unittest_DEPENDENCIES) $(EXTRA_src_common_mac_macho_reader_unittest_DEPENDENCIES) src/common/mac/$(am__dirstamp) + @rm -f src/common/mac/macho_reader_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_common_mac_macho_reader_unittest_OBJECTS) $(src_common_mac_macho_reader_unittest_LDADD) $(LIBS) +src/common/src_common_test_assembler_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_common_test_assembler_unittest-test_assembler_unittest.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) + +src/common/test_assembler_unittest$(EXEEXT): $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_DEPENDENCIES) $(EXTRA_src_common_test_assembler_unittest_DEPENDENCIES) src/common/$(am__dirstamp) + @rm -f src/common/test_assembler_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_LDADD) $(LIBS) +src/processor/address_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/address_map_unittest$(EXEEXT): $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/address_map_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_LDADD) $(LIBS) +src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/basic_source_line_resolver_unittest$(EXEEXT): $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) $(EXTRA_src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/basic_source_line_resolver_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_LDADD) $(LIBS) +src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/cfi_frame_info_unittest$(EXEEXT): $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_DEPENDENCIES) $(EXTRA_src_processor_cfi_frame_info_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/cfi_frame_info_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_LDADD) $(LIBS) +src/processor/contained_range_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/contained_range_map_unittest$(EXEEXT): $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/contained_range_map_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_LDADD) $(LIBS) +src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/disassembler_x86_unittest$(EXEEXT): $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_DEPENDENCIES) $(EXTRA_src_processor_disassembler_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/disassembler_x86_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_LDADD) $(LIBS) +src/processor/src_processor_exploitability_unittest-exploitability_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/exploitability_unittest$(EXEEXT): $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_DEPENDENCIES) $(EXTRA_src_processor_exploitability_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/exploitability_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_LDADD) $(LIBS) +src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/fast_source_line_resolver_unittest$(EXEEXT): $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) $(EXTRA_src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/fast_source_line_resolver_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_LDADD) $(LIBS) +src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/map_serializers_unittest$(EXEEXT): $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_DEPENDENCIES) $(EXTRA_src_processor_map_serializers_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/map_serializers_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_LDADD) $(LIBS) +src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/microdump_processor_unittest$(EXEEXT): $(src_processor_microdump_processor_unittest_OBJECTS) $(src_processor_microdump_processor_unittest_DEPENDENCIES) $(EXTRA_src_processor_microdump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/microdump_processor_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_microdump_processor_unittest_OBJECTS) $(src_processor_microdump_processor_unittest_LDADD) $(LIBS) +src/processor/microdump_stackwalk.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/microdump_stackwalk$(EXEEXT): $(src_processor_microdump_stackwalk_OBJECTS) $(src_processor_microdump_stackwalk_DEPENDENCIES) $(EXTRA_src_processor_microdump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/microdump_stackwalk$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_microdump_stackwalk_OBJECTS) $(src_processor_microdump_stackwalk_LDADD) $(LIBS) +src/processor/minidump_dump.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/minidump_dump$(EXEEXT): $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_DEPENDENCIES) $(EXTRA_src_processor_minidump_dump_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/minidump_dump$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_LDADD) $(LIBS) +src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/minidump_processor_unittest$(EXEEXT): $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_DEPENDENCIES) $(EXTRA_src_processor_minidump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/minidump_processor_unittest$(EXEEXT) - $(CXXLINK) $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_LDADD) $(LIBS) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_LDADD) $(LIBS) src/processor/minidump_stackwalk.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/minidump_stackwalk$(EXEEXT): $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp) + +src/processor/minidump_stackwalk$(EXEEXT): $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_DEPENDENCIES) $(EXTRA_src_processor_minidump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/minidump_stackwalk$(EXEEXT) - $(CXXLINK) $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_LDADD) $(LIBS) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_LDADD) $(LIBS) +src/common/src_processor_minidump_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_minidump_unittest-minidump_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_minidump_unittest-synth_minidump.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/minidump_unittest$(EXEEXT): $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_DEPENDENCIES) $(EXTRA_src_processor_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/minidump_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_LDADD) $(LIBS) src/processor/pathname_stripper_unittest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/pathname_stripper_unittest$(EXEEXT): $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + +src/processor/pathname_stripper_unittest$(EXEEXT): $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_DEPENDENCIES) $(EXTRA_src_processor_pathname_stripper_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/pathname_stripper_unittest$(EXEEXT) - $(CXXLINK) $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_LDADD) $(LIBS) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_LDADD) $(LIBS) src/processor/postfix_evaluator_unittest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/postfix_evaluator_unittest$(EXEEXT): $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + +src/processor/postfix_evaluator_unittest$(EXEEXT): $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_DEPENDENCIES) $(EXTRA_src_processor_postfix_evaluator_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/postfix_evaluator_unittest$(EXEEXT) - $(CXXLINK) $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_LDADD) $(LIBS) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_LDADD) $(LIBS) +src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/proc_maps_linux_unittest$(EXEEXT): $(src_processor_proc_maps_linux_unittest_OBJECTS) $(src_processor_proc_maps_linux_unittest_DEPENDENCIES) $(EXTRA_src_processor_proc_maps_linux_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/proc_maps_linux_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_proc_maps_linux_unittest_OBJECTS) $(src_processor_proc_maps_linux_unittest_LDADD) $(LIBS) +src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/range_map_shrink_down_unittest$(EXEEXT): $(src_processor_range_map_shrink_down_unittest_OBJECTS) $(src_processor_range_map_shrink_down_unittest_DEPENDENCIES) $(EXTRA_src_processor_range_map_shrink_down_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/range_map_shrink_down_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_range_map_shrink_down_unittest_OBJECTS) $(src_processor_range_map_shrink_down_unittest_LDADD) $(LIBS) src/processor/range_map_unittest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/range_map_unittest$(EXEEXT): $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + +src/processor/range_map_unittest$(EXEEXT): $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/range_map_unittest$(EXEEXT) - $(CXXLINK) $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_LDADD) $(LIBS) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_LDADD) $(LIBS) +src/common/src_processor_stackwalker_address_list_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/stackwalker_address_list_unittest$(EXEEXT): $(src_processor_stackwalker_address_list_unittest_OBJECTS) $(src_processor_stackwalker_address_list_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_address_list_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/stackwalker_address_list_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_address_list_unittest_OBJECTS) $(src_processor_stackwalker_address_list_unittest_LDADD) $(LIBS) +src/common/src_processor_stackwalker_amd64_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/stackwalker_amd64_unittest$(EXEEXT): $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_amd64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/stackwalker_amd64_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_LDADD) $(LIBS) +src/common/src_processor_stackwalker_arm64_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/stackwalker_arm64_unittest$(EXEEXT): $(src_processor_stackwalker_arm64_unittest_OBJECTS) $(src_processor_stackwalker_arm64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_arm64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/stackwalker_arm64_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_arm64_unittest_OBJECTS) $(src_processor_stackwalker_arm64_unittest_LDADD) $(LIBS) +src/common/src_processor_stackwalker_arm_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/stackwalker_arm_unittest$(EXEEXT): $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_arm_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/stackwalker_arm_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_LDADD) $(LIBS) +src/common/src_processor_stackwalker_mips64_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/stackwalker_mips64_unittest$(EXEEXT): $(src_processor_stackwalker_mips64_unittest_OBJECTS) $(src_processor_stackwalker_mips64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_mips64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/stackwalker_mips64_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_mips64_unittest_OBJECTS) $(src_processor_stackwalker_mips64_unittest_LDADD) $(LIBS) +src/common/src_processor_stackwalker_mips_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/stackwalker_mips_unittest$(EXEEXT): $(src_processor_stackwalker_mips_unittest_OBJECTS) $(src_processor_stackwalker_mips_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_mips_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/stackwalker_mips_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_mips_unittest_OBJECTS) $(src_processor_stackwalker_mips_unittest_LDADD) $(LIBS) src/processor/stackwalker_selftest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_selftest$(EXEEXT): $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_DEPENDENCIES) src/processor/$(am__dirstamp) + +src/processor/stackwalker_selftest$(EXEEXT): $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_selftest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/stackwalker_selftest$(EXEEXT) - $(CXXLINK) $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_LDADD) $(LIBS) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_LDADD) $(LIBS) +src/common/src_processor_stackwalker_x86_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/stackwalker_x86_unittest$(EXEEXT): $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/stackwalker_x86_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_LDADD) $(LIBS) +src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/static_address_map_unittest$(EXEEXT): $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/static_address_map_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_LDADD) $(LIBS) +src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/static_contained_range_map_unittest$(EXEEXT): $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/static_contained_range_map_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_LDADD) $(LIBS) +src/processor/src_processor_static_map_unittest-static_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/static_map_unittest$(EXEEXT): $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/static_map_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_LDADD) $(LIBS) +src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/static_range_map_unittest$(EXEEXT): $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/static_range_map_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_LDADD) $(LIBS) +src/common/src_processor_synth_minidump_unittest-test_assembler.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) + +src/processor/synth_minidump_unittest$(EXEEXT): $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_DEPENDENCIES) $(EXTRA_src_processor_synth_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/synth_minidump_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_LDADD) $(LIBS) +src/tools/linux/core2md/$(am__dirstamp): + @$(MKDIR_P) src/tools/linux/core2md + @: > src/tools/linux/core2md/$(am__dirstamp) +src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/tools/linux/core2md/$(DEPDIR) + @: > src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp) +src/tools/linux/core2md/core2md.$(OBJEXT): \ + src/tools/linux/core2md/$(am__dirstamp) \ + src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp) + +src/tools/linux/core2md/core2md$(EXEEXT): $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_DEPENDENCIES) $(EXTRA_src_tools_linux_core2md_core2md_DEPENDENCIES) src/tools/linux/core2md/$(am__dirstamp) + @rm -f src/tools/linux/core2md/core2md$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_LDADD) $(LIBS) +src/common/dwarf_cfi_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf_cu_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf_line_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/language.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/module.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/stabs_reader.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/stabs_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/bytereader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/dwarf2diehandler.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/dwarf2reader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/elf_reader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/linux/crc32.$(OBJEXT): src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/dump_symbols.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/common/linux/elf_symbols_to_module.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/tools/linux/dump_syms/$(am__dirstamp): + @$(MKDIR_P) src/tools/linux/dump_syms + @: > src/tools/linux/dump_syms/$(am__dirstamp) +src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/tools/linux/dump_syms/$(DEPDIR) + @: > src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp) +src/tools/linux/dump_syms/dump_syms.$(OBJEXT): \ + src/tools/linux/dump_syms/$(am__dirstamp) \ + src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp) + +src/tools/linux/dump_syms/dump_syms$(EXEEXT): $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) $(EXTRA_src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) src/tools/linux/dump_syms/$(am__dirstamp) + @rm -f src/tools/linux/dump_syms/dump_syms$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_LDADD) $(LIBS) +src/tools/linux/md2core/$(am__dirstamp): + @$(MKDIR_P) src/tools/linux/md2core + @: > src/tools/linux/md2core/$(am__dirstamp) +src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/tools/linux/md2core/$(DEPDIR) + @: > src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) +src/tools/linux/md2core/minidump-2-core.$(OBJEXT): \ + src/tools/linux/md2core/$(am__dirstamp) \ + src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) + +src/tools/linux/md2core/minidump-2-core$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) $(EXTRA_src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp) + @rm -f src/tools/linux/md2core/minidump-2-core$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_LDADD) $(LIBS) +src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.$(OBJEXT): \ + src/tools/linux/md2core/$(am__dirstamp) \ + src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) + +src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) $(EXTRA_src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp) + @rm -f src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_LDADD) $(LIBS) +src/common/linux/http_upload.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/tools/linux/symupload/$(am__dirstamp): + @$(MKDIR_P) src/tools/linux/symupload + @: > src/tools/linux/symupload/$(am__dirstamp) +src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/tools/linux/symupload/$(DEPDIR) + @: > src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) +src/tools/linux/symupload/minidump_upload.$(OBJEXT): \ + src/tools/linux/symupload/$(am__dirstamp) \ + src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) + +src/tools/linux/symupload/minidump_upload$(EXEEXT): $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_DEPENDENCIES) $(EXTRA_src_tools_linux_symupload_minidump_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp) + @rm -f src/tools/linux/symupload/minidump_upload$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_LDADD) $(LIBS) +src/common/linux/symbol_upload.$(OBJEXT): \ + src/common/linux/$(am__dirstamp) \ + src/common/linux/$(DEPDIR)/$(am__dirstamp) +src/tools/linux/symupload/sym_upload.$(OBJEXT): \ + src/tools/linux/symupload/$(am__dirstamp) \ + src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) + +src/tools/linux/symupload/sym_upload$(EXEEXT): $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_DEPENDENCIES) $(EXTRA_src_tools_linux_symupload_sym_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp) + @rm -f src/tools/linux/symupload/sym_upload$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_LDADD) $(LIBS) +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_tools_mac_dump_syms_dump_syms_mac-language.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_tools_mac_dump_syms_dump_syms_mac-module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.$(OBJEXT): \ + src/common/$(am__dirstamp) \ + src/common/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.$(OBJEXT): \ + src/common/dwarf/$(am__dirstamp) \ + src/common/dwarf/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.$(OBJEXT): \ + src/common/mac/$(am__dirstamp) \ + src/common/mac/$(DEPDIR)/$(am__dirstamp) +src/tools/mac/dump_syms/$(am__dirstamp): + @$(MKDIR_P) src/tools/mac/dump_syms + @: > src/tools/mac/dump_syms/$(am__dirstamp) +src/tools/mac/dump_syms/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/tools/mac/dump_syms/$(DEPDIR) + @: > src/tools/mac/dump_syms/$(DEPDIR)/$(am__dirstamp) +src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.$(OBJEXT): \ + src/tools/mac/dump_syms/$(am__dirstamp) \ + src/tools/mac/dump_syms/$(DEPDIR)/$(am__dirstamp) + +src/tools/mac/dump_syms/dump_syms_mac$(EXEEXT): $(src_tools_mac_dump_syms_dump_syms_mac_OBJECTS) $(src_tools_mac_dump_syms_dump_syms_mac_DEPENDENCIES) $(EXTRA_src_tools_mac_dump_syms_dump_syms_mac_DEPENDENCIES) src/tools/mac/dump_syms/$(am__dirstamp) + @rm -f src/tools/mac/dump_syms/dump_syms_mac$(EXEEXT) + $(AM_V_CXXLD)$(src_tools_mac_dump_syms_dump_syms_mac_LINK) $(src_tools_mac_dump_syms_dump_syms_mac_OBJECTS) $(src_tools_mac_dump_syms_dump_syms_mac_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) - -rm -f src/processor/address_map_unittest.$(OBJEXT) - -rm -f src/processor/basic_code_modules.$(OBJEXT) - -rm -f src/processor/basic_code_modules.lo - -rm -f src/processor/basic_source_line_resolver.$(OBJEXT) - -rm -f src/processor/basic_source_line_resolver.lo - -rm -f src/processor/basic_source_line_resolver_unittest.$(OBJEXT) - -rm -f src/processor/call_stack.$(OBJEXT) - -rm -f src/processor/call_stack.lo - -rm -f src/processor/contained_range_map_unittest.$(OBJEXT) - -rm -f src/processor/logging.$(OBJEXT) - -rm -f src/processor/logging.lo - -rm -f src/processor/minidump.$(OBJEXT) - -rm -f src/processor/minidump.lo - -rm -f src/processor/minidump_dump.$(OBJEXT) - -rm -f src/processor/minidump_processor.$(OBJEXT) - -rm -f src/processor/minidump_processor.lo - -rm -f src/processor/minidump_stackwalk.$(OBJEXT) - -rm -f src/processor/pathname_stripper.$(OBJEXT) - -rm -f src/processor/pathname_stripper.lo - -rm -f src/processor/pathname_stripper_unittest.$(OBJEXT) - -rm -f src/processor/postfix_evaluator_unittest.$(OBJEXT) - -rm -f src/processor/process_state.$(OBJEXT) - -rm -f src/processor/process_state.lo - -rm -f src/processor/range_map_unittest.$(OBJEXT) - -rm -f src/processor/simple_symbol_supplier.$(OBJEXT) - -rm -f src/processor/simple_symbol_supplier.lo - -rm -f src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT) - -rm -f src/processor/stackwalker.$(OBJEXT) - -rm -f src/processor/stackwalker.lo - -rm -f src/processor/stackwalker_amd64.$(OBJEXT) - -rm -f src/processor/stackwalker_amd64.lo - -rm -f src/processor/stackwalker_ppc.$(OBJEXT) - -rm -f src/processor/stackwalker_ppc.lo - -rm -f src/processor/stackwalker_selftest.$(OBJEXT) - -rm -f src/processor/stackwalker_sparc.$(OBJEXT) - -rm -f src/processor/stackwalker_sparc.lo - -rm -f src/processor/stackwalker_x86.$(OBJEXT) - -rm -f src/processor/stackwalker_x86.lo - -rm -f src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJEXT) - -rm -f src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT) + -rm -f src/client/*.$(OBJEXT) + -rm -f src/client/linux/crash_generation/*.$(OBJEXT) + -rm -f src/client/linux/dump_writer_common/*.$(OBJEXT) + -rm -f src/client/linux/handler/*.$(OBJEXT) + -rm -f src/client/linux/log/*.$(OBJEXT) + -rm -f src/client/linux/microdump_writer/*.$(OBJEXT) + -rm -f src/client/linux/minidump_writer/*.$(OBJEXT) + -rm -f src/common/*.$(OBJEXT) + -rm -f src/common/android/*.$(OBJEXT) + -rm -f src/common/dwarf/*.$(OBJEXT) + -rm -f src/common/linux/*.$(OBJEXT) + -rm -f src/common/linux/tests/*.$(OBJEXT) + -rm -f src/common/mac/*.$(OBJEXT) + -rm -f src/common/tests/*.$(OBJEXT) + -rm -f src/processor/*.$(OBJEXT) + -rm -f src/testing/gtest/src/*.$(OBJEXT) + -rm -f src/testing/src/*.$(OBJEXT) + -rm -f src/third_party/libdisasm/*.$(OBJEXT) + -rm -f src/tools/linux/core2md/*.$(OBJEXT) + -rm -f src/tools/linux/dump_syms/*.$(OBJEXT) + -rm -f src/tools/linux/md2core/*.$(OBJEXT) + -rm -f src/tools/linux/symupload/*.$(OBJEXT) + -rm -f src/tools/mac/dump_syms/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@src/client/$(DEPDIR)/minidump_file_writer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/crash_generation/$(DEPDIR)/crash_generation_client.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/crash_generation/$(DEPDIR)/crash_generation_server.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/dump_writer_common/$(DEPDIR)/thread_info.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/dump_writer_common/$(DEPDIR)/ucontext_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/exception_handler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/minidump_descriptor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/log/$(DEPDIR)/log.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/microdump_writer/$(DEPDIR)/microdump_writer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_core_dumper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_dumper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_ptrace_dumper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/minidump_writer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/convert_UTF.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_cfi_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_cu_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_line_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/language.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/md5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/stabs_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/stabs_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/string_conversion.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/breakpad_getcontext.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/bytereader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/dwarf2diehandler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/dwarf2reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/elf_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/crc32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/dump_symbols.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elf_core_dump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elf_symbols_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elfutils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/file_id.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/guid_creator.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/http_upload.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/linux_libc_support.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/memory_mapped_file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/safe_readlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/symbol_upload.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/address_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_code_modules.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_source_line_resolver.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_source_line_resolver_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/call_stack.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_code_modules.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_source_line_resolver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/call_stack.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/cfi_frame_info.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/contained_range_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/logging.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/disassembler_x86.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/dump_context.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/dump_object.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability_linux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/fast_source_line_resolver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/logging.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump_processor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump_stackwalk.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_dump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_processor.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_processor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_stackwalk.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/pathname_stripper.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/module_comparer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/module_serializer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/pathname_stripper.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/pathname_stripper_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/postfix_evaluator_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/process_state.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/proc_maps_linux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/process_state.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/range_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/simple_symbol_supplier.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/simple_symbol_supplier.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/source_line_resolver_base.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_amd64.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_ppc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stack_frame_cpu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stack_frame_symbolizer.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_address_list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_amd64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_arm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_arm64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_mips.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_ppc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_ppc64.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_selftest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_sparc.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_x86.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_sparc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_x86.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/symbolic_constants_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/tokenize.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_implicit.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_insn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_invariant.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_modrm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_opcode_tables.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_operand.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_reg.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_settings.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_disasm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_format.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_imm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_insn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_misc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_operand_list.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/core2md/$(DEPDIR)/core2md.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/dump_syms/$(DEPDIR)/dump_syms.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/md2core/$(DEPDIR)/minidump-2-core.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/symupload/$(DEPDIR)/minidump_upload.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/symupload/$(DEPDIR)/sym_upload.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Po@am__quote@ + +.S.o: +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< + +.S.obj: +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o: src/common/android/breakpad_getcontext.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o `test -f 'src/common/android/breakpad_getcontext.S' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext.S +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='src/common/android/breakpad_getcontext.S' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o `test -f 'src/common/android/breakpad_getcontext.S' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext.S + +src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj: src/common/android/breakpad_getcontext.S +@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj `if test -f 'src/common/android/breakpad_getcontext.S'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext.S'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext.S'; fi` +@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='src/common/android/breakpad_getcontext.S' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj `if test -f 'src/common/android/breakpad_getcontext.S'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext.S'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext.S'; fi` + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cc.o: -@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cc.obj: -@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -.cc.lo: -@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o: src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Tpo -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc + +src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj: src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Tpo -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` + +src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o: src/testing/gtest/src/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Tpo -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc + +src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj: src/testing/gtest/src/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Tpo -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi` + +src/testing/src/src_testing_libtesting_a-gmock-all.o: src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_testing_libtesting_a-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Tpo -c -o src/testing/src/src_testing_libtesting_a-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_testing_libtesting_a-gmock-all.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_testing_libtesting_a-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc + +src/testing/src/src_testing_libtesting_a-gmock-all.obj: src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_testing_libtesting_a-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Tpo -c -o src/testing/src/src_testing_libtesting_a-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_testing_libtesting_a-gmock-all.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_testing_libtesting_a-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` + +src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o: src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc + +src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj: src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` + +src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o: src/testing/gtest/src/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc + +src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj: src/testing/gtest/src/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi` + +src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o: src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc + +src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj: src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` + +src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o: src/client/linux/handler/exception_handler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o -MD -MP -MF src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o `test -f 'src/client/linux/handler/exception_handler_unittest.cc' || echo '$(srcdir)/'`src/client/linux/handler/exception_handler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/handler/exception_handler_unittest.cc' object='src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o `test -f 'src/client/linux/handler/exception_handler_unittest.cc' || echo '$(srcdir)/'`src/client/linux/handler/exception_handler_unittest.cc + +src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj: src/client/linux/handler/exception_handler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj -MD -MP -MF src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj `if test -f 'src/client/linux/handler/exception_handler_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/handler/exception_handler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/handler/exception_handler_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/handler/exception_handler_unittest.cc' object='src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj `if test -f 'src/client/linux/handler/exception_handler_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/handler/exception_handler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/handler/exception_handler_unittest.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o: src/client/linux/minidump_writer/directory_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o `test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/directory_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/directory_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o `test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/directory_reader_unittest.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj: src/client/linux/minidump_writer/directory_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/directory_reader_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/directory_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/directory_reader_unittest.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o: src/client/linux/minidump_writer/cpu_set_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o `test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/cpu_set_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/cpu_set_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o `test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/cpu_set_unittest.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj: src/client/linux/minidump_writer/cpu_set_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj `if test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/cpu_set_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/cpu_set_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj `if test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/cpu_set_unittest.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o: src/client/linux/minidump_writer/line_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o `test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/line_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/line_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o `test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/line_reader_unittest.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj: src/client/linux/minidump_writer/line_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/line_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/line_reader_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/line_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/line_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/line_reader_unittest.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o: src/client/linux/minidump_writer/linux_core_dumper.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj: src/client/linux/minidump_writer/linux_core_dumper.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o: src/client/linux/minidump_writer/linux_core_dumper_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper_unittest.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj: src/client/linux/minidump_writer/linux_core_dumper_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o: src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj: src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o: src/client/linux/minidump_writer/minidump_writer_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj: src/client/linux/minidump_writer/minidump_writer_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o: src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj: src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o: src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o `test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o `test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc + +src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj: src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; fi` + +src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o: src/common/linux/elf_core_dump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc + +src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj: src/common/linux/elf_core_dump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi` + +src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o: src/common/linux/linux_libc_support_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o `test -f 'src/common/linux/linux_libc_support_unittest.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/linux_libc_support_unittest.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o `test -f 'src/common/linux/linux_libc_support_unittest.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support_unittest.cc + +src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj: src/common/linux/linux_libc_support_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj `if test -f 'src/common/linux/linux_libc_support_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/linux_libc_support_unittest.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj `if test -f 'src/common/linux/linux_libc_support_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support_unittest.cc'; fi` + +src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o: src/common/linux/tests/crash_generator.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc + +src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj: src/common/linux/tests/crash_generator.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi` + +src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o: src/common/memory_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o `test -f 'src/common/memory_unittest.cc' || echo '$(srcdir)/'`src/common/memory_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/memory_unittest.cc' object='src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o `test -f 'src/common/memory_unittest.cc' || echo '$(srcdir)/'`src/common/memory_unittest.cc + +src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj: src/common/memory_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj `if test -f 'src/common/memory_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/memory_unittest.cc' object='src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj `if test -f 'src/common/memory_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_unittest.cc'; fi` + +src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o: src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o -MD -MP -MF src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc + +src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj: src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj -MD -MP -MF src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` + +src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o: src/processor/basic_code_modules.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o `test -f 'src/processor/basic_code_modules.cc' || echo '$(srcdir)/'`src/processor/basic_code_modules.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/basic_code_modules.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o `test -f 'src/processor/basic_code_modules.cc' || echo '$(srcdir)/'`src/processor/basic_code_modules.cc + +src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj: src/processor/basic_code_modules.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj `if test -f 'src/processor/basic_code_modules.cc'; then $(CYGPATH_W) 'src/processor/basic_code_modules.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_code_modules.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/basic_code_modules.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj `if test -f 'src/processor/basic_code_modules.cc'; then $(CYGPATH_W) 'src/processor/basic_code_modules.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_code_modules.cc'; fi` + +src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o: src/processor/dump_context.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o `test -f 'src/processor/dump_context.cc' || echo '$(srcdir)/'`src/processor/dump_context.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/dump_context.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o `test -f 'src/processor/dump_context.cc' || echo '$(srcdir)/'`src/processor/dump_context.cc + +src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj: src/processor/dump_context.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj `if test -f 'src/processor/dump_context.cc'; then $(CYGPATH_W) 'src/processor/dump_context.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_context.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/dump_context.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj `if test -f 'src/processor/dump_context.cc'; then $(CYGPATH_W) 'src/processor/dump_context.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_context.cc'; fi` + +src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o: src/processor/dump_object.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o `test -f 'src/processor/dump_object.cc' || echo '$(srcdir)/'`src/processor/dump_object.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/dump_object.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o `test -f 'src/processor/dump_object.cc' || echo '$(srcdir)/'`src/processor/dump_object.cc + +src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj: src/processor/dump_object.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj `if test -f 'src/processor/dump_object.cc'; then $(CYGPATH_W) 'src/processor/dump_object.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_object.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/dump_object.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj `if test -f 'src/processor/dump_object.cc'; then $(CYGPATH_W) 'src/processor/dump_object.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_object.cc'; fi` + +src/processor/src_client_linux_linux_client_unittest_shlib-logging.o: src/processor/logging.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-logging.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.o `test -f 'src/processor/logging.cc' || echo '$(srcdir)/'`src/processor/logging.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/logging.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-logging.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.o `test -f 'src/processor/logging.cc' || echo '$(srcdir)/'`src/processor/logging.cc + +src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj: src/processor/logging.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj `if test -f 'src/processor/logging.cc'; then $(CYGPATH_W) 'src/processor/logging.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/logging.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/logging.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj `if test -f 'src/processor/logging.cc'; then $(CYGPATH_W) 'src/processor/logging.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/logging.cc'; fi` + +src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o: src/processor/minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o `test -f 'src/processor/minidump.cc' || echo '$(srcdir)/'`src/processor/minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o `test -f 'src/processor/minidump.cc' || echo '$(srcdir)/'`src/processor/minidump.cc + +src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj: src/processor/minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj `if test -f 'src/processor/minidump.cc'; then $(CYGPATH_W) 'src/processor/minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj `if test -f 'src/processor/minidump.cc'; then $(CYGPATH_W) 'src/processor/minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump.cc'; fi` + +src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o: src/processor/pathname_stripper.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o `test -f 'src/processor/pathname_stripper.cc' || echo '$(srcdir)/'`src/processor/pathname_stripper.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/pathname_stripper.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o `test -f 'src/processor/pathname_stripper.cc' || echo '$(srcdir)/'`src/processor/pathname_stripper.cc + +src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj: src/processor/pathname_stripper.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj `if test -f 'src/processor/pathname_stripper.cc'; then $(CYGPATH_W) 'src/processor/pathname_stripper.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/pathname_stripper.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/pathname_stripper.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj `if test -f 'src/processor/pathname_stripper.cc'; then $(CYGPATH_W) 'src/processor/pathname_stripper.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/pathname_stripper.cc'; fi` + +src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o: src/processor/proc_maps_linux.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o `test -f 'src/processor/proc_maps_linux.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o `test -f 'src/processor/proc_maps_linux.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux.cc + +src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj: src/processor/proc_maps_linux.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj `if test -f 'src/processor/proc_maps_linux.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj `if test -f 'src/processor/proc_maps_linux.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux.cc'; fi` + +src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o: src/client/linux/microdump_writer/microdump_writer_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o -MD -MP -MF src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o `test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/microdump_writer/microdump_writer_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/microdump_writer/microdump_writer_unittest.cc' object='src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o `test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/microdump_writer/microdump_writer_unittest.cc + +src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj: src/client/linux/microdump_writer/microdump_writer_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj -MD -MP -MF src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj `if test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/microdump_writer/microdump_writer_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/microdump_writer/microdump_writer_unittest.cc' object='src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj `if test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/microdump_writer/microdump_writer_unittest.cc'; fi` + +src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o: src/common/android/breakpad_getcontext_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o `test -f 'src/common/android/breakpad_getcontext_unittest.cc' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/android/breakpad_getcontext_unittest.cc' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o `test -f 'src/common/android/breakpad_getcontext_unittest.cc' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext_unittest.cc + +src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj: src/common/android/breakpad_getcontext_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj `if test -f 'src/common/android/breakpad_getcontext_unittest.cc'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/android/breakpad_getcontext_unittest.cc' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj `if test -f 'src/common/android/breakpad_getcontext_unittest.cc'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext_unittest.cc'; fi` + +src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o: src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o `test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o `test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc + +src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj: src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj `if test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj `if test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; fi` + +src/common/src_common_dumper_unittest-byte_cursor_unittest.o: src/common/byte_cursor_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-byte_cursor_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.o `test -f 'src/common/byte_cursor_unittest.cc' || echo '$(srcdir)/'`src/common/byte_cursor_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/byte_cursor_unittest.cc' object='src/common/src_common_dumper_unittest-byte_cursor_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.o `test -f 'src/common/byte_cursor_unittest.cc' || echo '$(srcdir)/'`src/common/byte_cursor_unittest.cc + +src/common/src_common_dumper_unittest-byte_cursor_unittest.obj: src/common/byte_cursor_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-byte_cursor_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.obj `if test -f 'src/common/byte_cursor_unittest.cc'; then $(CYGPATH_W) 'src/common/byte_cursor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/byte_cursor_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/byte_cursor_unittest.cc' object='src/common/src_common_dumper_unittest-byte_cursor_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.obj `if test -f 'src/common/byte_cursor_unittest.cc'; then $(CYGPATH_W) 'src/common/byte_cursor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/byte_cursor_unittest.cc'; fi` + +src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o: src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc + +src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj: src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` + +src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o: src/common/dwarf_cfi_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o `test -f 'src/common/dwarf_cfi_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o `test -f 'src/common/dwarf_cfi_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module_unittest.cc + +src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj: src/common/dwarf_cfi_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj `if test -f 'src/common/dwarf_cfi_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj `if test -f 'src/common/dwarf_cfi_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module_unittest.cc'; fi` + +src/common/src_common_dumper_unittest-dwarf_cu_to_module.o: src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc + +src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj: src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` + +src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o: src/common/dwarf_cu_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o `test -f 'src/common/dwarf_cu_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o `test -f 'src/common/dwarf_cu_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module_unittest.cc + +src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj: src/common/dwarf_cu_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj `if test -f 'src/common/dwarf_cu_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj `if test -f 'src/common/dwarf_cu_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module_unittest.cc'; fi` + +src/common/src_common_dumper_unittest-dwarf_line_to_module.o: src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc + +src/common/src_common_dumper_unittest-dwarf_line_to_module.obj: src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` + +src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o: src/common/dwarf_line_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o `test -f 'src/common/dwarf_line_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o `test -f 'src/common/dwarf_line_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module_unittest.cc + +src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj: src/common/dwarf_line_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj `if test -f 'src/common/dwarf_line_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj `if test -f 'src/common/dwarf_line_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module_unittest.cc'; fi` + +src/common/src_common_dumper_unittest-language.o: src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-language.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo -c -o src/common/src_common_dumper_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_dumper_unittest-language.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc + +src/common/src_common_dumper_unittest-language.obj: src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-language.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo -c -o src/common/src_common_dumper_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_dumper_unittest-language.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` + +src/common/src_common_dumper_unittest-memory_range_unittest.o: src/common/memory_range_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-memory_range_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo -c -o src/common/src_common_dumper_unittest-memory_range_unittest.o `test -f 'src/common/memory_range_unittest.cc' || echo '$(srcdir)/'`src/common/memory_range_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/memory_range_unittest.cc' object='src/common/src_common_dumper_unittest-memory_range_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-memory_range_unittest.o `test -f 'src/common/memory_range_unittest.cc' || echo '$(srcdir)/'`src/common/memory_range_unittest.cc + +src/common/src_common_dumper_unittest-memory_range_unittest.obj: src/common/memory_range_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-memory_range_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo -c -o src/common/src_common_dumper_unittest-memory_range_unittest.obj `if test -f 'src/common/memory_range_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_range_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/memory_range_unittest.cc' object='src/common/src_common_dumper_unittest-memory_range_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-memory_range_unittest.obj `if test -f 'src/common/memory_range_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_range_unittest.cc'; fi` + +src/common/src_common_dumper_unittest-module.o: src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo -c -o src/common/src_common_dumper_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_dumper_unittest-module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc + +src/common/src_common_dumper_unittest-module.obj: src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo -c -o src/common/src_common_dumper_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_dumper_unittest-module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` + +src/common/src_common_dumper_unittest-module_unittest.o: src/common/module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-module_unittest.o `test -f 'src/common/module_unittest.cc' || echo '$(srcdir)/'`src/common/module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module_unittest.cc' object='src/common/src_common_dumper_unittest-module_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module_unittest.o `test -f 'src/common/module_unittest.cc' || echo '$(srcdir)/'`src/common/module_unittest.cc + +src/common/src_common_dumper_unittest-module_unittest.obj: src/common/module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-module_unittest.obj `if test -f 'src/common/module_unittest.cc'; then $(CYGPATH_W) 'src/common/module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module_unittest.cc' object='src/common/src_common_dumper_unittest-module_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module_unittest.obj `if test -f 'src/common/module_unittest.cc'; then $(CYGPATH_W) 'src/common/module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module_unittest.cc'; fi` + +src/common/src_common_dumper_unittest-stabs_reader.o: src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_dumper_unittest-stabs_reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc + +src/common/src_common_dumper_unittest-stabs_reader.obj: src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_dumper_unittest-stabs_reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` + +src/common/src_common_dumper_unittest-stabs_reader_unittest.o: src/common/stabs_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.o `test -f 'src/common/stabs_reader_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.o `test -f 'src/common/stabs_reader_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_reader_unittest.cc + +src/common/src_common_dumper_unittest-stabs_reader_unittest.obj: src/common/stabs_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.obj `if test -f 'src/common/stabs_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.obj `if test -f 'src/common/stabs_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader_unittest.cc'; fi` + +src/common/src_common_dumper_unittest-stabs_to_module.o: src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_dumper_unittest-stabs_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc + +src/common/src_common_dumper_unittest-stabs_to_module.obj: src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_dumper_unittest-stabs_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` + +src/common/src_common_dumper_unittest-stabs_to_module_unittest.o: src/common/stabs_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.o `test -f 'src/common/stabs_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.o `test -f 'src/common/stabs_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_to_module_unittest.cc + +src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj: src/common/stabs_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj `if test -f 'src/common/stabs_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj `if test -f 'src/common/stabs_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module_unittest.cc'; fi` + +src/common/src_common_dumper_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo -c -o src/common/src_common_dumper_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_dumper_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_common_dumper_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo -c -o src/common/src_common_dumper_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_dumper_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-bytereader.o: src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc + +src/common/dwarf/src_common_dumper_unittest-bytereader.obj: src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o: src/common/dwarf/bytereader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o `test -f 'src/common/dwarf/bytereader_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o `test -f 'src/common/dwarf/bytereader_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader_unittest.cc + +src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj: src/common/dwarf/bytereader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj `if test -f 'src/common/dwarf/bytereader_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj `if test -f 'src/common/dwarf/bytereader_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader_unittest.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o: src/common/dwarf/cfi_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc + +src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj: src/common/dwarf/cfi_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o: src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc + +src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj: src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o: src/common/dwarf/dwarf2diehandler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o `test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o `test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler_unittest.cc + +src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj: src/common/dwarf/dwarf2diehandler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj `if test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj `if test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler_unittest.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o: src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc + +src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj: src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-elf_reader.o: src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-elf_reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_common_dumper_unittest-elf_reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc + +src/common/dwarf/src_common_dumper_unittest-elf_reader.obj: src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-elf_reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_common_dumper_unittest-elf_reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o: src/common/dwarf/dwarf2reader_cfi_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o `test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_cfi_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader_cfi_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o `test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_cfi_unittest.cc + +src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj: src/common/dwarf/dwarf2reader_cfi_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_cfi_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader_cfi_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_cfi_unittest.cc'; fi` + +src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o: src/common/dwarf/dwarf2reader_die_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o `test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_die_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader_die_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o `test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_die_unittest.cc + +src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj: src/common/dwarf/dwarf2reader_die_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_die_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_die_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader_die_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_die_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_die_unittest.cc'; fi` + +src/common/linux/src_common_dumper_unittest-crc32.o: src/common/linux/crc32.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-crc32.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo -c -o src/common/linux/src_common_dumper_unittest-crc32.o `test -f 'src/common/linux/crc32.cc' || echo '$(srcdir)/'`src/common/linux/crc32.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/crc32.cc' object='src/common/linux/src_common_dumper_unittest-crc32.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-crc32.o `test -f 'src/common/linux/crc32.cc' || echo '$(srcdir)/'`src/common/linux/crc32.cc + +src/common/linux/src_common_dumper_unittest-crc32.obj: src/common/linux/crc32.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-crc32.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo -c -o src/common/linux/src_common_dumper_unittest-crc32.obj `if test -f 'src/common/linux/crc32.cc'; then $(CYGPATH_W) 'src/common/linux/crc32.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/crc32.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/crc32.cc' object='src/common/linux/src_common_dumper_unittest-crc32.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-crc32.obj `if test -f 'src/common/linux/crc32.cc'; then $(CYGPATH_W) 'src/common/linux/crc32.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/crc32.cc'; fi` + +src/common/linux/src_common_dumper_unittest-dump_symbols.o: src/common/linux/dump_symbols.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.o `test -f 'src/common/linux/dump_symbols.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/dump_symbols.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.o `test -f 'src/common/linux/dump_symbols.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols.cc + +src/common/linux/src_common_dumper_unittest-dump_symbols.obj: src/common/linux/dump_symbols.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.obj `if test -f 'src/common/linux/dump_symbols.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/dump_symbols.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.obj `if test -f 'src/common/linux/dump_symbols.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols.cc'; fi` + +src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o: src/common/linux/dump_symbols_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o `test -f 'src/common/linux/dump_symbols_unittest.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/dump_symbols_unittest.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o `test -f 'src/common/linux/dump_symbols_unittest.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols_unittest.cc + +src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj: src/common/linux/dump_symbols_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj `if test -f 'src/common/linux/dump_symbols_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/dump_symbols_unittest.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj `if test -f 'src/common/linux/dump_symbols_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols_unittest.cc'; fi` + +src/common/linux/src_common_dumper_unittest-elf_core_dump.o: src/common/linux/elf_core_dump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc + +src/common/linux/src_common_dumper_unittest-elf_core_dump.obj: src/common/linux/elf_core_dump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi` + +src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o: src/common/linux/elf_core_dump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o `test -f 'src/common/linux/elf_core_dump_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o `test -f 'src/common/linux/elf_core_dump_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump_unittest.cc + +src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj: src/common/linux/elf_core_dump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj `if test -f 'src/common/linux/elf_core_dump_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj `if test -f 'src/common/linux/elf_core_dump_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump_unittest.cc'; fi` + +src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o: src/common/linux/elf_symbols_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o `test -f 'src/common/linux/elf_symbols_to_module.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_symbols_to_module.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o `test -f 'src/common/linux/elf_symbols_to_module.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module.cc + +src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj: src/common/linux/elf_symbols_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj `if test -f 'src/common/linux/elf_symbols_to_module.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_symbols_to_module.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj `if test -f 'src/common/linux/elf_symbols_to_module.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module.cc'; fi` + +src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o: src/common/linux/elf_symbols_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o `test -f 'src/common/linux/elf_symbols_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_symbols_to_module_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o `test -f 'src/common/linux/elf_symbols_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module_unittest.cc + +src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj: src/common/linux/elf_symbols_to_module_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj `if test -f 'src/common/linux/elf_symbols_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_symbols_to_module_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj `if test -f 'src/common/linux/elf_symbols_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module_unittest.cc'; fi` + +src/common/linux/src_common_dumper_unittest-elfutils.o: src/common/linux/elfutils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elfutils.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo -c -o src/common/linux/src_common_dumper_unittest-elfutils.o `test -f 'src/common/linux/elfutils.cc' || echo '$(srcdir)/'`src/common/linux/elfutils.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elfutils.cc' object='src/common/linux/src_common_dumper_unittest-elfutils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elfutils.o `test -f 'src/common/linux/elfutils.cc' || echo '$(srcdir)/'`src/common/linux/elfutils.cc + +src/common/linux/src_common_dumper_unittest-elfutils.obj: src/common/linux/elfutils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elfutils.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo -c -o src/common/linux/src_common_dumper_unittest-elfutils.obj `if test -f 'src/common/linux/elfutils.cc'; then $(CYGPATH_W) 'src/common/linux/elfutils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elfutils.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elfutils.cc' object='src/common/linux/src_common_dumper_unittest-elfutils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elfutils.obj `if test -f 'src/common/linux/elfutils.cc'; then $(CYGPATH_W) 'src/common/linux/elfutils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elfutils.cc'; fi` + +src/common/linux/src_common_dumper_unittest-file_id.o: src/common/linux/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id.o `test -f 'src/common/linux/file_id.cc' || echo '$(srcdir)/'`src/common/linux/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/file_id.cc' object='src/common/linux/src_common_dumper_unittest-file_id.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id.o `test -f 'src/common/linux/file_id.cc' || echo '$(srcdir)/'`src/common/linux/file_id.cc + +src/common/linux/src_common_dumper_unittest-file_id.obj: src/common/linux/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id.obj `if test -f 'src/common/linux/file_id.cc'; then $(CYGPATH_W) 'src/common/linux/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/file_id.cc' object='src/common/linux/src_common_dumper_unittest-file_id.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id.obj `if test -f 'src/common/linux/file_id.cc'; then $(CYGPATH_W) 'src/common/linux/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id.cc'; fi` + +src/common/linux/src_common_dumper_unittest-file_id_unittest.o: src/common/linux/file_id_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.o `test -f 'src/common/linux/file_id_unittest.cc' || echo '$(srcdir)/'`src/common/linux/file_id_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/file_id_unittest.cc' object='src/common/linux/src_common_dumper_unittest-file_id_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.o `test -f 'src/common/linux/file_id_unittest.cc' || echo '$(srcdir)/'`src/common/linux/file_id_unittest.cc + +src/common/linux/src_common_dumper_unittest-file_id_unittest.obj: src/common/linux/file_id_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.obj `if test -f 'src/common/linux/file_id_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/file_id_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/file_id_unittest.cc' object='src/common/linux/src_common_dumper_unittest-file_id_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.obj `if test -f 'src/common/linux/file_id_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/file_id_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id_unittest.cc'; fi` + +src/common/linux/src_common_dumper_unittest-linux_libc_support.o: src/common/linux/linux_libc_support.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-linux_libc_support.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.o `test -f 'src/common/linux/linux_libc_support.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/linux_libc_support.cc' object='src/common/linux/src_common_dumper_unittest-linux_libc_support.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.o `test -f 'src/common/linux/linux_libc_support.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support.cc + +src/common/linux/src_common_dumper_unittest-linux_libc_support.obj: src/common/linux/linux_libc_support.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-linux_libc_support.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.obj `if test -f 'src/common/linux/linux_libc_support.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/linux_libc_support.cc' object='src/common/linux/src_common_dumper_unittest-linux_libc_support.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.obj `if test -f 'src/common/linux/linux_libc_support.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support.cc'; fi` + +src/common/linux/src_common_dumper_unittest-memory_mapped_file.o: src/common/linux/memory_mapped_file.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.o `test -f 'src/common/linux/memory_mapped_file.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/memory_mapped_file.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.o `test -f 'src/common/linux/memory_mapped_file.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file.cc + +src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj: src/common/linux/memory_mapped_file.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj `if test -f 'src/common/linux/memory_mapped_file.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/memory_mapped_file.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj `if test -f 'src/common/linux/memory_mapped_file.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file.cc'; fi` + +src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o: src/common/linux/memory_mapped_file_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o `test -f 'src/common/linux/memory_mapped_file_unittest.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/memory_mapped_file_unittest.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o `test -f 'src/common/linux/memory_mapped_file_unittest.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file_unittest.cc + +src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj: src/common/linux/memory_mapped_file_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj `if test -f 'src/common/linux/memory_mapped_file_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/memory_mapped_file_unittest.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj `if test -f 'src/common/linux/memory_mapped_file_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file_unittest.cc'; fi` + +src/common/linux/src_common_dumper_unittest-safe_readlink.o: src/common/linux/safe_readlink.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.o `test -f 'src/common/linux/safe_readlink.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/safe_readlink.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.o `test -f 'src/common/linux/safe_readlink.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink.cc + +src/common/linux/src_common_dumper_unittest-safe_readlink.obj: src/common/linux/safe_readlink.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.obj `if test -f 'src/common/linux/safe_readlink.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/safe_readlink.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.obj `if test -f 'src/common/linux/safe_readlink.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink.cc'; fi` + +src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o: src/common/linux/safe_readlink_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o `test -f 'src/common/linux/safe_readlink_unittest.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/safe_readlink_unittest.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o `test -f 'src/common/linux/safe_readlink_unittest.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink_unittest.cc + +src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj: src/common/linux/safe_readlink_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj `if test -f 'src/common/linux/safe_readlink_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/safe_readlink_unittest.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj `if test -f 'src/common/linux/safe_readlink_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink_unittest.cc'; fi` + +src/common/linux/src_common_dumper_unittest-synth_elf.o: src/common/linux/synth_elf.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf.o `test -f 'src/common/linux/synth_elf.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/synth_elf.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf.o `test -f 'src/common/linux/synth_elf.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf.cc + +src/common/linux/src_common_dumper_unittest-synth_elf.obj: src/common/linux/synth_elf.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf.obj `if test -f 'src/common/linux/synth_elf.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/synth_elf.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf.obj `if test -f 'src/common/linux/synth_elf.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf.cc'; fi` + +src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o: src/common/linux/synth_elf_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o `test -f 'src/common/linux/synth_elf_unittest.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/synth_elf_unittest.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o `test -f 'src/common/linux/synth_elf_unittest.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf_unittest.cc + +src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj: src/common/linux/synth_elf_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj `if test -f 'src/common/linux/synth_elf_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/synth_elf_unittest.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj `if test -f 'src/common/linux/synth_elf_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf_unittest.cc'; fi` + +src/common/linux/tests/src_common_dumper_unittest-crash_generator.o: src/common/linux/tests/crash_generator.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_common_dumper_unittest-crash_generator.o -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_common_dumper_unittest-crash_generator.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc + +src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj: src/common/linux/tests/crash_generator.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi` + +src/common/tests/src_common_dumper_unittest-file_utils.o: src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_dumper_unittest-file_utils.o -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo -c -o src/common/tests/src_common_dumper_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_dumper_unittest-file_utils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_dumper_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc + +src/common/tests/src_common_dumper_unittest-file_utils.obj: src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_dumper_unittest-file_utils.obj -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo -c -o src/common/tests/src_common_dumper_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_dumper_unittest-file_utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_dumper_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o: src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc + +src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj: src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o: src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc + +src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj: src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o: src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc + +src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj: src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-language.o: src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-language.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_mac_macho_reader_unittest-language.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc + +src/common/src_common_mac_macho_reader_unittest-language.obj: src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-language.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_mac_macho_reader_unittest-language.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-md5.o: src/common/md5.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-md5.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-md5.o `test -f 'src/common/md5.cc' || echo '$(srcdir)/'`src/common/md5.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/md5.cc' object='src/common/src_common_mac_macho_reader_unittest-md5.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-md5.o `test -f 'src/common/md5.cc' || echo '$(srcdir)/'`src/common/md5.cc + +src/common/src_common_mac_macho_reader_unittest-md5.obj: src/common/md5.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-md5.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-md5.obj `if test -f 'src/common/md5.cc'; then $(CYGPATH_W) 'src/common/md5.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/md5.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/md5.cc' object='src/common/src_common_mac_macho_reader_unittest-md5.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-md5.obj `if test -f 'src/common/md5.cc'; then $(CYGPATH_W) 'src/common/md5.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/md5.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-module.o: src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_mac_macho_reader_unittest-module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc + +src/common/src_common_mac_macho_reader_unittest-module.obj: src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_mac_macho_reader_unittest-module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-stabs_reader.o: src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-stabs_reader.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_mac_macho_reader_unittest-stabs_reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc + +src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj: src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o: src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc + +src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj: src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` + +src/common/src_common_mac_macho_reader_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_mac_macho_reader_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_common_mac_macho_reader_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_mac_macho_reader_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o: src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc + +src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj: src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` + +src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o: src/common/dwarf/cfi_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc + +src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj: src/common/dwarf/cfi_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi` + +src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o: src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc + +src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj: src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` + +src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o: src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc + +src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj: src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` + +src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o: src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc + +src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj: src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` + +src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o: src/common/mac/arch_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o `test -f 'src/common/mac/arch_utilities.cc' || echo '$(srcdir)/'`src/common/mac/arch_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/arch_utilities.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o `test -f 'src/common/mac/arch_utilities.cc' || echo '$(srcdir)/'`src/common/mac/arch_utilities.cc + +src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj: src/common/mac/arch_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj `if test -f 'src/common/mac/arch_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/arch_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/arch_utilities.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/arch_utilities.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj `if test -f 'src/common/mac/arch_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/arch_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/arch_utilities.cc'; fi` + +src/common/mac/src_common_mac_macho_reader_unittest-file_id.o: src/common/mac/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-file_id.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-file_id.o `test -f 'src/common/mac/file_id.cc' || echo '$(srcdir)/'`src/common/mac/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/file_id.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-file_id.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-file_id.o `test -f 'src/common/mac/file_id.cc' || echo '$(srcdir)/'`src/common/mac/file_id.cc + +src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj: src/common/mac/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj `if test -f 'src/common/mac/file_id.cc'; then $(CYGPATH_W) 'src/common/mac/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/file_id.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/file_id.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj `if test -f 'src/common/mac/file_id.cc'; then $(CYGPATH_W) 'src/common/mac/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/file_id.cc'; fi` + +src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o: src/common/mac/macho_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o `test -f 'src/common/mac/macho_id.cc' || echo '$(srcdir)/'`src/common/mac/macho_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_id.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o `test -f 'src/common/mac/macho_id.cc' || echo '$(srcdir)/'`src/common/mac/macho_id.cc + +src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj: src/common/mac/macho_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj `if test -f 'src/common/mac/macho_id.cc'; then $(CYGPATH_W) 'src/common/mac/macho_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_id.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_id.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj `if test -f 'src/common/mac/macho_id.cc'; then $(CYGPATH_W) 'src/common/mac/macho_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_id.cc'; fi` + +src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o: src/common/mac/macho_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o `test -f 'src/common/mac/macho_reader.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o `test -f 'src/common/mac/macho_reader.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader.cc + +src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj: src/common/mac/macho_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj `if test -f 'src/common/mac/macho_reader.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj `if test -f 'src/common/mac/macho_reader.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader.cc'; fi` + +src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o: src/common/mac/macho_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o `test -f 'src/common/mac/macho_reader_unittest.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader_unittest.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o `test -f 'src/common/mac/macho_reader_unittest.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader_unittest.cc + +src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj: src/common/mac/macho_reader_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj `if test -f 'src/common/mac/macho_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader_unittest.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj `if test -f 'src/common/mac/macho_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader_unittest.cc'; fi` + +src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o: src/common/mac/macho_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o `test -f 'src/common/mac/macho_utilities.cc' || echo '$(srcdir)/'`src/common/mac/macho_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_utilities.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o `test -f 'src/common/mac/macho_utilities.cc' || echo '$(srcdir)/'`src/common/mac/macho_utilities.cc + +src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj: src/common/mac/macho_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj `if test -f 'src/common/mac/macho_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/macho_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_utilities.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_utilities.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj `if test -f 'src/common/mac/macho_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/macho_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_utilities.cc'; fi` + +src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o: src/common/mac/macho_walker.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o `test -f 'src/common/mac/macho_walker.cc' || echo '$(srcdir)/'`src/common/mac/macho_walker.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_walker.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o `test -f 'src/common/mac/macho_walker.cc' || echo '$(srcdir)/'`src/common/mac/macho_walker.cc + +src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj: src/common/mac/macho_walker.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj `if test -f 'src/common/mac/macho_walker.cc'; then $(CYGPATH_W) 'src/common/mac/macho_walker.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_walker.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_walker.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj `if test -f 'src/common/mac/macho_walker.cc'; then $(CYGPATH_W) 'src/common/mac/macho_walker.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_walker.cc'; fi` + +src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o: src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Tpo -c -o src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc + +src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj: src/common/tests/file_utils.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Tpo -c -o src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` + +src/common/src_common_test_assembler_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_test_assembler_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_common_test_assembler_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_test_assembler_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/common/src_common_test_assembler_unittest-test_assembler_unittest.o: src/common/test_assembler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.o `test -f 'src/common/test_assembler_unittest.cc' || echo '$(srcdir)/'`src/common/test_assembler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler_unittest.cc' object='src/common/src_common_test_assembler_unittest-test_assembler_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.o `test -f 'src/common/test_assembler_unittest.cc' || echo '$(srcdir)/'`src/common/test_assembler_unittest.cc + +src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj: src/common/test_assembler_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj `if test -f 'src/common/test_assembler_unittest.cc'; then $(CYGPATH_W) 'src/common/test_assembler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler_unittest.cc' object='src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj `if test -f 'src/common/test_assembler_unittest.cc'; then $(CYGPATH_W) 'src/common/test_assembler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler_unittest.cc'; fi` + +src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o: src/processor/basic_source_line_resolver_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o `test -f 'src/processor/basic_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/basic_source_line_resolver_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/basic_source_line_resolver_unittest.cc' object='src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o `test -f 'src/processor/basic_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/basic_source_line_resolver_unittest.cc + +src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj: src/processor/basic_source_line_resolver_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj `if test -f 'src/processor/basic_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/basic_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_source_line_resolver_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/basic_source_line_resolver_unittest.cc' object='src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj `if test -f 'src/processor/basic_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/basic_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_source_line_resolver_unittest.cc'; fi` + +src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o: src/processor/cfi_frame_info_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o `test -f 'src/processor/cfi_frame_info_unittest.cc' || echo '$(srcdir)/'`src/processor/cfi_frame_info_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/cfi_frame_info_unittest.cc' object='src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o `test -f 'src/processor/cfi_frame_info_unittest.cc' || echo '$(srcdir)/'`src/processor/cfi_frame_info_unittest.cc + +src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj: src/processor/cfi_frame_info_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj `if test -f 'src/processor/cfi_frame_info_unittest.cc'; then $(CYGPATH_W) 'src/processor/cfi_frame_info_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/cfi_frame_info_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/cfi_frame_info_unittest.cc' object='src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj `if test -f 'src/processor/cfi_frame_info_unittest.cc'; then $(CYGPATH_W) 'src/processor/cfi_frame_info_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/cfi_frame_info_unittest.cc'; fi` + +src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o: src/processor/disassembler_x86_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o `test -f 'src/processor/disassembler_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/disassembler_x86_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/disassembler_x86_unittest.cc' object='src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o `test -f 'src/processor/disassembler_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/disassembler_x86_unittest.cc + +src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj: src/processor/disassembler_x86_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj `if test -f 'src/processor/disassembler_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/disassembler_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/disassembler_x86_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/disassembler_x86_unittest.cc' object='src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj `if test -f 'src/processor/disassembler_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/disassembler_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/disassembler_x86_unittest.cc'; fi` + +src/processor/src_processor_exploitability_unittest-exploitability_unittest.o: src/processor/exploitability_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_exploitability_unittest-exploitability_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.o `test -f 'src/processor/exploitability_unittest.cc' || echo '$(srcdir)/'`src/processor/exploitability_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/exploitability_unittest.cc' object='src/processor/src_processor_exploitability_unittest-exploitability_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.o `test -f 'src/processor/exploitability_unittest.cc' || echo '$(srcdir)/'`src/processor/exploitability_unittest.cc + +src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj: src/processor/exploitability_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj `if test -f 'src/processor/exploitability_unittest.cc'; then $(CYGPATH_W) 'src/processor/exploitability_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/exploitability_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/exploitability_unittest.cc' object='src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj `if test -f 'src/processor/exploitability_unittest.cc'; then $(CYGPATH_W) 'src/processor/exploitability_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/exploitability_unittest.cc'; fi` + +src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o: src/processor/fast_source_line_resolver_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o `test -f 'src/processor/fast_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/fast_source_line_resolver_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/fast_source_line_resolver_unittest.cc' object='src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o `test -f 'src/processor/fast_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/fast_source_line_resolver_unittest.cc + +src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj: src/processor/fast_source_line_resolver_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj `if test -f 'src/processor/fast_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/fast_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/fast_source_line_resolver_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/fast_source_line_resolver_unittest.cc' object='src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj `if test -f 'src/processor/fast_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/fast_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/fast_source_line_resolver_unittest.cc'; fi` + +src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o: src/processor/map_serializers_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o `test -f 'src/processor/map_serializers_unittest.cc' || echo '$(srcdir)/'`src/processor/map_serializers_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/map_serializers_unittest.cc' object='src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o `test -f 'src/processor/map_serializers_unittest.cc' || echo '$(srcdir)/'`src/processor/map_serializers_unittest.cc + +src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj: src/processor/map_serializers_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj `if test -f 'src/processor/map_serializers_unittest.cc'; then $(CYGPATH_W) 'src/processor/map_serializers_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/map_serializers_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/map_serializers_unittest.cc' object='src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj `if test -f 'src/processor/map_serializers_unittest.cc'; then $(CYGPATH_W) 'src/processor/map_serializers_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/map_serializers_unittest.cc'; fi` + +src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o: src/processor/microdump_processor_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o `test -f 'src/processor/microdump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/microdump_processor_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/microdump_processor_unittest.cc' object='src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o `test -f 'src/processor/microdump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/microdump_processor_unittest.cc + +src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj: src/processor/microdump_processor_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj `if test -f 'src/processor/microdump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/microdump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/microdump_processor_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/microdump_processor_unittest.cc' object='src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj `if test -f 'src/processor/microdump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/microdump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/microdump_processor_unittest.cc'; fi` src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o: src/processor/minidump_processor_unittest.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc -@am__fastdepCXX_TRUE@ mv -f src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj: src/processor/minidump_processor_unittest.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi` -src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ mv -f src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@ +src/common/src_processor_minidump_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_minidump_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_minidump_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ +src/common/src_processor_minidump_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_minidump_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_minidump_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o: src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ mv -f src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@ +src/processor/src_processor_minidump_unittest-minidump_unittest.o: src/processor/minidump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-minidump_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.o `test -f 'src/processor/minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump_unittest.cc' object='src/processor/src_processor_minidump_unittest-minidump_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.o `test -f 'src/processor/minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_unittest.cc -src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj: src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` -@am__fastdepCXX_TRUE@ mv -f src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@ +src/processor/src_processor_minidump_unittest-minidump_unittest.obj: src/processor/minidump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-minidump_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.obj `if test -f 'src/processor/minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump_unittest.cc' object='src/processor/src_processor_minidump_unittest-minidump_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.obj `if test -f 'src/processor/minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_unittest.cc'; fi` -mostlyclean-libtool: - -rm -f *.lo +src/processor/src_processor_minidump_unittest-synth_minidump.o: src/processor/synth_minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-synth_minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_minidump_unittest-synth_minidump.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc -clean-libtool: - -rm -rf .libs _libs - -rm -rf src/.libs src/_libs - -rm -rf src/processor/.libs src/processor/_libs +src/processor/src_processor_minidump_unittest-synth_minidump.obj: src/processor/synth_minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-synth_minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_minidump_unittest-synth_minidump.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi` -distclean-libtool: - -rm -f libtool +src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o: src/processor/proc_maps_linux.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Tpo -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o `test -f 'src/processor/proc_maps_linux.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Tpo src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux.cc' object='src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o `test -f 'src/processor/proc_maps_linux.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux.cc + +src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj: src/processor/proc_maps_linux.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Tpo -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj `if test -f 'src/processor/proc_maps_linux.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Tpo src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux.cc' object='src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj `if test -f 'src/processor/proc_maps_linux.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux.cc'; fi` + +src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o: src/processor/proc_maps_linux_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Tpo -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o `test -f 'src/processor/proc_maps_linux_unittest.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Tpo src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux_unittest.cc' object='src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o `test -f 'src/processor/proc_maps_linux_unittest.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux_unittest.cc + +src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj: src/processor/proc_maps_linux_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Tpo -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj `if test -f 'src/processor/proc_maps_linux_unittest.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Tpo src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux_unittest.cc' object='src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj `if test -f 'src/processor/proc_maps_linux_unittest.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux_unittest.cc'; fi` + +src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o: src/processor/range_map_shrink_down_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_range_map_shrink_down_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Tpo -c -o src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o `test -f 'src/processor/range_map_shrink_down_unittest.cc' || echo '$(srcdir)/'`src/processor/range_map_shrink_down_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Tpo src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/range_map_shrink_down_unittest.cc' object='src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_range_map_shrink_down_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o `test -f 'src/processor/range_map_shrink_down_unittest.cc' || echo '$(srcdir)/'`src/processor/range_map_shrink_down_unittest.cc + +src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj: src/processor/range_map_shrink_down_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_range_map_shrink_down_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Tpo -c -o src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj `if test -f 'src/processor/range_map_shrink_down_unittest.cc'; then $(CYGPATH_W) 'src/processor/range_map_shrink_down_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/range_map_shrink_down_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Tpo src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/range_map_shrink_down_unittest.cc' object='src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_range_map_shrink_down_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj `if test -f 'src/processor/range_map_shrink_down_unittest.cc'; then $(CYGPATH_W) 'src/processor/range_map_shrink_down_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/range_map_shrink_down_unittest.cc'; fi` + +src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o: src/processor/stackwalker_address_list_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o `test -f 'src/processor/stackwalker_address_list_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_address_list_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_address_list_unittest.cc' object='src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o `test -f 'src/processor/stackwalker_address_list_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_address_list_unittest.cc + +src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj: src/processor/stackwalker_address_list_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj `if test -f 'src/processor/stackwalker_address_list_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_address_list_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_address_list_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_address_list_unittest.cc' object='src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj `if test -f 'src/processor/stackwalker_address_list_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_address_list_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_address_list_unittest.cc'; fi` + +src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o: src/processor/stackwalker_amd64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o `test -f 'src/processor/stackwalker_amd64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_amd64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_amd64_unittest.cc' object='src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o `test -f 'src/processor/stackwalker_amd64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_amd64_unittest.cc + +src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj: src/processor/stackwalker_amd64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj `if test -f 'src/processor/stackwalker_amd64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_amd64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_amd64_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_amd64_unittest.cc' object='src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj `if test -f 'src/processor/stackwalker_amd64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_amd64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_amd64_unittest.cc'; fi` + +src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o: src/processor/stackwalker_arm64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o `test -f 'src/processor/stackwalker_arm64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_arm64_unittest.cc' object='src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o `test -f 'src/processor/stackwalker_arm64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm64_unittest.cc + +src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj: src/processor/stackwalker_arm64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj `if test -f 'src/processor/stackwalker_arm64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm64_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_arm64_unittest.cc' object='src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj `if test -f 'src/processor/stackwalker_arm64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm64_unittest.cc'; fi` + +src/common/src_processor_stackwalker_arm_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o: src/processor/stackwalker_arm_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o `test -f 'src/processor/stackwalker_arm_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_arm_unittest.cc' object='src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o `test -f 'src/processor/stackwalker_arm_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm_unittest.cc + +src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj: src/processor/stackwalker_arm_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj `if test -f 'src/processor/stackwalker_arm_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_arm_unittest.cc' object='src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj `if test -f 'src/processor/stackwalker_arm_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm_unittest.cc'; fi` + +src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o: src/processor/stackwalker_mips64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o `test -f 'src/processor/stackwalker_mips64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_mips64_unittest.cc' object='src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o `test -f 'src/processor/stackwalker_mips64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips64_unittest.cc + +src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj: src/processor/stackwalker_mips64_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj `if test -f 'src/processor/stackwalker_mips64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips64_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_mips64_unittest.cc' object='src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj `if test -f 'src/processor/stackwalker_mips64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips64_unittest.cc'; fi` + +src/common/src_processor_stackwalker_mips_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o: src/processor/stackwalker_mips_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o `test -f 'src/processor/stackwalker_mips_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_mips_unittest.cc' object='src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o `test -f 'src/processor/stackwalker_mips_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips_unittest.cc + +src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj: src/processor/stackwalker_mips_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj `if test -f 'src/processor/stackwalker_mips_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_mips_unittest.cc' object='src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj `if test -f 'src/processor/stackwalker_mips_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips_unittest.cc'; fi` + +src/common/src_processor_stackwalker_x86_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_x86_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_x86_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o: src/processor/stackwalker_x86_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o `test -f 'src/processor/stackwalker_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_x86_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_x86_unittest.cc' object='src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o `test -f 'src/processor/stackwalker_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_x86_unittest.cc + +src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj: src/processor/stackwalker_x86_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj `if test -f 'src/processor/stackwalker_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_x86_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_x86_unittest.cc' object='src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj `if test -f 'src/processor/stackwalker_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_x86_unittest.cc'; fi` + +src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o: src/processor/static_address_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o `test -f 'src/processor/static_address_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_address_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_address_map_unittest.cc' object='src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o `test -f 'src/processor/static_address_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_address_map_unittest.cc + +src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj: src/processor/static_address_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj `if test -f 'src/processor/static_address_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_address_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_address_map_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_address_map_unittest.cc' object='src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj `if test -f 'src/processor/static_address_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_address_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_address_map_unittest.cc'; fi` + +src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o: src/processor/static_contained_range_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o `test -f 'src/processor/static_contained_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_contained_range_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_contained_range_map_unittest.cc' object='src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o `test -f 'src/processor/static_contained_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_contained_range_map_unittest.cc + +src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj: src/processor/static_contained_range_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj `if test -f 'src/processor/static_contained_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_contained_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_contained_range_map_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_contained_range_map_unittest.cc' object='src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj `if test -f 'src/processor/static_contained_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_contained_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_contained_range_map_unittest.cc'; fi` + +src/processor/src_processor_static_map_unittest-static_map_unittest.o: src/processor/static_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_map_unittest-static_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.o `test -f 'src/processor/static_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_map_unittest.cc' object='src/processor/src_processor_static_map_unittest-static_map_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.o `test -f 'src/processor/static_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_map_unittest.cc + +src/processor/src_processor_static_map_unittest-static_map_unittest.obj: src/processor/static_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_map_unittest-static_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.obj `if test -f 'src/processor/static_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_map_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_map_unittest.cc' object='src/processor/src_processor_static_map_unittest-static_map_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.obj `if test -f 'src/processor/static_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_map_unittest.cc'; fi` + +src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o: src/processor/static_range_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o `test -f 'src/processor/static_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_range_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_range_map_unittest.cc' object='src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o `test -f 'src/processor/static_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_range_map_unittest.cc + +src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj: src/processor/static_range_map_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj `if test -f 'src/processor/static_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_range_map_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_range_map_unittest.cc' object='src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj `if test -f 'src/processor/static_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_range_map_unittest.cc'; fi` + +src/common/src_processor_synth_minidump_unittest-test_assembler.o: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_synth_minidump_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_synth_minidump_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc + +src/common/src_processor_synth_minidump_unittest-test_assembler.obj: src/common/test_assembler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_synth_minidump_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_synth_minidump_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` + +src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o: src/processor/synth_minidump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o `test -f 'src/processor/synth_minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/synth_minidump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump_unittest.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o `test -f 'src/processor/synth_minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/synth_minidump_unittest.cc + +src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj: src/processor/synth_minidump_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj `if test -f 'src/processor/synth_minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump_unittest.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj `if test -f 'src/processor/synth_minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump_unittest.cc'; fi` + +src/processor/src_processor_synth_minidump_unittest-synth_minidump.o: src/processor/synth_minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc + +src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj: src/processor/synth_minidump.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi` + +src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o: src/tools/linux/md2core/minidump_memory_range_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o -MD -MP -MF src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o `test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc' || echo '$(srcdir)/'`src/tools/linux/md2core/minidump_memory_range_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/tools/linux/md2core/minidump_memory_range_unittest.cc' object='src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o `test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc' || echo '$(srcdir)/'`src/tools/linux/md2core/minidump_memory_range_unittest.cc + +src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj: src/tools/linux/md2core/minidump_memory_range_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj -MD -MP -MF src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj `if test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; then $(CYGPATH_W) 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/linux/md2core/minidump_memory_range_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/tools/linux/md2core/minidump_memory_range_unittest.cc' object='src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj `if test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; then $(CYGPATH_W) 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/linux/md2core/minidump_memory_range_unittest.cc'; fi` + +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o: src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc + +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj: src/common/dwarf_cfi_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` + +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o: src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc + +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj: src/common/dwarf_cu_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` + +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o: src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc + +src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj: src/common/dwarf_line_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` + +src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o: src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc + +src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj: src/common/language.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` + +src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o: src/common/md5.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o `test -f 'src/common/md5.cc' || echo '$(srcdir)/'`src/common/md5.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/md5.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o `test -f 'src/common/md5.cc' || echo '$(srcdir)/'`src/common/md5.cc + +src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj: src/common/md5.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj `if test -f 'src/common/md5.cc'; then $(CYGPATH_W) 'src/common/md5.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/md5.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/md5.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj `if test -f 'src/common/md5.cc'; then $(CYGPATH_W) 'src/common/md5.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/md5.cc'; fi` + +src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o: src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc + +src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj: src/common/module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` + +src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o: src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc + +src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj: src/common/stabs_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` + +src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o: src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc + +src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj: src/common/stabs_to_module.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` + +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o: src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc + +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj: src/common/dwarf/bytereader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` + +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o: src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc + +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj: src/common/dwarf/dwarf2diehandler.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` + +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o: src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc + +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj: src/common/dwarf/dwarf2reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` + +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o: src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc + +src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj: src/common/dwarf/elf_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o: src/common/mac/arch_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o `test -f 'src/common/mac/arch_utilities.cc' || echo '$(srcdir)/'`src/common/mac/arch_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/arch_utilities.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o `test -f 'src/common/mac/arch_utilities.cc' || echo '$(srcdir)/'`src/common/mac/arch_utilities.cc + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj: src/common/mac/arch_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj `if test -f 'src/common/mac/arch_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/arch_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/arch_utilities.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/arch_utilities.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj `if test -f 'src/common/mac/arch_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/arch_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/arch_utilities.cc'; fi` + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o: src/common/mac/dump_syms.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o `test -f 'src/common/mac/dump_syms.cc' || echo '$(srcdir)/'`src/common/mac/dump_syms.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/dump_syms.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o `test -f 'src/common/mac/dump_syms.cc' || echo '$(srcdir)/'`src/common/mac/dump_syms.cc + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj: src/common/mac/dump_syms.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj `if test -f 'src/common/mac/dump_syms.cc'; then $(CYGPATH_W) 'src/common/mac/dump_syms.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/dump_syms.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/dump_syms.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj `if test -f 'src/common/mac/dump_syms.cc'; then $(CYGPATH_W) 'src/common/mac/dump_syms.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/dump_syms.cc'; fi` + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o: src/common/mac/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o `test -f 'src/common/mac/file_id.cc' || echo '$(srcdir)/'`src/common/mac/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/file_id.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o `test -f 'src/common/mac/file_id.cc' || echo '$(srcdir)/'`src/common/mac/file_id.cc + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj: src/common/mac/file_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj `if test -f 'src/common/mac/file_id.cc'; then $(CYGPATH_W) 'src/common/mac/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/file_id.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/file_id.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj `if test -f 'src/common/mac/file_id.cc'; then $(CYGPATH_W) 'src/common/mac/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/file_id.cc'; fi` + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o: src/common/mac/macho_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o `test -f 'src/common/mac/macho_id.cc' || echo '$(srcdir)/'`src/common/mac/macho_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_id.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o `test -f 'src/common/mac/macho_id.cc' || echo '$(srcdir)/'`src/common/mac/macho_id.cc + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj: src/common/mac/macho_id.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj `if test -f 'src/common/mac/macho_id.cc'; then $(CYGPATH_W) 'src/common/mac/macho_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_id.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_id.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj `if test -f 'src/common/mac/macho_id.cc'; then $(CYGPATH_W) 'src/common/mac/macho_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_id.cc'; fi` + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o: src/common/mac/macho_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o `test -f 'src/common/mac/macho_reader.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o `test -f 'src/common/mac/macho_reader.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader.cc + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj: src/common/mac/macho_reader.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj `if test -f 'src/common/mac/macho_reader.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj `if test -f 'src/common/mac/macho_reader.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader.cc'; fi` + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o: src/common/mac/macho_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o `test -f 'src/common/mac/macho_utilities.cc' || echo '$(srcdir)/'`src/common/mac/macho_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_utilities.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o `test -f 'src/common/mac/macho_utilities.cc' || echo '$(srcdir)/'`src/common/mac/macho_utilities.cc + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj: src/common/mac/macho_utilities.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj `if test -f 'src/common/mac/macho_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/macho_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_utilities.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_utilities.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj `if test -f 'src/common/mac/macho_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/macho_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_utilities.cc'; fi` + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o: src/common/mac/macho_walker.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o `test -f 'src/common/mac/macho_walker.cc' || echo '$(srcdir)/'`src/common/mac/macho_walker.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_walker.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o `test -f 'src/common/mac/macho_walker.cc' || echo '$(srcdir)/'`src/common/mac/macho_walker.cc + +src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj: src/common/mac/macho_walker.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj `if test -f 'src/common/mac/macho_walker.cc'; then $(CYGPATH_W) 'src/common/mac/macho_walker.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_walker.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_walker.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj `if test -f 'src/common/mac/macho_walker.cc'; then $(CYGPATH_W) 'src/common/mac/macho_walker.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_walker.cc'; fi` + +src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o: src/tools/mac/dump_syms/dump_syms_tool.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o -MD -MP -MF src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Tpo -c -o src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o `test -f 'src/tools/mac/dump_syms/dump_syms_tool.cc' || echo '$(srcdir)/'`src/tools/mac/dump_syms/dump_syms_tool.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Tpo src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/tools/mac/dump_syms/dump_syms_tool.cc' object='src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o `test -f 'src/tools/mac/dump_syms/dump_syms_tool.cc' || echo '$(srcdir)/'`src/tools/mac/dump_syms/dump_syms_tool.cc + +src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj: src/tools/mac/dump_syms/dump_syms_tool.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj -MD -MP -MF src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Tpo -c -o src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj `if test -f 'src/tools/mac/dump_syms/dump_syms_tool.cc'; then $(CYGPATH_W) 'src/tools/mac/dump_syms/dump_syms_tool.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/mac/dump_syms/dump_syms_tool.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Tpo src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/tools/mac/dump_syms/dump_syms_tool.cc' object='src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj `if test -f 'src/tools/mac/dump_syms/dump_syms_tool.cc'; then $(CYGPATH_W) 'src/tools/mac/dump_syms/dump_syms_tool.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/mac/dump_syms/dump_syms_tool.cc'; fi` install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) - test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)" - @list='$(dist_doc_DATA)'; for p in $$list; do \ + @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ + fi; \ + for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - f=$(am__strip_dir) \ - echo " $(dist_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \ - $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) - @list='$(dist_doc_DATA)'; for p in $$list; do \ - f=$(am__strip_dir) \ - echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \ - rm -f "$(DESTDIR)$(docdir)/$$f"; \ + @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) +install-includecHEADERS: $(includec_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includec_HEADERS)'; test -n "$(includecdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includecdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includecdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includecdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includecdir)" || exit $$?; \ + done -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ +uninstall-includecHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includec_HEADERS)'; test -n "$(includecdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includecdir)'; $(am__uninstall_files_from_dir) +install-includeclHEADERS: $(includecl_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includecl_HEADERS)'; test -n "$(includecldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includecldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includecldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includecldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includecldir)" || exit $$?; \ + done + +uninstall-includeclHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includecl_HEADERS)'; test -n "$(includecldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includecldir)'; $(am__uninstall_files_from_dir) +install-includeclcHEADERS: $(includeclc_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includeclc_HEADERS)'; test -n "$(includeclcdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includeclcdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includeclcdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclcdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclcdir)" || exit $$?; \ + done + +uninstall-includeclcHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includeclc_HEADERS)'; test -n "$(includeclcdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includeclcdir)'; $(am__uninstall_files_from_dir) +install-includecldwcHEADERS: $(includecldwc_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includecldwc_HEADERS)'; test -n "$(includecldwcdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includecldwcdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includecldwcdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includecldwcdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includecldwcdir)" || exit $$?; \ + done + +uninstall-includecldwcHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includecldwc_HEADERS)'; test -n "$(includecldwcdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includecldwcdir)'; $(am__uninstall_files_from_dir) +install-includeclhHEADERS: $(includeclh_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includeclh_HEADERS)'; test -n "$(includeclhdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includeclhdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includeclhdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclhdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclhdir)" || exit $$?; \ + done + +uninstall-includeclhHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includeclh_HEADERS)'; test -n "$(includeclhdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includeclhdir)'; $(am__uninstall_files_from_dir) +install-includeclmHEADERS: $(includeclm_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includeclm_HEADERS)'; test -n "$(includeclmdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includeclmdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includeclmdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclmdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclmdir)" || exit $$?; \ + done + +uninstall-includeclmHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includeclm_HEADERS)'; test -n "$(includeclmdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includeclmdir)'; $(am__uninstall_files_from_dir) +install-includegbcHEADERS: $(includegbc_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includegbc_HEADERS)'; test -n "$(includegbcdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includegbcdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includegbcdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includegbcdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includegbcdir)" || exit $$?; \ + done + +uninstall-includegbcHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includegbc_HEADERS)'; test -n "$(includegbcdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includegbcdir)'; $(am__uninstall_files_from_dir) +install-includelssHEADERS: $(includelss_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includelss_HEADERS)'; test -n "$(includelssdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includelssdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includelssdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includelssdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includelssdir)" || exit $$?; \ + done + +uninstall-includelssHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includelss_HEADERS)'; test -n "$(includelssdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includelssdir)'; $(am__uninstall_files_from_dir) +install-includepHEADERS: $(includep_HEADERS) + @$(NORMAL_INSTALL) + @list='$(includep_HEADERS)'; test -n "$(includepdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includepdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includepdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includepdir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(includepdir)" || exit $$?; \ + done + +uninstall-includepHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(includep_HEADERS)'; test -n "$(includepdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(includepdir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique + $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *$$ws$$tst$$ws*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - echo "XPASS: $$tst"; \ - ;; \ - *) \ - echo "PASS: $$tst"; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *$$ws$$tst$$ws*) \ - xfail=`expr $$xfail + 1`; \ - echo "XFAIL: $$tst"; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - echo "FAIL: $$tst"; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - echo "SKIP: $$tst"; \ - fi; \ +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="All $$all tests passed"; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ else \ - banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all tests failed"; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ else \ - banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ + color_start= color_end=; \ fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - skipped="($$skip tests were not run)"; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - echo "$$dashes"; \ - echo "$$banner"; \ - test -z "$$skipped" || echo "$$skipped"; \ - test -z "$$report" || echo "$$report"; \ - echo "$$dashes"; \ - test "$$failed" -eq 0; \ - else :; fi + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_LIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +src/common/test_assembler_unittest.log: src/common/test_assembler_unittest$(EXEEXT) + @p='src/common/test_assembler_unittest$(EXEEXT)'; \ + b='src/common/test_assembler_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/address_map_unittest.log: src/processor/address_map_unittest$(EXEEXT) + @p='src/processor/address_map_unittest$(EXEEXT)'; \ + b='src/processor/address_map_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/basic_source_line_resolver_unittest.log: src/processor/basic_source_line_resolver_unittest$(EXEEXT) + @p='src/processor/basic_source_line_resolver_unittest$(EXEEXT)'; \ + b='src/processor/basic_source_line_resolver_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/cfi_frame_info_unittest.log: src/processor/cfi_frame_info_unittest$(EXEEXT) + @p='src/processor/cfi_frame_info_unittest$(EXEEXT)'; \ + b='src/processor/cfi_frame_info_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/contained_range_map_unittest.log: src/processor/contained_range_map_unittest$(EXEEXT) + @p='src/processor/contained_range_map_unittest$(EXEEXT)'; \ + b='src/processor/contained_range_map_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/disassembler_x86_unittest.log: src/processor/disassembler_x86_unittest$(EXEEXT) + @p='src/processor/disassembler_x86_unittest$(EXEEXT)'; \ + b='src/processor/disassembler_x86_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/exploitability_unittest.log: src/processor/exploitability_unittest$(EXEEXT) + @p='src/processor/exploitability_unittest$(EXEEXT)'; \ + b='src/processor/exploitability_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/fast_source_line_resolver_unittest.log: src/processor/fast_source_line_resolver_unittest$(EXEEXT) + @p='src/processor/fast_source_line_resolver_unittest$(EXEEXT)'; \ + b='src/processor/fast_source_line_resolver_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/map_serializers_unittest.log: src/processor/map_serializers_unittest$(EXEEXT) + @p='src/processor/map_serializers_unittest$(EXEEXT)'; \ + b='src/processor/map_serializers_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/microdump_processor_unittest.log: src/processor/microdump_processor_unittest$(EXEEXT) + @p='src/processor/microdump_processor_unittest$(EXEEXT)'; \ + b='src/processor/microdump_processor_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/minidump_processor_unittest.log: src/processor/minidump_processor_unittest$(EXEEXT) + @p='src/processor/minidump_processor_unittest$(EXEEXT)'; \ + b='src/processor/minidump_processor_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/minidump_unittest.log: src/processor/minidump_unittest$(EXEEXT) + @p='src/processor/minidump_unittest$(EXEEXT)'; \ + b='src/processor/minidump_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/static_address_map_unittest.log: src/processor/static_address_map_unittest$(EXEEXT) + @p='src/processor/static_address_map_unittest$(EXEEXT)'; \ + b='src/processor/static_address_map_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/static_contained_range_map_unittest.log: src/processor/static_contained_range_map_unittest$(EXEEXT) + @p='src/processor/static_contained_range_map_unittest$(EXEEXT)'; \ + b='src/processor/static_contained_range_map_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/static_map_unittest.log: src/processor/static_map_unittest$(EXEEXT) + @p='src/processor/static_map_unittest$(EXEEXT)'; \ + b='src/processor/static_map_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/static_range_map_unittest.log: src/processor/static_range_map_unittest$(EXEEXT) + @p='src/processor/static_range_map_unittest$(EXEEXT)'; \ + b='src/processor/static_range_map_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/pathname_stripper_unittest.log: src/processor/pathname_stripper_unittest$(EXEEXT) + @p='src/processor/pathname_stripper_unittest$(EXEEXT)'; \ + b='src/processor/pathname_stripper_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/postfix_evaluator_unittest.log: src/processor/postfix_evaluator_unittest$(EXEEXT) + @p='src/processor/postfix_evaluator_unittest$(EXEEXT)'; \ + b='src/processor/postfix_evaluator_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/proc_maps_linux_unittest.log: src/processor/proc_maps_linux_unittest$(EXEEXT) + @p='src/processor/proc_maps_linux_unittest$(EXEEXT)'; \ + b='src/processor/proc_maps_linux_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/range_map_shrink_down_unittest.log: src/processor/range_map_shrink_down_unittest$(EXEEXT) + @p='src/processor/range_map_shrink_down_unittest$(EXEEXT)'; \ + b='src/processor/range_map_shrink_down_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/range_map_unittest.log: src/processor/range_map_unittest$(EXEEXT) + @p='src/processor/range_map_unittest$(EXEEXT)'; \ + b='src/processor/range_map_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/stackwalker_amd64_unittest.log: src/processor/stackwalker_amd64_unittest$(EXEEXT) + @p='src/processor/stackwalker_amd64_unittest$(EXEEXT)'; \ + b='src/processor/stackwalker_amd64_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/stackwalker_arm_unittest.log: src/processor/stackwalker_arm_unittest$(EXEEXT) + @p='src/processor/stackwalker_arm_unittest$(EXEEXT)'; \ + b='src/processor/stackwalker_arm_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/stackwalker_arm64_unittest.log: src/processor/stackwalker_arm64_unittest$(EXEEXT) + @p='src/processor/stackwalker_arm64_unittest$(EXEEXT)'; \ + b='src/processor/stackwalker_arm64_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/stackwalker_address_list_unittest.log: src/processor/stackwalker_address_list_unittest$(EXEEXT) + @p='src/processor/stackwalker_address_list_unittest$(EXEEXT)'; \ + b='src/processor/stackwalker_address_list_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/stackwalker_mips_unittest.log: src/processor/stackwalker_mips_unittest$(EXEEXT) + @p='src/processor/stackwalker_mips_unittest$(EXEEXT)'; \ + b='src/processor/stackwalker_mips_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/stackwalker_mips64_unittest.log: src/processor/stackwalker_mips64_unittest$(EXEEXT) + @p='src/processor/stackwalker_mips64_unittest$(EXEEXT)'; \ + b='src/processor/stackwalker_mips64_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/stackwalker_x86_unittest.log: src/processor/stackwalker_x86_unittest$(EXEEXT) + @p='src/processor/stackwalker_x86_unittest$(EXEEXT)'; \ + b='src/processor/stackwalker_x86_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/synth_minidump_unittest.log: src/processor/synth_minidump_unittest$(EXEEXT) + @p='src/processor/synth_minidump_unittest$(EXEEXT)'; \ + b='src/processor/synth_minidump_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/client/linux/linux_client_unittest.log: src/client/linux/linux_client_unittest$(EXEEXT) + @p='src/client/linux/linux_client_unittest$(EXEEXT)'; \ + b='src/client/linux/linux_client_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/common/dumper_unittest.log: src/common/dumper_unittest$(EXEEXT) + @p='src/common/dumper_unittest$(EXEEXT)'; \ + b='src/common/dumper_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/tools/linux/md2core/minidump_2_core_unittest.log: src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT) + @p='src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT)'; \ + b='src/tools/linux/md2core/minidump_2_core_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/common/mac/macho_reader_unittest.log: src/common/mac/macho_reader_unittest$(EXEEXT) + @p='src/common/mac/macho_reader_unittest$(EXEEXT)'; \ + b='src/common/mac/macho_reader_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/stackwalker_selftest.log: src/processor/stackwalker_selftest$(EXEEXT) + @p='src/processor/stackwalker_selftest$(EXEEXT)'; \ + b='src/processor/stackwalker_selftest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/microdump_stackwalk_test.log: src/processor/microdump_stackwalk_test + @p='src/processor/microdump_stackwalk_test'; \ + b='src/processor/microdump_stackwalk_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/microdump_stackwalk_machine_readable_test.log: src/processor/microdump_stackwalk_machine_readable_test + @p='src/processor/microdump_stackwalk_machine_readable_test'; \ + b='src/processor/microdump_stackwalk_machine_readable_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/minidump_dump_test.log: src/processor/minidump_dump_test + @p='src/processor/minidump_dump_test'; \ + b='src/processor/minidump_dump_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/minidump_stackwalk_test.log: src/processor/minidump_stackwalk_test + @p='src/processor/minidump_stackwalk_test'; \ + b='src/processor/minidump_stackwalk_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +src/processor/minidump_stackwalk_machine_readable_test.log: src/processor/minidump_stackwalk_machine_readable_test + @p='src/processor/minidump_stackwalk_machine_readable_test'; \ + b='src/processor/minidump_stackwalk_machine_readable_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(DISTFILES) $(am__remove_distdir) - test -d $(distdir) || mkdir $(distdir) + test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -1244,45 +7852,65 @@ distdir: $(DISTFILES) if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done - -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r $(distdir) + || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) + $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) + $(am__post_remove_distdir) -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another @@ -1290,25 +7918,33 @@ dist dist-all: distdir distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ - bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && cd $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -1328,14 +7964,24 @@ distcheck: dist && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck - $(am__remove_distdir) + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @cd $(distuninstallcheck_dir) \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ @@ -1352,14 +7998,14 @@ distcleancheck: distclean $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) + $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS) \ + $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am -all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) -install-binPROGRAMS: install-libLTLIBRARIES - +all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ + $(HEADERS) installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \ + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includecdir)" "$(DESTDIR)$(includecldir)" "$(DESTDIR)$(includeclcdir)" "$(DESTDIR)$(includecldwcdir)" "$(DESTDIR)$(includeclhdir)" "$(DESTDIR)$(includeclmdir)" "$(DESTDIR)$(includegbcdir)" "$(DESTDIR)$(includelssdir)" "$(DESTDIR)$(includepdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -1372,39 +8018,91 @@ install-am: all-am installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f src/$(am__dirstamp) + -rm -f src/client/$(DEPDIR)/$(am__dirstamp) + -rm -f src/client/$(am__dirstamp) + -rm -f src/client/linux/$(am__dirstamp) + -rm -f src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp) + -rm -f src/client/linux/crash_generation/$(am__dirstamp) + -rm -f src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp) + -rm -f src/client/linux/dump_writer_common/$(am__dirstamp) + -rm -f src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) + -rm -f src/client/linux/handler/$(am__dirstamp) + -rm -f src/client/linux/log/$(DEPDIR)/$(am__dirstamp) + -rm -f src/client/linux/log/$(am__dirstamp) + -rm -f src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp) + -rm -f src/client/linux/microdump_writer/$(am__dirstamp) + -rm -f src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) + -rm -f src/client/linux/minidump_writer/$(am__dirstamp) + -rm -f src/common/$(DEPDIR)/$(am__dirstamp) + -rm -f src/common/$(am__dirstamp) + -rm -f src/common/android/$(DEPDIR)/$(am__dirstamp) + -rm -f src/common/android/$(am__dirstamp) + -rm -f src/common/dwarf/$(DEPDIR)/$(am__dirstamp) + -rm -f src/common/dwarf/$(am__dirstamp) + -rm -f src/common/linux/$(DEPDIR)/$(am__dirstamp) + -rm -f src/common/linux/$(am__dirstamp) + -rm -f src/common/linux/tests/$(DEPDIR)/$(am__dirstamp) + -rm -f src/common/linux/tests/$(am__dirstamp) + -rm -f src/common/mac/$(DEPDIR)/$(am__dirstamp) + -rm -f src/common/mac/$(am__dirstamp) + -rm -f src/common/tests/$(DEPDIR)/$(am__dirstamp) + -rm -f src/common/tests/$(am__dirstamp) -rm -f src/processor/$(DEPDIR)/$(am__dirstamp) -rm -f src/processor/$(am__dirstamp) + -rm -f src/testing/$(am__dirstamp) -rm -f src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) -rm -f src/testing/gtest/src/$(am__dirstamp) -rm -f src/testing/src/$(DEPDIR)/$(am__dirstamp) -rm -f src/testing/src/$(am__dirstamp) + -rm -f src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) + -rm -f src/third_party/libdisasm/$(am__dirstamp) + -rm -f src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp) + -rm -f src/tools/linux/core2md/$(am__dirstamp) + -rm -f src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp) + -rm -f src/tools/linux/dump_syms/$(am__dirstamp) + -rm -f src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) + -rm -f src/tools/linux/md2core/$(am__dirstamp) + -rm -f src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) + -rm -f src/tools/linux/symupload/$(am__dirstamp) + -rm -f src/tools/mac/dump_syms/$(DEPDIR)/$(am__dirstamp) + -rm -f src/tools/mac/dump_syms/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am +clean-am: clean-binPROGRAMS clean-checkLIBRARIES clean-checkPROGRAMS \ + clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ + clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) + -rm -rf src/client/$(DEPDIR) src/client/linux/crash_generation/$(DEPDIR) src/client/linux/dump_writer_common/$(DEPDIR) src/client/linux/handler/$(DEPDIR) src/client/linux/log/$(DEPDIR) src/client/linux/microdump_writer/$(DEPDIR) src/client/linux/minidump_writer/$(DEPDIR) src/common/$(DEPDIR) src/common/android/$(DEPDIR) src/common/dwarf/$(DEPDIR) src/common/linux/$(DEPDIR) src/common/linux/tests/$(DEPDIR) src/common/mac/$(DEPDIR) src/common/tests/$(DEPDIR) src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) src/third_party/libdisasm/$(DEPDIR) src/tools/linux/core2md/$(DEPDIR) src/tools/linux/dump_syms/$(DEPDIR) src/tools/linux/md2core/$(DEPDIR) src/tools/linux/symupload/$(DEPDIR) src/tools/mac/dump_syms/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-libtool distclean-tags + distclean-hdr distclean-tags dvi: dvi-am @@ -1412,39 +8110,56 @@ dvi-am: html: html-am +html-am: + info: info-am info-am: -install-data-am: install-dist_docDATA +install-data-am: install-dist_docDATA install-includecHEADERS \ + install-includeclHEADERS install-includeclcHEADERS \ + install-includecldwcHEADERS install-includeclhHEADERS \ + install-includeclmHEADERS install-includegbcHEADERS \ + install-includelssHEADERS install-includepHEADERS \ + install-pkgconfigDATA install-dvi: install-dvi-am -install-exec-am: install-binPROGRAMS install-libLTLIBRARIES +install-dvi-am: + +install-exec-am: install-binPROGRAMS install-libLIBRARIES install-html: install-html-am +install-html-am: + install-info: install-info-am +install-info-am: + install-man: install-pdf: install-pdf-am +install-pdf-am: + install-ps: install-ps-am +install-ps-am: + installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) + -rm -rf src/client/$(DEPDIR) src/client/linux/crash_generation/$(DEPDIR) src/client/linux/dump_writer_common/$(DEPDIR) src/client/linux/handler/$(DEPDIR) src/client/linux/log/$(DEPDIR) src/client/linux/microdump_writer/$(DEPDIR) src/client/linux/minidump_writer/$(DEPDIR) src/common/$(DEPDIR) src/common/android/$(DEPDIR) src/common/dwarf/$(DEPDIR) src/common/linux/$(DEPDIR) src/common/linux/tests/$(DEPDIR) src/common/mac/$(DEPDIR) src/common/tests/$(DEPDIR) src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) src/third_party/libdisasm/$(DEPDIR) src/tools/linux/core2md/$(DEPDIR) src/tools/linux/dump_syms/$(DEPDIR) src/tools/linux/md2core/$(DEPDIR) src/tools/linux/symupload/$(DEPDIR) src/tools/mac/dump_syms/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool + mostlyclean-local pdf: pdf-am @@ -1455,32 +8170,52 @@ ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA \ - uninstall-libLTLIBRARIES + uninstall-includecHEADERS uninstall-includeclHEADERS \ + uninstall-includeclcHEADERS uninstall-includecldwcHEADERS \ + uninstall-includeclhHEADERS uninstall-includeclmHEADERS \ + uninstall-includegbcHEADERS uninstall-includelssHEADERS \ + uninstall-includepHEADERS uninstall-libLIBRARIES \ + uninstall-pkgconfigDATA -.MAKE: install-am install-strip +.MAKE: check-am install-am install-strip -.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \ - clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ - clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS ctags \ - dist dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ \ - dist-zip distcheck distclean distclean-compile \ - distclean-generic distclean-hdr distclean-libtool \ - distclean-tags distcleancheck distdir distuninstallcheck dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am \ - install-dist_docDATA install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-binPROGRAMS \ - uninstall-dist_docDATA uninstall-libLTLIBRARIES +.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-TESTS \ + check-am clean clean-binPROGRAMS clean-checkLIBRARIES \ + clean-checkPROGRAMS clean-cscope clean-generic \ + clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-compile distclean-generic \ + distclean-hdr distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-binPROGRAMS install-data \ + install-data-am install-dist_docDATA install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-includecHEADERS \ + install-includeclHEADERS install-includeclcHEADERS \ + install-includecldwcHEADERS install-includeclhHEADERS \ + install-includeclmHEADERS install-includegbcHEADERS \ + install-includelssHEADERS install-includepHEADERS install-info \ + install-info-am install-libLIBRARIES install-man install-pdf \ + install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \ + pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-dist_docDATA \ + uninstall-includecHEADERS uninstall-includeclHEADERS \ + uninstall-includeclcHEADERS uninstall-includecldwcHEADERS \ + uninstall-includeclhHEADERS uninstall-includeclmHEADERS \ + uninstall-includegbcHEADERS uninstall-includelssHEADERS \ + uninstall-includepHEADERS uninstall-libLIBRARIES \ + uninstall-pkgconfigDATA + +.PRECIOUS: Makefile -libtool: $(LIBTOOL_DEPS) - $(SHELL) ./config.status --recheck +mostlyclean-local: + -find src -name '*.dwo' -exec rm -f {} + + # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/toolkit/crashreporter/google-breakpad/README.ANDROID b/toolkit/crashreporter/google-breakpad/README.ANDROID index 93dbb953ec4f..30959ed3a2c0 100644 --- a/toolkit/crashreporter/google-breakpad/README.ANDROID +++ b/toolkit/crashreporter/google-breakpad/README.ANDROID @@ -6,7 +6,7 @@ on Android, and later generate valid stack traces from the minidumps it generates. This release supports ARM, x86 and MIPS based Android systems. -This release requires NDK release r10c or higher. +This release requires NDK release r11c or higher. I. Building the client library: =============================== diff --git a/toolkit/crashreporter/google-breakpad/README.md b/toolkit/crashreporter/google-breakpad/README.md index bfb9f1420aca..e7f3e1726ee3 100644 --- a/toolkit/crashreporter/google-breakpad/README.md +++ b/toolkit/crashreporter/google-breakpad/README.md @@ -3,45 +3,80 @@ Breakpad is a set of client and server components which implement a crash-reporting system. -## Getting started in 32-bit mode (from trunk) +* [Homepage](https://chromium.googlesource.com/breakpad/breakpad/) +* [Documentation](https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/) +* [Bugs](https://bugs.chromium.org/p/google-breakpad/) +* Discussion/Questions: [google-breakpad-discuss@googlegroups.com](https://groups.google.com/d/forum/google-breakpad-discuss) +* Developer/Reviews: [google-breakpad-dev@googlegroups.com](https://groups.google.com/d/forum/google-breakpad-dev) +* Tests: [![Build Status](https://travis-ci.org/google/breakpad.svg?branch=master)](https://travis-ci.org/google/breakpad) +* Coverage [![Coverity Status](https://scan.coverity.com/projects/9215/badge.svg)](https://scan.coverity.com/projects/google-breakpad) -```sh -# Configure -CXXFLAGS=-m32 CFLAGS=-m32 CPPFLAGS=-m32 ./configure -# Build -make -# Test -make check -# Install -make install -``` +## Getting started (from master) + +1. First, [download depot_tools](http://dev.chromium.org/developers/how-tos/install-depot-tools) + and ensure that they’re in your `PATH`. + +2. Create a new directory for checking out the source code (it must be named + breakpad). + + ```sh + mkdir breakpad && cd breakpad + ``` + +3. Run the `fetch` tool from depot_tools to download all the source repos. + + ```sh + fetch breakpad + cd src + ``` + +4. Build the source. + + ```sh + ./configure && make + ``` + + You can also cd to another directory and run configure from there to build + outside the source tree. + + This will build the processor tools (`src/processor/minidump_stackwalk`, + `src/processor/minidump_dump`, etc), and when building on Linux it will + also build the client libraries and some tools + (`src/tools/linux/dump_syms/dump_syms`, + `src/tools/linux/md2core/minidump-2-core`, etc). + +5. Optionally, run tests. + + ```sh + make check + ``` + +6. Optionally, install the built libraries + + ```sh + make install + ``` If you need to reconfigure your build be sure to run `make distclean` first. -## To request change review: +To update an existing checkout to a newer revision, you can +`git pull` as usual, but then you should run `gclient sync` to ensure that the +dependent repos are up-to-date. -1. Get a copy of depot_tools repo. - http://dev.chromium.org/developers/how-tos/install-depot-tools +## To request change review -2. Create a new directory for checking out the source code. - mkdir breakpad && cd breakpad +1. Follow the steps above to get the source and build it. -3. Run the `fetch` tool from depot_tools to download all the source repos. - `fetch breakpad` - -4. Make changes. Build and test your changes. +2. Make changes. Build and test your changes. For core code like processor use methods above. For linux/mac/windows, there are test targets in each project file. -5. Commit your changes to your local repo and upload them to the server. +3. Commit your changes to your local repo and upload them to the server. http://dev.chromium.org/developers/contributing-code e.g. `git commit ... && git cl upload ...` You will be prompted for credential and a description. -6. At https://codereview.chromium.org/ you'll find your issue listed; click on - it, and select Publish+Mail, and enter in the code reviewer and CC - google-breakpad-dev@googlegroups.com - -## Documentation - -Visit https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/ +4. At https://chromium-review.googlesource.com/ you'll find your issue listed; + click on it, then “Add reviewer”, and enter in the code reviewer. Depending + on your settings, you may not see an email, but the reviewer has been + notified with google-breakpad-dev@googlegroups.com always CC’d. diff --git a/toolkit/crashreporter/google-breakpad/aclocal.m4 b/toolkit/crashreporter/google-breakpad/aclocal.m4 index e657517b01ac..10010c229319 100644 --- a/toolkit/crashreporter/google-breakpad/aclocal.m4 +++ b/toolkit/crashreporter/google-breakpad/aclocal.m4 @@ -56,6 +56,66 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_AR([ACT-IF-FAIL]) +# ------------------------- +# Try to determine the archiver interface, and trigger the ar-lib wrapper +# if it is needed. If the detection of archiver interface fails, run +# ACT-IF-FAIL (default is to abort configure with a proper error message). +AC_DEFUN([AM_PROG_AR], +[AC_BEFORE([$0], [LT_INIT])dnl +AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl +AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([ar-lib])dnl +AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) +: ${AR=ar} + +AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], + [AC_LANG_PUSH([C]) + am_cv_ar_interface=ar + AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], + [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([am_ar_try]) + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + ]) + AC_LANG_POP([C])]) + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + m4_default([$1], + [AC_MSG_ERROR([could not determine $AR interface])]) + ;; +esac +AC_SUBST([AR])dnl +]) + # Figure out how to run the assembler. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. diff --git a/toolkit/crashreporter/google-breakpad/android/google_breakpad/Android.mk b/toolkit/crashreporter/google-breakpad/android/google_breakpad/Android.mk index 52fa5e4bea14..74625eb550f0 100644 --- a/toolkit/crashreporter/google-breakpad/android/google_breakpad/Android.mk +++ b/toolkit/crashreporter/google-breakpad/android/google_breakpad/Android.mk @@ -71,9 +71,12 @@ LOCAL_ARM_MODE := arm # List of client source files, directly taken from Makefile.am LOCAL_SRC_FILES := \ src/client/linux/crash_generation/crash_generation_client.cc \ + src/client/linux/dump_writer_common/thread_info.cc \ + src/client/linux/dump_writer_common/ucontext_reader.cc \ src/client/linux/handler/exception_handler.cc \ src/client/linux/handler/minidump_descriptor.cc \ src/client/linux/log/log.cc \ + src/client/linux/microdump_writer/microdump_writer.cc \ src/client/linux/minidump_writer/linux_dumper.cc \ src/client/linux/minidump_writer/linux_ptrace_dumper.cc \ src/client/linux/minidump_writer/minidump_writer.cc \ diff --git a/toolkit/crashreporter/google-breakpad/android/sample_app/jni/Application.mk b/toolkit/crashreporter/google-breakpad/android/sample_app/jni/Application.mk index 366ce29f78bf..9728017d3f68 100644 --- a/toolkit/crashreporter/google-breakpad/android/sample_app/jni/Application.mk +++ b/toolkit/crashreporter/google-breakpad/android/sample_app/jni/Application.mk @@ -29,3 +29,4 @@ APP_STL := stlport_static APP_ABI := all +APP_CXXFLAGS := -std=c++11 -D__STDC_LIMIT_MACROS diff --git a/toolkit/crashreporter/google-breakpad/autotools/compile b/toolkit/crashreporter/google-breakpad/autotools/compile index 531136b068ef..a85b723c7e67 100755 --- a/toolkit/crashreporter/google-breakpad/autotools/compile +++ b/toolkit/crashreporter/google-breakpad/autotools/compile @@ -3,7 +3,7 @@ scriptversion=2012-10-14.11; # UTC -# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# Copyright (C) 1999-2014 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify diff --git a/toolkit/crashreporter/google-breakpad/autotools/config.guess b/toolkit/crashreporter/google-breakpad/autotools/config.guess index f7eb141e75a9..dcd5149681df 100755 --- a/toolkit/crashreporter/google-breakpad/autotools/config.guess +++ b/toolkit/crashreporter/google-breakpad/autotools/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-03-04' +timestamp='2016-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ timestamp='2015-03-04' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -221,7 +221,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: @@ -249,6 +249,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -962,6 +965,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1038,7 +1044,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1117,7 +1123,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1387,6 +1393,9 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 <&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; - -T) no_target_directory=true;; + -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -207,6 +203,15 @@ if test $# -eq 0; then exit 0 fi +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 @@ -223,16 +228,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -269,41 +274,15 @@ do # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - + dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi @@ -314,74 +293,74 @@ do if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -391,53 +370,51 @@ do # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac - eval "$initialize_posix_glob" - oIFS=$IFS IFS=/ - $posix_glob set -f + set -f set fnord $dstdir shift - $posix_glob set +f + set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue + test X"$d" = X && continue - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -472,15 +449,12 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - + set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -493,24 +467,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 diff --git a/toolkit/crashreporter/google-breakpad/autotools/missing b/toolkit/crashreporter/google-breakpad/autotools/missing index db98974ff5d5..f62bbae306c7 100755 --- a/toolkit/crashreporter/google-breakpad/autotools/missing +++ b/toolkit/crashreporter/google-breakpad/autotools/missing @@ -3,7 +3,7 @@ scriptversion=2013-10-28.13; # UTC -# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Copyright (C) 1996-2014 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify diff --git a/toolkit/crashreporter/google-breakpad/autotools/test-driver b/toolkit/crashreporter/google-breakpad/autotools/test-driver index d30605660a06..8e575b017d93 100755 --- a/toolkit/crashreporter/google-breakpad/autotools/test-driver +++ b/toolkit/crashreporter/google-breakpad/autotools/test-driver @@ -3,7 +3,7 @@ scriptversion=2013-07-13.22; # UTC -# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# Copyright (C) 2011-2014 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -106,11 +106,14 @@ trap "st=143; $do_exit" 15 # Test script is run here. "$@" >$log_file 2>&1 estatus=$? + if test $enable_hard_errors = no && test $estatus -eq 99; then - estatus=1 + tweaked_estatus=1 +else + tweaked_estatus=$estatus fi -case $estatus:$expect_failure in +case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; @@ -119,6 +122,12 @@ case $estatus:$expect_failure in *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>$log_file + # Report outcome to console. echo "${col}${res}${std}: $test_name" diff --git a/toolkit/crashreporter/google-breakpad/codereview.settings b/toolkit/crashreporter/google-breakpad/codereview.settings index 2228d565a75e..2a60978c1379 100644 --- a/toolkit/crashreporter/google-breakpad/codereview.settings +++ b/toolkit/crashreporter/google-breakpad/codereview.settings @@ -1,5 +1,4 @@ -# This file is used by gcl to get repository specific information. -CODE_REVIEW_SERVER: codereview.chromium.org -CC_LIST: google-breakpad-dev@googlegroups.com -TRY_ON_UPLOAD: False +GERRIT_HOST: True +GERRIT_SQUASH_UPLOADS: True +CODE_REVIEW_SERVER: chromium-review.googlesource.com VIEW_VC: https://chromium.googlesource.com/breakpad/breakpad/+/ diff --git a/toolkit/crashreporter/google-breakpad/configure b/toolkit/crashreporter/google-breakpad/configure index 2bf5fe0a0d42..a02f7cd537a5 100755 --- a/toolkit/crashreporter/google-breakpad/configure +++ b/toolkit/crashreporter/google-breakpad/configure @@ -628,14 +628,25 @@ LTLIBOBJS LIBOBJS SELFTEST_FALSE SELFTEST_TRUE +GTEST_LIBS +GTEST_CFLAGS +GTEST_CONFIG +GMOCK_LIBS +GMOCK_CFLAGS +GMOCK_CONFIG +SYSTEM_TEST_LIBS_FALSE +SYSTEM_TEST_LIBS_TRUE DISABLE_TOOLS_FALSE DISABLE_TOOLS_TRUE DISABLE_PROCESSOR_FALSE DISABLE_PROCESSOR_TRUE +X86_HOST_FALSE +X86_HOST_TRUE ANDROID_HOST_FALSE ANDROID_HOST_TRUE LINUX_HOST_FALSE LINUX_HOST_TRUE +HAVE_CXX11 PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC @@ -674,6 +685,8 @@ CPPFLAGS LDFLAGS CFLAGS CC +ac_ct_AR +AR MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE @@ -760,6 +773,7 @@ enable_m32 enable_largefile enable_processor enable_tools +enable_system_test_libs enable_selftest ' ac_precious_vars='build_alias @@ -775,7 +789,13 @@ CCASFLAGS CPP CXX CXXFLAGS -CCC' +CCC +GMOCK_CONFIG +GMOCK_CFLAGS +GMOCK_LIBS +GTEST_CONFIG +GTEST_CFLAGS +GTEST_LIBS' # Initialize some variables set by options. @@ -1407,6 +1427,9 @@ Optional Features: --disable-largefile omit support for large files --disable-processor Don't build processor library (default is no) --disable-tools Don't build tool binaries (default is no) + --enable-system-test-libs + Use gtest/gmock/etc... from the system instead of + the local copies (default is local) --enable-selftest Run extra tests with "make check" (may conflict with optimizations) (default is no) @@ -1423,6 +1446,16 @@ Some influential environment variables: CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags + GMOCK_CONFIG + Path to gmock-config script + GMOCK_CFLAGS + Compiler flags for gmock + GMOCK_LIBS Linker flags for gmock + GTEST_CONFIG + Path to gtest-config script + GTEST_CFLAGS + Compiler flags for gtest + GTEST_LIBS Linker flags for gtest Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -4041,6 +4074,178 @@ else fi + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar lib "link -lib" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar lib "link -lib" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 +$as_echo_n "checking the archiver ($AR) interface... " >&6; } +if ${am_cv_ar_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + am_cv_ar_interface=ar + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int some_variable = 0; +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=ar + else + am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 + (eval $am_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + am_cv_ar_interface=lib + else + am_cv_ar_interface=unknown + fi + fi + rm -f conftest.lib libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 +$as_echo "$am_cv_ar_interface" >&6; } + +case $am_cv_ar_interface in +ar) + ;; +lib) + # Microsoft lib, so override with the ar-lib wrapper script. + # FIXME: It is wrong to rewrite AR. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__AR in this case, + # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something + # similar. + AR="$am_aux_dir/ar-lib $AR" + ;; +unknown) + as_fn_error $? "could not determine $AR interface" "$LINENO" 5 + ;; +esac + # By default we simply use the C compiler to build assembly code. test "${CCAS+set}" = set || CCAS=$CC @@ -5545,7 +5750,6 @@ fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : @@ -5813,7 +6017,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5859,7 +6063,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5883,7 +6087,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5928,7 +6132,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -5952,7 +6156,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6471,6 +6675,728 @@ fi done +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) +# +# DESCRIPTION +# +# Check for baseline language coverage in the compiler for the specified +# version of the C++ standard. If necessary, add switches to CXXFLAGS to +# enable support. VERSION may be '11' (for the C++11 standard) or '14' +# (for the C++14 standard). +# +# The second argument, if specified, indicates whether you insist on an +# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. +# -std=c++11). If neither is specified, you get whatever works, with +# preference for an extended mode. +# +# The third argument, if specified 'mandatory' or if left unspecified, +# indicates that baseline support for the specified C++ standard is +# required and that the macro should error out if no mode with that +# support is found. If specified 'optional', then configuration proceeds +# regardless, after defining HAVE_CXX${VERSION} if and only if a +# supporting mode is found. +# +# LICENSE +# +# Copyright (c) 2008 Benjamin Kosnik +# Copyright (c) 2012 Zack Weinberg +# Copyright (c) 2013 Roy Stogner +# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov +# Copyright (c) 2015 Paul Norman +# Copyright (c) 2015 Moritz Klammler +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 1 + + + + + + + + + + + + + + + + + + + + + + ax_cxx_compile_cxx11_required=true + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + ac_success=no + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 +$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; } +if ${ax_cv_cxx_compile_cxx11+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +// If the compiler admits that it is not ready for C++11, why torture it? +// Hopefully, this will speed up the test. + +#ifndef __cplusplus + +#error "This is not a C++ compiler" + +#elif __cplusplus < 201103L + +#error "This is not a C++11 compiler" + +#else + +namespace cxx11 +{ + + namespace test_static_assert + { + + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + } + + namespace test_final_override + { + + struct Base + { + virtual void f() {} + }; + + struct Derived : public Base + { + virtual void f() override {} + }; + + } + + namespace test_double_right_angle_brackets + { + + template < typename T > + struct check {}; + + typedef check single_type; + typedef check> double_type; + typedef check>> triple_type; + typedef check>>> quadruple_type; + + } + + namespace test_decltype + { + + int + f() + { + int a = 1; + decltype(a) b = 2; + return a + b; + } + + } + + namespace test_type_deduction + { + + template < typename T1, typename T2 > + struct is_same + { + static const bool value = false; + }; + + template < typename T > + struct is_same + { + static const bool value = true; + }; + + template < typename T1, typename T2 > + auto + add(T1 a1, T2 a2) -> decltype(a1 + a2) + { + return a1 + a2; + } + + int + test(const int c, volatile int v) + { + static_assert(is_same::value == true, ""); + static_assert(is_same::value == false, ""); + static_assert(is_same::value == false, ""); + auto ac = c; + auto av = v; + auto sumi = ac + av + 'x'; + auto sumf = ac + av + 1.0; + static_assert(is_same::value == true, ""); + static_assert(is_same::value == true, ""); + static_assert(is_same::value == true, ""); + static_assert(is_same::value == false, ""); + static_assert(is_same::value == true, ""); + return (sumf > 0.0) ? sumi : add(c, v); + } + + } + + namespace test_noexcept + { + + int f() { return 0; } + int g() noexcept { return 0; } + + static_assert(noexcept(f()) == false, ""); + static_assert(noexcept(g()) == true, ""); + + } + + namespace test_constexpr + { + + template < typename CharT > + unsigned long constexpr + strlen_c_r(const CharT *const s, const unsigned long acc) noexcept + { + return *s ? strlen_c_r(s + 1, acc + 1) : acc; + } + + template < typename CharT > + unsigned long constexpr + strlen_c(const CharT *const s) noexcept + { + return strlen_c_r(s, 0UL); + } + + static_assert(strlen_c("") == 0UL, ""); + static_assert(strlen_c("1") == 1UL, ""); + static_assert(strlen_c("example") == 7UL, ""); + static_assert(strlen_c("another\0example") == 7UL, ""); + + } + + namespace test_rvalue_references + { + + template < int N > + struct answer + { + static constexpr int value = N; + }; + + answer<1> f(int&) { return answer<1>(); } + answer<2> f(const int&) { return answer<2>(); } + answer<3> f(int&&) { return answer<3>(); } + + void + test() + { + int i = 0; + const int c = 0; + static_assert(decltype(f(i))::value == 1, ""); + static_assert(decltype(f(c))::value == 2, ""); + static_assert(decltype(f(0))::value == 3, ""); + } + + } + + namespace test_uniform_initialization + { + + struct test + { + static const int zero {}; + static const int one {1}; + }; + + static_assert(test::zero == 0, ""); + static_assert(test::one == 1, ""); + + } + + namespace test_lambdas + { + + void + test1() + { + auto lambda1 = [](){}; + auto lambda2 = lambda1; + lambda1(); + lambda2(); + } + + int + test2() + { + auto a = [](int i, int j){ return i + j; }(1, 2); + auto b = []() -> int { return '0'; }(); + auto c = [=](){ return a + b; }(); + auto d = [&](){ return c; }(); + auto e = [a, &b](int x) mutable { + const auto identity = [](int y){ return y; }; + for (auto i = 0; i < a; ++i) + a += b--; + return x + identity(a + b); + }(0); + return a + b + c + d + e; + } + + int + test3() + { + const auto nullary = [](){ return 0; }; + const auto unary = [](int x){ return x; }; + using nullary_t = decltype(nullary); + using unary_t = decltype(unary); + const auto higher1st = [](nullary_t f){ return f(); }; + const auto higher2nd = [unary](nullary_t f1){ + return [unary, f1](unary_t f2){ return f2(unary(f1())); }; + }; + return higher1st(nullary) + higher2nd(nullary)(unary); + } + + } + + namespace test_variadic_templates + { + + template + struct sum; + + template + struct sum + { + static constexpr auto value = N0 + sum::value; + }; + + template <> + struct sum<> + { + static constexpr auto value = 0; + }; + + static_assert(sum<>::value == 0, ""); + static_assert(sum<1>::value == 1, ""); + static_assert(sum<23>::value == 23, ""); + static_assert(sum<1, 2>::value == 3, ""); + static_assert(sum<5, 5, 11>::value == 21, ""); + static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); + + } + + // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae + // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function + // because of this. + namespace test_template_alias_sfinae + { + + struct foo {}; + + template + using member = typename T::member_type; + + template + void func(...) {} + + template + void func(member*) {} + + void test(); + + void test() { func(0); } + + } + +} // namespace cxx11 + +#endif // __cplusplus >= 201103L + + + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ax_cv_cxx_compile_cxx11=yes +else + ax_cv_cxx_compile_cxx11=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 +$as_echo "$ax_cv_cxx_compile_cxx11" >&6; } + if test x$ax_cv_cxx_compile_cxx11 = xyes; then + ac_success=yes + fi + + + + if test x$ac_success = xno; then + for switch in -std=c++11 -std=c++0x +std=c++11 "-h std=c++11"; do + cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 +$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } +if eval \${$cachevar+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_CXXFLAGS="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS $switch" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +// If the compiler admits that it is not ready for C++11, why torture it? +// Hopefully, this will speed up the test. + +#ifndef __cplusplus + +#error "This is not a C++ compiler" + +#elif __cplusplus < 201103L + +#error "This is not a C++11 compiler" + +#else + +namespace cxx11 +{ + + namespace test_static_assert + { + + template + struct check + { + static_assert(sizeof(int) <= sizeof(T), "not big enough"); + }; + + } + + namespace test_final_override + { + + struct Base + { + virtual void f() {} + }; + + struct Derived : public Base + { + virtual void f() override {} + }; + + } + + namespace test_double_right_angle_brackets + { + + template < typename T > + struct check {}; + + typedef check single_type; + typedef check> double_type; + typedef check>> triple_type; + typedef check>>> quadruple_type; + + } + + namespace test_decltype + { + + int + f() + { + int a = 1; + decltype(a) b = 2; + return a + b; + } + + } + + namespace test_type_deduction + { + + template < typename T1, typename T2 > + struct is_same + { + static const bool value = false; + }; + + template < typename T > + struct is_same + { + static const bool value = true; + }; + + template < typename T1, typename T2 > + auto + add(T1 a1, T2 a2) -> decltype(a1 + a2) + { + return a1 + a2; + } + + int + test(const int c, volatile int v) + { + static_assert(is_same::value == true, ""); + static_assert(is_same::value == false, ""); + static_assert(is_same::value == false, ""); + auto ac = c; + auto av = v; + auto sumi = ac + av + 'x'; + auto sumf = ac + av + 1.0; + static_assert(is_same::value == true, ""); + static_assert(is_same::value == true, ""); + static_assert(is_same::value == true, ""); + static_assert(is_same::value == false, ""); + static_assert(is_same::value == true, ""); + return (sumf > 0.0) ? sumi : add(c, v); + } + + } + + namespace test_noexcept + { + + int f() { return 0; } + int g() noexcept { return 0; } + + static_assert(noexcept(f()) == false, ""); + static_assert(noexcept(g()) == true, ""); + + } + + namespace test_constexpr + { + + template < typename CharT > + unsigned long constexpr + strlen_c_r(const CharT *const s, const unsigned long acc) noexcept + { + return *s ? strlen_c_r(s + 1, acc + 1) : acc; + } + + template < typename CharT > + unsigned long constexpr + strlen_c(const CharT *const s) noexcept + { + return strlen_c_r(s, 0UL); + } + + static_assert(strlen_c("") == 0UL, ""); + static_assert(strlen_c("1") == 1UL, ""); + static_assert(strlen_c("example") == 7UL, ""); + static_assert(strlen_c("another\0example") == 7UL, ""); + + } + + namespace test_rvalue_references + { + + template < int N > + struct answer + { + static constexpr int value = N; + }; + + answer<1> f(int&) { return answer<1>(); } + answer<2> f(const int&) { return answer<2>(); } + answer<3> f(int&&) { return answer<3>(); } + + void + test() + { + int i = 0; + const int c = 0; + static_assert(decltype(f(i))::value == 1, ""); + static_assert(decltype(f(c))::value == 2, ""); + static_assert(decltype(f(0))::value == 3, ""); + } + + } + + namespace test_uniform_initialization + { + + struct test + { + static const int zero {}; + static const int one {1}; + }; + + static_assert(test::zero == 0, ""); + static_assert(test::one == 1, ""); + + } + + namespace test_lambdas + { + + void + test1() + { + auto lambda1 = [](){}; + auto lambda2 = lambda1; + lambda1(); + lambda2(); + } + + int + test2() + { + auto a = [](int i, int j){ return i + j; }(1, 2); + auto b = []() -> int { return '0'; }(); + auto c = [=](){ return a + b; }(); + auto d = [&](){ return c; }(); + auto e = [a, &b](int x) mutable { + const auto identity = [](int y){ return y; }; + for (auto i = 0; i < a; ++i) + a += b--; + return x + identity(a + b); + }(0); + return a + b + c + d + e; + } + + int + test3() + { + const auto nullary = [](){ return 0; }; + const auto unary = [](int x){ return x; }; + using nullary_t = decltype(nullary); + using unary_t = decltype(unary); + const auto higher1st = [](nullary_t f){ return f(); }; + const auto higher2nd = [unary](nullary_t f1){ + return [unary, f1](unary_t f2){ return f2(unary(f1())); }; + }; + return higher1st(nullary) + higher2nd(nullary)(unary); + } + + } + + namespace test_variadic_templates + { + + template + struct sum; + + template + struct sum + { + static constexpr auto value = N0 + sum::value; + }; + + template <> + struct sum<> + { + static constexpr auto value = 0; + }; + + static_assert(sum<>::value == 0, ""); + static_assert(sum<1>::value == 1, ""); + static_assert(sum<23>::value == 23, ""); + static_assert(sum<1, 2>::value == 3, ""); + static_assert(sum<5, 5, 11>::value == 21, ""); + static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); + + } + + // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae + // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function + // because of this. + namespace test_template_alias_sfinae + { + + struct foo {}; + + template + using member = typename T::member_type; + + template + void func(...) {} + + template + void func(member*) {} + + void test(); + + void test() { func(0); } + + } + +} // namespace cxx11 + +#endif // __cplusplus >= 201103L + + + +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval $cachevar=yes +else + eval $cachevar=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + CXXFLAGS="$ac_save_CXXFLAGS" +fi +eval ac_res=\$$cachevar + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + if eval test x\$$cachevar = xyes; then + CXXFLAGS="$CXXFLAGS $switch" + ac_success=yes + break + fi + done + fi + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + if test x$ax_cxx_compile_cxx11_required = xtrue; then + if test x$ac_success = xno; then + as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 + fi + else + if test x$ac_success = xno; then + HAVE_CXX11=0 + { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 +$as_echo "$as_me: No compiler with C++11 support was found" >&6;} + else + HAVE_CXX11=1 + +$as_echo "#define HAVE_CXX11 1" >>confdefs.h + + fi + + + fi + + # Only build Linux client libs when compiling for Linux case $host in *-*-linux* | *-android* ) @@ -6501,6 +7427,21 @@ else fi +# Some tools (like mac ones) only support x86 currently. +case $host_cpu in + i?86|x86_64) + X86_HOST=true + ;; +esac + if test x$X86_HOST = xtrue; then + X86_HOST_TRUE= + X86_HOST_FALSE='#' +else + X86_HOST_TRUE='#' + X86_HOST_FALSE= +fi + + # Check whether --enable-processor was given. if test "${enable_processor+set}" = set; then : enableval=$enable_processor; case "${enableval}" in @@ -6557,6 +7498,229 @@ if test x$LINUX_HOST = xfalse -a x$disable_processor = xtrue -a x$disable_tools as_fn_error $? "--disable-processor and --disable-tools were specified, and not building for Linux. Nothing to build!" "$LINENO" 5 fi +# Check whether --enable-system-test-libs was given. +if test "${enable_system_test_libs+set}" = set; then : + enableval=$enable_system_test_libs; case "${enableval}" in + yes) + system_test_libs=true + ;; + no) + system_test_libs=false + ;; + *) + as_fn_error $? "bad value ${enableval} for --enable-system-test-libs" "$LINENO" 5 + ;; + esac +else + system_test_libs=false +fi + + if test x$system_test_libs = xtrue; then + SYSTEM_TEST_LIBS_TRUE= + SYSTEM_TEST_LIBS_FALSE='#' +else + SYSTEM_TEST_LIBS_TRUE='#' + SYSTEM_TEST_LIBS_FALSE= +fi + + + + + + + + +if test x$system_test_libs = xtrue; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gmock-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}gmock-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_GMOCK_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$GMOCK_CONFIG"; then + ac_cv_prog_GMOCK_CONFIG="$GMOCK_CONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_GMOCK_CONFIG="${ac_tool_prefix}gmock-config" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GMOCK_CONFIG=$ac_cv_prog_GMOCK_CONFIG +if test -n "$GMOCK_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMOCK_CONFIG" >&5 +$as_echo "$GMOCK_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_GMOCK_CONFIG"; then + ac_ct_GMOCK_CONFIG=$GMOCK_CONFIG + # Extract the first word of "gmock-config", so it can be a program name with args. +set dummy gmock-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_GMOCK_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_GMOCK_CONFIG"; then + ac_cv_prog_ac_ct_GMOCK_CONFIG="$ac_ct_GMOCK_CONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_GMOCK_CONFIG="gmock-config" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_GMOCK_CONFIG=$ac_cv_prog_ac_ct_GMOCK_CONFIG +if test -n "$ac_ct_GMOCK_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GMOCK_CONFIG" >&5 +$as_echo "$ac_ct_GMOCK_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_GMOCK_CONFIG" = x; then + GMOCK_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + GMOCK_CONFIG=$ac_ct_GMOCK_CONFIG + fi +else + GMOCK_CONFIG="$ac_cv_prog_GMOCK_CONFIG" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gtest-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}gtest-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_GTEST_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$GTEST_CONFIG"; then + ac_cv_prog_GTEST_CONFIG="$GTEST_CONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_GTEST_CONFIG="${ac_tool_prefix}gtest-config" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +GTEST_CONFIG=$ac_cv_prog_GTEST_CONFIG +if test -n "$GTEST_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTEST_CONFIG" >&5 +$as_echo "$GTEST_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_GTEST_CONFIG"; then + ac_ct_GTEST_CONFIG=$GTEST_CONFIG + # Extract the first word of "gtest-config", so it can be a program name with args. +set dummy gtest-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_GTEST_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_GTEST_CONFIG"; then + ac_cv_prog_ac_ct_GTEST_CONFIG="$ac_ct_GTEST_CONFIG" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_GTEST_CONFIG="gtest-config" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_GTEST_CONFIG=$ac_cv_prog_ac_ct_GTEST_CONFIG +if test -n "$ac_ct_GTEST_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GTEST_CONFIG" >&5 +$as_echo "$ac_ct_GTEST_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_GTEST_CONFIG" = x; then + GTEST_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + GTEST_CONFIG=$ac_ct_GTEST_CONFIG + fi +else + GTEST_CONFIG="$ac_cv_prog_GTEST_CONFIG" +fi + + GMOCK_CFLAGS=`$GMOCK_CONFIG --cppflags --cxxflags` + GMOCK_LIBS=`$GMOCK_CONFIG --ldflags --libs` + GTEST_CFLAGS=`$GTEST_CONFIG --cppflags --cxxflags` + GTEST_LIBS=`$GTEST_CONFIG --ldflags --libs` +fi + # Check whether --enable-selftest was given. if test "${enable_selftest+set}" = set; then : enableval=$enable_selftest; case "${enableval}" in @@ -6746,6 +7910,10 @@ if test -z "${ANDROID_HOST_TRUE}" && test -z "${ANDROID_HOST_FALSE}"; then as_fn_error $? "conditional \"ANDROID_HOST\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${X86_HOST_TRUE}" && test -z "${X86_HOST_FALSE}"; then + as_fn_error $? "conditional \"X86_HOST\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${DISABLE_PROCESSOR_TRUE}" && test -z "${DISABLE_PROCESSOR_FALSE}"; then as_fn_error $? "conditional \"DISABLE_PROCESSOR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -6754,6 +7922,10 @@ if test -z "${DISABLE_TOOLS_TRUE}" && test -z "${DISABLE_TOOLS_FALSE}"; then as_fn_error $? "conditional \"DISABLE_TOOLS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${SYSTEM_TEST_LIBS_TRUE}" && test -z "${SYSTEM_TEST_LIBS_FALSE}"; then + as_fn_error $? "conditional \"SYSTEM_TEST_LIBS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${SELFTEST_TRUE}" && test -z "${SELFTEST_FALSE}"; then as_fn_error $? "conditional \"SELFTEST\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/toolkit/crashreporter/google-breakpad/configure.ac b/toolkit/crashreporter/google-breakpad/configure.ac index 42a3740bb351..23195b7d3e3c 100644 --- a/toolkit/crashreporter/google-breakpad/configure.ac +++ b/toolkit/crashreporter/google-breakpad/configure.ac @@ -41,6 +41,7 @@ AM_INIT_AUTOMAKE(subdir-objects tar-ustar 1.11.1) AM_CONFIG_HEADER(src/config.h) AM_MAINTAINER_MODE +AM_PROG_AR AM_PROG_AS AC_PROG_CC AM_PROG_CC_C_O @@ -75,6 +76,9 @@ m4_include(m4/ax_pthread.m4) AX_PTHREAD AC_CHECK_HEADERS([a.out.h]) +m4_include(m4/ax_cxx_compile_stdcxx.m4) +AX_CXX_COMPILE_STDCXX(11, noext, mandatory) + # Only build Linux client libs when compiling for Linux case $host in *-*-linux* | *-android* ) @@ -91,6 +95,14 @@ case $host in esac AM_CONDITIONAL(ANDROID_HOST, test x$ANDROID_HOST = xtrue) +# Some tools (like mac ones) only support x86 currently. +case $host_cpu in + i?86|x86_64) + X86_HOST=true + ;; +esac +AM_CONDITIONAL(X86_HOST, test x$X86_HOST = xtrue) + AC_ARG_ENABLE(processor, AS_HELP_STRING([--disable-processor], [Don't build processor library] @@ -131,6 +143,39 @@ if test x$LINUX_HOST = xfalse -a x$disable_processor = xtrue -a x$disable_tools AC_MSG_ERROR([--disable-processor and --disable-tools were specified, and not building for Linux. Nothing to build!]) fi +AC_ARG_ENABLE(system-test-libs, + AS_HELP_STRING([--enable-system-test-libs], + [Use gtest/gmock/etc... from the system instead ] + [of the local copies (default is local)]), + [case "${enableval}" in + yes) + system_test_libs=true + ;; + no) + system_test_libs=false + ;; + *) + AC_MSG_ERROR(bad value ${enableval} for --enable-system-test-libs) + ;; + esac], + [system_test_libs=false]) +AM_CONDITIONAL(SYSTEM_TEST_LIBS, test x$system_test_libs = xtrue) + +AC_ARG_VAR([GMOCK_CONFIG], [Path to gmock-config script]) +AC_ARG_VAR([GMOCK_CFLAGS], [Compiler flags for gmock]) +AC_ARG_VAR([GMOCK_LIBS], [Linker flags for gmock]) +AC_ARG_VAR([GTEST_CONFIG], [Path to gtest-config script]) +AC_ARG_VAR([GTEST_CFLAGS], [Compiler flags for gtest]) +AC_ARG_VAR([GTEST_LIBS], [Linker flags for gtest]) +if test x$system_test_libs = xtrue; then + AC_CHECK_TOOL([GMOCK_CONFIG], [gmock-config]) + AC_CHECK_TOOL([GTEST_CONFIG], [gtest-config]) + GMOCK_CFLAGS=`$GMOCK_CONFIG --cppflags --cxxflags` + GMOCK_LIBS=`$GMOCK_CONFIG --ldflags --libs` + GTEST_CFLAGS=`$GTEST_CONFIG --cppflags --cxxflags` + GTEST_LIBS=`$GTEST_CONFIG --ldflags --libs` +fi + AC_ARG_ENABLE(selftest, AS_HELP_STRING([--enable-selftest], [Run extra tests with "make check" ] diff --git a/toolkit/crashreporter/google-breakpad/src/breakpad_googletest_includes.h b/toolkit/crashreporter/google-breakpad/src/breakpad_googletest_includes.h index 1cc324b2323a..19a3e980777d 100644 --- a/toolkit/crashreporter/google-breakpad/src/breakpad_googletest_includes.h +++ b/toolkit/crashreporter/google-breakpad/src/breakpad_googletest_includes.h @@ -30,8 +30,8 @@ #ifndef BREAKPAD_GOOGLETEST_INCLUDES_H__ #define BREAKPAD_GOOGLETEST_INCLUDES_H__ -#include "testing/gtest/include/gtest/gtest.h" -#include "testing/include/gmock/gmock.h" +#include "gtest/gtest.h" +#include "gmock/gmock.h" // If AddressSanitizer is used, NULL pointer dereferences generate SIGILL // (illegal instruction) instead of SIGSEGV (segmentation fault). Also, diff --git a/toolkit/crashreporter/google-breakpad/src/client/ios/Breakpad.mm b/toolkit/crashreporter/google-breakpad/src/client/ios/Breakpad.mm index 0a1fc2ad7954..ce635bd27197 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/ios/Breakpad.mm +++ b/toolkit/crashreporter/google-breakpad/src/client/ios/Breakpad.mm @@ -263,8 +263,8 @@ void Breakpad::UncaughtExceptionHandler(NSException *exception) { NSSetUncaughtExceptionHandler(NULL); if (current_breakpad_) { current_breakpad_->HandleUncaughtException(exception); + BreakpadRelease(current_breakpad_); } - BreakpadRelease(current_breakpad_); } //============================================================================= diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc index 860e8bc9f3a4..1d7d93b99cb4 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc @@ -123,6 +123,9 @@ CrashGenerationServer::Stop() void* dummy; pthread_join(thread_, &dummy); + close(control_pipe_in_); + close(control_pipe_out_); + started_ = false; } diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc index 9956d4450bb4..0a1041d62d30 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc @@ -235,7 +235,13 @@ uintptr_t ThreadInfo::GetInstructionPointer() const { } void ThreadInfo::FillCPUContext(RawContextCPU* out) const { +#if _MIPS_SIM == _ABI64 + out->context_flags = MD_CONTEXT_MIPS64_FULL; +#elif _MIPS_SIM == _ABIO32 out->context_flags = MD_CONTEXT_MIPS_FULL; +#else +# error "This mips ABI is currently not supported (n32)" +#endif for (int i = 0; i < MD_CONTEXT_MIPS_GPR_COUNT; ++i) out->iregs[i] = mcontext.gregs[i]; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc index d37fdeb01f83..c80724dd878a 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc @@ -219,7 +219,13 @@ uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { } void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { +#if _MIPS_SIM == _ABI64 + out->context_flags = MD_CONTEXT_MIPS64_FULL; +#elif _MIPS_SIM == _ABIO32 out->context_flags = MD_CONTEXT_MIPS_FULL; +#else +#error "This mips ABI is currently not supported (n32)" +#endif for (int i = 0; i < MD_CONTEXT_MIPS_GPR_COUNT; ++i) out->iregs[i] = uc->uc_mcontext.gregs[i]; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc index 2ccea4db2476..577ee8e9bc2f 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc @@ -118,7 +118,7 @@ namespace { // all these signals must be Core (see man 7 signal) because we rethrow the // signal after handling it and expect that it'll be fatal. const int kExceptionSignals[] = { - SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS + SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS, SIGTRAP }; const int kNumHandledSignals = sizeof(kExceptionSignals) / sizeof(kExceptionSignals[0]); diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc index b4065b414f88..17d84cf7be4d 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc @@ -45,7 +45,6 @@ #include "client/linux/handler/exception_handler.h" #include "client/linux/minidump_writer/minidump_writer.h" #include "common/linux/eintr_wrapper.h" -#include "common/linux/file_id.h" #include "common/linux/ignore_ret.h" #include "common/linux/linux_libc_support.h" #include "common/tests/auto_tempdir.h" @@ -94,10 +93,6 @@ void FlushInstructionCache(const char* memory, uint32_t memory_size) { #endif } -// Length of a formatted GUID string = -// sizeof(MDGUID) * 2 + 4 (for dashes) + 1 (null terminator) -const int kGUIDStringSize = 37; - void sigchld_handler(int signo) { } int CreateTMPFile(const string& dir, string* path) { @@ -262,8 +257,6 @@ TEST(ExceptionHandlerTest, ChildCrashWithFD) { ASSERT_NO_FATAL_FAILURE(ChildCrash(true)); } -#endif // !ADDRESS_SANITIZER - static bool DoneCallbackReturnFalse(const MinidumpDescriptor& descriptor, void* context, bool succeeded) { @@ -305,8 +298,6 @@ static bool InstallRaiseSIGKILL() { return sigaction(SIGSEGV, &sa, NULL) != -1; } -#ifndef ADDRESS_SANITIZER - static void CrashWithCallbacks(ExceptionHandler::FilterCallback filter, ExceptionHandler::MinidumpCallback done, string path) { @@ -821,19 +812,7 @@ TEST(ExceptionHandlerTest, ModuleInfo) { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; - char module_identifier_buffer[kGUIDStringSize]; - FileID::ConvertIdentifierToString(kModuleGUID, - module_identifier_buffer, - sizeof(module_identifier_buffer)); - string module_identifier(module_identifier_buffer); - // Strip out dashes - size_t pos; - while ((pos = module_identifier.find('-')) != string::npos) { - module_identifier.erase(pos, 1); - } - // And append a zero, because module IDs include an "age" field - // which is always zero on Linux. - module_identifier += "0"; + const string module_identifier = "33221100554477668899AABBCCDDEEFF0"; // Get some memory. char* memory = @@ -878,6 +857,8 @@ TEST(ExceptionHandlerTest, ModuleInfo) { unlink(minidump_desc.path()); } +#ifndef ADDRESS_SANITIZER + static const unsigned kControlMsgSize = CMSG_SPACE(sizeof(int)) + CMSG_SPACE(sizeof(struct ucred)); @@ -930,8 +911,6 @@ CrashHandler(const void* crash_context, size_t crash_context_size, return true; } -#ifndef ADDRESS_SANITIZER - TEST(ExceptionHandlerTest, ExternalDumper) { int fds[2]; ASSERT_NE(socketpair(AF_UNIX, SOCK_DGRAM, 0, fds), -1); diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/microdump_extra_info.h b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/microdump_extra_info.h index b9c3d30dc06e..bf01f0c7b1d4 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/microdump_extra_info.h +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/microdump_extra_info.h @@ -38,9 +38,13 @@ struct MicrodumpExtraInfo { const char* build_fingerprint; const char* product_info; const char* gpu_fingerprint; + const char* process_type; MicrodumpExtraInfo() - : build_fingerprint(NULL), product_info(NULL), gpu_fingerprint(NULL) {} + : build_fingerprint(NULL), + product_info(NULL), + gpu_fingerprint(NULL), + process_type(NULL) {} }; } diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc index aa9f94136761..6f5b435591bd 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc @@ -32,6 +32,8 @@ #include "client/linux/microdump_writer/microdump_writer.h" +#include + #include #include "client/linux/dump_writer_common/thread_info.h" @@ -40,11 +42,15 @@ #include "client/linux/handler/microdump_extra_info.h" #include "client/linux/log/log.h" #include "client/linux/minidump_writer/linux_ptrace_dumper.h" +#include "common/linux/file_id.h" #include "common/linux/linux_libc_support.h" +#include "common/memory.h" namespace { +using google_breakpad::auto_wasteful_vector; using google_breakpad::ExceptionHandler; +using google_breakpad::kDefaultBuildIdSize; using google_breakpad::LinuxDumper; using google_breakpad::LinuxPtraceDumper; using google_breakpad::MappingInfo; @@ -56,6 +62,72 @@ using google_breakpad::UContextReader; const size_t kLineBufferSize = 2048; +#if !defined(__LP64__) +// The following are only used by DumpFreeSpace, so need to be compiled +// in conditionally in the same way. + +template +Dst saturated_cast(Src src) { + if (src >= std::numeric_limits::max()) + return std::numeric_limits::max(); + if (src <= std::numeric_limits::min()) + return std::numeric_limits::min(); + return static_cast(src); +} + +int Log2Floor(uint64_t n) { + // Copied from chromium src/base/bits.h + if (n == 0) + return -1; + int log = 0; + uint64_t value = n; + for (int i = 5; i >= 0; --i) { + int shift = (1 << i); + uint64_t x = value >> shift; + if (x != 0) { + value = x; + log += shift; + } + } + assert(value == 1u); + return log; +} + +bool MappingsAreAdjacent(const MappingInfo& a, const MappingInfo& b) { + // Because of load biasing, we can end up with a situation where two + // mappings actually overlap. So we will define adjacency to also include a + // b start address that lies within a's address range (including starting + // immediately after a). + // Because load biasing only ever moves the start address backwards, the end + // address should still increase. + return a.start_addr <= b.start_addr && a.start_addr + a.size >= b.start_addr; +} + +bool MappingLessThan(const MappingInfo* a, const MappingInfo* b) { + // Return true if mapping a is before mapping b. + // For the same reason (load biasing) we compare end addresses, which - unlike + // start addresses - will not have been modified. + return a->start_addr + a->size < b->start_addr + b->size; +} + +size_t NextOrderedMapping( + const google_breakpad::wasteful_vector& mappings, + size_t curr) { + // Find the mapping that directly follows mappings[curr]. + // If no such mapping exists, return |invalid| to indicate this. + const size_t invalid = std::numeric_limits::max(); + size_t best = invalid; + for (size_t next = 0; next < mappings.size(); ++next) { + if (MappingLessThan(mappings[curr], mappings[next]) && + (best == invalid || MappingLessThan(mappings[next], mappings[best]))) { + best = next; + } + } + return best; +} + +#endif // !__LP64__ + class MicrodumpWriter { public: MicrodumpWriter(const ExceptionHandler::CrashContext* context, @@ -92,7 +164,11 @@ class MicrodumpWriter { LogLine("-----BEGIN BREAKPAD MICRODUMP-----"); DumpProductInformation(); DumpOSInformation(); + DumpProcessType(); DumpGPUInformation(); +#if !defined(__LP64__) + DumpFreeSpace(); +#endif success = DumpCrashingThread(); if (success) success = DumpMappings(); @@ -158,6 +234,16 @@ class MicrodumpWriter { LogCommitLine(); } + void DumpProcessType() { + LogAppend("P "); + if (microdump_extra_info_.process_type) { + LogAppend(microdump_extra_info_.process_type); + } else { + LogAppend("UNKNOWN"); + } + LogCommitLine(); + } + void DumpOSInformation() { const uint8_t n_cpus = static_cast(sysconf(_SC_NPROCESSORS_CONF)); @@ -179,7 +265,13 @@ class MicrodumpWriter { #elif defined(__i386__) const char kArch[] = "x86"; #elif defined(__mips__) +# if _MIPS_SIM == _ABIO32 const char kArch[] = "mips"; +# elif _MIPS_SIM == _ABI64 + const char kArch[] = "mips64"; +# else +# error "This mips ABI is currently not supported (n32)" +#endif #else #error "This code has not been ported to your platform yet" #endif @@ -330,21 +422,31 @@ class MicrodumpWriter { bool member, unsigned int mapping_id, const uint8_t* identifier) { - MDGUID module_identifier; + + auto_wasteful_vector identifier_bytes( + dumper_->allocator()); + if (identifier) { // GUID was provided by caller. - my_memcpy(&module_identifier, identifier, sizeof(MDGUID)); + identifier_bytes.insert(identifier_bytes.end(), + identifier, + identifier + sizeof(MDGUID)); } else { dumper_->ElfFileIdentifierForMapping( mapping, member, mapping_id, - reinterpret_cast(&module_identifier)); + identifier_bytes); } + // Copy as many bytes of |identifier| as will fit into a MDGUID + MDGUID module_identifier = {0}; + memcpy(&module_identifier, &identifier_bytes[0], + std::min(sizeof(MDGUID), identifier_bytes.size())); + char file_name[NAME_MAX]; char file_path[NAME_MAX]; - LinuxDumper::GetMappingEffectiveNameAndPath( + dumper_->GetMappingEffectiveNameAndPath( mapping, file_path, sizeof(file_path), file_name, sizeof(file_name)); LogAppend("M "); @@ -370,6 +472,80 @@ class MicrodumpWriter { LogCommitLine(); } +#if !defined(__LP64__) + void DumpFreeSpace() { + const google_breakpad::wasteful_vector& mappings = + dumper_->mappings(); + if (mappings.size() == 0) return; + + // This is complicated by the fact that mappings is not in order. It should + // be mostly in order, however the mapping that contains the entry point for + // the process is always at the front of the vector. + + static const int HBITS = sizeof(size_t) * 8; + size_t hole_histogram[HBITS]; + my_memset(hole_histogram, 0, sizeof(hole_histogram)); + + // Find the lowest address mapping. + size_t curr = 0; + for (size_t i = 1; i < mappings.size(); ++i) { + if (mappings[i]->start_addr < mappings[curr]->start_addr) curr = i; + } + + uintptr_t lo_addr = mappings[curr]->start_addr; + + size_t hole_cnt = 0; + size_t hole_max = 0; + size_t hole_sum = 0; + + while (true) { + // Skip to the end of an adjacent run of mappings. This is an optimization + // for the fact that mappings is mostly sorted. + while (curr != mappings.size() - 1 && + MappingsAreAdjacent(*mappings[curr], *mappings[curr + 1])) { + ++curr; + } + + size_t next = NextOrderedMapping(mappings, curr); + if (next == std::numeric_limits::max()) + break; + + uintptr_t hole_lo = mappings[curr]->start_addr + mappings[curr]->size; + uintptr_t hole_hi = mappings[next]->start_addr; + + if (hole_hi > hole_lo) { + size_t hole_sz = hole_hi - hole_lo; + hole_sum += hole_sz; + hole_max = std::max(hole_sz, hole_max); + ++hole_cnt; + ++hole_histogram[Log2Floor(hole_sz)]; + } + curr = next; + } + + uintptr_t hi_addr = mappings[curr]->start_addr + mappings[curr]->size; + + LogAppend("H "); + LogAppend(lo_addr); + LogAppend(" "); + LogAppend(hi_addr); + LogAppend(" "); + LogAppend(saturated_cast(hole_cnt)); + LogAppend(" "); + LogAppend(hole_max); + LogAppend(" "); + LogAppend(hole_sum); + for (unsigned int i = 0; i < HBITS; ++i) { + if (!hole_histogram[i]) continue; + LogAppend(" "); + LogAppend(saturated_cast(i)); + LogAppend(":"); + LogAppend(saturated_cast(hole_histogram[i])); + } + LogCommitLine(); + } +#endif + // Write information about the mappings in effect. bool DumpMappings() { // First write all the mappings from the dumper diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc index d732824593bf..622f05069432 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc @@ -49,8 +49,9 @@ namespace google_breakpad { LinuxCoreDumper::LinuxCoreDumper(pid_t pid, const char* core_path, - const char* procfs_path) - : LinuxDumper(pid), + const char* procfs_path, + const char* root_prefix) + : LinuxDumper(pid, root_prefix), core_path_(core_path), procfs_path_(procfs_path), thread_infos_(&allocator_, 8) { diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h index 8537896eecf4..8a7c924b61cd 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h @@ -47,7 +47,9 @@ class LinuxCoreDumper : public LinuxDumper { // its proc files at |procfs_path|. If |procfs_path| is a copy of // /proc/, it should contain the following files: // auxv, cmdline, environ, exe, maps, status - LinuxCoreDumper(pid_t pid, const char* core_path, const char* procfs_path); + // See LinuxDumper for the purpose of |root_prefix|. + LinuxCoreDumper(pid_t pid, const char* core_path, const char* procfs_path, + const char* root_prefix = ""); // Implements LinuxDumper::BuildProcPath(). // Builds a proc path for a certain pid for a node (/proc//). diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc index 8f6a423ee04f..ae0c965b34d1 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc @@ -39,6 +39,16 @@ using namespace google_breakpad; +TEST(LinuxCoreDumperTest, GetMappingAbsolutePath) { + const LinuxCoreDumper dumper(getpid(), "core", "/tmp", "/mnt/root"); + const MappingInfo mapping = { 0, 0, 0, false, "/usr/lib/libc.so" }; + + char path[PATH_MAX]; + dumper.GetMappingAbsolutePath(mapping, path); + + EXPECT_STREQ("/mnt/root/usr/lib/libc.so", path); +} + TEST(LinuxCoreDumperTest, BuildProcPath) { const pid_t pid = getpid(); const char procfs_path[] = "/procfs_copy"; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc index 43b74ad9de7e..a95ec7ec812c 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc @@ -70,7 +70,6 @@ static const int DT_ANDROID_RELA = DT_LOOS + 4; static const char kMappedFileUnsafePrefix[] = "/dev/"; static const char kDeletedSuffix[] = " (deleted)"; -static const char kReservedFlags[] = " ---p"; inline static bool IsMappedFileOpenUnsafe( const google_breakpad::MappingInfo& mapping) { @@ -85,17 +84,186 @@ inline static bool IsMappedFileOpenUnsafe( namespace google_breakpad { +#if defined(__CHROMEOS__) + +namespace { + +// Recover memory mappings before writing dump on ChromeOS +// +// On Linux, breakpad relies on /proc/[pid]/maps to associate symbols from +// addresses. ChromeOS' hugepage implementation replaces some segments with +// anonymous private pages, which is a restriction of current implementation +// in Linux kernel at the time of writing. Thus, breakpad can no longer +// symbolize addresses from those text segments replaced with hugepages. +// +// This postprocess tries to recover the mappings. Because hugepages are always +// inserted in between some .text sections, it tries to infer the names and +// offsets of the segments, by looking at segments immediately precede and +// succeed them. +// +// For example, a text segment before hugepage optimization +// 02001000-03002000 r-xp /opt/google/chrome/chrome +// +// can be broken into +// 02001000-02200000 r-xp /opt/google/chrome/chrome +// 02200000-03000000 r-xp +// 03000000-03002000 r-xp /opt/google/chrome/chrome +// +// For more details, see: +// crbug.com/628040 ChromeOS' use of hugepages confuses crash symbolization + +// Copied from CrOS' hugepage implementation, which is unlikely to change. +// The hugepage size is 2M. +const unsigned int kHpageShift = 21; +const size_t kHpageSize = (1 << kHpageShift); +const size_t kHpageMask = (~(kHpageSize - 1)); + +// Find and merge anonymous r-xp segments with surrounding named segments. +// There are two cases: + +// Case 1: curr, next +// curr is anonymous +// curr is r-xp +// curr.size >= 2M +// curr.size is a multiple of 2M. +// next is backed by some file. +// curr and next are contiguous. +// offset(next) == sizeof(curr) +void TryRecoverMappings(MappingInfo *curr, MappingInfo *next) { + // Merged segments are marked with size = 0. + if (curr->size == 0 || next->size == 0) + return; + + if (curr->size >= kHpageSize && + curr->exec && + (curr->size & kHpageMask) == curr->size && + (curr->start_addr & kHpageMask) == curr->start_addr && + curr->name[0] == '\0' && + next->name[0] != '\0' && + curr->start_addr + curr->size == next->start_addr && + curr->size == next->offset) { + + // matched + my_strlcpy(curr->name, next->name, NAME_MAX); + if (next->exec) { + // (curr, next) + curr->size += next->size; + next->size = 0; + } + } +} + +// Case 2: prev, curr, next +// curr is anonymous +// curr is r-xp +// curr.size >= 2M +// curr.size is a multiple of 2M. +// next and prev are backed by the same file. +// prev, curr and next are contiguous. +// offset(next) == offset(prev) + sizeof(prev) + sizeof(curr) +void TryRecoverMappings(MappingInfo *prev, MappingInfo *curr, + MappingInfo *next) { + // Merged segments are marked with size = 0. + if (prev->size == 0 || curr->size == 0 || next->size == 0) + return; + + if (curr->size >= kHpageSize && + curr->exec && + (curr->size & kHpageMask) == curr->size && + (curr->start_addr & kHpageMask) == curr->start_addr && + curr->name[0] == '\0' && + next->name[0] != '\0' && + curr->start_addr + curr->size == next->start_addr && + prev->start_addr + prev->size == curr->start_addr && + my_strncmp(prev->name, next->name, NAME_MAX) == 0 && + next->offset == prev->offset + prev->size + curr->size) { + + // matched + my_strlcpy(curr->name, prev->name, NAME_MAX); + if (prev->exec) { + curr->offset = prev->offset; + curr->start_addr = prev->start_addr; + if (next->exec) { + // (prev, curr, next) + curr->size += prev->size + next->size; + prev->size = 0; + next->size = 0; + } else { + // (prev, curr), next + curr->size += prev->size; + prev->size = 0; + } + } else { + curr->offset = prev->offset + prev->size; + if (next->exec) { + // prev, (curr, next) + curr->size += next->size; + next->size = 0; + } else { + // prev, curr, next + } + } + } +} + +// mappings_ is sorted excepted for the first entry. +// This function tries to merge segemnts into the first entry, +// then check for other sorted entries. +// See LinuxDumper::EnumerateMappings(). +void CrOSPostProcessMappings(wasteful_vector& mappings) { + // Find the candidate "next" to first segment, which is the only one that + // could be out-of-order. + size_t l = 1; + size_t r = mappings.size(); + size_t next = mappings.size(); + while (l < r) { + int m = (l + r) / 2; + if (mappings[m]->start_addr > mappings[0]->start_addr) + r = next = m; + else + l = m + 1; + } + + // Try to merge segments into the first. + if (next < mappings.size()) { + TryRecoverMappings(mappings[0], mappings[next]); + if (next - 1 > 0) + TryRecoverMappings(mappings[next - 1], mappings[0], mappings[next]); + } + + // Iterate through normal, sorted cases. + // Normal case 1. + for (size_t i = 1; i < mappings.size() - 1; i++) + TryRecoverMappings(mappings[i], mappings[i + 1]); + + // Normal case 2. + for (size_t i = 1; i < mappings.size() - 2; i++) + TryRecoverMappings(mappings[i], mappings[i + 1], mappings[i + 2]); + + // Collect merged (size == 0) segments. + size_t f, e; + for (f = e = 0; e < mappings.size(); e++) + if (mappings[e]->size > 0) + mappings[f++] = mappings[e]; + mappings.resize(f); +} + +} // namespace +#endif // __CHROMEOS__ + // All interesting auvx entry types are below AT_SYSINFO_EHDR #define AT_MAX AT_SYSINFO_EHDR -LinuxDumper::LinuxDumper(pid_t pid) +LinuxDumper::LinuxDumper(pid_t pid, const char* root_prefix) : pid_(pid), + root_prefix_(root_prefix), crash_address_(0), crash_signal_(0), crash_thread_(pid), threads_(&allocator_, 8), mappings_(&allocator_), auxv_(&allocator_, AT_MAX + 1) { + assert(root_prefix_ && my_strlen(root_prefix_) < PATH_MAX); // The passed-in size to the constructor (above) is only a hint. // Must call .resize() to do actual initialization of the elements. auxv_.resize(AT_MAX + 1); @@ -112,6 +280,11 @@ bool LinuxDumper::LateInit() { #if defined(__ANDROID__) LatePostprocessMappings(); #endif + +#if defined(__CHROMEOS__) + CrOSPostProcessMappings(mappings_); +#endif + return true; } @@ -119,9 +292,8 @@ bool LinuxDumper::ElfFileIdentifierForMapping(const MappingInfo& mapping, bool member, unsigned int mapping_id, - uint8_t identifier[sizeof(MDGUID)]) { + wasteful_vector& identifier) { assert(!member || mapping_id < mappings_.size()); - my_memset(identifier, 0, sizeof(MDGUID)); if (IsMappedFileOpenUnsafe(mapping)) return false; @@ -139,14 +311,9 @@ LinuxDumper::ElfFileIdentifierForMapping(const MappingInfo& mapping, return FileID::ElfFileIdentifierFromMappedFile(linux_gate, identifier); } - char filename[NAME_MAX]; - size_t filename_len = my_strlen(mapping.name); - if (filename_len >= NAME_MAX) { - assert(false); + char filename[PATH_MAX]; + if (!GetMappingAbsolutePath(mapping, filename)) return false; - } - my_memcpy(filename, mapping.name, filename_len); - filename[filename_len] = '\0'; bool filename_modified = HandleDeletedFileInMapping(filename); MemoryMappedFile mapped_file(filename, mapping.offset); @@ -156,13 +323,19 @@ LinuxDumper::ElfFileIdentifierForMapping(const MappingInfo& mapping, bool success = FileID::ElfFileIdentifierFromMappedFile(mapped_file.data(), identifier); if (success && member && filename_modified) { - mappings_[mapping_id]->name[filename_len - + mappings_[mapping_id]->name[my_strlen(mapping.name) - sizeof(kDeletedSuffix) + 1] = '\0'; } return success; } +bool LinuxDumper::GetMappingAbsolutePath(const MappingInfo& mapping, + char path[PATH_MAX]) const { + return my_strlcpy(path, root_prefix_, PATH_MAX) < PATH_MAX && + my_strlcat(path, mapping.name, PATH_MAX) < PATH_MAX; +} + namespace { bool ElfFileSoNameFromMappedFile( const void* elf_base, char* soname, size_t soname_size) { @@ -212,23 +385,16 @@ bool ElfFileSoNameFromMappedFile( // for |mapping|. If the SONAME is found copy it into the passed buffer // |soname| and return true. The size of the buffer is |soname_size|. // The SONAME will be truncated if it is too long to fit in the buffer. -bool ElfFileSoName( +bool ElfFileSoName(const LinuxDumper& dumper, const MappingInfo& mapping, char* soname, size_t soname_size) { if (IsMappedFileOpenUnsafe(mapping)) { // Not safe return false; } - char filename[NAME_MAX]; - size_t filename_len = my_strlen(mapping.name); - if (filename_len >= NAME_MAX) { - assert(false); - // name too long + char filename[PATH_MAX]; + if (!dumper.GetMappingAbsolutePath(mapping, filename)) return false; - } - - my_memcpy(filename, mapping.name, filename_len); - filename[filename_len] = '\0'; MemoryMappedFile mapped_file(filename, mapping.offset); if (!mapped_file.data() || mapped_file.size() < SELFMAG) { @@ -242,7 +408,6 @@ bool ElfFileSoName( } // namespace -// static void LinuxDumper::GetMappingEffectiveNameAndPath(const MappingInfo& mapping, char* file_path, size_t file_path_size, @@ -255,8 +420,10 @@ void LinuxDumper::GetMappingEffectiveNameAndPath(const MappingInfo& mapping, // apk on Android). We try to find the name of the shared object (SONAME) by // looking in the file for ELF sections. bool mapped_from_archive = false; - if (mapping.exec && mapping.offset != 0) - mapped_from_archive = ElfFileSoName(mapping, file_name, file_name_size); + if (mapping.exec && mapping.offset != 0) { + mapped_from_archive = + ElfFileSoName(*this, mapping, file_name, file_name_size); + } if (mapped_from_archive) { // Some tools (e.g., stackwalk) extract the basename from the pathname. In @@ -354,24 +521,8 @@ bool LinuxDumper::EnumerateMappings() { MappingInfo* module = mappings_.back(); if ((start_addr == module->start_addr + module->size) && (my_strlen(name) == my_strlen(module->name)) && - (my_strncmp(name, module->name, my_strlen(name)) == 0)) { - module->size = end_addr - module->start_addr; - line_reader->PopLine(line_len); - continue; - } - } - // Also merge mappings that result from address ranges that the - // linker reserved but which a loaded library did not use. These - // appear as an anonymous private mapping with no access flags set - // and which directly follow an executable mapping. - if (!name && !mappings_.empty()) { - MappingInfo* module = mappings_.back(); - if ((start_addr == module->start_addr + module->size) && - module->exec && - module->name[0] == '/' && - offset == 0 && my_strncmp(i2, - kReservedFlags, - sizeof(kReservedFlags) - 1) == 0) { + (my_strncmp(name, module->name, my_strlen(name)) == 0) && + (exec == module->exec)) { module->size = end_addr - module->start_addr; line_reader->PopLine(line_len); continue; @@ -580,10 +731,13 @@ bool LinuxDumper::HandleDeletedFileInMapping(char* path) const { // Check |path| against the /proc/pid/exe 'symlink'. char exe_link[NAME_MAX]; - char new_path[NAME_MAX]; if (!BuildProcPath(exe_link, pid_, "exe")) return false; - if (!SafeReadLink(exe_link, new_path)) + MappingInfo new_mapping = {0}; + if (!SafeReadLink(exe_link, new_mapping.name)) + return false; + char new_path[PATH_MAX]; + if (!GetMappingAbsolutePath(new_mapping, new_path)) return false; if (my_strcmp(path, new_path) != 0) return false; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h index 6a3a100f3237..c3c799267c40 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h @@ -49,6 +49,7 @@ #include "client/linux/dump_writer_common/mapping_info.h" #include "client/linux/dump_writer_common/thread_info.h" +#include "common/linux/file_id.h" #include "common/memory.h" #include "google_breakpad/common/minidump_format.h" @@ -72,7 +73,9 @@ const char kLinuxGateLibraryName[] = "linux-gate.so"; class LinuxDumper { public: - explicit LinuxDumper(pid_t pid); + // The |root_prefix| is prepended to mapping paths before opening them, which + // is useful if the crash originates from a chroot. + explicit LinuxDumper(pid_t pid, const char* root_prefix = ""); virtual ~LinuxDumper(); @@ -127,7 +130,7 @@ class LinuxDumper { bool ElfFileIdentifierForMapping(const MappingInfo& mapping, bool member, unsigned int mapping_id, - uint8_t identifier[sizeof(MDGUID)]); + wasteful_vector& identifier); uintptr_t crash_address() const { return crash_address_; } void set_crash_address(uintptr_t crash_address) { @@ -140,16 +143,21 @@ class LinuxDumper { pid_t crash_thread() const { return crash_thread_; } void set_crash_thread(pid_t crash_thread) { crash_thread_ = crash_thread; } + // Concatenates the |root_prefix_| and |mapping| path. Writes into |path| and + // returns true unless the string is too long. + bool GetMappingAbsolutePath(const MappingInfo& mapping, + char path[PATH_MAX]) const; + // Extracts the effective path and file name of from |mapping|. In most cases // the effective name/path are just the mapping's path and basename. In some // other cases, however, a library can be mapped from an archive (e.g., when // loading .so libs from an apk on Android) and this method is able to // reconstruct the original file name. - static void GetMappingEffectiveNameAndPath(const MappingInfo& mapping, - char* file_path, - size_t file_path_size, - char* file_name, - size_t file_name_size); + void GetMappingEffectiveNameAndPath(const MappingInfo& mapping, + char* file_path, + size_t file_path_size, + char* file_name, + size_t file_name_size); protected: bool ReadAuxv(); @@ -172,6 +180,9 @@ class LinuxDumper { // ID of the crashed process. const pid_t pid_; + // Path of the root directory to which mapping paths are relative. + const char* const root_prefix_; + // Virtual address at which the process crashed. uintptr_t crash_address_; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc index 838ea5f6bacd..be533e157d8b 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc @@ -66,6 +66,7 @@ using namespace google_breakpad; namespace { +typedef wasteful_vector id_vector; typedef testing::Test LinuxPtraceDumperTest; /* Fixture for running tests in a child process. */ @@ -105,11 +106,17 @@ class LinuxPtraceDumperChildTest : public testing::Test { * This is achieved by defining a TestBody macro further below. */ virtual void RealTestBody() = 0; + + id_vector make_vector() { + return id_vector(&allocator, kDefaultBuildIdSize); + } + private: static const int kFatalFailure = 1; static const int kNonFatalFailure = 2; pid_t child_pid_; + PageAllocator allocator; }; } // namespace @@ -310,14 +317,15 @@ TEST_F(LinuxPtraceDumperChildTest, LinuxGateMappingID) { // Need to suspend the child so ptrace actually works. ASSERT_TRUE(dumper.ThreadsSuspend()); - uint8_t identifier[sizeof(MDGUID)]; + id_vector identifier(make_vector()); ASSERT_TRUE(dumper.ElfFileIdentifierForMapping(*mappings[index], true, index, identifier)); - uint8_t empty_identifier[sizeof(MDGUID)]; - memset(empty_identifier, 0, sizeof(empty_identifier)); - EXPECT_NE(0, memcmp(empty_identifier, identifier, sizeof(identifier))); + + id_vector empty_identifier(make_vector()); + empty_identifier.resize(kDefaultBuildIdSize, 0); + EXPECT_NE(empty_identifier, identifier); EXPECT_TRUE(dumper.ThreadsResume()); } #endif @@ -343,19 +351,18 @@ TEST_F(LinuxPtraceDumperChildTest, FileIDsMatch) { } ASSERT_TRUE(found_exe); - uint8_t identifier1[sizeof(MDGUID)]; - uint8_t identifier2[sizeof(MDGUID)]; + id_vector identifier1(make_vector()); + id_vector identifier2(make_vector()); EXPECT_TRUE(dumper.ElfFileIdentifierForMapping(*mappings[i], true, i, identifier1)); FileID fileid(exe_name); EXPECT_TRUE(fileid.ElfFileIdentifier(identifier2)); - char identifier_string1[37]; - char identifier_string2[37]; - FileID::ConvertIdentifierToString(identifier1, identifier_string1, - 37); - FileID::ConvertIdentifierToString(identifier2, identifier_string2, - 37); - EXPECT_STREQ(identifier_string1, identifier_string2); + + string identifier_string1 = + FileID::ConvertIdentifierToUUIDString(identifier1); + string identifier_string2 = + FileID::ConvertIdentifierToUUIDString(identifier2); + EXPECT_EQ(identifier_string1, identifier_string2); } /* Get back to normal behavior of TEST*() macros wrt TestBody. */ diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc index 8413662ea499..a5cdbd5e6345 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc @@ -73,6 +73,7 @@ #include "client/linux/minidump_writer/linux_ptrace_dumper.h" #include "client/linux/minidump_writer/proc_cpuinfo_reader.h" #include "client/minidump_file_writer.h" +#include "common/linux/file_id.h" #include "common/linux/linux_libc_support.h" #include "common/minidump_type_helper.h" #include "google_breakpad/common/minidump_format.h" @@ -81,8 +82,10 @@ namespace { using google_breakpad::AppMemoryList; +using google_breakpad::auto_wasteful_vector; using google_breakpad::ExceptionHandler; using google_breakpad::CpuSet; +using google_breakpad::kDefaultBuildIdSize; using google_breakpad::LineReader; using google_breakpad::LinuxDumper; using google_breakpad::LinuxPtraceDumper; @@ -271,6 +274,14 @@ class MinidumpWriter { if (max_stack_len >= 0 && stack_len > static_cast(max_stack_len)) { stack_len = max_stack_len; + // Skip empty chunks of length max_stack_len. + uintptr_t int_stack = reinterpret_cast(stack); + if (max_stack_len > 0) { + while (int_stack + max_stack_len < stack_pointer) { + int_stack += max_stack_len; + } + } + stack = reinterpret_cast(int_stack); } if (!memory.Allocate(stack_len)) return false; @@ -515,7 +526,7 @@ class MinidumpWriter { continue; MDRawModule mod; - if (!FillRawModule(mapping, true, i, mod, NULL)) + if (!FillRawModule(mapping, true, i, &mod, NULL)) return false; list.CopyIndexAfterObject(j++, &mod, MD_MODULE_SIZE); } @@ -524,7 +535,7 @@ class MinidumpWriter { iter != mapping_list_.end(); ++iter) { MDRawModule mod; - if (!FillRawModule(iter->first, false, 0, mod, iter->second)) + if (!FillRawModule(iter->first, false, 0, &mod, iter->second)) return false; list.CopyIndexAfterObject(j++, &mod, MD_MODULE_SIZE); } @@ -538,52 +549,51 @@ class MinidumpWriter { bool FillRawModule(const MappingInfo& mapping, bool member, unsigned int mapping_id, - MDRawModule& mod, + MDRawModule* mod, const uint8_t* identifier) { - my_memset(&mod, 0, MD_MODULE_SIZE); + my_memset(mod, 0, MD_MODULE_SIZE); - mod.base_of_image = mapping.start_addr; - mod.size_of_image = mapping.size; + mod->base_of_image = mapping.start_addr; + mod->size_of_image = mapping.size; - uint8_t cv_buf[MDCVInfoPDB70_minsize + NAME_MAX]; - uint8_t* cv_ptr = cv_buf; + auto_wasteful_vector identifier_bytes( + dumper_->allocator()); - const uint32_t cv_signature = MD_CVINFOPDB70_SIGNATURE; - my_memcpy(cv_ptr, &cv_signature, sizeof(cv_signature)); - cv_ptr += sizeof(cv_signature); - uint8_t* signature = cv_ptr; - cv_ptr += sizeof(MDGUID); if (identifier) { // GUID was provided by caller. - my_memcpy(signature, identifier, sizeof(MDGUID)); + identifier_bytes.insert(identifier_bytes.end(), + identifier, + identifier + sizeof(MDGUID)); } else { // Note: ElfFileIdentifierForMapping() can manipulate the |mapping.name|. - dumper_->ElfFileIdentifierForMapping(mapping, member, - mapping_id, signature); + dumper_->ElfFileIdentifierForMapping(mapping, + member, + mapping_id, + identifier_bytes); + } + + if (!identifier_bytes.empty()) { + UntypedMDRVA cv(&minidump_writer_); + if (!cv.Allocate(MDCVInfoELF_minsize + identifier_bytes.size())) + return false; + + const uint32_t cv_signature = MD_CVINFOELF_SIGNATURE; + cv.Copy(&cv_signature, sizeof(cv_signature)); + cv.Copy(cv.position() + sizeof(cv_signature), &identifier_bytes[0], + identifier_bytes.size()); + + mod->cv_record = cv.location(); } - my_memset(cv_ptr, 0, sizeof(uint32_t)); // Set age to 0 on Linux. - cv_ptr += sizeof(uint32_t); char file_name[NAME_MAX]; char file_path[NAME_MAX]; - LinuxDumper::GetMappingEffectiveNameAndPath( + dumper_->GetMappingEffectiveNameAndPath( mapping, file_path, sizeof(file_path), file_name, sizeof(file_name)); - const size_t file_name_len = my_strlen(file_name); - UntypedMDRVA cv(&minidump_writer_); - if (!cv.Allocate(MDCVInfoPDB70_minsize + file_name_len + 1)) - return false; - - // Write pdb_file_name - my_memcpy(cv_ptr, file_name, file_name_len + 1); - cv.Copy(cv_buf, MDCVInfoPDB70_minsize + file_name_len + 1); - - mod.cv_record = cv.location(); - MDLocationDescriptor ld; if (!minidump_writer_.WriteString(file_path, my_strlen(file_path), &ld)) return false; - mod.module_name_rva = ld.rva; + mod->module_name_rva = ld.rva; return true; } @@ -690,17 +700,14 @@ class MinidumpWriter { } #ifdef __mips__ - if (dyn.d_tag == DT_MIPS_RLD_MAP) { - r_debug = reinterpret_cast(dyn.d_un.d_ptr); - continue; - } + const int32_t debug_tag = DT_MIPS_RLD_MAP; #else - if (dyn.d_tag == DT_DEBUG) { + const int32_t debug_tag = DT_DEBUG; +#endif + if (dyn.d_tag == debug_tag) { r_debug = reinterpret_cast(dyn.d_un.d_ptr); continue; - } -#endif - else if (dyn.d_tag == DT_NULL) { + } else if (dyn.d_tag == DT_NULL) { break; } } @@ -826,7 +833,13 @@ class MinidumpWriter { // processor_architecture should always be set, do this first sys_info->processor_architecture = #if defined(__mips__) +# if _MIPS_SIM == _ABIO32 MD_CPU_ARCHITECTURE_MIPS; +# elif _MIPS_SIM == _ABI64 + MD_CPU_ARCHITECTURE_MIPS64; +# else +# error "This mips ABI is currently not supported (n32)" +#endif #elif defined(__i386__) MD_CPU_ARCHITECTURE_X86; #else @@ -842,15 +855,14 @@ class MinidumpWriter { ProcCpuInfoReader* const reader = new(allocator) ProcCpuInfoReader(fd); const char* field; while (reader->GetNextField(&field)) { - for (size_t i = 0; - i < sizeof(cpu_info_table) / sizeof(cpu_info_table[0]); - i++) { - CpuInfoEntry* entry = &cpu_info_table[i]; - if (i > 0 && entry->found) { + bool is_first_entry = true; + for (CpuInfoEntry& entry : cpu_info_table) { + if (!is_first_entry && entry.found) { // except for the 'processor' field, ignore repeated values. continue; } - if (!my_strcmp(field, entry->info_name)) { + is_first_entry = false; + if (!my_strcmp(field, entry.info_name)) { size_t value_len; const char* value = reader->GetValueAndLen(&value_len); if (value_len == 0) @@ -860,8 +872,8 @@ class MinidumpWriter { if (my_read_decimal_ptr(&val, value) == value) continue; - entry->value = static_cast(val); - entry->found = true; + entry.value = static_cast(val); + entry.found = true; } } @@ -877,10 +889,8 @@ class MinidumpWriter { } // make sure we got everything we wanted - for (size_t i = 0; - i < sizeof(cpu_info_table) / sizeof(cpu_info_table[0]); - i++) { - if (!cpu_info_table[i].found) { + for (const CpuInfoEntry& entry : cpu_info_table) { + if (!entry.found) { return false; } } @@ -1016,18 +1026,15 @@ class MinidumpWriter { new(allocator) ProcCpuInfoReader(fd); const char* field; while (reader->GetNextField(&field)) { - for (size_t i = 0; - i < sizeof(cpu_id_entries)/sizeof(cpu_id_entries[0]); - ++i) { - const CpuIdEntry* entry = &cpu_id_entries[i]; - if (my_strcmp(entry->field, field) != 0) + for (const CpuIdEntry& entry : cpu_id_entries) { + if (my_strcmp(entry.field, field) != 0) continue; uintptr_t result = 0; const char* value = reader->GetValue(); const char* p = value; if (value[0] == '0' && value[1] == 'x') { p = my_read_hex_ptr(&result, value+2); - } else if (entry->format == 'x') { + } else if (entry.format == 'x') { p = my_read_hex_ptr(&result, value); } else { p = my_read_decimal_ptr(&result, value); @@ -1035,8 +1042,8 @@ class MinidumpWriter { if (p == value) continue; - result &= (1U << entry->bit_length)-1; - result <<= entry->bit_lshift; + result &= (1U << entry.bit_length)-1; + result <<= entry.bit_lshift; sys_info->cpu.arm_cpu_info.cpuid |= static_cast(result); } @@ -1090,7 +1097,7 @@ class MinidumpWriter { const char* tag = value; size_t tag_len = value_len; const char* p = my_strchr(tag, ' '); - if (p != NULL) { + if (p) { tag_len = static_cast(p - tag); value += tag_len + 1; value_len -= tag_len + 1; @@ -1098,14 +1105,10 @@ class MinidumpWriter { tag_len = strlen(tag); value_len = 0; } - for (size_t i = 0; - i < sizeof(cpu_features_entries)/ - sizeof(cpu_features_entries[0]); - ++i) { - const CpuFeaturesEntry* entry = &cpu_features_entries[i]; - if (tag_len == strlen(entry->tag) && - !memcmp(tag, entry->tag, tag_len)) { - sys_info->cpu.arm_cpu_info.elf_hwcaps |= entry->hwcaps; + for (const CpuFeaturesEntry& entry : cpu_features_entries) { + if (tag_len == strlen(entry.tag) && + !memcmp(tag, entry.tag, tag_len)) { + sys_info->cpu.arm_cpu_info.elf_hwcaps |= entry.hwcaps; break; } } diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc index e1046e12a0b2..2e4749e7e954 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc @@ -54,10 +54,6 @@ using namespace google_breakpad; -// Length of a formatted GUID string = -// sizeof(MDGUID) * 2 + 4 (for dashes) + 1 (null terminator) -const int kGUIDStringSize = 37; - namespace { typedef testing::Test MinidumpWriterTest; @@ -137,19 +133,7 @@ TEST(MinidumpWriterTest, MappingInfo) { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; - char module_identifier_buffer[kGUIDStringSize]; - FileID::ConvertIdentifierToString(kModuleGUID, - module_identifier_buffer, - sizeof(module_identifier_buffer)); - string module_identifier(module_identifier_buffer); - // Strip out dashes - size_t pos; - while ((pos = module_identifier.find('-')) != string::npos) { - module_identifier.erase(pos, 1); - } - // And append a zero, because module IDs include an "age" field - // which is always zero on Linux. - module_identifier += "0"; + const string module_identifier = "33221100554477668899AABBCCDDEEFF0"; // Get some memory. char* memory = @@ -185,6 +169,7 @@ TEST(MinidumpWriterTest, MappingInfo) { info.start_addr = kMemoryAddress; info.size = memory_size; info.offset = 0; + info.exec = false; strcpy(info.name, kMemoryName); MappingList mappings; @@ -230,6 +215,53 @@ TEST(MinidumpWriterTest, MappingInfo) { close(fds[1]); } +// Test that a binary with a longer-than-usual build id note +// makes its way all the way through to the minidump unscathed. +// The linux_client_unittest is linked with an explicit --build-id +// in Makefile.am. +TEST(MinidumpWriterTest, BuildIDLong) { + int fds[2]; + ASSERT_NE(-1, pipe(fds)); + + const pid_t child = fork(); + if (child == 0) { + close(fds[1]); + char b; + IGNORE_RET(HANDLE_EINTR(read(fds[0], &b, sizeof(b)))); + close(fds[0]); + syscall(__NR_exit); + } + close(fds[0]); + + ExceptionHandler::CrashContext context; + memset(&context, 0, sizeof(context)); + ASSERT_EQ(0, getcontext(&context.context)); + context.tid = child; + + AutoTempDir temp_dir; + const string dump_path = temp_dir.path() + kMDWriterUnitTestFileName; + + EXPECT_TRUE(WriteMinidump(dump_path.c_str(), + child, &context, sizeof(context))); + close(fds[1]); + + // Read the minidump. Load the module list, and ensure that + // the main module has the correct debug id and code id. + Minidump minidump(dump_path); + ASSERT_TRUE(minidump.Read()); + + MinidumpModuleList* module_list = minidump.GetModuleList(); + ASSERT_TRUE(module_list); + const MinidumpModule* module = module_list->GetMainModule(); + ASSERT_TRUE(module); + const string module_identifier = "030201000504070608090A0B0C0D0E0F0"; + // This is passed explicitly to the linker in Makefile.am + const string build_id = + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"; + EXPECT_EQ(module_identifier, module->debug_identifier()); + EXPECT_EQ(build_id, module->code_identifier()); +} + // Test that mapping info can be specified, and that it overrides // existing mappings that are wholly contained within the specified // range. @@ -245,19 +277,7 @@ TEST(MinidumpWriterTest, MappingInfoContained) { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; - char module_identifier_buffer[kGUIDStringSize]; - FileID::ConvertIdentifierToString(kModuleGUID, - module_identifier_buffer, - sizeof(module_identifier_buffer)); - string module_identifier(module_identifier_buffer); - // Strip out dashes - size_t pos; - while ((pos = module_identifier.find('-')) != string::npos) { - module_identifier.erase(pos, 1); - } - // And append a zero, because module IDs include an "age" field - // which is always zero on Linux. - module_identifier += "0"; + const string module_identifier = "33221100554477668899AABBCCDDEEFF0"; // mmap a file AutoTempDir temp_dir; @@ -304,6 +324,7 @@ TEST(MinidumpWriterTest, MappingInfoContained) { info.start_addr = kMemoryAddress - memory_size; info.size = memory_size * 3; info.offset = 0; + info.exec = false; strcpy(info.name, kMemoryName); MappingList mappings; @@ -410,12 +431,10 @@ TEST(MinidumpWriterTest, DeletedBinary) { EXPECT_STREQ(binpath.c_str(), module->code_file().c_str()); // Check that the file ID is correct. FileID fileid(helper_path.c_str()); - uint8_t identifier[sizeof(MDGUID)]; + PageAllocator allocator; + wasteful_vector identifier(&allocator, kDefaultBuildIdSize); EXPECT_TRUE(fileid.ElfFileIdentifier(identifier)); - char identifier_string[kGUIDStringSize]; - FileID::ConvertIdentifierToString(identifier, - identifier_string, - kGUIDStringSize); + string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); string module_identifier(identifier_string); // Strip out dashes size_t pos; diff --git a/toolkit/crashreporter/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj b/toolkit/crashreporter/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj index 584ec5d229e2..1a93ce6dd6e4 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj +++ b/toolkit/crashreporter/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj @@ -583,7 +583,6 @@ 4DBE4769134A4F080072546A /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; 8B31007011F0CD3C00FCF3E4 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMDefines.h; path = ../../common/mac/GTMDefines.h; sourceTree = SOURCE_ROOT; }; 8B3101E911F0CDE300FCF3E4 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; - 8B31022211F0CE1000FCF3E4 /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMGarbageCollection.h; path = ../../common/mac/GTMGarbageCollection.h; sourceTree = SOURCE_ROOT; }; 8B31027711F0D3AF00FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; }; 8B31027811F0D3AF00FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; }; 8B31FFF611F0C90500FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; }; @@ -955,7 +954,6 @@ children = ( 162F64F0161C577500CD68D5 /* arch_utilities.cc */, 162F64F1161C577500CD68D5 /* arch_utilities.h */, - 8B31022211F0CE1000FCF3E4 /* GTMGarbageCollection.h */, 8B31007011F0CD3C00FCF3E4 /* GTMDefines.h */, F9C77E0F0F7DDF650045F7DB /* testing */, F9C44EE70EF0A3C1003AEBAA /* GTMLogger.h */, diff --git a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc index 3dc4f3b463dc..cdba6df4acfb 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc @@ -364,7 +364,7 @@ static uint64_t LookupSymbol(const char* symbol_name, return list.n_value; } -#if TARGET_OS_IPHONE +#if TARGET_OS_IPHONE || MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 static bool HasTaskDyldInfo() { return true; } @@ -381,13 +381,9 @@ static SInt32 GetOSVersion() { } static bool HasTaskDyldInfo() { -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 - return true; -#else return GetOSVersion() >= 0x1060; -#endif } -#endif // TARGET_OS_IPHONE +#endif // TARGET_OS_IPHONE || MAC_OS_X_VERSION_MIN_REQUIRED >= 10_6 uint64_t DynamicImages::GetDyldAllImageInfosPointer() { if (HasTaskDyldInfo()) { diff --git a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc index 38baa04e874f..48cd2e99b666 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc @@ -133,25 +133,47 @@ void MinidumpGenerator::GatherSystemInformation() { vers_path, kCFURLPOSIXPathStyle, false); - CFDataRef data; - SInt32 error; - CFURLCreateDataAndPropertiesFromResource(NULL, sys_vers, &data, NULL, NULL, - &error); - + CFReadStreamRef read_stream = CFReadStreamCreateWithFile(NULL, sys_vers); + CFRelease(sys_vers); + if (!read_stream) { + return; + } + if (!CFReadStreamOpen(read_stream)) { + CFRelease(read_stream); + return; + } + CFMutableDataRef data = NULL; + while (true) { + // Actual data file tests: Mac at 480 bytes and iOS at 413 bytes. + const CFIndex kMaxBufferLength = 1024; + UInt8 data_bytes[kMaxBufferLength]; + CFIndex num_bytes_read = + CFReadStreamRead(read_stream, data_bytes, kMaxBufferLength); + if (num_bytes_read < 0) { + if (data) { + CFRelease(data); + data = NULL; + } + break; + } else if (num_bytes_read == 0) { + break; + } else if (!data) { + data = CFDataCreateMutable(NULL, 0); + } + CFDataAppendBytes(data, data_bytes, num_bytes_read); + } + CFReadStreamClose(read_stream); + CFRelease(read_stream); if (!data) { - CFRelease(sys_vers); return; } - - CFDictionaryRef list = static_cast - (CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable, - NULL)); + CFDictionaryRef list = + static_cast(CFPropertyListCreateWithData( + NULL, data, kCFPropertyListImmutable, NULL, NULL)); + CFRelease(data); if (!list) { - CFRelease(sys_vers); - CFRelease(data); return; } - CFStringRef build_version = static_cast (CFDictionaryGetValue(list, CFSTR("ProductBuildVersion"))); CFStringRef product_version = static_cast @@ -160,8 +182,6 @@ void MinidumpGenerator::GatherSystemInformation() { string product_str = ConvertToString(product_version); CFRelease(list); - CFRelease(sys_vers); - CFRelease(data); strlcpy(build_string_, build_str.c_str(), sizeof(build_string_)); diff --git a/toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc b/toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc index 9e905335320a..a1957f324a9c 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc @@ -44,6 +44,47 @@ #include "third_party/lss/linux_syscall_support.h" #endif +#if defined(__ANDROID__) +#include + +namespace { + +bool g_need_ftruncate_workaround = false; +bool g_checked_need_ftruncate_workaround = false; + +void CheckNeedsFTruncateWorkAround(int file) { + if (g_checked_need_ftruncate_workaround) { + return; + } + g_checked_need_ftruncate_workaround = true; + + // Attempt an idempotent truncate that chops off nothing and see if we + // run into any sort of errors. + off_t offset = sys_lseek(file, 0, SEEK_END); + if (offset == -1) { + // lseek failed. Don't apply work around. It's unlikely that we can write + // to a minidump with either method. + return; + } + + int result = ftruncate(file, offset); + if (result == -1 && errno == EACCES) { + // It very likely that we are running into the kernel bug in M devices. + // We are going to deploy the workaround for writing minidump files + // without uses of ftruncate(). This workaround should be fine even + // for kernels without the bug. + // See http://crbug.com/542840 for more details. + g_need_ftruncate_workaround = true; + } +} + +bool NeedsFTruncateWorkAround() { + return g_need_ftruncate_workaround; +} + +} // namespace +#endif // defined(__ANDROID__) + namespace google_breakpad { const MDRVA MinidumpFileWriter::kInvalidMDRVA = static_cast(-1); @@ -75,15 +116,24 @@ void MinidumpFileWriter::SetFile(const int file) { assert(file_ == -1); file_ = file; close_file_when_destroyed_ = false; +#if defined(__ANDROID__) + CheckNeedsFTruncateWorkAround(file); +#endif } bool MinidumpFileWriter::Close() { bool result = true; if (file_ != -1) { - if (-1 == ftruncate(file_, position_)) { +#if defined(__ANDROID__) + if (!NeedsFTruncateWorkAround() && ftruncate(file_, position_)) { return false; } +#else + if (ftruncate(file_, position_)) { + return false; + } +#endif #if defined(__linux__) && __linux__ result = (sys_close(file_) == 0); #else @@ -220,6 +270,20 @@ bool MinidumpFileWriter::WriteMemory(const void *src, size_t size, MDRVA MinidumpFileWriter::Allocate(size_t size) { assert(size); assert(file_ != -1); +#if defined(__ANDROID__) + if (NeedsFTruncateWorkAround()) { + // If ftruncate() is not available. We simply increase the size beyond the + // current file size. sys_write() will expand the file when data is written + // to it. Because we did not over allocate to fit memory pages, we also + // do not need to ftruncate() the file once we are done. + size_ += size; + + // We don't need to seek since the file is unchanged. + MDRVA current_position = position_; + position_ += static_cast(size); + return current_position; + } +#endif size_t aligned_size = (size + 7) & ~7; // 64-bit alignment if (position_ + aligned_size > size_) { @@ -256,14 +320,16 @@ bool MinidumpFileWriter::Copy(MDRVA position, const void *src, ssize_t size) { #if defined(__linux__) && __linux__ if (sys_lseek(file_, position, SEEK_SET) == static_cast(position)) { if (sys_write(file_, src, size) == size) { -#else - if (lseek(file_, position, SEEK_SET) == static_cast(position)) { - if (write(file_, src, size) == size) { -#endif return true; } } - +#else + if (lseek(file_, position, SEEK_SET) == static_cast(position)) { + if (write(file_, src, size) == size) { + return true; + } + } +#endif return false; } diff --git a/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc b/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc index ef581dd3a9ac..1f7b19f9a661 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc @@ -41,12 +41,6 @@ namespace google_breakpad { -static const int kWaitForHandlerThreadMs = 60000; -static const int kExceptionHandlerThreadInitialStackSize = 64 * 1024; - -// As documented on MSDN, on failure SuspendThread returns (DWORD) -1 -static const DWORD kFailedToSuspendThread = static_cast(-1); - // This is passed as the context to the MinidumpWriteDump callback. typedef struct { AppMemoryList::const_iterator iter; @@ -217,6 +211,7 @@ void ExceptionHandler::Initialize( // Don't attempt to create the thread if we could not create the semaphores. if (handler_finish_semaphore_ != NULL && handler_start_semaphore_ != NULL) { DWORD thread_id; + const int kExceptionHandlerThreadInitialStackSize = 64 * 1024; handler_thread_ = CreateThread(NULL, // lpThreadAttributes kExceptionHandlerThreadInitialStackSize, ExceptionHandlerThreadMain, @@ -353,6 +348,7 @@ ExceptionHandler::~ExceptionHandler() { // inside DllMain. is_shutdown_ = true; ReleaseSemaphore(handler_start_semaphore_, 1, NULL); + const int kWaitForHandlerThreadMs = 60000; WaitForSingleObject(handler_thread_, kWaitForHandlerThreadMs); #else TerminateThread(handler_thread_, 1); @@ -781,6 +777,8 @@ bool ExceptionHandler::WriteMinidumpForChild(HANDLE child, EXCEPTION_RECORD ex; CONTEXT ctx; EXCEPTION_POINTERS exinfo = { NULL, NULL }; + // As documented on MSDN, on failure SuspendThread returns (DWORD) -1 + const DWORD kFailedToSuspendThread = static_cast(-1); DWORD last_suspend_count = kFailedToSuspendThread; HANDLE child_thread_handle = OpenThread(THREAD_GET_CONTEXT | THREAD_QUERY_INFORMATION | diff --git a/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/procfs.h b/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/procfs.h index 27223ea34a9a..185124364e6c 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/procfs.h +++ b/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/procfs.h @@ -101,8 +101,8 @@ struct elf_prpsinfo { unsigned int pr_uid; unsigned int pr_gid; #elif defined(__mips__) - unsigned long pr_uid; - unsigned long pr_gid; + __kernel_uid_t pr_uid; + __kernel_gid_t pr_gid; #else unsigned short pr_uid; unsigned short pr_gid; diff --git a/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/user.h b/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/user.h index 5f0360475dcf..1eb02a57d2cc 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/user.h +++ b/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/user.h @@ -34,12 +34,20 @@ // glibc) and therefore avoid doing otherwise awkward #ifdefs in the code. // The following quirks are currently handled by this file: // - i386: Use the Android NDK but alias user_fxsr_struct > user_fpxregs_struct. -// - aarch64: Add missing user_regs_struct and user_fpsimd_struct structs. +// - aarch64: +// - NDK r10: Add missing user_regs_struct and user_fpsimd_struct structs. +// - NDK r11+: Add missing include // - Other platforms: Just use the Android NDK unchanged. // TODO(primiano): remove these changes after Chromium has stably rolled to // an NDK with the appropriate fixes. +#if defined(ANDROID_NDK_MAJOR_VERSION) && ANDROID_NDK_MAJOR_VERSION > 10 +#ifdef __aarch64__ +#include +#endif // __aarch64__ +#endif // defined(ANDROID_NDK_MAJOR_VERSION) && ANDROID_NDK_MAJOR_VERSION > 10 + #include_next #ifdef __i386__ @@ -52,6 +60,7 @@ typedef struct user_fxsr_struct user_fpxregs_struct; #endif // __cplusplus #endif // __i386__ +#if !defined(ANDROID_NDK_MAJOR_VERSION) || ANDROID_NDK_MAJOR_VERSION == 10 #ifdef __aarch64__ #ifdef __cplusplus extern "C" { @@ -71,5 +80,6 @@ struct user_fpsimd_struct { } // extern "C" #endif // __cplusplus #endif // __aarch64__ +#endif // defined(ANDROID_NDK_VERSION) && ANDROID_NDK_MAJOR_VERSION == 10 #endif // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_USER_H diff --git a/toolkit/crashreporter/google-breakpad/src/common/common.gyp b/toolkit/crashreporter/google-breakpad/src/common/common.gyp index 5a666de61f03..08772bf7561a 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/common.gyp +++ b/toolkit/crashreporter/google-breakpad/src/common/common.gyp @@ -35,6 +35,11 @@ ['OS=="linux"', { 'defines': ['HAVE_A_OUT_H'], }], + ['OS!="android"', {'sources/': [['exclude', '(^|/)android/']]}], + ['OS!="linux"', {'sources/': [['exclude', '(^|/)linux/']]}], + ['OS!="mac"', {'sources/': [['exclude', '(^|/)mac/']]}], + ['OS!="solaris"', {'sources/': [['exclude', '(^|/)solaris/']]}], + ['OS!="win"', {'sources/': [['exclude', '(^|/)windows/']]}], ], }, 'targets': [ @@ -70,6 +75,8 @@ 'dwarf/dwarf2reader.cc', 'dwarf/dwarf2reader.h', 'dwarf/dwarf2reader_test_common.h', + 'dwarf/elf_reader.cc', + 'dwarf/elf_reader.h', 'dwarf/functioninfo.cc', 'dwarf/functioninfo.h', 'dwarf/line_state_machine.h', diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader-inl.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader-inl.h index 3c167089f721..42c92f943f40 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader-inl.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader-inl.h @@ -32,16 +32,15 @@ #include "common/dwarf/bytereader.h" #include +#include namespace dwarf2reader { -inline uint8 ByteReader::ReadOneByte(const char* buffer) const { +inline uint8 ByteReader::ReadOneByte(const uint8_t *buffer) const { return buffer[0]; } -inline uint16 ByteReader::ReadTwoBytes(const char* signed_buffer) const { - const unsigned char *buffer - = reinterpret_cast(signed_buffer); +inline uint16 ByteReader::ReadTwoBytes(const uint8_t *buffer) const { const uint16 buffer0 = buffer[0]; const uint16 buffer1 = buffer[1]; if (endian_ == ENDIANNESS_LITTLE) { @@ -51,9 +50,7 @@ inline uint16 ByteReader::ReadTwoBytes(const char* signed_buffer) const { } } -inline uint64 ByteReader::ReadFourBytes(const char* signed_buffer) const { - const unsigned char *buffer - = reinterpret_cast(signed_buffer); +inline uint64 ByteReader::ReadFourBytes(const uint8_t *buffer) const { const uint32 buffer0 = buffer[0]; const uint32 buffer1 = buffer[1]; const uint32 buffer2 = buffer[2]; @@ -65,9 +62,7 @@ inline uint64 ByteReader::ReadFourBytes(const char* signed_buffer) const { } } -inline uint64 ByteReader::ReadEightBytes(const char* signed_buffer) const { - const unsigned char *buffer - = reinterpret_cast(signed_buffer); +inline uint64 ByteReader::ReadEightBytes(const uint8_t *buffer) const { const uint64 buffer0 = buffer[0]; const uint64 buffer1 = buffer[1]; const uint64 buffer2 = buffer[2]; @@ -89,12 +84,12 @@ inline uint64 ByteReader::ReadEightBytes(const char* signed_buffer) const { // information, plus one bit saying whether the number continues or // not. -inline uint64 ByteReader::ReadUnsignedLEB128(const char* buffer, +inline uint64 ByteReader::ReadUnsignedLEB128(const uint8_t *buffer, size_t* len) const { uint64 result = 0; size_t num_read = 0; unsigned int shift = 0; - unsigned char byte; + uint8_t byte; do { byte = *buffer++; @@ -114,12 +109,12 @@ inline uint64 ByteReader::ReadUnsignedLEB128(const char* buffer, // Read a signed LEB128 number. These are like regular LEB128 // numbers, except the last byte may have a sign bit set. -inline int64 ByteReader::ReadSignedLEB128(const char* buffer, +inline int64 ByteReader::ReadSignedLEB128(const uint8_t *buffer, size_t* len) const { int64 result = 0; unsigned int shift = 0; size_t num_read = 0; - unsigned char byte; + uint8_t byte; do { byte = *buffer++; @@ -134,18 +129,18 @@ inline int64 ByteReader::ReadSignedLEB128(const char* buffer, return result; } -inline uint64 ByteReader::ReadOffset(const char* buffer) const { +inline uint64 ByteReader::ReadOffset(const uint8_t *buffer) const { assert(this->offset_reader_); return (this->*offset_reader_)(buffer); } -inline uint64 ByteReader::ReadAddress(const char* buffer) const { +inline uint64 ByteReader::ReadAddress(const uint8_t *buffer) const { assert(this->address_reader_); return (this->*address_reader_)(buffer); } inline void ByteReader::SetCFIDataBase(uint64 section_base, - const char *buffer_base) { + const uint8_t *buffer_base) { section_base_ = section_base; buffer_base_ = buffer_base; have_section_base_ = true; diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.cc index 6802026449bd..14b43adb8f7f 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.cc @@ -27,6 +27,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include +#include #include #include "common/dwarf/bytereader-inl.h" @@ -62,7 +63,7 @@ void ByteReader::SetAddressSize(uint8 size) { } } -uint64 ByteReader::ReadInitialLength(const char* start, size_t* len) { +uint64 ByteReader::ReadInitialLength(const uint8_t *start, size_t* len) { const uint64 initial_length = ReadFourBytes(start); start += 4; @@ -100,7 +101,7 @@ bool ByteReader::UsableEncoding(DwarfPointerEncoding encoding) const { } } -uint64 ByteReader::ReadEncodedPointer(const char *buffer, +uint64 ByteReader::ReadEncodedPointer(const uint8_t *buffer, DwarfPointerEncoding encoding, size_t *len) const { // UsableEncoding doesn't approve of DW_EH_PE_omit, so we shouldn't @@ -129,7 +130,7 @@ uint64 ByteReader::ReadEncodedPointer(const char *buffer, // Round up to the next boundary. uint64 aligned = (offset + AddressSize() - 1) & -AddressSize(); // Convert back to a pointer. - const char *aligned_buffer = buffer_base_ + (aligned - skew); + const uint8_t *aligned_buffer = buffer_base_ + (aligned - skew); // Finally, store the length and actually fetch the pointer. *len = aligned_buffer - buffer + AddressSize(); return ReadAddress(aligned_buffer); @@ -242,4 +243,8 @@ uint64 ByteReader::ReadEncodedPointer(const char *buffer, return pointer; } +Endianness ByteReader::GetEndianness() const { + return endian_; +} + } // namespace dwarf2reader diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.h index e3894273f1d4..59d430348079 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.h @@ -31,7 +31,10 @@ #ifndef COMMON_DWARF_BYTEREADER_H__ #define COMMON_DWARF_BYTEREADER_H__ +#include + #include + #include "common/dwarf/types.h" #include "common/dwarf/dwarf2enums.h" @@ -59,22 +62,22 @@ class ByteReader { // Read a single byte from BUFFER and return it as an unsigned 8 bit // number. - uint8 ReadOneByte(const char* buffer) const; + uint8 ReadOneByte(const uint8_t *buffer) const; // Read two bytes from BUFFER and return them as an unsigned 16 bit // number, using this ByteReader's endianness. - uint16 ReadTwoBytes(const char* buffer) const; + uint16 ReadTwoBytes(const uint8_t *buffer) const; // Read four bytes from BUFFER and return them as an unsigned 32 bit // number, using this ByteReader's endianness. This function returns // a uint64 so that it is compatible with ReadAddress and // ReadOffset. The number it returns will never be outside the range // of an unsigned 32 bit integer. - uint64 ReadFourBytes(const char* buffer) const; + uint64 ReadFourBytes(const uint8_t *buffer) const; // Read eight bytes from BUFFER and return them as an unsigned 64 // bit number, using this ByteReader's endianness. - uint64 ReadEightBytes(const char* buffer) const; + uint64 ReadEightBytes(const uint8_t *buffer) const; // Read an unsigned LEB128 (Little Endian Base 128) number from // BUFFER and return it as an unsigned 64 bit integer. Set LEN to @@ -93,7 +96,7 @@ class ByteReader { // In other words, we break VALUE into groups of seven bits, put // them in little-endian order, and then write them as eight-bit // bytes with the high bit on all but the last. - uint64 ReadUnsignedLEB128(const char* buffer, size_t* len) const; + uint64 ReadUnsignedLEB128(const uint8_t *buffer, size_t *len) const; // Read a signed LEB128 number from BUFFER and return it as an // signed 64 bit integer. Set LEN to the number of bytes read. @@ -112,7 +115,7 @@ class ByteReader { // In other words, we break VALUE into groups of seven bits, put // them in little-endian order, and then write them as eight-bit // bytes with the high bit on all but the last. - int64 ReadSignedLEB128(const char* buffer, size_t* len) const; + int64 ReadSignedLEB128(const uint8_t *buffer, size_t *len) const; // Indicate that addresses on this architecture are SIZE bytes long. SIZE // must be either 4 or 8. (DWARF allows addresses to be any number of @@ -135,7 +138,7 @@ class ByteReader { // Read an address from BUFFER and return it as an unsigned 64 bit // integer, respecting this ByteReader's endianness and address size. You // must call SetAddressSize before calling this function. - uint64 ReadAddress(const char* buffer) const; + uint64 ReadAddress(const uint8_t *buffer) const; // DWARF actually defines two slightly different formats: 32-bit DWARF // and 64-bit DWARF. This is *not* related to the size of registers or @@ -172,14 +175,14 @@ class ByteReader { // - The 32-bit value 0xffffffff, followed by a 64-bit byte count, // indicating that the data whose length is being measured uses // the 64-bit DWARF format. - uint64 ReadInitialLength(const char* start, size_t* len); + uint64 ReadInitialLength(const uint8_t *start, size_t *len); // Read an offset from BUFFER and return it as an unsigned 64 bit // integer, respecting the ByteReader's endianness. In 32-bit DWARF, the // offset is 4 bytes long; in 64-bit DWARF, the offset is eight bytes // long. You must call ReadInitialLength or SetOffsetSize before calling // this function; see the comments above for details. - uint64 ReadOffset(const char* buffer) const; + uint64 ReadOffset(const uint8_t *buffer) const; // Return the current offset size, in bytes. // A return value of 4 indicates that we are reading 32-bit DWARF. @@ -234,7 +237,7 @@ class ByteReader { // is BUFFER_BASE. This allows us to find the address that a given // byte in our buffer would have when loaded into the program the // data describes. We need this to resolve DW_EH_PE_pcrel pointers. - void SetCFIDataBase(uint64 section_base, const char *buffer_base); + void SetCFIDataBase(uint64 section_base, const uint8_t *buffer_base); // Indicate that the base address of the program's ".text" section // is TEXT_BASE. We need this to resolve DW_EH_PE_textrel pointers. @@ -273,13 +276,15 @@ class ByteReader { // base address this reader hasn't been given, so you should check // with ValidEncoding and UsableEncoding first if you would rather // die in a more helpful way. - uint64 ReadEncodedPointer(const char *buffer, DwarfPointerEncoding encoding, + uint64 ReadEncodedPointer(const uint8_t *buffer, + DwarfPointerEncoding encoding, size_t *len) const; + Endianness GetEndianness() const; private: // Function pointer type for our address and offset readers. - typedef uint64 (ByteReader::*AddressReader)(const char*) const; + typedef uint64 (ByteReader::*AddressReader)(const uint8_t *) const; // Read an offset from BUFFER and return it as an unsigned 64 bit // integer. DWARF2/3 define offsets as either 4 or 8 bytes, @@ -302,7 +307,7 @@ class ByteReader { bool have_section_base_, have_text_base_, have_data_base_; bool have_function_base_; uint64 section_base_, text_base_, data_base_, function_base_; - const char *buffer_base_; + const uint8_t *buffer_base_; }; } // namespace dwarf2reader diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader_unittest.cc index 4311ab6a2539..e66062d1fe48 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader_unittest.cc @@ -31,6 +31,8 @@ // bytereader_unittest.cc: Unit tests for dwarf2reader::ByteReader +#include + #include #include "breakpad_googletest_includes.h" @@ -71,7 +73,7 @@ TEST_F(Reader, SimpleConstructor) { .LEB128(-0x4f337badf4483f83LL) .D32(0xfec319c9); ASSERT_TRUE(section.GetContents(&contents)); - const char *data = contents.data(); + const uint8_t *data = reinterpret_cast(contents.data()); EXPECT_EQ(0xc0U, reader.ReadOneByte(data)); EXPECT_EQ(0xcf0dU, reader.ReadTwoBytes(data + 1)); EXPECT_EQ(0x96fdd219U, reader.ReadFourBytes(data + 3)); @@ -375,7 +377,7 @@ TEST_F(Reader, ValidEncodings) { } TEST_F(ReaderDeathTest, DW_EH_PE_omit) { - static const char data[1] = { 42 }; + static const uint8_t data[] = { 42 }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); EXPECT_DEATH(reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_omit, @@ -384,7 +386,7 @@ TEST_F(ReaderDeathTest, DW_EH_PE_omit) { } TEST_F(Reader, DW_EH_PE_absptr4) { - static const char data[] = { 0x27, 0x57, 0xea, 0x40 }; + static const uint8_t data[] = { 0x27, 0x57, 0xea, 0x40 }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(4); EXPECT_EQ(0x40ea5727U, @@ -394,7 +396,7 @@ TEST_F(Reader, DW_EH_PE_absptr4) { } TEST_F(Reader, DW_EH_PE_absptr8) { - static const char data[] = { + static const uint8_t data[] = { 0x60, 0x27, 0x57, 0xea, 0x40, 0xc2, 0x98, 0x05, 0x01, 0x50 }; ByteReader reader(ENDIANNESS_LITTLE); @@ -406,7 +408,7 @@ TEST_F(Reader, DW_EH_PE_absptr8) { } TEST_F(Reader, DW_EH_PE_uleb128) { - static const char data[] = { 0x81, 0x84, 0x4c }; + static const uint8_t data[] = { 0x81, 0x84, 0x4c }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(4); EXPECT_EQ(0x130201U, @@ -416,7 +418,7 @@ TEST_F(Reader, DW_EH_PE_uleb128) { } TEST_F(Reader, DW_EH_PE_udata2) { - static const char data[] = { 0xf4, 0x8d }; + static const uint8_t data[] = { 0xf4, 0x8d }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); EXPECT_EQ(0xf48dU, @@ -426,7 +428,7 @@ TEST_F(Reader, DW_EH_PE_udata2) { } TEST_F(Reader, DW_EH_PE_udata4) { - static const char data[] = { 0xb2, 0x68, 0xa5, 0x62, 0x8f, 0x8b }; + static const uint8_t data[] = { 0xb2, 0x68, 0xa5, 0x62, 0x8f, 0x8b }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(8); EXPECT_EQ(0xa5628f8b, @@ -436,7 +438,7 @@ TEST_F(Reader, DW_EH_PE_udata4) { } TEST_F(Reader, DW_EH_PE_udata8Addr8) { - static const char data[] = { + static const uint8_t data[] = { 0x27, 0x04, 0x73, 0x04, 0x69, 0x9f, 0x19, 0xed, 0x8f, 0xfe }; ByteReader reader(ENDIANNESS_LITTLE); @@ -448,7 +450,7 @@ TEST_F(Reader, DW_EH_PE_udata8Addr8) { } TEST_F(Reader, DW_EH_PE_udata8Addr4) { - static const char data[] = { + static const uint8_t data[] = { 0x27, 0x04, 0x73, 0x04, 0x69, 0x9f, 0x19, 0xed, 0x8f, 0xfe }; ByteReader reader(ENDIANNESS_LITTLE); @@ -460,7 +462,7 @@ TEST_F(Reader, DW_EH_PE_udata8Addr4) { } TEST_F(Reader, DW_EH_PE_sleb128) { - static const char data[] = { 0x42, 0xff, 0xfb, 0x73 }; + static const uint8_t data[] = { 0x42, 0xff, 0xfb, 0x73 }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); EXPECT_EQ(-0x030201U & 0xffffffff, @@ -470,7 +472,7 @@ TEST_F(Reader, DW_EH_PE_sleb128) { } TEST_F(Reader, DW_EH_PE_sdata2) { - static const char data[] = { 0xb9, 0xbf }; + static const uint8_t data[] = { 0xb9, 0xbf }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(8); EXPECT_EQ(0xffffffffffffbfb9ULL, @@ -480,7 +482,7 @@ TEST_F(Reader, DW_EH_PE_sdata2) { } TEST_F(Reader, DW_EH_PE_sdata4) { - static const char data[] = { 0xa0, 0xca, 0xf2, 0xb8, 0xc2, 0xad }; + static const uint8_t data[] = { 0xa0, 0xca, 0xf2, 0xb8, 0xc2, 0xad }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(8); EXPECT_EQ(0xffffffffadc2b8f2ULL, @@ -490,7 +492,7 @@ TEST_F(Reader, DW_EH_PE_sdata4) { } TEST_F(Reader, DW_EH_PE_sdata8) { - static const char data[] = { + static const uint8_t data[] = { 0xf6, 0x66, 0x57, 0x79, 0xe0, 0x0c, 0x9b, 0x26, 0x87 }; ByteReader reader(ENDIANNESS_LITTLE); @@ -502,7 +504,9 @@ TEST_F(Reader, DW_EH_PE_sdata8) { } TEST_F(Reader, DW_EH_PE_pcrel) { - static const char data[] = { 0x4a, 0x8b, 0x1b, 0x14, 0xc8, 0xc4, 0x02, 0xce }; + static const uint8_t data[] = { + 0x4a, 0x8b, 0x1b, 0x14, 0xc8, 0xc4, 0x02, 0xce + }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); DwarfPointerEncoding encoding = @@ -515,7 +519,9 @@ TEST_F(Reader, DW_EH_PE_pcrel) { } TEST_F(Reader, DW_EH_PE_textrel) { - static const char data[] = { 0xd9, 0x0d, 0x05, 0x17, 0xc9, 0x7a, 0x42, 0x1e }; + static const uint8_t data[] = { + 0xd9, 0x0d, 0x05, 0x17, 0xc9, 0x7a, 0x42, 0x1e + }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(4); reader.SetTextBase(0xb91beaf0); @@ -528,7 +534,9 @@ TEST_F(Reader, DW_EH_PE_textrel) { } TEST_F(Reader, DW_EH_PE_datarel) { - static const char data[] = { 0x16, 0xf2, 0xbb, 0x82, 0x68, 0xa7, 0xbc, 0x39 }; + static const uint8_t data[] = { + 0x16, 0xf2, 0xbb, 0x82, 0x68, 0xa7, 0xbc, 0x39 + }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(8); reader.SetDataBase(0xbef308bd25ce74f0ULL); @@ -541,7 +549,9 @@ TEST_F(Reader, DW_EH_PE_datarel) { } TEST_F(Reader, DW_EH_PE_funcrel) { - static const char data[] = { 0x84, 0xf8, 0x14, 0x01, 0x61, 0xd1, 0x48, 0xc9 }; + static const uint8_t data[] = { + 0x84, 0xf8, 0x14, 0x01, 0x61, 0xd1, 0x48, 0xc9 + }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); reader.SetFunctionBase(0x823c3520); @@ -554,7 +564,7 @@ TEST_F(Reader, DW_EH_PE_funcrel) { } TEST(UsableBase, CFI) { - static const char data[1] = { 0x42 }; + static const uint8_t data[] = { 0x42 }; ByteReader reader(ENDIANNESS_BIG); reader.SetCFIDataBase(0xb31cbd20, data); EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_absptr)); @@ -617,12 +627,12 @@ TEST(UsableBase, ClearFunction) { struct AlignedFixture { AlignedFixture() : reader(ENDIANNESS_BIG) { reader.SetAddressSize(4); } - static const char data[10]; + static const uint8_t data[10]; ByteReader reader; size_t pointer_size; }; -const char AlignedFixture::data[10] = { +const uint8_t AlignedFixture::data[10] = { 0xfe, 0x6e, 0x93, 0xd8, 0x34, 0xd5, 0x1c, 0xd3, 0xac, 0x2b }; diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.cc index 20c15fa9d102..94542b5ea9e8 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.cc @@ -32,6 +32,7 @@ // See dwarf2diehandler.h for details. #include +#include #include @@ -167,7 +168,7 @@ void DIEDispatcher::ProcessAttributeReference(uint64 offset, void DIEDispatcher::ProcessAttributeBuffer(uint64 offset, enum DwarfAttribute attr, enum DwarfForm form, - const char* data, + const uint8_t *data, uint64 len) { HandlerStack ¤t = die_handlers_.top(); // This had better be an attribute of the DIE we were meant to handle. diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.h index 81f40f072f14..a1e589a863e0 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.h @@ -156,6 +156,8 @@ #ifndef COMMON_DWARF_DWARF2DIEHANDLER_H__ #define COMMON_DWARF_DWARF2DIEHANDLER_H__ +#include + #include #include @@ -206,7 +208,7 @@ class DIEHandler { uint64 data) { } virtual void ProcessAttributeBuffer(enum DwarfAttribute attr, enum DwarfForm form, - const char* data, + const uint8_t *data, uint64 len) { } virtual void ProcessAttributeString(enum DwarfAttribute attr, enum DwarfForm form, @@ -309,7 +311,7 @@ class DIEDispatcher: public Dwarf2Handler { void ProcessAttributeBuffer(uint64 offset, enum DwarfAttribute attr, enum DwarfForm form, - const char* data, + const uint8_t *data, uint64 len); void ProcessAttributeString(uint64 offset, enum DwarfAttribute attr, diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc index c0a532aa0162..db70eb31b9e3 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc @@ -32,6 +32,8 @@ // dwarf2diehander_unittest.cc: Unit tests for google_breakpad::DIEDispatcher. +#include + #include #include @@ -67,7 +69,7 @@ class MockDIEHandler: public DIEHandler { MOCK_METHOD3(ProcessAttributeReference, void(DwarfAttribute, DwarfForm, uint64)); MOCK_METHOD4(ProcessAttributeBuffer, - void(DwarfAttribute, DwarfForm, const char *, uint64)); + void(DwarfAttribute, DwarfForm, const uint8_t *, uint64)); MOCK_METHOD3(ProcessAttributeString, void(DwarfAttribute, DwarfForm, const string &)); MOCK_METHOD3(ProcessAttributeSignature, @@ -86,7 +88,7 @@ class MockRootDIEHandler: public RootDIEHandler { MOCK_METHOD3(ProcessAttributeReference, void(DwarfAttribute, DwarfForm, uint64)); MOCK_METHOD4(ProcessAttributeBuffer, - void(DwarfAttribute, DwarfForm, const char *, uint64)); + void(DwarfAttribute, DwarfForm, const uint8_t *, uint64)); MOCK_METHOD3(ProcessAttributeString, void(DwarfAttribute, DwarfForm, const string &)); MOCK_METHOD3(ProcessAttributeSignature, @@ -185,8 +187,9 @@ TEST(Dwarf2DIEHandler, PassAttributeValues) { MockRootDIEHandler mock_root_handler; DIEDispatcher die_dispatcher(&mock_root_handler); - const char buffer[10] = { 0x24, 0x24, 0x35, 0x9a, 0xca, - 0xcf, 0xa8, 0x84, 0xa7, 0x18 }; + const uint8_t buffer[10] = { + 0x24, 0x24, 0x35, 0x9a, 0xca, 0xcf, 0xa8, 0x84, 0xa7, 0x18 + }; string str = "\xc8\x26\x2e\x0d\xa4\x9c\x37\xd6\xfb\x1d"; // Set expectations. diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2enums.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2enums.h index 5565d66e12d8..6b8a724591cd 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2enums.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2enums.h @@ -149,7 +149,10 @@ enum DwarfForm { DW_FORM_sec_offset = 0x17, DW_FORM_exprloc = 0x18, DW_FORM_flag_present = 0x19, - DW_FORM_ref_sig8 = 0x20 + DW_FORM_ref_sig8 = 0x20, + // Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. + DW_FORM_GNU_addr_index = 0x1f01, + DW_FORM_GNU_str_index = 0x1f02 }; // Attribute names and codes @@ -264,6 +267,13 @@ enum DwarfAttribute { DW_AT_body_begin = 0x2105, DW_AT_body_end = 0x2106, DW_AT_GNU_vector = 0x2107, + // Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. + DW_AT_GNU_dwo_name = 0x2130, + DW_AT_GNU_dwo_id = 0x2131, + DW_AT_GNU_ranges_base = 0x2132, + DW_AT_GNU_addr_base = 0x2133, + DW_AT_GNU_pubnames = 0x2134, + DW_AT_GNU_pubtypes = 0x2135, // VMS extensions. DW_AT_VMS_rtnbeg_pd_address = 0x2201, // UPC extension. @@ -491,7 +501,22 @@ enum DwarfOpcode { DW_OP_lo_user =0xe0, DW_OP_hi_user =0xff, // GNU extensions - DW_OP_GNU_push_tls_address =0xe0 + DW_OP_GNU_push_tls_address =0xe0, + // Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. + DW_OP_GNU_addr_index =0xfb, + DW_OP_GNU_const_index =0xfc +}; + +// Section identifiers for DWP files +enum DwarfSectionId { + DW_SECT_INFO = 1, + DW_SECT_TYPES = 2, + DW_SECT_ABBREV = 3, + DW_SECT_LINE = 4, + DW_SECT_LOC = 5, + DW_SECT_STR_OFFSETS = 6, + DW_SECT_MACINFO = 7, + DW_SECT_MACRO = 8 }; // Source languages. These are values for DW_AT_language. diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc index f2f3d5810e14..a65b43c8a3c0 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc @@ -44,6 +44,8 @@ #include #include +#include + #include "common/dwarf/bytereader-inl.h" #include "common/dwarf/bytereader.h" #include "common/dwarf/line_state_machine.h" @@ -51,11 +53,38 @@ namespace dwarf2reader { -CompilationUnit::CompilationUnit(const SectionMap& sections, uint64 offset, +CompilationUnit::CompilationUnit(const string& path, + const SectionMap& sections, uint64 offset, ByteReader* reader, Dwarf2Handler* handler) - : offset_from_section_start_(offset), reader_(reader), - sections_(sections), handler_(handler), abbrevs_(NULL), - string_buffer_(NULL), string_buffer_length_(0) {} + : path_(path), offset_from_section_start_(offset), reader_(reader), + sections_(sections), handler_(handler), abbrevs_(), + string_buffer_(NULL), string_buffer_length_(0), + str_offsets_buffer_(NULL), str_offsets_buffer_length_(0), + addr_buffer_(NULL), addr_buffer_length_(0), + is_split_dwarf_(false), dwo_id_(0), dwo_name_(), + skeleton_dwo_id_(0), ranges_base_(0), addr_base_(0), + have_checked_for_dwp_(false), dwp_path_(), + dwp_byte_reader_(), dwp_reader_() {} + +// Initialize a compilation unit from a .dwo or .dwp file. +// In this case, we need the .debug_addr section from the +// executable file that contains the corresponding skeleton +// compilation unit. We also inherit the Dwarf2Handler from +// the executable file, and call it as if we were still +// processing the original compilation unit. + +void CompilationUnit::SetSplitDwarf(const uint8_t* addr_buffer, + uint64 addr_buffer_length, + uint64 addr_base, + uint64 ranges_base, + uint64 dwo_id) { + is_split_dwarf_ = true; + addr_buffer_ = addr_buffer; + addr_buffer_length_ = addr_buffer_length; + addr_base_ = addr_base; + ranges_base_ = ranges_base; + skeleton_dwo_id_ = dwo_id; +} // Read a DWARF2/3 abbreviation section. // Each abbrev consists of a abbreviation number, a tag, a byte @@ -83,9 +112,9 @@ void CompilationUnit::ReadAbbrevs() { // The only way to check whether we are reading over the end of the // buffer would be to first compute the size of the leb128 data by // reading it, then go back and read it again. - const char* abbrev_start = iter->second.first + + const uint8_t *abbrev_start = iter->second.first + header_.abbrev_offset; - const char* abbrevptr = abbrev_start; + const uint8_t *abbrevptr = abbrev_start; #ifndef NDEBUG const uint64 abbrev_length = iter->second.second - header_.abbrev_offset; #endif @@ -132,8 +161,8 @@ void CompilationUnit::ReadAbbrevs() { } // Skips a single DIE's attributes. -const char* CompilationUnit::SkipDIE(const char* start, - const Abbrev& abbrev) { +const uint8_t *CompilationUnit::SkipDIE(const uint8_t* start, + const Abbrev& abbrev) { for (AttributeList::const_iterator i = abbrev.attributes.begin(); i != abbrev.attributes.end(); i++) { @@ -143,8 +172,8 @@ const char* CompilationUnit::SkipDIE(const char* start, } // Skips a single attribute form's data. -const char* CompilationUnit::SkipAttribute(const char* start, - enum DwarfForm form) { +const uint8_t *CompilationUnit::SkipAttribute(const uint8_t *start, + enum DwarfForm form) { size_t len; switch (form) { @@ -171,9 +200,11 @@ const char* CompilationUnit::SkipAttribute(const char* start, case DW_FORM_ref_sig8: return start + 8; case DW_FORM_string: - return start + strlen(start) + 1; + return start + strlen(reinterpret_cast(start)) + 1; case DW_FORM_udata: case DW_FORM_ref_udata: + case DW_FORM_GNU_str_index: + case DW_FORM_GNU_addr_index: reader_->ReadUnsignedLEB128(start, &len); return start + len; @@ -218,7 +249,7 @@ const char* CompilationUnit::SkipAttribute(const char* start, // the offset in the .debug_abbrev section for our abbrevs, and an // address size. void CompilationUnit::ReadHeader() { - const char* headerptr = buffer_; + const uint8_t *headerptr = buffer_; size_t initial_length_size; assert(headerptr + 4 < buffer_ + buffer_length_); @@ -235,7 +266,9 @@ void CompilationUnit::ReadHeader() { header_.abbrev_offset = reader_->ReadOffset(headerptr); headerptr += reader_->OffsetSize(); - assert(headerptr + 1 < buffer_ + buffer_length_); + // Compare against less than or equal because this may be the last + // section in the file. + assert(headerptr + 1 <= buffer_ + buffer_length_); header_.address_size = reader_->ReadOneByte(headerptr); reader_->SetAddressSize(header_.address_size); headerptr += 1; @@ -296,17 +329,39 @@ uint64 CompilationUnit::Start() { string_buffer_length_ = iter->second.second; } + // Set the string offsets section if we have one. + iter = sections_.find(".debug_str_offsets"); + if (iter != sections_.end()) { + str_offsets_buffer_ = iter->second.first; + str_offsets_buffer_length_ = iter->second.second; + } + + // Set the address section if we have one. + iter = sections_.find(".debug_addr"); + if (iter != sections_.end()) { + addr_buffer_ = iter->second.first; + addr_buffer_length_ = iter->second.second; + } + // Now that we have our abbreviations, start processing DIE's. ProcessDIEs(); + // If this is a skeleton compilation unit generated with split DWARF, + // and the client needs the full debug info, we need to find the full + // compilation unit in a .dwo or .dwp file. + if (!is_split_dwarf_ + && dwo_name_ != NULL + && handler_->NeedSplitDebugInfo()) + ProcessSplitDwarf(); + return ourlength; } // If one really wanted, you could merge SkipAttribute and // ProcessAttribute // This is all boring data manipulation and calling of the handler. -const char* CompilationUnit::ProcessAttribute( - uint64 dieoffset, const char* start, enum DwarfAttribute attr, +const uint8_t *CompilationUnit::ProcessAttribute( + uint64 dieoffset, const uint8_t *start, enum DwarfAttribute attr, enum DwarfForm form) { size_t len; @@ -320,48 +375,46 @@ const char* CompilationUnit::ProcessAttribute( return ProcessAttribute(dieoffset, start, attr, form); case DW_FORM_flag_present: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, 1); + ProcessAttributeUnsigned(dieoffset, attr, form, 1); return start; case DW_FORM_data1: case DW_FORM_flag: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadOneByte(start)); + ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadOneByte(start)); return start + 1; case DW_FORM_data2: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadTwoBytes(start)); + ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadTwoBytes(start)); return start + 2; case DW_FORM_data4: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadFourBytes(start)); + ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadFourBytes(start)); return start + 4; case DW_FORM_data8: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadEightBytes(start)); + ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadEightBytes(start)); return start + 8; case DW_FORM_string: { - const char* str = start; - handler_->ProcessAttributeString(dieoffset, attr, form, - str); + const char *str = reinterpret_cast(start); + ProcessAttributeString(dieoffset, attr, form, str); return start + strlen(str) + 1; } case DW_FORM_udata: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadUnsignedLEB128(start, - &len)); + ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadUnsignedLEB128(start, &len)); return start + len; case DW_FORM_sdata: - handler_->ProcessAttributeSigned(dieoffset, attr, form, - reader_->ReadSignedLEB128(start, &len)); + ProcessAttributeSigned(dieoffset, attr, form, + reader_->ReadSignedLEB128(start, &len)); return start + len; case DW_FORM_addr: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadAddress(start)); + ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadAddress(start)); return start + reader_->AddressSize(); case DW_FORM_sec_offset: - handler_->ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadOffset(start)); + ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadOffset(start)); return start + reader_->OffsetSize(); case DW_FORM_ref1: @@ -440,34 +493,66 @@ const char* CompilationUnit::ProcessAttribute( const uint64 offset = reader_->ReadOffset(start); assert(string_buffer_ + offset < string_buffer_ + string_buffer_length_); - const char* str = string_buffer_ + offset; - handler_->ProcessAttributeString(dieoffset, attr, form, - str); + const char *str = reinterpret_cast(string_buffer_ + offset); + ProcessAttributeString(dieoffset, attr, form, str); return start + reader_->OffsetSize(); } + + case DW_FORM_GNU_str_index: { + uint64 str_index = reader_->ReadUnsignedLEB128(start, &len); + const uint8_t* offset_ptr = + str_offsets_buffer_ + str_index * reader_->OffsetSize(); + const uint64 offset = reader_->ReadOffset(offset_ptr); + if (offset >= string_buffer_length_) { + return NULL; + } + + const char* str = reinterpret_cast(string_buffer_) + offset; + ProcessAttributeString(dieoffset, attr, form, str); + return start + len; + break; + } + case DW_FORM_GNU_addr_index: { + uint64 addr_index = reader_->ReadUnsignedLEB128(start, &len); + const uint8_t* addr_ptr = + addr_buffer_ + addr_base_ + addr_index * reader_->AddressSize(); + ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadAddress(addr_ptr)); + return start + len; + } } fprintf(stderr, "Unhandled form type\n"); return NULL; } -const char* CompilationUnit::ProcessDIE(uint64 dieoffset, - const char* start, - const Abbrev& abbrev) { +const uint8_t *CompilationUnit::ProcessDIE(uint64 dieoffset, + const uint8_t *start, + const Abbrev& abbrev) { for (AttributeList::const_iterator i = abbrev.attributes.begin(); i != abbrev.attributes.end(); i++) { start = ProcessAttribute(dieoffset, start, i->first, i->second); } + + // If this is a compilation unit in a split DWARF object, verify that + // the dwo_id matches. If it does not match, we will ignore this + // compilation unit. + if (abbrev.tag == DW_TAG_compile_unit + && is_split_dwarf_ + && dwo_id_ != skeleton_dwo_id_) { + return NULL; + } + return start; } void CompilationUnit::ProcessDIEs() { - const char* dieptr = after_header_; + const uint8_t *dieptr = after_header_; size_t len; // lengthstart is the place the length field is based on. // It is the point in the header after the initial length field - const char* lengthstart = buffer_; + const uint8_t *lengthstart = buffer_; // In 64 bit dwarf, the initial length is 12 bytes, because of the // 0xffffffff at the start. @@ -515,10 +600,313 @@ void CompilationUnit::ProcessDIEs() { } } -LineInfo::LineInfo(const char* buffer, uint64 buffer_length, +// Check for a valid ELF file and return the Address size. +// Returns 0 if not a valid ELF file. +inline int GetElfWidth(const ElfReader& elf) { + if (elf.IsElf32File()) + return 4; + if (elf.IsElf64File()) + return 8; + return 0; +} + +void CompilationUnit::ProcessSplitDwarf() { + struct stat statbuf; + if (!have_checked_for_dwp_) { + // Look for a .dwp file in the same directory as the executable. + have_checked_for_dwp_ = true; + string dwp_suffix(".dwp"); + dwp_path_ = path_ + dwp_suffix; + if (stat(dwp_path_.c_str(), &statbuf) != 0) { + // Fall back to a split .debug file in the same directory. + string debug_suffix(".debug"); + dwp_path_ = path_; + size_t found = path_.rfind(debug_suffix); + if (found + debug_suffix.length() == path_.length()) + dwp_path_ = dwp_path_.replace(found, debug_suffix.length(), dwp_suffix); + } + if (stat(dwp_path_.c_str(), &statbuf) == 0) { + ElfReader* elf = new ElfReader(dwp_path_); + int width = GetElfWidth(*elf); + if (width != 0) { + dwp_byte_reader_.reset(new ByteReader(reader_->GetEndianness())); + dwp_byte_reader_->SetAddressSize(width); + dwp_reader_.reset(new DwpReader(*dwp_byte_reader_, elf)); + dwp_reader_->Initialize(); + } else { + delete elf; + } + } + } + bool found_in_dwp = false; + if (dwp_reader_) { + // If we have a .dwp file, read the debug sections for the requested CU. + SectionMap sections; + dwp_reader_->ReadDebugSectionsForCU(dwo_id_, §ions); + if (!sections.empty()) { + found_in_dwp = true; + CompilationUnit dwp_comp_unit(dwp_path_, sections, 0, + dwp_byte_reader_.get(), handler_); + dwp_comp_unit.SetSplitDwarf(addr_buffer_, addr_buffer_length_, addr_base_, + ranges_base_, dwo_id_); + dwp_comp_unit.Start(); + } + } + if (!found_in_dwp) { + // If no .dwp file, try to open the .dwo file. + if (stat(dwo_name_, &statbuf) == 0) { + ElfReader elf(dwo_name_); + int width = GetElfWidth(elf); + if (width != 0) { + ByteReader reader(ENDIANNESS_LITTLE); + reader.SetAddressSize(width); + SectionMap sections; + ReadDebugSectionsFromDwo(&elf, §ions); + CompilationUnit dwo_comp_unit(dwo_name_, sections, 0, &reader, + handler_); + dwo_comp_unit.SetSplitDwarf(addr_buffer_, addr_buffer_length_, + addr_base_, ranges_base_, dwo_id_); + dwo_comp_unit.Start(); + } + } + } +} + +void CompilationUnit::ReadDebugSectionsFromDwo(ElfReader* elf_reader, + SectionMap* sections) { + static const char* const section_names[] = { + ".debug_abbrev", + ".debug_info", + ".debug_str_offsets", + ".debug_str" + }; + for (unsigned int i = 0u; + i < sizeof(section_names)/sizeof(*(section_names)); ++i) { + string base_name = section_names[i]; + string dwo_name = base_name + ".dwo"; + size_t section_size; + const char* section_data = elf_reader->GetSectionByName(dwo_name, + §ion_size); + if (section_data != NULL) + sections->insert(std::make_pair( + base_name, std::make_pair( + reinterpret_cast(section_data), + section_size))); + } +} + +DwpReader::DwpReader(const ByteReader& byte_reader, ElfReader* elf_reader) + : elf_reader_(elf_reader), byte_reader_(byte_reader), + cu_index_(NULL), cu_index_size_(0), string_buffer_(NULL), + string_buffer_size_(0), version_(0), ncolumns_(0), nunits_(0), + nslots_(0), phash_(NULL), pindex_(NULL), shndx_pool_(NULL), + offset_table_(NULL), size_table_(NULL), abbrev_data_(NULL), + abbrev_size_(0), info_data_(NULL), info_size_(0), + str_offsets_data_(NULL), str_offsets_size_(0) {} + +DwpReader::~DwpReader() { + if (elf_reader_) delete elf_reader_; +} + +void DwpReader::Initialize() { + cu_index_ = elf_reader_->GetSectionByName(".debug_cu_index", + &cu_index_size_); + if (cu_index_ == NULL) { + return; + } + // The .debug_str.dwo section is shared by all CUs in the file. + string_buffer_ = elf_reader_->GetSectionByName(".debug_str.dwo", + &string_buffer_size_); + + version_ = byte_reader_.ReadFourBytes( + reinterpret_cast(cu_index_)); + + if (version_ == 1) { + nslots_ = byte_reader_.ReadFourBytes( + reinterpret_cast(cu_index_) + + 3 * sizeof(uint32)); + phash_ = cu_index_ + 4 * sizeof(uint32); + pindex_ = phash_ + nslots_ * sizeof(uint64); + shndx_pool_ = pindex_ + nslots_ * sizeof(uint32); + if (shndx_pool_ >= cu_index_ + cu_index_size_) { + version_ = 0; + } + } else if (version_ == 2) { + ncolumns_ = byte_reader_.ReadFourBytes( + reinterpret_cast(cu_index_) + sizeof(uint32)); + nunits_ = byte_reader_.ReadFourBytes( + reinterpret_cast(cu_index_) + 2 * sizeof(uint32)); + nslots_ = byte_reader_.ReadFourBytes( + reinterpret_cast(cu_index_) + 3 * sizeof(uint32)); + phash_ = cu_index_ + 4 * sizeof(uint32); + pindex_ = phash_ + nslots_ * sizeof(uint64); + offset_table_ = pindex_ + nslots_ * sizeof(uint32); + size_table_ = offset_table_ + ncolumns_ * (nunits_ + 1) * sizeof(uint32); + abbrev_data_ = elf_reader_->GetSectionByName(".debug_abbrev.dwo", + &abbrev_size_); + info_data_ = elf_reader_->GetSectionByName(".debug_info.dwo", &info_size_); + str_offsets_data_ = elf_reader_->GetSectionByName(".debug_str_offsets.dwo", + &str_offsets_size_); + if (size_table_ >= cu_index_ + cu_index_size_) { + version_ = 0; + } + } +} + +void DwpReader::ReadDebugSectionsForCU(uint64 dwo_id, + SectionMap* sections) { + if (version_ == 1) { + int slot = LookupCU(dwo_id); + if (slot == -1) { + return; + } + + // The index table points to the section index pool, where we + // can read a list of section indexes for the debug sections + // for the CU whose dwo_id we are looking for. + int index = byte_reader_.ReadFourBytes( + reinterpret_cast(pindex_) + + slot * sizeof(uint32)); + const char* shndx_list = shndx_pool_ + index * sizeof(uint32); + for (;;) { + if (shndx_list >= cu_index_ + cu_index_size_) { + version_ = 0; + return; + } + unsigned int shndx = byte_reader_.ReadFourBytes( + reinterpret_cast(shndx_list)); + shndx_list += sizeof(uint32); + if (shndx == 0) + break; + const char* section_name = elf_reader_->GetSectionName(shndx); + size_t section_size; + const char* section_data; + // We're only interested in these four debug sections. + // The section names in the .dwo file end with ".dwo", but we + // add them to the sections table with their normal names. + if (!strncmp(section_name, ".debug_abbrev", strlen(".debug_abbrev"))) { + section_data = elf_reader_->GetSectionByIndex(shndx, §ion_size); + sections->insert(std::make_pair( + ".debug_abbrev", + std::make_pair(reinterpret_cast (section_data), + section_size))); + } else if (!strncmp(section_name, ".debug_info", strlen(".debug_info"))) { + section_data = elf_reader_->GetSectionByIndex(shndx, §ion_size); + sections->insert(std::make_pair( + ".debug_info", + std::make_pair(reinterpret_cast (section_data), + section_size))); + } else if (!strncmp(section_name, ".debug_str_offsets", + strlen(".debug_str_offsets"))) { + section_data = elf_reader_->GetSectionByIndex(shndx, §ion_size); + sections->insert(std::make_pair( + ".debug_str_offsets", + std::make_pair(reinterpret_cast (section_data), + section_size))); + } + } + sections->insert(std::make_pair( + ".debug_str", + std::make_pair(reinterpret_cast (string_buffer_), + string_buffer_size_))); + } else if (version_ == 2) { + uint32 index = LookupCUv2(dwo_id); + if (index == 0) { + return; + } + + // The index points to a row in each of the section offsets table + // and the section size table, where we can read the offsets and sizes + // of the contributions to each debug section from the CU whose dwo_id + // we are looking for. Row 0 of the section offsets table has the + // section ids for each column of the table. The size table begins + // with row 1. + const char* id_row = offset_table_; + const char* offset_row = offset_table_ + + index * ncolumns_ * sizeof(uint32); + const char* size_row = + size_table_ + (index - 1) * ncolumns_ * sizeof(uint32); + if (size_row + ncolumns_ * sizeof(uint32) > cu_index_ + cu_index_size_) { + version_ = 0; + return; + } + for (unsigned int col = 0u; col < ncolumns_; ++col) { + uint32 section_id = + byte_reader_.ReadFourBytes(reinterpret_cast(id_row) + + col * sizeof(uint32)); + uint32 offset = byte_reader_.ReadFourBytes( + reinterpret_cast(offset_row) + + col * sizeof(uint32)); + uint32 size = byte_reader_.ReadFourBytes( + reinterpret_cast(size_row) + col * sizeof(uint32)); + if (section_id == DW_SECT_ABBREV) { + sections->insert(std::make_pair( + ".debug_abbrev", + std::make_pair(reinterpret_cast (abbrev_data_) + + offset, size))); + } else if (section_id == DW_SECT_INFO) { + sections->insert(std::make_pair( + ".debug_info", + std::make_pair(reinterpret_cast (info_data_) + + offset, size))); + } else if (section_id == DW_SECT_STR_OFFSETS) { + sections->insert(std::make_pair( + ".debug_str_offsets", + std::make_pair(reinterpret_cast (str_offsets_data_) + + offset, size))); + } + } + sections->insert(std::make_pair( + ".debug_str", + std::make_pair(reinterpret_cast (string_buffer_), + string_buffer_size_))); + } +} + +int DwpReader::LookupCU(uint64 dwo_id) { + uint32 slot = static_cast(dwo_id) & (nslots_ - 1); + uint64 probe = byte_reader_.ReadEightBytes( + reinterpret_cast(phash_) + slot * sizeof(uint64)); + if (probe != 0 && probe != dwo_id) { + uint32 secondary_hash = + (static_cast(dwo_id >> 32) & (nslots_ - 1)) | 1; + do { + slot = (slot + secondary_hash) & (nslots_ - 1); + probe = byte_reader_.ReadEightBytes( + reinterpret_cast(phash_) + slot * sizeof(uint64)); + } while (probe != 0 && probe != dwo_id); + } + if (probe == 0) + return -1; + return slot; +} + +uint32 DwpReader::LookupCUv2(uint64 dwo_id) { + uint32 slot = static_cast(dwo_id) & (nslots_ - 1); + uint64 probe = byte_reader_.ReadEightBytes( + reinterpret_cast(phash_) + slot * sizeof(uint64)); + uint32 index = byte_reader_.ReadFourBytes( + reinterpret_cast(pindex_) + slot * sizeof(uint32)); + if (index != 0 && probe != dwo_id) { + uint32 secondary_hash = + (static_cast(dwo_id >> 32) & (nslots_ - 1)) | 1; + do { + slot = (slot + secondary_hash) & (nslots_ - 1); + probe = byte_reader_.ReadEightBytes( + reinterpret_cast(phash_) + slot * sizeof(uint64)); + index = byte_reader_.ReadFourBytes( + reinterpret_cast(pindex_) + slot * sizeof(uint32)); + } while (index != 0 && probe != dwo_id); + } + return index; +} + +LineInfo::LineInfo(const uint8_t *buffer, uint64 buffer_length, ByteReader* reader, LineInfoHandler* handler): - handler_(handler), reader_(reader), buffer_(buffer), - buffer_length_(buffer_length) { + handler_(handler), reader_(reader), buffer_(buffer) { +#ifndef NDEBUG + buffer_length_ = buffer_length; +#endif header_.std_opcode_lengths = NULL; } @@ -531,7 +919,7 @@ uint64 LineInfo::Start() { // The header for a debug_line section is mildly complicated, because // the line info is very tightly encoded. void LineInfo::ReadHeader() { - const char* lineptr = buffer_; + const uint8_t *lineptr = buffer_; size_t initial_length_size; const uint64 initial_length @@ -578,7 +966,7 @@ void LineInfo::ReadHeader() { if (*lineptr) { uint32 dirindex = 1; while (*lineptr) { - const char* dirname = lineptr; + const char *dirname = reinterpret_cast(lineptr); handler_->DefineDir(dirname, dirindex); lineptr += strlen(dirname) + 1; dirindex++; @@ -591,7 +979,7 @@ void LineInfo::ReadHeader() { uint32 fileindex = 1; size_t len; while (*lineptr) { - const char* filename = lineptr; + const char *filename = reinterpret_cast(lineptr); lineptr += strlen(filename) + 1; uint64 dirindex = reader_->ReadUnsignedLEB128(lineptr, &len); @@ -616,7 +1004,7 @@ void LineInfo::ReadHeader() { bool LineInfo::ProcessOneOpcode(ByteReader* reader, LineInfoHandler* handler, const struct LineInfoHeader &header, - const char* start, + const uint8_t *start, struct LineStateMachine* lsm, size_t* len, uintptr pc, @@ -757,7 +1145,7 @@ bool LineInfo::ProcessOneOpcode(ByteReader* reader, } break; case DW_LNE_define_file: { - const char* filename = start; + const char *filename = reinterpret_cast(start); templen = strlen(filename) + 1; start += templen; @@ -804,7 +1192,7 @@ void LineInfo::ReadLines() { // lengthstart is the place the length field is based on. // It is the point in the header after the initial length field - const char* lengthstart = buffer_; + const uint8_t *lengthstart = buffer_; // In 64 bit dwarf, the initial length is 12 bytes, because of the // 0xffffffff at the start. @@ -813,7 +1201,7 @@ void LineInfo::ReadLines() { else lengthstart += 4; - const char* lineptr = after_header_; + const uint8_t *lineptr = after_header_; lsm.Reset(header_.default_is_stmt); // The LineInfoHandler interface expects each line's length along @@ -1312,7 +1700,7 @@ class CallFrameInfo::State { const Entry *entry_; // The next instruction to process. - const char *cursor_; + const uint8_t *cursor_; // The current set of rules. RuleMap rules_; @@ -1410,7 +1798,8 @@ bool CallFrameInfo::State::ParseOperands(const char *format, if (len > bytes_left || expression_length > bytes_left - len) return ReportIncomplete(); cursor_ += len; - operands->expression = string(cursor_, expression_length); + operands->expression = string(reinterpret_cast(cursor_), + expression_length); cursor_ += expression_length; break; } @@ -1763,8 +2152,8 @@ bool CallFrameInfo::State::DoRestore(unsigned reg) { return DoRule(reg, rule); } -bool CallFrameInfo::ReadEntryPrologue(const char *cursor, Entry *entry) { - const char *buffer_end = buffer_ + buffer_length_; +bool CallFrameInfo::ReadEntryPrologue(const uint8_t *cursor, Entry *entry) { + const uint8_t *buffer_end = buffer_ + buffer_length_; // Initialize enough of ENTRY for use in error reporting. entry->offset = cursor - buffer_; @@ -1842,7 +2231,7 @@ bool CallFrameInfo::ReadEntryPrologue(const char *cursor, Entry *entry) { } bool CallFrameInfo::ReadCIEFields(CIE *cie) { - const char *cursor = cie->fields; + const uint8_t *cursor = cie->fields; size_t len; assert(cie->kind == kCIE); @@ -1873,13 +2262,14 @@ bool CallFrameInfo::ReadCIEFields(CIE *cie) { return false; } - const char *augmentation_start = cursor; - const void *augmentation_end = - memchr(augmentation_start, '\0', cie->end - augmentation_start); + const uint8_t *augmentation_start = cursor; + const uint8_t *augmentation_end = + reinterpret_cast(memchr(augmentation_start, '\0', + cie->end - augmentation_start)); if (! augmentation_end) return ReportIncomplete(cie); - cursor = static_cast(augmentation_end); - cie->augmentation = string(augmentation_start, - cursor - augmentation_start); + cursor = augmentation_end; + cie->augmentation = string(reinterpret_cast(augmentation_start), + cursor - augmentation_start); // Skip the terminating '\0'. cursor++; @@ -1925,9 +2315,9 @@ bool CallFrameInfo::ReadCIEFields(CIE *cie) { if (size_t(cie->end - cursor) < len + data_size) return ReportIncomplete(cie); cursor += len; - const char *data = cursor; + const uint8_t *data = cursor; cursor += data_size; - const char *data_end = cursor; + const uint8_t *data_end = cursor; cie->has_z_lsda = false; cie->has_z_personality = false; @@ -2019,7 +2409,7 @@ bool CallFrameInfo::ReadCIEFields(CIE *cie) { } bool CallFrameInfo::ReadFDEFields(FDE *fde) { - const char *cursor = fde->fields; + const uint8_t *cursor = fde->fields; size_t size; fde->address = reader_->ReadEncodedPointer(cursor, fde->cie->pointer_encoding, @@ -2085,10 +2475,10 @@ bool CallFrameInfo::ReadFDEFields(FDE *fde) { } bool CallFrameInfo::Start() { - const char *buffer_end = buffer_ + buffer_length_; - const char *cursor; + const uint8_t *buffer_end = buffer_ + buffer_length_; + const uint8_t *cursor; bool all_ok = true; - const char *entry_end; + const uint8_t *entry_end; bool ok; // Traverse all the entries in buffer_, skipping CIEs and offering diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.h index 8824bf90e7a4..064c42bc8a50 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.h @@ -40,25 +40,30 @@ #ifndef COMMON_DWARF_DWARF2READER_H__ #define COMMON_DWARF_DWARF2READER_H__ +#include + #include #include #include #include #include +#include #include "common/dwarf/bytereader.h" #include "common/dwarf/dwarf2enums.h" #include "common/dwarf/types.h" #include "common/using_std_string.h" +#include "common/dwarf/elf_reader.h" namespace dwarf2reader { struct LineStateMachine; class Dwarf2Handler; class LineInfoHandler; +class DwpReader; // This maps from a string naming a section to a pair containing a // the data for the section, and the size of the section. -typedef std::map > SectionMap; +typedef std::map > SectionMap; typedef std::list > AttributeList; typedef AttributeList::iterator AttributeIterator; @@ -85,7 +90,7 @@ class LineInfo { // to the beginning and length of the line information to read. // Reader is a ByteReader class that has the endianness set // properly. - LineInfo(const char* buffer_, uint64 buffer_length, + LineInfo(const uint8_t *buffer_, uint64 buffer_length, ByteReader* reader, LineInfoHandler* handler); virtual ~LineInfo() { @@ -111,7 +116,7 @@ class LineInfo { static bool ProcessOneOpcode(ByteReader* reader, LineInfoHandler* handler, const struct LineInfoHeader &header, - const char* start, + const uint8_t *start, struct LineStateMachine* lsm, size_t* len, uintptr pc, @@ -139,9 +144,11 @@ class LineInfo { // buffer is the buffer for our line info, starting at exactly where // the line info to read is. after_header is the place right after // the end of the line information header. - const char* buffer_; + const uint8_t *buffer_; +#ifndef NDEBUG uint64 buffer_length_; - const char* after_header_; +#endif + const uint8_t *after_header_; }; // This class is the main interface between the line info reader and @@ -180,6 +187,106 @@ class LineInfoHandler { uint32 file_num, uint32 line_num, uint32 column_num) { } }; +// This class is the main interface between the reader and the +// client. The virtual functions inside this get called for +// interesting events that happen during DWARF2 reading. +// The default implementation skips everything. +class Dwarf2Handler { + public: + Dwarf2Handler() { } + + virtual ~Dwarf2Handler() { } + + // Start to process a compilation unit at OFFSET from the beginning of the + // .debug_info section. Return false if you would like to skip this + // compilation unit. + virtual bool StartCompilationUnit(uint64 offset, uint8 address_size, + uint8 offset_size, uint64 cu_length, + uint8 dwarf_version) { return false; } + + // When processing a skeleton compilation unit, resulting from a split + // DWARF compilation, once the skeleton debug info has been read, + // the reader will call this function to ask the client if it needs + // the full debug info from the .dwo or .dwp file. Return true if + // you need it, or false to skip processing the split debug info. + virtual bool NeedSplitDebugInfo() { return true; } + + // Start to process a split compilation unit at OFFSET from the beginning of + // the debug_info section in the .dwp/.dwo file. Return false if you would + // like to skip this compilation unit. + virtual bool StartSplitCompilationUnit(uint64 offset, + uint64 cu_length) { return false; } + + // Start to process a DIE at OFFSET from the beginning of the .debug_info + // section. Return false if you would like to skip this DIE. + virtual bool StartDIE(uint64 offset, enum DwarfTag tag) { return false; } + + // Called when we have an attribute with unsigned data to give to our + // handler. The attribute is for the DIE at OFFSET from the beginning of the + // .debug_info section. Its name is ATTR, its form is FORM, and its value is + // DATA. + virtual void ProcessAttributeUnsigned(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + uint64 data) { } + + // Called when we have an attribute with signed data to give to our handler. + // The attribute is for the DIE at OFFSET from the beginning of the + // .debug_info section. Its name is ATTR, its form is FORM, and its value is + // DATA. + virtual void ProcessAttributeSigned(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + int64 data) { } + + // Called when we have an attribute whose value is a reference to + // another DIE. The attribute belongs to the DIE at OFFSET from the + // beginning of the .debug_info section. Its name is ATTR, its form + // is FORM, and the offset of the DIE being referred to from the + // beginning of the .debug_info section is DATA. + virtual void ProcessAttributeReference(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + uint64 data) { } + + // Called when we have an attribute with a buffer of data to give to our + // handler. The attribute is for the DIE at OFFSET from the beginning of the + // .debug_info section. Its name is ATTR, its form is FORM, DATA points to + // the buffer's contents, and its length in bytes is LENGTH. The buffer is + // owned by the caller, not the callee, and may not persist for very long. + // If you want the data to be available later, it needs to be copied. + virtual void ProcessAttributeBuffer(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + const uint8_t *data, + uint64 len) { } + + // Called when we have an attribute with string data to give to our handler. + // The attribute is for the DIE at OFFSET from the beginning of the + // .debug_info section. Its name is ATTR, its form is FORM, and its value is + // DATA. + virtual void ProcessAttributeString(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + const string& data) { } + + // Called when we have an attribute whose value is the 64-bit signature + // of a type unit in the .debug_types section. OFFSET is the offset of + // the DIE whose attribute we're reporting. ATTR and FORM are the + // attribute's name and form. SIGNATURE is the type unit's signature. + virtual void ProcessAttributeSignature(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + uint64 signature) { } + + // Called when finished processing the DIE at OFFSET. + // Because DWARF2/3 specifies a tree of DIEs, you may get starts + // before ends of the previous DIE, as we process children before + // ending the parent. + virtual void EndDIE(uint64 offset) { } + +}; + // The base of DWARF2/3 debug info is a DIE (Debugging Information // Entry. // DWARF groups DIE's into a tree and calls the root of this tree a @@ -221,12 +328,21 @@ class CompilationUnit { // Initialize a compilation unit. This requires a map of sections, // the offset of this compilation unit in the .debug_info section, a // ByteReader, and a Dwarf2Handler class to call callbacks in. - CompilationUnit(const SectionMap& sections, uint64 offset, + CompilationUnit(const string& path, const SectionMap& sections, uint64 offset, ByteReader* reader, Dwarf2Handler* handler); virtual ~CompilationUnit() { if (abbrevs_) delete abbrevs_; } + // Initialize a compilation unit from a .dwo or .dwp file. + // In this case, we need the .debug_addr section from the + // executable file that contains the corresponding skeleton + // compilation unit. We also inherit the Dwarf2Handler from + // the executable file, and call it as if we were still + // processing the original compilation unit. + void SetSplitDwarf(const uint8_t* addr_buffer, uint64 addr_buffer_length, + uint64 addr_base, uint64 ranges_base, uint64 dwo_id); + // Begin reading a Dwarf2 compilation unit, and calling the // callbacks in the Dwarf2Handler @@ -266,29 +382,104 @@ class CompilationUnit { // Processes a single DIE for this compilation unit and return a new // pointer just past the end of it - const char* ProcessDIE(uint64 dieoffset, - const char* start, - const Abbrev& abbrev); + const uint8_t *ProcessDIE(uint64 dieoffset, + const uint8_t *start, + const Abbrev& abbrev); // Processes a single attribute and return a new pointer just past the // end of it - const char* ProcessAttribute(uint64 dieoffset, - const char* start, - enum DwarfAttribute attr, - enum DwarfForm form); + const uint8_t *ProcessAttribute(uint64 dieoffset, + const uint8_t *start, + enum DwarfAttribute attr, + enum DwarfForm form); + + // Called when we have an attribute with unsigned data to give to + // our handler. The attribute is for the DIE at OFFSET from the + // beginning of compilation unit, has a name of ATTR, a form of + // FORM, and the actual data of the attribute is in DATA. + // If we see a DW_AT_GNU_dwo_id attribute, save the value so that + // we can find the debug info in a .dwo or .dwp file. + void ProcessAttributeUnsigned(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + uint64 data) { + if (attr == DW_AT_GNU_dwo_id) { + dwo_id_ = data; + } + else if (attr == DW_AT_GNU_addr_base) { + addr_base_ = data; + } + else if (attr == DW_AT_GNU_ranges_base) { + ranges_base_ = data; + } + // TODO(yunlian): When we add DW_AT_ranges_base from DWARF-5, + // that base will apply to DW_AT_ranges attributes in the + // skeleton CU as well as in the .dwo/.dwp files. + else if (attr == DW_AT_ranges && is_split_dwarf_) { + data += ranges_base_; + } + handler_->ProcessAttributeUnsigned(offset, attr, form, data); + } + + // Called when we have an attribute with signed data to give to + // our handler. The attribute is for the DIE at OFFSET from the + // beginning of compilation unit, has a name of ATTR, a form of + // FORM, and the actual data of the attribute is in DATA. + void ProcessAttributeSigned(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + int64 data) { + handler_->ProcessAttributeSigned(offset, attr, form, data); + } + + // Called when we have an attribute with a buffer of data to give to + // our handler. The attribute is for the DIE at OFFSET from the + // beginning of compilation unit, has a name of ATTR, a form of + // FORM, and the actual data of the attribute is in DATA, and the + // length of the buffer is LENGTH. + void ProcessAttributeBuffer(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + const uint8_t* data, + uint64 len) { + handler_->ProcessAttributeBuffer(offset, attr, form, data, len); + } + + // Called when we have an attribute with string data to give to + // our handler. The attribute is for the DIE at OFFSET from the + // beginning of compilation unit, has a name of ATTR, a form of + // FORM, and the actual data of the attribute is in DATA. + // If we see a DW_AT_GNU_dwo_name attribute, save the value so + // that we can find the debug info in a .dwo or .dwp file. + void ProcessAttributeString(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + const char* data) { + if (attr == DW_AT_GNU_dwo_name) + dwo_name_ = data; + handler_->ProcessAttributeString(offset, attr, form, data); + } // Processes all DIEs for this compilation unit void ProcessDIEs(); // Skips the die with attributes specified in ABBREV starting at // START, and return the new place to position the stream to. - const char* SkipDIE(const char* start, - const Abbrev& abbrev); + const uint8_t *SkipDIE(const uint8_t *start, const Abbrev& abbrev); // Skips the attribute starting at START, with FORM, and return the // new place to position the stream to. - const char* SkipAttribute(const char* start, - enum DwarfForm form); + const uint8_t *SkipAttribute(const uint8_t *start, enum DwarfForm form); + + // Process the actual debug information in a split DWARF file. + void ProcessSplitDwarf(); + + // Read the debug sections from a .dwo file. + void ReadDebugSectionsFromDwo(ElfReader* elf_reader, + SectionMap* sections); + + // Path of the file containing the debug information. + const string path_; // Offset from section start is the offset of this compilation unit // from the beginning of the .debug_info section. @@ -297,9 +488,9 @@ class CompilationUnit { // buffer is the buffer for our CU, starting at .debug_info + offset // passed in from constructor. // after_header points to right after the compilation unit header. - const char* buffer_; + const uint8_t *buffer_; uint64 buffer_length_; - const char* after_header_; + const uint8_t *after_header_; // The associated ByteReader that handles endianness issues for us ByteReader* reader_; @@ -318,96 +509,143 @@ class CompilationUnit { // String section buffer and length, if we have a string section. // This is here to avoid doing a section lookup for strings in // ProcessAttribute, which is in the hot path for DWARF2 reading. - const char* string_buffer_; + const uint8_t *string_buffer_; uint64 string_buffer_length_; + + // String offsets section buffer and length, if we have a string offsets + // section (.debug_str_offsets or .debug_str_offsets.dwo). + const uint8_t* str_offsets_buffer_; + uint64 str_offsets_buffer_length_; + + // Address section buffer and length, if we have an address section + // (.debug_addr). + const uint8_t* addr_buffer_; + uint64 addr_buffer_length_; + + // Flag indicating whether this compilation unit is part of a .dwo + // or .dwp file. If true, we are reading this unit because a + // skeleton compilation unit in an executable file had a + // DW_AT_GNU_dwo_name or DW_AT_GNU_dwo_id attribute. + // In a .dwo file, we expect the string offsets section to + // have a ".dwo" suffix, and we will use the ".debug_addr" section + // associated with the skeleton compilation unit. + bool is_split_dwarf_; + + // The value of the DW_AT_GNU_dwo_id attribute, if any. + uint64 dwo_id_; + + // The value of the DW_AT_GNU_dwo_name attribute, if any. + const char* dwo_name_; + + // If this is a split DWARF CU, the value of the DW_AT_GNU_dwo_id attribute + // from the skeleton CU. + uint64 skeleton_dwo_id_; + + // The value of the DW_AT_GNU_ranges_base attribute, if any. + uint64 ranges_base_; + + // The value of the DW_AT_GNU_addr_base attribute, if any. + uint64 addr_base_; + + // True if we have already looked for a .dwp file. + bool have_checked_for_dwp_; + + // Path to the .dwp file. + string dwp_path_; + + // ByteReader for the DWP file. + std::unique_ptr dwp_byte_reader_; + + // DWP reader. + std::unique_ptr dwp_reader_; }; -// This class is the main interface between the reader and the -// client. The virtual functions inside this get called for -// interesting events that happen during DWARF2 reading. -// The default implementation skips everything. +// A Reader for a .dwp file. Supports the fetching of DWARF debug +// info for a given dwo_id. +// +// There are two versions of .dwp files. In both versions, the +// .dwp file is an ELF file containing only debug sections. +// In Version 1, the file contains many copies of each debug +// section, one for each .dwo file that is packaged in the .dwp +// file, and the .debug_cu_index section maps from the dwo_id +// to a set of section indexes. In Version 2, the file contains +// one of each debug section, and the .debug_cu_index section +// maps from the dwo_id to a set of offsets and lengths that +// identify each .dwo file's contribution to the larger sections. -class Dwarf2Handler { +class DwpReader { public: - Dwarf2Handler() { } + DwpReader(const ByteReader& byte_reader, ElfReader* elf_reader); - virtual ~Dwarf2Handler() { } + ~DwpReader(); - // Start to process a compilation unit at OFFSET from the beginning of the - // .debug_info section. Return false if you would like to skip this - // compilation unit. - virtual bool StartCompilationUnit(uint64 offset, uint8 address_size, - uint8 offset_size, uint64 cu_length, - uint8 dwarf_version) { return false; } + // Read the CU index and initialize data members. + void Initialize(); - // Start to process a DIE at OFFSET from the beginning of the .debug_info - // section. Return false if you would like to skip this DIE. - virtual bool StartDIE(uint64 offset, enum DwarfTag tag) { return false; } + // Read the debug sections for the given dwo_id. + void ReadDebugSectionsForCU(uint64 dwo_id, SectionMap* sections); - // Called when we have an attribute with unsigned data to give to our - // handler. The attribute is for the DIE at OFFSET from the beginning of the - // .debug_info section. Its name is ATTR, its form is FORM, and its value is - // DATA. - virtual void ProcessAttributeUnsigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 data) { } + private: + // Search a v1 hash table for "dwo_id". Returns the slot index + // where the dwo_id was found, or -1 if it was not found. + int LookupCU(uint64 dwo_id); - // Called when we have an attribute with signed data to give to our handler. - // The attribute is for the DIE at OFFSET from the beginning of the - // .debug_info section. Its name is ATTR, its form is FORM, and its value is - // DATA. - virtual void ProcessAttributeSigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - int64 data) { } + // Search a v2 hash table for "dwo_id". Returns the row index + // in the offsets and sizes tables, or 0 if it was not found. + uint32 LookupCUv2(uint64 dwo_id); - // Called when we have an attribute whose value is a reference to - // another DIE. The attribute belongs to the DIE at OFFSET from the - // beginning of the .debug_info section. Its name is ATTR, its form - // is FORM, and the offset of the DIE being referred to from the - // beginning of the .debug_info section is DATA. - virtual void ProcessAttributeReference(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 data) { } + // The ELF reader for the .dwp file. + ElfReader* elf_reader_; - // Called when we have an attribute with a buffer of data to give to our - // handler. The attribute is for the DIE at OFFSET from the beginning of the - // .debug_info section. Its name is ATTR, its form is FORM, DATA points to - // the buffer's contents, and its length in bytes is LENGTH. The buffer is - // owned by the caller, not the callee, and may not persist for very long. - // If you want the data to be available later, it needs to be copied. - virtual void ProcessAttributeBuffer(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const char* data, - uint64 len) { } + // The ByteReader for the .dwp file. + const ByteReader& byte_reader_; - // Called when we have an attribute with string data to give to our handler. - // The attribute is for the DIE at OFFSET from the beginning of the - // .debug_info section. Its name is ATTR, its form is FORM, and its value is - // DATA. - virtual void ProcessAttributeString(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const string& data) { } + // Pointer to the .debug_cu_index section. + const char* cu_index_; - // Called when we have an attribute whose value is the 64-bit signature - // of a type unit in the .debug_types section. OFFSET is the offset of - // the DIE whose attribute we're reporting. ATTR and FORM are the - // attribute's name and form. SIGNATURE is the type unit's signature. - virtual void ProcessAttributeSignature(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 signature) { } + // Size of the .debug_cu_index section. + size_t cu_index_size_; - // Called when finished processing the DIE at OFFSET. - // Because DWARF2/3 specifies a tree of DIEs, you may get starts - // before ends of the previous DIE, as we process children before - // ending the parent. - virtual void EndDIE(uint64 offset) { } + // Pointer to the .debug_str.dwo section. + const char* string_buffer_; + // Size of the .debug_str.dwo section. + size_t string_buffer_size_; + + // Version of the .dwp file. We support versions 1 and 2 currently. + int version_; + + // Number of columns in the section tables (version 2). + unsigned int ncolumns_; + + // Number of units in the section tables (version 2). + unsigned int nunits_; + + // Number of slots in the hash table. + unsigned int nslots_; + + // Pointer to the beginning of the hash table. + const char* phash_; + + // Pointer to the beginning of the index table. + const char* pindex_; + + // Pointer to the beginning of the section index pool (version 1). + const char* shndx_pool_; + + // Pointer to the beginning of the section offset table (version 2). + const char* offset_table_; + + // Pointer to the beginning of the section size table (version 2). + const char* size_table_; + + // Contents of the sections of interest (version 2). + const char* abbrev_data_; + size_t abbrev_size_; + const char* info_data_; + size_t info_size_; + const char* str_offsets_data_; + size_t str_offsets_size_; }; // This class is a reader for DWARF's Call Frame Information. CFI @@ -637,7 +875,7 @@ class CallFrameInfo { // The mechanics of C++ exception handling, personality routines, // and language-specific data areas are described here, rather nicely: // http://www.codesourcery.com/public/cxx-abi/abi-eh.html - CallFrameInfo(const char *buffer, size_t buffer_length, + CallFrameInfo(const uint8_t *buffer, size_t buffer_length, ByteReader *reader, Handler *handler, Reporter *reporter, bool eh_frame = false) : buffer_(buffer), buffer_length_(buffer_length), @@ -665,7 +903,7 @@ class CallFrameInfo { size_t offset; // The start of this entry in the buffer. - const char *start; + const uint8_t *start; // Which kind of entry this is. // @@ -676,16 +914,16 @@ class CallFrameInfo { // The end of this entry's common prologue (initial length and id), and // the start of this entry's kind-specific fields. - const char *fields; + const uint8_t *fields; // The start of this entry's instructions. - const char *instructions; + const uint8_t *instructions; // The address past the entry's last byte in the buffer. (Note that // since offset points to the entry's initial length field, and the // length field is the number of bytes after that field, this is not // simply buffer_ + offset + length.) - const char *end; + const uint8_t *end; // For both DWARF CFI and .eh_frame sections, this is the CIE id in a // CIE, and the offset of the associated CIE in an FDE. @@ -762,7 +1000,7 @@ class CallFrameInfo { // true. On failure, report the problem, and return false. Even if we // return false, set ENTRY->end to the first byte after the entry if we // were able to figure that out, or NULL if we weren't. - bool ReadEntryPrologue(const char *cursor, Entry *entry); + bool ReadEntryPrologue(const uint8_t *cursor, Entry *entry); // Parse the fields of a CIE after the entry prologue, including any 'z' // augmentation data. Assume that the 'Entry' fields of CIE are @@ -790,7 +1028,7 @@ class CallFrameInfo { } // The contents of the DWARF .debug_info section we're parsing. - const char *buffer_; + const uint8_t *buffer_; size_t buffer_length_; // For reading multi-byte values with the appropriate endianness. diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc index 66c6198b11be..e50ea5fbd3d2 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc @@ -31,6 +31,7 @@ // dwarf2reader_cfi_unittest.cc: Unit tests for dwarf2reader::CallFrameInfo +#include #include #include @@ -186,7 +187,7 @@ class CFI: public CFIFixture, public Test { }; TEST_F(CFI, EmptyRegion) { EXPECT_CALL(handler, Entry(_, _, _, _, _, _)).Times(0); EXPECT_CALL(handler, End()).Times(0); - static const char data[1] = { 42 }; + static const uint8_t data[] = { 42 }; ByteReader byte_reader(ENDIANNESS_BIG); CallFrameInfo parser(data, 0, &byte_reader, &handler, &reporter); @@ -213,7 +214,8 @@ TEST_F(CFI, IncompleteLength32) { ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(8); - CallFrameInfo parser(contents.data(), contents.size() - 2, + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size() - 2, &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -238,7 +240,8 @@ TEST_F(CFI, IncompleteLength64) { ByteReader byte_reader(ENDIANNESS_LITTLE); byte_reader.SetAddressSize(4); - CallFrameInfo parser(contents.data(), contents.size() - 4, + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size() - 4, &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -262,7 +265,8 @@ TEST_F(CFI, IncompleteId32) { ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(8); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -288,7 +292,8 @@ TEST_F(CFI, BadId32) { ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(8); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -309,7 +314,8 @@ TEST_F(CFI, SingleCIE) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_LITTLE); byte_reader.SetAddressSize(4); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -339,7 +345,8 @@ TEST_F(CFI, OneFDE) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -382,7 +389,8 @@ TEST_F(CFI, TwoFDEsOneCIE) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -431,7 +439,8 @@ TEST_F(CFI, TwoFDEsTwoCIEs) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_LITTLE); byte_reader.SetAddressSize(8); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -475,7 +484,8 @@ TEST_F(CFI, BadVersion) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -519,7 +529,8 @@ TEST_F(CFI, BadAugmentation) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -553,7 +564,8 @@ TEST_F(CFI, CIEVersion1ReturnColumn) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -587,7 +599,8 @@ TEST_F(CFI, CIEVersion3ReturnColumn) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -668,7 +681,8 @@ struct CFIInsnFixture: public CFIFixture { } ByteReader byte_reader(endianness); byte_reader.SetAddressSize(section->AddressSize()); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter); if (succeeds) EXPECT_TRUE(parser.Start()); @@ -1989,10 +2003,12 @@ struct EHFrameFixture: public CFIInsnFixture { } ByteReader byte_reader(endianness); byte_reader.SetAddressSize(section->AddressSize()); - byte_reader.SetCFIDataBase(encoded_pointer_bases.cfi, contents.data()); + byte_reader.SetCFIDataBase(encoded_pointer_bases.cfi, + reinterpret_cast(contents.data())); byte_reader.SetTextBase(encoded_pointer_bases.text); byte_reader.SetDataBase(encoded_pointer_bases.data); - CallFrameInfo parser(contents.data(), contents.size(), + CallFrameInfo parser(reinterpret_cast(contents.data()), + contents.size(), &byte_reader, &handler, &reporter, true); if (succeeds) EXPECT_TRUE(parser.Start()); diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc index 4e3443693192..71418eb8d761 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc @@ -31,6 +31,7 @@ // dwarf2reader_die_unittest.cc: Unit tests for dwarf2reader::CompilationUnit +#include #include #include @@ -91,7 +92,7 @@ class MockDwarf2Handler: public Dwarf2Handler { MOCK_METHOD5(ProcessAttributeBuffer, void(uint64 offset, enum DwarfAttribute attr, enum DwarfForm form, - const char* data, + const uint8_t *data, uint64 len)); MOCK_METHOD4(ProcessAttributeString, void(uint64 offset, enum DwarfAttribute attr, @@ -132,9 +133,11 @@ struct DIEFixture { assert(info.GetContents(&info_contents)); assert(abbrevs.GetContents(&abbrevs_contents)); section_map.clear(); - section_map[".debug_info"].first = info_contents.data(); + section_map[".debug_info"].first + = reinterpret_cast(info_contents.data()); section_map[".debug_info"].second = info_contents.size(); - section_map[".debug_abbrev"].first = abbrevs_contents.data(); + section_map[".debug_abbrev"].first + = reinterpret_cast(abbrevs_contents.data()); section_map[".debug_abbrev"].second = abbrevs_contents.size(); return section_map; } @@ -196,7 +199,7 @@ TEST_P(DwarfHeader, Header) { ByteReader byte_reader(GetParam().endianness == kLittleEndian ? ENDIANNESS_LITTLE : ENDIANNESS_BIG); - CompilationUnit parser(MakeSectionMap(), 0, &byte_reader, &handler); + CompilationUnit parser("", MakeSectionMap(), 0, &byte_reader, &handler); EXPECT_EQ(parser.Start(), info_contents.size()); } @@ -274,7 +277,7 @@ struct DwarfFormsFixture: public DIEFixture { void ParseCompilationUnit(const DwarfHeaderParams ¶ms, uint64 offset=0) { ByteReader byte_reader(params.endianness == kLittleEndian ? ENDIANNESS_LITTLE : ENDIANNESS_BIG); - CompilationUnit parser(MakeSectionMap(), offset, &byte_reader, &handler); + CompilationUnit parser("", MakeSectionMap(), offset, &byte_reader, &handler); EXPECT_EQ(offset + parser.Start(), info_contents.size()); } diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.cc new file mode 100644 index 000000000000..4135a51a9805 --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.cc @@ -0,0 +1,1273 @@ +// Copyright 2005 Google Inc. All Rights Reserved. +// Author: chatham@google.com (Andrew Chatham) +// Author: satorux@google.com (Satoru Takabayashi) +// +// Code for reading in ELF files. +// +// For information on the ELF format, see +// http://www.x86.org/ftp/manuals/tools/elf.pdf +// +// I also liked: +// http://www.caldera.com/developers/gabi/1998-04-29/contents.html +// +// A note about types: When dealing with the file format, we use types +// like Elf32_Word, but in the public interfaces we treat all +// addresses as uint64. As a result, we should be able to symbolize +// 64-bit binaries from a 32-bit process (which we don't do, +// anyway). size_t should therefore be avoided, except where required +// by things like mmap(). +// +// Although most of this code can deal with arbitrary ELF files of +// either word size, the public ElfReader interface only examines +// files loaded into the current address space, which must all match +// __WORDSIZE. This code cannot handle ELF files with a non-native +// byte ordering. +// +// TODO(chatham): It would be nice if we could accomplish this task +// without using malloc(), so we could use it as the process is dying. + +#ifndef _GNU_SOURCE +#define _GNU_SOURCE // needed for pread() +#endif + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +// TODO(saugustine): Add support for compressed debug. +// Also need to add configure tests for zlib. +//#include "zlib.h" + +#include "third_party/musl/include/elf.h" +#include "elf_reader.h" +#include "common/using_std_string.h" + +// EM_AARCH64 is not defined by elf.h of GRTE v3 on x86. +// TODO(dougkwan): Remove this when v17 is retired. +#if !defined(EM_AARCH64) +#define EM_AARCH64 183 /* ARM AARCH64 */ +#endif + +// Map Linux macros to their Apple equivalents. +#if __APPLE__ +#ifndef __LITTLE_ENDIAN +#define __LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ +#endif // __LITTLE_ENDIAN +#ifndef __BIG_ENDIAN +#define __BIG_ENDIAN __ORDER_BIG_ENDIAN__ +#endif // __BIG_ENDIAN +#ifndef __BYTE_ORDER +#define __BYTE_ORDER __BYTE_ORDER__ +#endif // __BYTE_ORDER +#endif // __APPLE__ + +// TODO(dthomson): Can be removed once all Java code is using the Google3 +// launcher. We need to avoid processing PLT functions as it causes memory +// fragmentation in malloc, which is fixed in tcmalloc - and if the Google3 +// launcher is used the JVM will then use tcmalloc. b/13735638 +//DEFINE_bool(elfreader_process_dynsyms, true, +// "Activate PLT function processing"); + +using std::vector; + +namespace { + +// The lowest bit of an ARM symbol value is used to indicate a Thumb address. +const int kARMThumbBitOffset = 0; + +// Converts an ARM Thumb symbol value to a true aligned address value. +template +T AdjustARMThumbSymbolValue(const T& symbol_table_value) { + return symbol_table_value & ~(1 << kARMThumbBitOffset); +} + +// Names of PLT-related sections. +const char kElfPLTRelSectionName[] = ".rel.plt"; // Use Rel struct. +const char kElfPLTRelaSectionName[] = ".rela.plt"; // Use Rela struct. +const char kElfPLTSectionName[] = ".plt"; +const char kElfDynSymSectionName[] = ".dynsym"; + +const int kX86PLTCodeSize = 0x10; // Size of one x86 PLT function in bytes. +const int kARMPLTCodeSize = 0xc; +const int kAARCH64PLTCodeSize = 0x10; + +const int kX86PLT0Size = 0x10; // Size of the special PLT0 entry. +const int kARMPLT0Size = 0x14; +const int kAARCH64PLT0Size = 0x20; + +// Suffix for PLT functions when it needs to be explicitly identified as such. +const char kPLTFunctionSuffix[] = "@plt"; + +} // namespace + +namespace dwarf2reader { + +template class ElfReaderImpl; + +// 32-bit and 64-bit ELF files are processed exactly the same, except +// for various field sizes. Elf32 and Elf64 encompass all of the +// differences between the two formats, and all format-specific code +// in this file is templated on one of them. +class Elf32 { + public: + typedef Elf32_Ehdr Ehdr; + typedef Elf32_Shdr Shdr; + typedef Elf32_Phdr Phdr; + typedef Elf32_Word Word; + typedef Elf32_Sym Sym; + typedef Elf32_Rel Rel; + typedef Elf32_Rela Rela; + + // What should be in the EI_CLASS header. + static const int kElfClass = ELFCLASS32; + + // Given a symbol pointer, return the binding type (eg STB_WEAK). + static char Bind(const Elf32_Sym *sym) { + return ELF32_ST_BIND(sym->st_info); + } + // Given a symbol pointer, return the symbol type (eg STT_FUNC). + static char Type(const Elf32_Sym *sym) { + return ELF32_ST_TYPE(sym->st_info); + } + + // Extract the symbol index from the r_info field of a relocation. + static int r_sym(const Elf32_Word r_info) { + return ELF32_R_SYM(r_info); + } +}; + + +class Elf64 { + public: + typedef Elf64_Ehdr Ehdr; + typedef Elf64_Shdr Shdr; + typedef Elf64_Phdr Phdr; + typedef Elf64_Word Word; + typedef Elf64_Sym Sym; + typedef Elf64_Rel Rel; + typedef Elf64_Rela Rela; + + // What should be in the EI_CLASS header. + static const int kElfClass = ELFCLASS64; + + static char Bind(const Elf64_Sym *sym) { + return ELF64_ST_BIND(sym->st_info); + } + static char Type(const Elf64_Sym *sym) { + return ELF64_ST_TYPE(sym->st_info); + } + static int r_sym(const Elf64_Xword r_info) { + return ELF64_R_SYM(r_info); + } +}; + + +// ElfSectionReader mmaps a section of an ELF file ("section" is ELF +// terminology). The ElfReaderImpl object providing the section header +// must exist for the lifetime of this object. +// +// The motivation for mmaping individual sections of the file is that +// many Google executables are large enough when unstripped that we +// have to worry about running out of virtual address space. +// +// For compressed sections we have no choice but to allocate memory. +template +class ElfSectionReader { + public: + ElfSectionReader(const char *name, const string &path, int fd, + const typename ElfArch::Shdr §ion_header) + : contents_aligned_(NULL), + contents_(NULL), + header_(section_header) { + // Back up to the beginning of the page we're interested in. + const size_t additional = header_.sh_offset % getpagesize(); + const size_t offset_aligned = header_.sh_offset - additional; + section_size_ = header_.sh_size; + size_aligned_ = section_size_ + additional; + // If the section has been stripped or is empty, do not attempt + // to process its contents. + if (header_.sh_type == SHT_NOBITS || header_.sh_size == 0) + return; + contents_aligned_ = mmap(NULL, size_aligned_, PROT_READ, MAP_SHARED, + fd, offset_aligned); + // Set where the offset really should begin. + contents_ = reinterpret_cast(contents_aligned_) + + (header_.sh_offset - offset_aligned); + + // Check for and handle any compressed contents. + //if (strncmp(name, ".zdebug_", strlen(".zdebug_")) == 0) + // DecompressZlibContents(); + // TODO(saugustine): Add support for proposed elf-section flag + // "SHF_COMPRESS". + } + + ~ElfSectionReader() { + if (contents_aligned_ != NULL) + munmap(contents_aligned_, size_aligned_); + else + delete[] contents_; + } + + // Return the section header for this section. + typename ElfArch::Shdr const &header() const { return header_; } + + // Return memory at the given offset within this section. + const char *GetOffset(typename ElfArch::Word bytes) const { + return contents_ + bytes; + } + + const char *contents() const { return contents_; } + size_t section_size() const { return section_size_; } + + private: + // page-aligned file contents + void *contents_aligned_; + // contents as usable by the client. For non-compressed sections, + // pointer within contents_aligned_ to where the section data + // begins; for compressed sections, pointer to the decompressed + // data. + char *contents_; + // size of contents_aligned_ + size_t size_aligned_; + // size of contents. + size_t section_size_; + const typename ElfArch::Shdr header_; +}; + +// An iterator over symbols in a given section. It handles walking +// through the entries in the specified section and mapping symbol +// entries to their names in the appropriate string table (in +// another section). +template +class SymbolIterator { + public: + SymbolIterator(ElfReaderImpl *reader, + typename ElfArch::Word section_type) + : symbol_section_(reader->GetSectionByType(section_type)), + string_section_(NULL), + num_symbols_in_section_(0), + symbol_within_section_(0) { + + // If this section type doesn't exist, leave + // num_symbols_in_section_ as zero, so this iterator is already + // done(). + if (symbol_section_ != NULL) { + num_symbols_in_section_ = symbol_section_->header().sh_size / + symbol_section_->header().sh_entsize; + + // Symbol sections have sh_link set to the section number of + // the string section containing the symbol names. + string_section_ = reader->GetSection(symbol_section_->header().sh_link); + } + } + + // Return true iff we have passed all symbols in this section. + bool done() const { + return symbol_within_section_ >= num_symbols_in_section_; + } + + // Advance to the next symbol in this section. + // REQUIRES: !done() + void Next() { ++symbol_within_section_; } + + // Return a pointer to the current symbol. + // REQUIRES: !done() + const typename ElfArch::Sym *GetSymbol() const { + return reinterpret_cast( + symbol_section_->GetOffset(symbol_within_section_ * + symbol_section_->header().sh_entsize)); + } + + // Return the name of the current symbol, NULL if it has none. + // REQUIRES: !done() + const char *GetSymbolName() const { + int name_offset = GetSymbol()->st_name; + if (name_offset == 0) + return NULL; + return string_section_->GetOffset(name_offset); + } + + int GetCurrentSymbolIndex() const { + return symbol_within_section_; + } + + private: + const ElfSectionReader *const symbol_section_; + const ElfSectionReader *string_section_; + int num_symbols_in_section_; + int symbol_within_section_; +}; + + +// Copied from strings/strutil.h. Per chatham, +// this library should not depend on strings. + +static inline bool MyHasSuffixString(const string& str, const string& suffix) { + int len = str.length(); + int suflen = suffix.length(); + return (suflen <= len) && (str.compare(len-suflen, suflen, suffix) == 0); +} + + +// ElfReader loads an ELF binary and can provide information about its +// contents. It is most useful for matching addresses to function +// names. It does not understand debugging formats (eg dwarf2), so it +// can't print line numbers. It takes a path to an elf file and a +// readable file descriptor for that file, which it does not assume +// ownership of. +template +class ElfReaderImpl { + public: + explicit ElfReaderImpl(const string &path, int fd) + : path_(path), + fd_(fd), + section_headers_(NULL), + program_headers_(NULL), + opd_section_(NULL), + base_for_text_(0), + plts_supported_(false), + plt_code_size_(0), + plt0_size_(0), + visited_relocation_entries_(false) { + string error; + is_dwp_ = MyHasSuffixString(path, ".dwp"); + ParseHeaders(fd, path); + // Currently we need some extra information for PowerPC64 binaries + // including a way to read the .opd section for function descriptors and a + // way to find the linked base for function symbols. + if (header_.e_machine == EM_PPC64) { + // "opd_section_" must always be checked for NULL before use. + opd_section_ = GetSectionInfoByName(".opd", &opd_info_); + for (unsigned int k = 0u; k < GetNumSections(); ++k) { + const char *name = GetSectionName(section_headers_[k].sh_name); + if (strncmp(name, ".text", strlen(".text")) == 0) { + base_for_text_ = + section_headers_[k].sh_addr - section_headers_[k].sh_offset; + break; + } + } + } + // Turn on PLTs. + if (header_.e_machine == EM_386 || header_.e_machine == EM_X86_64) { + plt_code_size_ = kX86PLTCodeSize; + plt0_size_ = kX86PLT0Size; + plts_supported_ = true; + } else if (header_.e_machine == EM_ARM) { + plt_code_size_ = kARMPLTCodeSize; + plt0_size_ = kARMPLT0Size; + plts_supported_ = true; + } else if (header_.e_machine == EM_AARCH64) { + plt_code_size_ = kAARCH64PLTCodeSize; + plt0_size_ = kAARCH64PLT0Size; + plts_supported_ = true; + } + } + + ~ElfReaderImpl() { + for (unsigned int i = 0u; i < sections_.size(); ++i) + delete sections_[i]; + delete [] section_headers_; + delete [] program_headers_; + } + + // Examine the headers of the file and return whether the file looks + // like an ELF file for this architecture. Takes an already-open + // file descriptor for the candidate file, reading in the prologue + // to see if the ELF file appears to match the current + // architecture. If error is non-NULL, it will be set with a reason + // in case of failure. + static bool IsArchElfFile(int fd, string *error) { + unsigned char header[EI_NIDENT]; + if (pread(fd, header, sizeof(header), 0) != sizeof(header)) { + if (error != NULL) *error = "Could not read header"; + return false; + } + + if (memcmp(header, ELFMAG, SELFMAG) != 0) { + if (error != NULL) *error = "Missing ELF magic"; + return false; + } + + if (header[EI_CLASS] != ElfArch::kElfClass) { + if (error != NULL) *error = "Different word size"; + return false; + } + + int endian = 0; + if (header[EI_DATA] == ELFDATA2LSB) + endian = __LITTLE_ENDIAN; + else if (header[EI_DATA] == ELFDATA2MSB) + endian = __BIG_ENDIAN; + if (endian != __BYTE_ORDER) { + if (error != NULL) *error = "Different byte order"; + return false; + } + + return true; + } + + // Return true if we can use this symbol in Address-to-Symbol map. + bool CanUseSymbol(const char *name, const typename ElfArch::Sym *sym) { + // For now we only save FUNC and NOTYPE symbols. For now we just + // care about functions, but some functions written in assembler + // don't have a proper ELF type attached to them, so we store + // NOTYPE symbols as well. The remaining significant type is + // OBJECT (eg global variables), which represent about 25% of + // the symbols in a typical google3 binary. + if (ElfArch::Type(sym) != STT_FUNC && + ElfArch::Type(sym) != STT_NOTYPE) { + return false; + } + + // Target specific filtering. + switch (header_.e_machine) { + case EM_AARCH64: + case EM_ARM: + // Filter out '$x' special local symbols used by tools + return name[0] != '$' || ElfArch::Bind(sym) != STB_LOCAL; + case EM_X86_64: + // Filter out read-only constants like .LC123. + return name[0] != '.' || ElfArch::Bind(sym) != STB_LOCAL; + default: + return true; + } + } + + // Iterate over the symbols in a section, either SHT_DYNSYM or + // SHT_SYMTAB. Add all symbols to the given SymbolMap. + /* + void GetSymbolPositions(SymbolMap *symbols, + typename ElfArch::Word section_type, + uint64 mem_offset, + uint64 file_offset) { + // This map is used to filter out "nested" functions. + // See comment below. + AddrToSymMap addr_to_sym_map; + for (SymbolIterator it(this, section_type); + !it.done(); it.Next()) { + const char *name = it.GetSymbolName(); + if (name == NULL) + continue; + const typename ElfArch::Sym *sym = it.GetSymbol(); + if (CanUseSymbol(name, sym)) { + const int sec = sym->st_shndx; + + // We don't support special section indices. The most common + // is SHN_ABS, for absolute symbols used deep in the bowels of + // glibc. Also ignore any undefined symbols. + if (sec == SHN_UNDEF || + (sec >= SHN_LORESERVE && sec <= SHN_HIRESERVE)) { + continue; + } + + const typename ElfArch::Shdr& hdr = section_headers_[sec]; + + // Adjust for difference between where we expected to mmap + // this section, and where it was actually mmapped. + const int64 expected_base = hdr.sh_addr - hdr.sh_offset; + const int64 real_base = mem_offset - file_offset; + const int64 adjust = real_base - expected_base; + + uint64 start = sym->st_value + adjust; + + // Adjust function symbols for PowerPC64 by dereferencing and adjusting + // the function descriptor to get the function address. + if (header_.e_machine == EM_PPC64 && ElfArch::Type(sym) == STT_FUNC) { + const uint64 opd_addr = + AdjustPPC64FunctionDescriptorSymbolValue(sym->st_value); + // Only adjust the returned value if the function address was found. + if (opd_addr != sym->st_value) { + const int64 adjust_function_symbols = + real_base - base_for_text_; + start = opd_addr + adjust_function_symbols; + } + } + + addr_to_sym_map.push_back(std::make_pair(start, sym)); + } + } + std::sort(addr_to_sym_map.begin(), addr_to_sym_map.end(), &AddrToSymSorter); + addr_to_sym_map.erase(std::unique(addr_to_sym_map.begin(), + addr_to_sym_map.end(), &AddrToSymEquals), + addr_to_sym_map.end()); + + // Squeeze out any "nested functions". + // Nested functions are not allowed in C, but libc plays tricks. + // + // For example, here is disassembly of /lib64/tls/libc-2.3.5.so: + // 0x00000000000aa380 : cmpl $0x0,0x2781b9(%rip) + // 0x00000000000aa387 : jne 0xaa39b + // 0x00000000000aa389 <__read_nocancel+0>: mov $0x0,%rax + // 0x00000000000aa390 <__read_nocancel+7>: syscall + // 0x00000000000aa392 <__read_nocancel+9>: cmp $0xfffffffffffff001,%rax + // 0x00000000000aa398 <__read_nocancel+15>: jae 0xaa3ef + // 0x00000000000aa39a <__read_nocancel+17>: retq + // 0x00000000000aa39b : sub $0x28,%rsp + // 0x00000000000aa39f : mov %rdi,0x8(%rsp) + // ... + // Without removing __read_nocancel, symbolizer will return NULL + // given e.g. 0xaa39f (because the lower bound is __read_nocancel, + // but 0xaa39f is beyond its end. + if (addr_to_sym_map.empty()) { + return; + } + const ElfSectionReader *const symbol_section = + this->GetSectionByType(section_type); + const ElfSectionReader *const string_section = + this->GetSection(symbol_section->header().sh_link); + + typename AddrToSymMap::iterator curr = addr_to_sym_map.begin(); + // Always insert the first symbol. + symbols->AddSymbol(string_section->GetOffset(curr->second->st_name), + curr->first, curr->second->st_size); + typename AddrToSymMap::iterator prev = curr++; + for (; curr != addr_to_sym_map.end(); ++curr) { + const uint64 prev_addr = prev->first; + const uint64 curr_addr = curr->first; + const typename ElfArch::Sym *const prev_sym = prev->second; + const typename ElfArch::Sym *const curr_sym = curr->second; + if (prev_addr + prev_sym->st_size <= curr_addr || + // The next condition is true if two symbols overlap like this: + // + // Previous symbol |----------------------------| + // Current symbol |-------------------------------| + // + // These symbols are not found in google3 codebase, but in + // jdk1.6.0_01_gg1/jre/lib/i386/server/libjvm.so. + // + // 0619e040 00000046 t CardTableModRefBS::write_region_work() + // 0619e070 00000046 t CardTableModRefBS::write_ref_array_work() + // + // We allow overlapped symbols rather than ignore these. + // Due to the way SymbolMap::GetSymbolAtPosition() works, + // lookup for any address in [curr_addr, curr_addr + its size) + // (e.g. 0619e071) will produce the current symbol, + // which is the desired outcome. + prev_addr + prev_sym->st_size < curr_addr + curr_sym->st_size) { + const char *name = string_section->GetOffset(curr_sym->st_name); + symbols->AddSymbol(name, curr_addr, curr_sym->st_size); + prev = curr; + } else { + // Current symbol is "nested" inside previous one like this: + // + // Previous symbol |----------------------------| + // Current symbol |---------------------| + // + // This happens within glibc, e.g. __read_nocancel is nested + // "inside" __read. Ignore "inner" symbol. + //DCHECK_LE(curr_addr + curr_sym->st_size, + // prev_addr + prev_sym->st_size); + ; + } + } + } +*/ + + void VisitSymbols(typename ElfArch::Word section_type, + ElfReader::SymbolSink *sink) { + VisitSymbols(section_type, sink, -1, -1, false); + } + + void VisitSymbols(typename ElfArch::Word section_type, + ElfReader::SymbolSink *sink, + int symbol_binding, + int symbol_type, + bool get_raw_symbol_values) { + for (SymbolIterator it(this, section_type); + !it.done(); it.Next()) { + const char *name = it.GetSymbolName(); + if (!name) continue; + const typename ElfArch::Sym *sym = it.GetSymbol(); + if ((symbol_binding < 0 || ElfArch::Bind(sym) == symbol_binding) && + (symbol_type < 0 || ElfArch::Type(sym) == symbol_type)) { + typename ElfArch::Sym symbol = *sym; + // Add a PLT symbol in addition to the main undefined symbol. + // Only do this for SHT_DYNSYM, because PLT symbols are dynamic. + int symbol_index = it.GetCurrentSymbolIndex(); + // TODO(dthomson): Can be removed once all Java code is using the + // Google3 launcher. + if (section_type == SHT_DYNSYM && + static_cast(symbol_index) < symbols_plt_offsets_.size() && + symbols_plt_offsets_[symbol_index] != 0) { + string plt_name = string(name) + kPLTFunctionSuffix; + if (plt_function_names_[symbol_index].empty()) { + plt_function_names_[symbol_index] = plt_name; + } else if (plt_function_names_[symbol_index] != plt_name) { + ; + } + sink->AddSymbol(plt_function_names_[symbol_index].c_str(), + symbols_plt_offsets_[it.GetCurrentSymbolIndex()], + plt_code_size_); + } + if (!get_raw_symbol_values) + AdjustSymbolValue(&symbol); + sink->AddSymbol(name, symbol.st_value, symbol.st_size); + } + } + } + + void VisitRelocationEntries() { + if (visited_relocation_entries_) { + return; + } + visited_relocation_entries_ = true; + + if (!plts_supported_) { + return; + } + // First determine if PLTs exist. If not, then there is nothing to do. + ElfReader::SectionInfo plt_section_info; + const char* plt_section = + GetSectionInfoByName(kElfPLTSectionName, &plt_section_info); + if (!plt_section) { + return; + } + if (plt_section_info.size == 0) { + return; + } + + // The PLTs could be referenced by either a Rel or Rela (Rel with Addend) + // section. + ElfReader::SectionInfo rel_section_info; + ElfReader::SectionInfo rela_section_info; + const char* rel_section = + GetSectionInfoByName(kElfPLTRelSectionName, &rel_section_info); + const char* rela_section = + GetSectionInfoByName(kElfPLTRelaSectionName, &rela_section_info); + + const typename ElfArch::Rel* rel = + reinterpret_cast(rel_section); + const typename ElfArch::Rela* rela = + reinterpret_cast(rela_section); + + if (!rel_section && !rela_section) { + return; + } + + // Use either Rel or Rela section, depending on which one exists. + size_t section_size = rel_section ? rel_section_info.size + : rela_section_info.size; + size_t entry_size = rel_section ? sizeof(typename ElfArch::Rel) + : sizeof(typename ElfArch::Rela); + + // Determine the number of entries in the dynamic symbol table. + ElfReader::SectionInfo dynsym_section_info; + const char* dynsym_section = + GetSectionInfoByName(kElfDynSymSectionName, &dynsym_section_info); + // The dynsym section might not exist, or it might be empty. In either case + // there is nothing to be done so return. + if (!dynsym_section || dynsym_section_info.size == 0) { + return; + } + size_t num_dynamic_symbols = + dynsym_section_info.size / dynsym_section_info.entsize; + symbols_plt_offsets_.resize(num_dynamic_symbols, 0); + + // TODO(dthomson): Can be removed once all Java code is using the + // Google3 launcher. + // Make storage room for PLT function name strings. + plt_function_names_.resize(num_dynamic_symbols); + + for (size_t i = 0; i < section_size / entry_size; ++i) { + // Determine symbol index from the |r_info| field. + int sym_index = ElfArch::r_sym(rel_section ? rel[i].r_info + : rela[i].r_info); + if (static_cast(sym_index) >= symbols_plt_offsets_.size()) { + continue; + } + symbols_plt_offsets_[sym_index] = + plt_section_info.addr + plt0_size_ + i * plt_code_size_; + } + } + + // Return an ElfSectionReader for the first section of the given + // type by iterating through all section headers. Returns NULL if + // the section type is not found. + const ElfSectionReader *GetSectionByType( + typename ElfArch::Word section_type) { + for (unsigned int k = 0u; k < GetNumSections(); ++k) { + if (section_headers_[k].sh_type == section_type) { + return GetSection(k); + } + } + return NULL; + } + + // Return the name of section "shndx". Returns NULL if the section + // is not found. + const char *GetSectionNameByIndex(int shndx) { + return GetSectionName(section_headers_[shndx].sh_name); + } + + // Return a pointer to section "shndx", and store the size in + // "size". Returns NULL if the section is not found. + const char *GetSectionContentsByIndex(int shndx, size_t *size) { + const ElfSectionReader *section = GetSection(shndx); + if (section != NULL) { + *size = section->section_size(); + return section->contents(); + } + return NULL; + } + + // Return a pointer to the first section of the given name by + // iterating through all section headers, and store the size in + // "size". Returns NULL if the section name is not found. + const char *GetSectionContentsByName(const string §ion_name, + size_t *size) { + for (unsigned int k = 0u; k < GetNumSections(); ++k) { + // When searching for sections in a .dwp file, the sections + // we're looking for will always be at the end of the section + // table, so reverse the direction of iteration. + int shndx = is_dwp_ ? GetNumSections() - k - 1 : k; + const char *name = GetSectionName(section_headers_[shndx].sh_name); + if (name != NULL && ElfReader::SectionNamesMatch(section_name, name)) { + const ElfSectionReader *section = GetSection(shndx); + if (section == NULL) { + return NULL; + } else { + *size = section->section_size(); + return section->contents(); + } + } + } + return NULL; + } + + // This is like GetSectionContentsByName() but it returns a lot of extra + // information about the section. + const char *GetSectionInfoByName(const string §ion_name, + ElfReader::SectionInfo *info) { + for (unsigned int k = 0u; k < GetNumSections(); ++k) { + // When searching for sections in a .dwp file, the sections + // we're looking for will always be at the end of the section + // table, so reverse the direction of iteration. + int shndx = is_dwp_ ? GetNumSections() - k - 1 : k; + const char *name = GetSectionName(section_headers_[shndx].sh_name); + if (name != NULL && ElfReader::SectionNamesMatch(section_name, name)) { + const ElfSectionReader *section = GetSection(shndx); + if (section == NULL) { + return NULL; + } else { + info->type = section->header().sh_type; + info->flags = section->header().sh_flags; + info->addr = section->header().sh_addr; + info->offset = section->header().sh_offset; + info->size = section->header().sh_size; + info->link = section->header().sh_link; + info->info = section->header().sh_info; + info->addralign = section->header().sh_addralign; + info->entsize = section->header().sh_entsize; + return section->contents(); + } + } + } + return NULL; + } + + // p_vaddr of the first PT_LOAD segment (if any), or 0 if no PT_LOAD + // segments are present. This is the address an ELF image was linked + // (by static linker) to be loaded at. Usually (but not always) 0 for + // shared libraries and position-independent executables. + uint64 VaddrOfFirstLoadSegment() const { + // Relocatable objects (of type ET_REL) do not have LOAD segments. + if (header_.e_type == ET_REL) { + return 0; + } + for (int i = 0; i < GetNumProgramHeaders(); ++i) { + if (program_headers_[i].p_type == PT_LOAD) { + return program_headers_[i].p_vaddr; + } + } + return 0; + } + + // According to the LSB ("ELF special sections"), sections with debug + // info are prefixed by ".debug". The names are not specified, but they + // look like ".debug_line", ".debug_info", etc. + bool HasDebugSections() { + // Debug sections are likely to be near the end, so reverse the + // direction of iteration. + for (int k = GetNumSections() - 1; k >= 0; --k) { + const char *name = GetSectionName(section_headers_[k].sh_name); + if (strncmp(name, ".debug", strlen(".debug")) == 0) return true; + if (strncmp(name, ".zdebug", strlen(".zdebug")) == 0) return true; + } + return false; + } + + bool IsDynamicSharedObject() const { + return header_.e_type == ET_DYN; + } + + // Return the number of sections. + uint64_t GetNumSections() const { + if (HasManySections()) + return first_section_header_.sh_size; + return header_.e_shnum; + } + + private: + typedef vector > AddrToSymMap; + + static bool AddrToSymSorter(const typename AddrToSymMap::value_type& lhs, + const typename AddrToSymMap::value_type& rhs) { + return lhs.first < rhs.first; + } + + static bool AddrToSymEquals(const typename AddrToSymMap::value_type& lhs, + const typename AddrToSymMap::value_type& rhs) { + return lhs.first == rhs.first; + } + + // Does this ELF file have too many sections to fit in the program header? + bool HasManySections() const { + return header_.e_shnum == SHN_UNDEF; + } + + // Return the number of program headers. + int GetNumProgramHeaders() const { + if (HasManySections() && header_.e_phnum == 0xffff && + first_section_header_.sh_info != 0) + return first_section_header_.sh_info; + return header_.e_phnum; + } + + // Return the index of the string table. + int GetStringTableIndex() const { + if (HasManySections()) { + if (header_.e_shstrndx == 0xffff) + return first_section_header_.sh_link; + else if (header_.e_shstrndx >= GetNumSections()) + return 0; + } + return header_.e_shstrndx; + } + + // Given an offset into the section header string table, return the + // section name. + const char *GetSectionName(typename ElfArch::Word sh_name) { + const ElfSectionReader *shstrtab = + GetSection(GetStringTableIndex()); + if (shstrtab != NULL) { + return shstrtab->GetOffset(sh_name); + } + return NULL; + } + + // Return an ElfSectionReader for the given section. The reader will + // be freed when this object is destroyed. + const ElfSectionReader *GetSection(int num) { + const char *name; + // Hard-coding the name for the section-name string table prevents + // infinite recursion. + if (num == GetStringTableIndex()) + name = ".shstrtab"; + else + name = GetSectionNameByIndex(num); + ElfSectionReader *& reader = sections_[num]; + if (reader == NULL) + reader = new ElfSectionReader(name, path_, fd_, + section_headers_[num]); + return reader; + } + + // Parse out the overall header information from the file and assert + // that it looks sane. This contains information like the magic + // number and target architecture. + bool ParseHeaders(int fd, const string &path) { + // Read in the global ELF header. + if (pread(fd, &header_, sizeof(header_), 0) != sizeof(header_)) { + return false; + } + + // Must be an executable, dynamic shared object or relocatable object + if (header_.e_type != ET_EXEC && + header_.e_type != ET_DYN && + header_.e_type != ET_REL) { + return false; + } + // Need a section header. + if (header_.e_shoff == 0) { + return false; + } + + if (header_.e_shnum == SHN_UNDEF) { + // The number of sections in the program header is only a 16-bit value. In + // the event of overflow (greater than SHN_LORESERVE sections), e_shnum + // will read SHN_UNDEF and the true number of section header table entries + // is found in the sh_size field of the first section header. + // See: http://www.sco.com/developers/gabi/2003-12-17/ch4.sheader.html + if (pread(fd, &first_section_header_, sizeof(first_section_header_), + header_.e_shoff) != sizeof(first_section_header_)) { + return false; + } + } + + // Dynamically allocate enough space to store the section headers + // and read them out of the file. + const int section_headers_size = + GetNumSections() * sizeof(*section_headers_); + section_headers_ = new typename ElfArch::Shdr[section_headers_size]; + if (pread(fd, section_headers_, section_headers_size, header_.e_shoff) != + section_headers_size) { + return false; + } + + // Dynamically allocate enough space to store the program headers + // and read them out of the file. + //const int program_headers_size = + // GetNumProgramHeaders() * sizeof(*program_headers_); + program_headers_ = new typename ElfArch::Phdr[GetNumProgramHeaders()]; + + // Presize the sections array for efficiency. + sections_.resize(GetNumSections(), NULL); + return true; + } + + // Given the "value" of a function descriptor return the address of the + // function (i.e. the dereferenced value). Otherwise return "value". + uint64 AdjustPPC64FunctionDescriptorSymbolValue(uint64 value) { + if (opd_section_ != NULL && + opd_info_.addr <= value && + value < opd_info_.addr + opd_info_.size) { + uint64 offset = value - opd_info_.addr; + return (*reinterpret_cast(opd_section_ + offset)); + } + return value; + } + + void AdjustSymbolValue(typename ElfArch::Sym* sym) { + switch (header_.e_machine) { + case EM_ARM: + // For ARM architecture, if the LSB of the function symbol offset is set, + // it indicates a Thumb function. This bit should not be taken literally. + // Clear it. + if (ElfArch::Type(sym) == STT_FUNC) + sym->st_value = AdjustARMThumbSymbolValue(sym->st_value); + break; + case EM_386: + // No adjustment needed for Intel x86 architecture. However, explicitly + // define this case as we use it quite often. + break; + case EM_PPC64: + // PowerPC64 currently has function descriptors as part of the ABI. + // Function symbols need to be adjusted accordingly. + if (ElfArch::Type(sym) == STT_FUNC) + sym->st_value = AdjustPPC64FunctionDescriptorSymbolValue(sym->st_value); + break; + default: + break; + } + } + + friend class SymbolIterator; + + // The file we're reading. + const string path_; + // Open file descriptor for path_. Not owned by this object. + const int fd_; + + // The global header of the ELF file. + typename ElfArch::Ehdr header_; + + // The header of the first section. This may be used to supplement the ELF + // file header. + typename ElfArch::Shdr first_section_header_; + + // Array of GetNumSections() section headers, allocated when we read + // in the global header. + typename ElfArch::Shdr *section_headers_; + + // Array of GetNumProgramHeaders() program headers, allocated when we read + // in the global header. + typename ElfArch::Phdr *program_headers_; + + // An array of pointers to ElfSectionReaders. Sections are + // mmaped as they're needed and not released until this object is + // destroyed. + vector*> sections_; + + // For PowerPC64 we need to keep track of function descriptors when looking up + // values for funtion symbols values. Function descriptors are kept in the + // .opd section and are dereferenced to find the function address. + ElfReader::SectionInfo opd_info_; + const char *opd_section_; // Must be checked for NULL before use. + int64 base_for_text_; + + // Read PLT-related sections for the current architecture. + bool plts_supported_; + // Code size of each PLT function for the current architecture. + size_t plt_code_size_; + // Size of the special first entry in the .plt section that calls the runtime + // loader resolution routine, and that all other entries jump to when doing + // lazy symbol binding. + size_t plt0_size_; + + // Maps a dynamic symbol index to a PLT offset. + // The vector entry index is the dynamic symbol index. + std::vector symbols_plt_offsets_; + + // Container for PLT function name strings. These strings are passed by + // reference to SymbolSink::AddSymbol() so they need to be stored somewhere. + std::vector plt_function_names_; + + bool visited_relocation_entries_; + + // True if this is a .dwp file. + bool is_dwp_; +}; + +ElfReader::ElfReader(const string &path) + : path_(path), fd_(-1), impl32_(NULL), impl64_(NULL) { + // linux 2.6.XX kernel can show deleted files like this: + // /var/run/nscd/dbYLJYaE (deleted) + // and the kernel-supplied vdso and vsyscall mappings like this: + // [vdso] + // [vsyscall] + if (MyHasSuffixString(path, " (deleted)")) + return; + if (path == "[vdso]") + return; + if (path == "[vsyscall]") + return; + + fd_ = open(path.c_str(), O_RDONLY); +} + +ElfReader::~ElfReader() { + if (fd_ != -1) + close(fd_); + if (impl32_ != NULL) + delete impl32_; + if (impl64_ != NULL) + delete impl64_; +} + + +// The only word-size specific part of this file is IsNativeElfFile(). +#if __WORDSIZE == 32 +#define NATIVE_ELF_ARCH Elf32 +#elif __WORDSIZE == 64 +#define NATIVE_ELF_ARCH Elf64 +#else +#error "Invalid word size" +#endif + +template +static bool IsElfFile(const int fd, const string &path) { + if (fd < 0) + return false; + if (!ElfReaderImpl::IsArchElfFile(fd, NULL)) { + // No error message here. IsElfFile gets called many times. + return false; + } + return true; +} + +bool ElfReader::IsNativeElfFile() const { + return IsElfFile(fd_, path_); +} + +bool ElfReader::IsElf32File() const { + return IsElfFile(fd_, path_); +} + +bool ElfReader::IsElf64File() const { + return IsElfFile(fd_, path_); +} + +/* +void ElfReader::AddSymbols(SymbolMap *symbols, + uint64 mem_offset, uint64 file_offset, + uint64 length) { + if (fd_ < 0) + return; + // TODO(chatham): Actually use the information about file offset and + // the length of the mapped section. On some machines the data + // section gets mapped as executable, and we'll end up reading the + // file twice and getting some of the offsets wrong. + if (IsElf32File()) { + GetImpl32()->GetSymbolPositions(symbols, SHT_SYMTAB, + mem_offset, file_offset); + GetImpl32()->GetSymbolPositions(symbols, SHT_DYNSYM, + mem_offset, file_offset); + } else if (IsElf64File()) { + GetImpl64()->GetSymbolPositions(symbols, SHT_SYMTAB, + mem_offset, file_offset); + GetImpl64()->GetSymbolPositions(symbols, SHT_DYNSYM, + mem_offset, file_offset); + } +} +*/ + +void ElfReader::VisitSymbols(ElfReader::SymbolSink *sink) { + VisitSymbols(sink, -1, -1); +} + +void ElfReader::VisitSymbols(ElfReader::SymbolSink *sink, + int symbol_binding, + int symbol_type) { + VisitSymbols(sink, symbol_binding, symbol_type, false); +} + +void ElfReader::VisitSymbols(ElfReader::SymbolSink *sink, + int symbol_binding, + int symbol_type, + bool get_raw_symbol_values) { + if (IsElf32File()) { + GetImpl32()->VisitRelocationEntries(); + GetImpl32()->VisitSymbols(SHT_SYMTAB, sink, symbol_binding, symbol_type, + get_raw_symbol_values); + GetImpl32()->VisitSymbols(SHT_DYNSYM, sink, symbol_binding, symbol_type, + get_raw_symbol_values); + } else if (IsElf64File()) { + GetImpl64()->VisitRelocationEntries(); + GetImpl64()->VisitSymbols(SHT_SYMTAB, sink, symbol_binding, symbol_type, + get_raw_symbol_values); + GetImpl64()->VisitSymbols(SHT_DYNSYM, sink, symbol_binding, symbol_type, + get_raw_symbol_values); + } +} + +uint64 ElfReader::VaddrOfFirstLoadSegment() { + if (IsElf32File()) { + return GetImpl32()->VaddrOfFirstLoadSegment(); + } else if (IsElf64File()) { + return GetImpl64()->VaddrOfFirstLoadSegment(); + } else { + return 0; + } +} + +const char *ElfReader::GetSectionName(int shndx) { + if (shndx < 0 || static_cast(shndx) >= GetNumSections()) return NULL; + if (IsElf32File()) { + return GetImpl32()->GetSectionNameByIndex(shndx); + } else if (IsElf64File()) { + return GetImpl64()->GetSectionNameByIndex(shndx); + } else { + return NULL; + } +} + +uint64 ElfReader::GetNumSections() { + if (IsElf32File()) { + return GetImpl32()->GetNumSections(); + } else if (IsElf64File()) { + return GetImpl64()->GetNumSections(); + } else { + return 0; + } +} + +const char *ElfReader::GetSectionByIndex(int shndx, size_t *size) { + if (IsElf32File()) { + return GetImpl32()->GetSectionContentsByIndex(shndx, size); + } else if (IsElf64File()) { + return GetImpl64()->GetSectionContentsByIndex(shndx, size); + } else { + return NULL; + } +} + +const char *ElfReader::GetSectionByName(const string §ion_name, + size_t *size) { + if (IsElf32File()) { + return GetImpl32()->GetSectionContentsByName(section_name, size); + } else if (IsElf64File()) { + return GetImpl64()->GetSectionContentsByName(section_name, size); + } else { + return NULL; + } +} + +const char *ElfReader::GetSectionInfoByName(const string §ion_name, + SectionInfo *info) { + if (IsElf32File()) { + return GetImpl32()->GetSectionInfoByName(section_name, info); + } else if (IsElf64File()) { + return GetImpl64()->GetSectionInfoByName(section_name, info); + } else { + return NULL; + } +} + +bool ElfReader::SectionNamesMatch(const string &name, const string &sh_name) { + if ((name.find(".debug_", 0) == 0) && (sh_name.find(".zdebug_", 0) == 0)) { + const string name_suffix(name, strlen(".debug_")); + const string sh_name_suffix(sh_name, strlen(".zdebug_")); + return name_suffix == sh_name_suffix; + } + return name == sh_name; +} + +bool ElfReader::IsDynamicSharedObject() { + if (IsElf32File()) { + return GetImpl32()->IsDynamicSharedObject(); + } else if (IsElf64File()) { + return GetImpl64()->IsDynamicSharedObject(); + } else { + return false; + } +} + +ElfReaderImpl *ElfReader::GetImpl32() { + if (impl32_ == NULL) { + impl32_ = new ElfReaderImpl(path_, fd_); + } + return impl32_; +} + +ElfReaderImpl *ElfReader::GetImpl64() { + if (impl64_ == NULL) { + impl64_ = new ElfReaderImpl(path_, fd_); + } + return impl64_; +} + +// Return true if file is an ELF binary of ElfArch, with unstripped +// debug info (debug_only=true) or symbol table (debug_only=false). +// Otherwise, return false. +template +static bool IsNonStrippedELFBinaryImpl(const string &path, const int fd, + bool debug_only) { + if (!ElfReaderImpl::IsArchElfFile(fd, NULL)) return false; + ElfReaderImpl elf_reader(path, fd); + return debug_only ? + elf_reader.HasDebugSections() + : (elf_reader.GetSectionByType(SHT_SYMTAB) != NULL); +} + +// Helper for the IsNon[Debug]StrippedELFBinary functions. +static bool IsNonStrippedELFBinaryHelper(const string &path, + bool debug_only) { + const int fd = open(path.c_str(), O_RDONLY); + if (fd == -1) { + return false; + } + + if (IsNonStrippedELFBinaryImpl(path, fd, debug_only) || + IsNonStrippedELFBinaryImpl(path, fd, debug_only)) { + close(fd); + return true; + } + close(fd); + return false; +} + +bool ElfReader::IsNonStrippedELFBinary(const string &path) { + return IsNonStrippedELFBinaryHelper(path, false); +} + +bool ElfReader::IsNonDebugStrippedELFBinary(const string &path) { + return IsNonStrippedELFBinaryHelper(path, true); +} +} // namespace dwarf2reader diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.h new file mode 100644 index 000000000000..07477341fd92 --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.h @@ -0,0 +1,166 @@ +// Copyright 2005 Google Inc. All Rights Reserved. +// Author: chatham@google.com (Andrew Chatham) +// Author: satorux@google.com (Satoru Takabayashi) +// +// ElfReader handles reading in ELF. It can extract symbols from the +// current process, which may be used to symbolize stack traces +// without having to make a potentially dangerous call to fork(). +// +// ElfReader dynamically allocates memory, so it is not appropriate to +// use once the address space might be corrupted, such as during +// process death. +// +// ElfReader supports both 32-bit and 64-bit ELF binaries. + +#ifndef COMMON_DWARF_ELF_READER_H__ +#define COMMON_DWARF_ELF_READER_H__ + +#include +#include + +#include "common/dwarf/types.h" + +using std::string; +using std::vector; +using std::pair; + +namespace dwarf2reader { + +class SymbolMap; +class Elf32; +class Elf64; +template +class ElfReaderImpl; + +class ElfReader { + public: + explicit ElfReader(const string &path); + ~ElfReader(); + + // Parse the ELF prologue of this file and return whether it was + // successfully parsed and matches the word size and byte order of + // the current process. + bool IsNativeElfFile() const; + + // Similar to IsNativeElfFile but checks if it's a 32-bit ELF file. + bool IsElf32File() const; + + // Similar to IsNativeElfFile but checks if it's a 64-bit ELF file. + bool IsElf64File() const; + + // Checks if it's an ELF file of type ET_DYN (shared object file). + bool IsDynamicSharedObject(); + + // Add symbols in the given ELF file into the provided SymbolMap, + // assuming that the file has been loaded into the specified + // offset. + // + // The remaining arguments are typically taken from a + // ProcMapsIterator (base/sysinfo.h) and describe which portions of + // the ELF file are mapped into which parts of memory: + // + // mem_offset - position at which the segment is mapped into memory + // file_offset - offset in the file where the mapping begins + // length - length of the mapped segment + void AddSymbols(SymbolMap *symbols, + uint64 mem_offset, uint64 file_offset, + uint64 length); + + class SymbolSink { + public: + virtual ~SymbolSink() {} + virtual void AddSymbol(const char *name, uint64 address, uint64 size) = 0; + }; + + // Like AddSymbols above, but with no address correction. + // Processes any SHT_SYMTAB section, followed by any SHT_DYNSYM section. + void VisitSymbols(SymbolSink *sink); + + // Like VisitSymbols above, but for a specific symbol binding/type. + // A negative value for the binding and type parameters means any + // binding or type. + void VisitSymbols(SymbolSink *sink, int symbol_binding, int symbol_type); + + // Like VisitSymbols above but can optionally export raw symbol values instead + // of adjusted ones. + void VisitSymbols(SymbolSink *sink, int symbol_binding, int symbol_type, + bool get_raw_symbol_values); + + // p_vaddr of the first PT_LOAD segment (if any), or 0 if no PT_LOAD + // segments are present. This is the address an ELF image was linked + // (by static linker) to be loaded at. Usually (but not always) 0 for + // shared libraries and position-independent executables. + uint64 VaddrOfFirstLoadSegment(); + + // Return the name of section "shndx". Returns NULL if the section + // is not found. + const char *GetSectionName(int shndx); + + // Return the number of sections in the given ELF file. + uint64 GetNumSections(); + + // Get section "shndx" from the given ELF file. On success, return + // the pointer to the section and store the size in "size". + // On error, return NULL. The returned section data is only valid + // until the ElfReader gets destroyed. + const char *GetSectionByIndex(int shndx, size_t *size); + + // Get section with "section_name" (ex. ".text", ".symtab") in the + // given ELF file. On success, return the pointer to the section + // and store the size in "size". On error, return NULL. The + // returned section data is only valid until the ElfReader gets + // destroyed. + const char *GetSectionByName(const string §ion_name, size_t *size); + + // This is like GetSectionByName() but it returns a lot of extra information + // about the section. The SectionInfo structure is almost identical to + // the typedef struct Elf64_Shdr defined in , but is redefined + // here so that the many short macro names in don't have to be + // added to our already cluttered namespace. + struct SectionInfo { + uint32 type; // Section type (SHT_xxx constant from elf.h). + uint64 flags; // Section flags (SHF_xxx constants from elf.h). + uint64 addr; // Section virtual address at execution. + uint64 offset; // Section file offset. + uint64 size; // Section size in bytes. + uint32 link; // Link to another section. + uint32 info; // Additional section information. + uint64 addralign; // Section alignment. + uint64 entsize; // Entry size if section holds a table. + }; + const char *GetSectionInfoByName(const string §ion_name, + SectionInfo *info); + + // Check if "path" is an ELF binary that has not been stripped of symbol + // tables. This function supports both 32-bit and 64-bit ELF binaries. + static bool IsNonStrippedELFBinary(const string &path); + + // Check if "path" is an ELF binary that has not been stripped of debug + // info. Unlike IsNonStrippedELFBinary, this function will return + // false for binaries passed through "strip -S". + static bool IsNonDebugStrippedELFBinary(const string &path); + + // Match a requested section name with the section name as it + // appears in the elf-file, adjusting for compressed debug section + // names. For example, returns true if name == ".debug_abbrev" and + // sh_name == ".zdebug_abbrev" + static bool SectionNamesMatch(const string &name, const string &sh_name); + + private: + // Lazily initialize impl32_ and return it. + ElfReaderImpl *GetImpl32(); + // Ditto for impl64_. + ElfReaderImpl *GetImpl64(); + + // Path of the file we're reading. + const string path_; + // Read-only file descriptor for the file. May be -1 if there was an + // error during open. + int fd_; + ElfReaderImpl *impl32_; + ElfReaderImpl *impl64_; +}; + +} // namespace dwarf2reader + +#endif // COMMON_DWARF_ELF_READER_H__ diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build b/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build index 27df0e540be2..e1ccc65aca92 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build @@ -9,6 +9,7 @@ HOST_SOURCES += [ 'bytereader.cc', 'dwarf2diehandler.cc', 'dwarf2reader.cc', + 'elf_reader.cc', 'functioninfo.cc', ] HOST_CXXFLAGS += [ @@ -26,4 +27,9 @@ HOST_CXXFLAGS += [ '-funsigned-char', ] +if CONFIG['OS_ARCH'] == 'Darwin': + HOST_CXXFLAGS += [ + '-stdlib=libc++', + ] + include('/toolkit/crashreporter/crashreporter.mozbuild') diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/types.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/types.h index 61ca4579a9b3..59dda3160085 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/types.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/types.h @@ -45,11 +45,7 @@ typedef unsigned short uint16; typedef unsigned int uint32; typedef unsigned long long uint64; -#ifdef __PTRDIFF_TYPE__ -typedef __PTRDIFF_TYPE__ intptr; -typedef unsigned __PTRDIFF_TYPE__ uintptr; -#else -#error "Can't find pointer-sized integral types." -#endif +typedef intptr_t intptr; +typedef uintptr_t uintptr; #endif // _COMMON_DWARF_TYPES_H__ diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.cc index afe22252b175..479e39b22125 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.cc @@ -43,6 +43,7 @@ #include #endif #include +#include #include #include @@ -140,7 +141,7 @@ DwarfCUToModule::FileContext::~FileContext() { } void DwarfCUToModule::FileContext::AddSectionToSectionMap( - const string& name, const char* contents, uint64 length) { + const string& name, const uint8_t *contents, uint64 length) { section_map_[name] = std::make_pair(contents, length); } @@ -416,7 +417,8 @@ string DwarfCUToModule::GenericDIEHandler::ComputeQualifiedName() { // If this DIE was marked as a declaration, record its names in the // specification table. - if (declaration_ && qualified_name || (unqualified_name && enclosing_name)) { + if ((declaration_ && qualified_name) || + (unqualified_name && enclosing_name)) { Specification spec; if (qualified_name) { spec.qualified_name = *qualified_name; @@ -814,7 +816,7 @@ void DwarfCUToModule::ReadSourceLines(uint64 offset) { cu_context_->reporter->MissingSection(".debug_line"); return; } - const char *section_start = map_entry->second.first; + const uint8_t *section_start = map_entry->second.first; uint64 section_length = map_entry->second.second; if (offset >= section_length) { cu_context_->reporter->BadLineInfoOffset(offset); diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.h index fd9c380d9d8b..fca92710e6f7 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.h @@ -39,6 +39,8 @@ #ifndef COMMON_LINUX_DWARF_CU_TO_MODULE_H__ #define COMMON_LINUX_DWARF_CU_TO_MODULE_H__ +#include + #include #include "common/language.h" @@ -84,7 +86,7 @@ class DwarfCUToModule: public dwarf2reader::RootDIEHandler { // Add CONTENTS of size LENGTH to the section map as NAME. void AddSectionToSectionMap(const string& name, - const char* contents, + const uint8_t *contents, uint64 length); // Clear the section map for testing. @@ -140,7 +142,7 @@ class DwarfCUToModule: public dwarf2reader::RootDIEHandler { // mappings, given a pointer to some DWARF line number data // PROGRAM, and an overestimate of its size. Add no zero-length // lines to LINES. - virtual void ReadProgram(const char *program, uint64 length, + virtual void ReadProgram(const uint8_t *program, uint64 length, Module *module, vector *lines) = 0; }; diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc index d5c4f590695b..619e90a2ee5b 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc @@ -31,6 +31,8 @@ // dwarf_cu_to_module.cc: Unit tests for google_breakpad::DwarfCUToModule. +#include + #include #include #include @@ -65,7 +67,7 @@ using ::testing::ValuesIn; class MockLineToModuleHandler: public DwarfCUToModule::LineToModuleHandler { public: MOCK_METHOD1(StartCompilationUnit, void(const string& compilation_dir)); - MOCK_METHOD4(ReadProgram, void(const char* program, uint64 length, + MOCK_METHOD4(ReadProgram, void(const uint8_t *program, uint64 length, Module *module, vector *lines)); }; @@ -111,7 +113,7 @@ class CUFixtureBase { public: explicit AppendLinesFunctor( const vector *lines) : lines_(lines) { } - void operator()(const char *program, uint64 length, + void operator()(const uint8_t *program, uint64 length, Module *module, vector *lines) { lines->insert(lines->end(), lines_->begin(), lines_->end()); } @@ -285,7 +287,7 @@ class CUFixtureBase { // Mock line program reader. MockLineToModuleHandler line_reader_; AppendLinesFunctor appender_; - static const char dummy_line_program_[]; + static const uint8_t dummy_line_program_[]; static const size_t dummy_line_size_; MockWarningReporter reporter_; @@ -302,7 +304,7 @@ class CUFixtureBase { bool functions_filled_; }; -const char CUFixtureBase::dummy_line_program_[] = "lots of fun data"; +const uint8_t CUFixtureBase::dummy_line_program_[] = "lots of fun data"; const size_t CUFixtureBase::dummy_line_size_ = sizeof(CUFixtureBase::dummy_line_program_); @@ -375,7 +377,7 @@ void CUFixtureBase::ProcessStrangeAttributes( handler->ProcessAttributeReference((DwarfAttribute) 0xf7f7480f, (DwarfForm) 0x829e038a, 0x50fddef44734fdecULL); - static const char buffer[10] = "frobynode"; + static const uint8_t buffer[10] = "frobynode"; handler->ProcessAttributeBuffer((DwarfAttribute) 0xa55ffb51, (DwarfForm) 0x2f43b041, buffer, sizeof(buffer)); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc index 4222ce30281b..cd99bee66103 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -64,6 +65,7 @@ #include "common/linux/elfutils-inl.h" #include "common/linux/elf_symbols_to_module.h" #include "common/linux/file_id.h" +#include "common/memory.h" #include "common/module.h" #include "common/scoped_ptr.h" #ifndef NO_STABS_SUPPORT @@ -87,14 +89,18 @@ using google_breakpad::DwarfLineToModule; using google_breakpad::ElfClass; using google_breakpad::ElfClass32; using google_breakpad::ElfClass64; +using google_breakpad::FileID; using google_breakpad::FindElfSectionByName; using google_breakpad::GetOffset; using google_breakpad::IsValidElf; +using google_breakpad::kDefaultBuildIdSize; using google_breakpad::Module; +using google_breakpad::PageAllocator; #ifndef NO_STABS_SUPPORT using google_breakpad::StabsToModule; #endif using google_breakpad::scoped_ptr; +using google_breakpad::wasteful_vector; // Define AARCH64 ELF architecture if host machine does not include this define. #ifndef EM_AARCH64 @@ -226,7 +232,7 @@ class DumperLineToModule: public DwarfCUToModule::LineToModuleHandler { void StartCompilationUnit(const string& compilation_dir) { compilation_dir_ = compilation_dir; } - void ReadProgram(const char* program, uint64 length, + void ReadProgram(const uint8_t *program, uint64 length, Module* module, std::vector* lines) { DwarfLineToModule handler(module, compilation_dir_, lines); dwarf2reader::LineInfo parser(program, length, byte_reader_, &handler); @@ -264,8 +270,8 @@ bool LoadDwarf(const string& dwarf_filename, string name = GetOffset(elf_header, section_names->sh_offset) + section->sh_name; - const char* contents = GetOffset(elf_header, - section->sh_offset); + const uint8_t *contents = GetOffset(elf_header, + section->sh_offset); file_context.AddSectionToSectionMap(name, contents, section->sh_size); } @@ -274,7 +280,7 @@ bool LoadDwarf(const string& dwarf_filename, dwarf2reader::SectionMap::const_iterator debug_info_entry = file_context.section_map().find(".debug_info"); assert(debug_info_entry != file_context.section_map().end()); - const std::pair& debug_info_section = + const std::pair& debug_info_section = debug_info_entry->second; // This should never have been called if the file doesn't have a // .debug_info section. @@ -288,7 +294,8 @@ bool LoadDwarf(const string& dwarf_filename, // Make a Dwarf2Handler that drives the DIEHandler. dwarf2reader::DIEDispatcher die_dispatcher(&root_handler); // Make a DWARF parser for the compilation unit at OFFSET. - dwarf2reader::CompilationUnit reader(file_context.section_map(), + dwarf2reader::CompilationUnit reader(dwarf_filename, + file_context.section_map(), offset, &byte_reader, &die_dispatcher); @@ -351,8 +358,8 @@ bool LoadDwarfCFI(const string& dwarf_filename, dwarf2reader::ENDIANNESS_BIG : dwarf2reader::ENDIANNESS_LITTLE; // Find the call frame information and its size. - const char* cfi = - GetOffset(elf_header, section->sh_offset); + const uint8_t *cfi = + GetOffset(elf_header, section->sh_offset); size_t cfi_size = section->sh_size; // Plug together the parser, handler, and their entourages. @@ -485,12 +492,13 @@ bool IsSameFile(const char* left_abspath, const string& right_path) { // Read the .gnu_debuglink and get the debug file name. If anything goes // wrong, return an empty string. -string ReadDebugLink(const char* debuglink, +string ReadDebugLink(const uint8_t *debuglink, const size_t debuglink_size, const bool big_endian, const string& obj_file, const std::vector& debug_dirs) { - size_t debuglink_len = strlen(debuglink) + 5; // Include '\0' + CRC32. + // Include '\0' + CRC32 (4 bytes). + size_t debuglink_len = strlen(reinterpret_cast(debuglink)) + 5; debuglink_len = 4 * ((debuglink_len + 3) / 4); // Round up to 4 bytes. // Sanity check. @@ -511,7 +519,8 @@ string ReadDebugLink(const char* debuglink, std::vector::const_iterator it; for (it = debug_dirs.begin(); it < debug_dirs.end(); ++it) { const string& debug_dir = *it; - debuglink_path = debug_dir + "/" + debuglink; + debuglink_path = debug_dir + "/" + + reinterpret_cast(debuglink); // There is the annoying case of /path/to/foo.so having foo.so as the // debug link file name. Thus this may end up opening /path/to/foo.so again, @@ -733,32 +742,61 @@ bool LoadSymbols(const string& obj_file, } // See if there are export symbols available. - const Shdr* dynsym_section = - FindElfSectionByName(".dynsym", SHT_DYNSYM, - sections, names, names_end, - elf_header->e_shnum); - const Shdr* dynstr_section = - FindElfSectionByName(".dynstr", SHT_STRTAB, - sections, names, names_end, - elf_header->e_shnum); - if (dynsym_section && dynstr_section) { - info->LoadedSection(".dynsym"); + const Shdr* symtab_section = + FindElfSectionByName(".symtab", SHT_SYMTAB, + sections, names, names_end, + elf_header->e_shnum); + const Shdr* strtab_section = + FindElfSectionByName(".strtab", SHT_STRTAB, + sections, names, names_end, + elf_header->e_shnum); + if (symtab_section && strtab_section) { + info->LoadedSection(".symtab"); - const uint8_t* dynsyms = + const uint8_t* symtab = GetOffset(elf_header, - dynsym_section->sh_offset); - const uint8_t* dynstrs = + symtab_section->sh_offset); + const uint8_t* strtab = GetOffset(elf_header, - dynstr_section->sh_offset); + strtab_section->sh_offset); bool result = - ELFSymbolsToModule(dynsyms, - dynsym_section->sh_size, - dynstrs, - dynstr_section->sh_size, + ELFSymbolsToModule(symtab, + symtab_section->sh_size, + strtab, + strtab_section->sh_size, big_endian, ElfClass::kAddrSize, module); found_usable_info = found_usable_info || result; + } else { + // Look in dynsym only if full symbol table was not available. + const Shdr* dynsym_section = + FindElfSectionByName(".dynsym", SHT_DYNSYM, + sections, names, names_end, + elf_header->e_shnum); + const Shdr* dynstr_section = + FindElfSectionByName(".dynstr", SHT_STRTAB, + sections, names, names_end, + elf_header->e_shnum); + if (dynsym_section && dynstr_section) { + info->LoadedSection(".dynsym"); + + const uint8_t* dynsyms = + GetOffset(elf_header, + dynsym_section->sh_offset); + const uint8_t* dynstrs = + GetOffset(elf_header, + dynstr_section->sh_offset); + bool result = + ELFSymbolsToModule(dynsyms, + dynsym_section->sh_size, + dynstrs, + dynstr_section->sh_size, + big_endian, + ElfClass::kAddrSize, + module); + found_usable_info = found_usable_info || result; + } } } @@ -844,9 +882,9 @@ bool LoadSymbols(const string& obj_file, names_end, elf_header->e_shnum); if (gnu_debuglink_section) { if (!info->debug_dirs().empty()) { - const char* debuglink_contents = - GetOffset(elf_header, - gnu_debuglink_section->sh_offset); + const uint8_t *debuglink_contents = + GetOffset(elf_header, + gnu_debuglink_section->sh_offset); string debuglink_file = ReadDebugLink(debuglink_contents, gnu_debuglink_section->sh_size, @@ -897,25 +935,6 @@ const char* ElfArchitecture(const typename ElfClass::Ehdr* elf_header) { } } -// Format the Elf file identifier in IDENTIFIER as a UUID with the -// dashes removed. -string FormatIdentifier(unsigned char identifier[16]) { - char identifier_str[40]; - google_breakpad::FileID::ConvertIdentifierToString( - identifier, - identifier_str, - sizeof(identifier_str)); - string id_no_dash; - for (int i = 0; identifier_str[i] != '\0'; ++i) - if (identifier_str[i] != '-') - id_no_dash += identifier_str[i]; - // Add an extra "0" by the end. PDB files on Windows have an 'age' - // number appended to the end of the file identifier; this isn't - // really used or necessary on other platforms, but be consistent. - id_no_dash += '0'; - return id_no_dash; -} - // Return the non-directory portion of FILENAME: the portion after the // last slash, or the whole filename if there are no slashes. string BaseFileName(const string &filename) { @@ -958,19 +977,12 @@ bool SanitizeDebugFile(const typename ElfClass::Ehdr* debug_elf_header, } template -bool ReadSymbolDataElfClass(const typename ElfClass::Ehdr* elf_header, - const string& obj_filename, - const std::vector& debug_dirs, - const DumpOptions& options, - Module** out_module) { - typedef typename ElfClass::Ehdr Ehdr; - typedef typename ElfClass::Shdr Shdr; - - *out_module = NULL; - - unsigned char identifier[16]; - if (!google_breakpad::FileID::ElfFileIdentifierFromMappedFile(elf_header, - identifier)) { +bool InitModuleForElfClass(const typename ElfClass::Ehdr* elf_header, + const string& obj_filename, + scoped_ptr& module) { + PageAllocator allocator; + wasteful_vector identifier(&allocator, kDefaultBuildIdSize); + if (!FileID::ElfFileIdentifierFromMappedFile(elf_header, identifier)) { fprintf(stderr, "%s: unable to generate file identifier\n", obj_filename.c_str()); return false; @@ -983,17 +995,41 @@ bool ReadSymbolDataElfClass(const typename ElfClass::Ehdr* elf_header, return false; } + string name = BaseFileName(obj_filename); + string os = "Linux"; + // Add an extra "0" at the end. PDB files on Windows have an 'age' + // number appended to the end of the file identifier; this isn't + // really used or necessary on other platforms, but be consistent. + string id = FileID::ConvertIdentifierToUUIDString(identifier) + "0"; + // This is just the raw Build ID in hex. + string code_id = FileID::ConvertIdentifierToString(identifier); + + module.reset(new Module(name, os, architecture, id, code_id)); + + return true; +} + +template +bool ReadSymbolDataElfClass(const typename ElfClass::Ehdr* elf_header, + const string& obj_filename, + const std::vector& debug_dirs, + const DumpOptions& options, + Module** out_module) { + typedef typename ElfClass::Ehdr Ehdr; + + *out_module = NULL; + + scoped_ptr module; + if (!InitModuleForElfClass(elf_header, obj_filename, module)) { + return false; + } + // Figure out what endianness this file is. bool big_endian; if (!ElfEndianness(elf_header, &big_endian)) return false; - string name = BaseFileName(obj_filename); - string os = "Linux"; - string id = FormatIdentifier(identifier); - LoadSymbolsInfo info(debug_dirs); - scoped_ptr module(new Module(name, os, architecture, id)); if (!LoadSymbols(obj_filename, big_endian, elf_header, !debug_dirs.empty(), &info, options, module.get())) { @@ -1008,7 +1044,9 @@ bool ReadSymbolDataElfClass(const typename ElfClass::Ehdr* elf_header, if (!LoadELF(debuglink_file, &debug_map_wrapper, reinterpret_cast(&debug_elf_header)) || !SanitizeDebugFile(debug_elf_header, debuglink_file, - obj_filename, architecture, big_endian)) { + obj_filename, + module->architecture().c_str(), + big_endian)) { return false; } @@ -1066,6 +1104,45 @@ bool WriteSymbolFile(const string &obj_file, return result; } +// Read the selected object file's debugging information, and write out the +// header only to |stream|. Return true on success; if an error occurs, report +// it and return false. +bool WriteSymbolFileHeader(const string& obj_file, + std::ostream &sym_stream) { + MmapWrapper map_wrapper; + void* elf_header = NULL; + if (!LoadELF(obj_file, &map_wrapper, &elf_header)) { + fprintf(stderr, "Could not load ELF file: %s\n", obj_file.c_str()); + return false; + } + + if (!IsValidElf(elf_header)) { + fprintf(stderr, "Not a valid ELF file: %s\n", obj_file.c_str()); + return false; + } + + int elfclass = ElfClass(elf_header); + scoped_ptr module; + if (elfclass == ELFCLASS32) { + if (!InitModuleForElfClass( + reinterpret_cast(elf_header), obj_file, module)) { + fprintf(stderr, "Failed to load ELF module: %s\n", obj_file.c_str()); + return false; + } + } else if (elfclass == ELFCLASS64) { + if (!InitModuleForElfClass( + reinterpret_cast(elf_header), obj_file, module)) { + fprintf(stderr, "Failed to load ELF module: %s\n", obj_file.c_str()); + return false; + } + } else { + fprintf(stderr, "Unsupported module file: %s\n", obj_file.c_str()); + return false; + } + + return module->Write(sym_stream, ALL_SYMBOL_DATA); +} + bool ReadSymbolData(const string& obj_file, const std::vector& debug_dirs, const DumpOptions& options, diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.h b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.h index 636bb72f73e2..1f204cbadab9 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.h @@ -67,6 +67,12 @@ bool WriteSymbolFile(const string &obj_file, const DumpOptions& options, std::ostream &sym_stream); +// Read the selected object file's debugging information, and write out the +// header only to |stream|. Return true on success; if an error occurs, report +// it and return false. +bool WriteSymbolFileHeader(const string& obj_file, + std::ostream &sym_stream); + // As above, but simply return the debugging information in MODULE // instead of writing it to a stream. The caller owns the resulting // Module object and must delete it when finished. diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols_unittest.cc index 3f86dbe6a347..bb7b20076e6d 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols_unittest.cc @@ -40,6 +40,8 @@ #include #include "breakpad_googletest_includes.h" +#include "common/linux/elf_gnu_compat.h" +#include "common/linux/elfutils.h" #include "common/linux/dump_symbols.h" #include "common/linux/synth_elf.h" #include "common/module.h" @@ -54,6 +56,7 @@ bool ReadSymbolDataInternal(const uint8_t* obj_file, Module** module); using google_breakpad::synth_elf::ELF; +using google_breakpad::synth_elf::Notes; using google_breakpad::synth_elf::StringTable; using google_breakpad::synth_elf::SymbolTable; using google_breakpad::test_assembler::kLittleEndian; @@ -61,7 +64,9 @@ using google_breakpad::test_assembler::Section; using std::stringstream; using std::vector; using ::testing::Test; +using ::testing::Types; +template class DumpSymbols : public Test { public: void GetElfContents(ELF& elf) { @@ -78,7 +83,11 @@ class DumpSymbols : public Test { uint8_t* elfdata; }; -TEST_F(DumpSymbols, Invalid) { +typedef Types ElfClasses; + +TYPED_TEST_CASE(DumpSymbols, ElfClasses); + +TYPED_TEST(DumpSymbols, Invalid) { Elf32_Ehdr header; memset(&header, 0, sizeof(header)); Module* module; @@ -90,8 +99,8 @@ TEST_F(DumpSymbols, Invalid) { &module)); } -TEST_F(DumpSymbols, SimplePublic32) { - ELF elf(EM_386, ELFCLASS32, kLittleEndian); +TYPED_TEST(DumpSymbols, SimplePublic) { + ELF elf(TypeParam::kMachine, TypeParam::kClass, kLittleEndian); // Zero out text section for simplicity. Section text(kLittleEndian); text.Append(4096, 0); @@ -99,8 +108,11 @@ TEST_F(DumpSymbols, SimplePublic32) { // Add a public symbol. StringTable table(kLittleEndian); - SymbolTable syms(kLittleEndian, 4, table); - syms.AddSymbol("superfunc", (uint32_t)0x1000, (uint32_t)0x10, + SymbolTable syms(kLittleEndian, TypeParam::kAddrSize, table); + syms.AddSymbol("superfunc", + (typename TypeParam::Addr)0x1000, + (typename TypeParam::Addr)0x10, + // ELF32_ST_INFO works for 32-or 64-bit. ELF32_ST_INFO(STB_GLOBAL, STT_FUNC), SHN_UNDEF + 1); int index = elf.AddSection(".dynstr", table, SHT_STRTAB); @@ -109,14 +121,14 @@ TEST_F(DumpSymbols, SimplePublic32) { SHF_ALLOC, // flags 0, // addr index, // link - sizeof(Elf32_Sym)); // entsize + sizeof(typename TypeParam::Sym)); // entsize elf.Finish(); - GetElfContents(elf); + this->GetElfContents(elf); Module* module; DumpOptions options(ALL_SYMBOL_DATA, true); - EXPECT_TRUE(ReadSymbolDataInternal(elfdata, + EXPECT_TRUE(ReadSymbolDataInternal(this->elfdata, "foo", vector(), options, @@ -124,24 +136,40 @@ TEST_F(DumpSymbols, SimplePublic32) { stringstream s; module->Write(s, ALL_SYMBOL_DATA); - EXPECT_EQ("MODULE Linux x86 000000000000000000000000000000000 foo\n" - "PUBLIC 1000 0 superfunc\n", - s.str()); + const string expected = + string("MODULE Linux ") + TypeParam::kMachineName + + " 000000000000000000000000000000000 foo\n" + "INFO CODE_ID 00000000000000000000000000000000\n" + "PUBLIC 1000 0 superfunc\n"; + EXPECT_EQ(expected, s.str()); delete module; } -TEST_F(DumpSymbols, SimplePublic64) { - ELF elf(EM_X86_64, ELFCLASS64, kLittleEndian); +TYPED_TEST(DumpSymbols, SimpleBuildID) { + ELF elf(TypeParam::kMachine, TypeParam::kClass, kLittleEndian); // Zero out text section for simplicity. Section text(kLittleEndian); text.Append(4096, 0); elf.AddSection(".text", text, SHT_PROGBITS); + // Add a Build ID + const uint8_t kExpectedIdentifierBytes[] = + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13}; + Notes notes(kLittleEndian); + notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, + sizeof(kExpectedIdentifierBytes)); + elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE); + // Add a public symbol. StringTable table(kLittleEndian); - SymbolTable syms(kLittleEndian, 8, table); - syms.AddSymbol("superfunc", (uint64_t)0x1000, (uint64_t)0x10, - ELF64_ST_INFO(STB_GLOBAL, STT_FUNC), + SymbolTable syms(kLittleEndian, TypeParam::kAddrSize, table); + syms.AddSymbol("superfunc", + (typename TypeParam::Addr)0x1000, + (typename TypeParam::Addr)0x10, + // ELF32_ST_INFO works for 32-or 64-bit. + ELF32_ST_INFO(STB_GLOBAL, STT_FUNC), SHN_UNDEF + 1); int index = elf.AddSection(".dynstr", table, SHT_STRTAB); elf.AddSection(".dynsym", syms, @@ -149,14 +177,14 @@ TEST_F(DumpSymbols, SimplePublic64) { SHF_ALLOC, // flags 0, // addr index, // link - sizeof(Elf64_Sym)); // entsize + sizeof(typename TypeParam::Sym)); // entsize elf.Finish(); - GetElfContents(elf); + this->GetElfContents(elf); Module* module; DumpOptions options(ALL_SYMBOL_DATA, true); - EXPECT_TRUE(ReadSymbolDataInternal(elfdata, + EXPECT_TRUE(ReadSymbolDataInternal(this->elfdata, "foo", vector(), options, @@ -164,9 +192,13 @@ TEST_F(DumpSymbols, SimplePublic64) { stringstream s; module->Write(s, ALL_SYMBOL_DATA); - EXPECT_EQ("MODULE Linux x86_64 000000000000000000000000000000000 foo\n" - "PUBLIC 1000 0 superfunc\n", - s.str()); + const string expected = + string("MODULE Linux ") + TypeParam::kMachineName + + " 030201000504070608090A0B0C0D0E0F0 foo\n" + "INFO CODE_ID 000102030405060708090A0B0C0D0E0F10111213\n" + "PUBLIC 1000 0 superfunc\n"; + EXPECT_EQ(expected, s.str()); + delete module; } } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.h b/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.h index dccdc235e290..f34ba83142d3 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.h @@ -49,9 +49,13 @@ struct ElfClass32 { typedef Elf32_Shdr Shdr; typedef Elf32_Half Half; typedef Elf32_Off Off; + typedef Elf32_Sym Sym; typedef Elf32_Word Word; + static const int kClass = ELFCLASS32; + static const uint16_t kMachine = EM_386; static const size_t kAddrSize = sizeof(Elf32_Addr); + static constexpr const char* kMachineName = "x86"; }; struct ElfClass64 { @@ -62,9 +66,13 @@ struct ElfClass64 { typedef Elf64_Shdr Shdr; typedef Elf64_Half Half; typedef Elf64_Off Off; + typedef Elf64_Sym Sym; typedef Elf64_Word Word; + static const int kClass = ELFCLASS64; + static const uint16_t kMachine = EM_X86_64; static const size_t kAddrSize = sizeof(Elf64_Addr); + static constexpr const char* kMachineName = "x86_64"; }; bool IsValidElf(const void* elf_header); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc index 00b37313afd9..311e0302092c 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc @@ -39,15 +39,20 @@ #include #include +#include #include "common/linux/elf_gnu_compat.h" #include "common/linux/elfutils.h" #include "common/linux/linux_libc_support.h" #include "common/linux/memory_mapped_file.h" +#include "common/using_std_string.h" #include "third_party/lss/linux_syscall_support.h" namespace google_breakpad { +// Used in a few places for backwards-compatibility. +const size_t kMDGUIDSize = sizeof(MDGUID); + FileID::FileID(const char* path) : path_(path) {} // ELF note name and desc are 32-bits word padded. @@ -58,7 +63,7 @@ FileID::FileID(const char* path) : path_(path) {} template static bool ElfClassBuildIDNoteIdentifier(const void *section, size_t length, - uint8_t identifier[kMDGUIDSize]) { + wasteful_vector& identifier) { typedef typename ElfClass::Nhdr Nhdr; const void* section_end = reinterpret_cast(section) + length; @@ -76,21 +81,19 @@ static bool ElfClassBuildIDNoteIdentifier(const void *section, size_t length, return false; } - const char* build_id = reinterpret_cast(note_header) + + const uint8_t* build_id = reinterpret_cast(note_header) + sizeof(Nhdr) + NOTE_PADDING(note_header->n_namesz); - // Copy as many bits of the build ID as will fit - // into the GUID space. - my_memset(identifier, 0, kMDGUIDSize); - memcpy(identifier, build_id, - std::min(kMDGUIDSize, (size_t)note_header->n_descsz)); + identifier.insert(identifier.end(), + build_id, + build_id + note_header->n_descsz); return true; } // Attempt to locate a .note.gnu.build-id section in an ELF binary -// and copy as many bytes of it as will fit into |identifier|. -static bool FindElfBuildIDNote(const void *elf_mapped_base, - uint8_t identifier[kMDGUIDSize]) { +// and copy it into |identifier|. +static bool FindElfBuildIDNote(const void* elf_mapped_base, + wasteful_vector& identifier) { void* note_section; size_t note_size; int elfclass; @@ -116,8 +119,10 @@ static bool FindElfBuildIDNote(const void *elf_mapped_base, // Attempt to locate the .text section of an ELF binary and generate // a simple hash by XORing the first page worth of bytes into |identifier|. -static bool HashElfTextSection(const void *elf_mapped_base, - uint8_t identifier[kMDGUIDSize]) { +static bool HashElfTextSection(const void* elf_mapped_base, + wasteful_vector& identifier) { + identifier.resize(kMDGUIDSize); + void* text_section; size_t text_size; if (!FindElfSection(elf_mapped_base, ".text", SHT_PROGBITS, @@ -126,7 +131,9 @@ static bool HashElfTextSection(const void *elf_mapped_base, return false; } - my_memset(identifier, 0, kMDGUIDSize); + // Only provide |kMDGUIDSize| bytes to keep identifiers produced by this + // function backwards-compatible. + my_memset(&identifier[0], 0, kMDGUIDSize); const uint8_t* ptr = reinterpret_cast(text_section); const uint8_t* ptr_end = ptr + std::min(text_size, static_cast(4096)); while (ptr < ptr_end) { @@ -139,7 +146,7 @@ static bool HashElfTextSection(const void *elf_mapped_base, // static bool FileID::ElfFileIdentifierFromMappedFile(const void* base, - uint8_t identifier[kMDGUIDSize]) { + wasteful_vector& identifier) { // Look for a build id note first. if (FindElfBuildIDNote(base, identifier)) return true; @@ -148,7 +155,7 @@ bool FileID::ElfFileIdentifierFromMappedFile(const void* base, return HashElfTextSection(base, identifier); } -bool FileID::ElfFileIdentifier(uint8_t identifier[kMDGUIDSize]) { +bool FileID::ElfFileIdentifier(wasteful_vector& identifier) { MemoryMappedFile mapped_file(path_.c_str(), 0); if (!mapped_file.data()) // Should probably check if size >= ElfW(Ehdr)? return false; @@ -156,13 +163,26 @@ bool FileID::ElfFileIdentifier(uint8_t identifier[kMDGUIDSize]) { return ElfFileIdentifierFromMappedFile(mapped_file.data(), identifier); } +// These three functions are not ever called in an unsafe context, so it's OK +// to allocate memory and use libc. +static string bytes_to_hex_string(const uint8_t* bytes, size_t count) { + string result; + for (unsigned int idx = 0; idx < count; ++idx) { + char buf[3]; + snprintf(buf, sizeof(buf), "%02X", bytes[idx]); + result.append(buf); + } + return result; +} + // static -void FileID::ConvertIdentifierToString(const uint8_t identifier[kMDGUIDSize], - char* buffer, int buffer_length) { - uint8_t identifier_swapped[kMDGUIDSize]; +string FileID::ConvertIdentifierToUUIDString( + const wasteful_vector& identifier) { + uint8_t identifier_swapped[kMDGUIDSize] = { 0 }; // Endian-ness swap to match dump processor expectation. - memcpy(identifier_swapped, identifier, kMDGUIDSize); + memcpy(identifier_swapped, &identifier[0], + std::min(kMDGUIDSize, identifier.size())); uint32_t* data1 = reinterpret_cast(identifier_swapped); *data1 = htonl(*data1); uint16_t* data2 = reinterpret_cast(identifier_swapped + 4); @@ -170,22 +190,13 @@ void FileID::ConvertIdentifierToString(const uint8_t identifier[kMDGUIDSize], uint16_t* data3 = reinterpret_cast(identifier_swapped + 6); *data3 = htons(*data3); - int buffer_idx = 0; - for (unsigned int idx = 0; - (buffer_idx < buffer_length) && (idx < kMDGUIDSize); - ++idx) { - int hi = (identifier_swapped[idx] >> 4) & 0x0F; - int lo = (identifier_swapped[idx]) & 0x0F; + return bytes_to_hex_string(identifier_swapped, kMDGUIDSize); +} - if (idx == 4 || idx == 6 || idx == 8 || idx == 10) - buffer[buffer_idx++] = '-'; - - buffer[buffer_idx++] = (hi >= 10) ? 'A' + hi - 10 : '0' + hi; - buffer[buffer_idx++] = (lo >= 10) ? 'A' + lo - 10 : '0' + lo; - } - - // NULL terminate - buffer[(buffer_idx < buffer_length) ? buffer_idx : buffer_idx - 1] = 0; +// static +string FileID::ConvertIdentifierToString( + const wasteful_vector& identifier) { + return bytes_to_hex_string(&identifier[0], identifier.size()); } } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.h b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.h index 2642722a6305..a1d2fd6ed6b1 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.h @@ -37,10 +37,15 @@ #include #include "common/linux/guid_creator.h" +#include "common/memory.h" namespace google_breakpad { -static const size_t kMDGUIDSize = sizeof(MDGUID); +// GNU binutils' ld defaults to 'sha1', which is 160 bits == 20 bytes, +// so this is enough to fit that, which most binaries will use. +// This is just a sensible default for auto_wasteful_vector so most +// callers can get away with stack allocation. +static const size_t kDefaultBuildIdSize = 20; class FileID { public: @@ -48,25 +53,29 @@ class FileID { ~FileID() {} // Load the identifier for the elf file path specified in the constructor into - // |identifier|. Return false if the identifier could not be created for the - // file. + // |identifier|. + // // The current implementation will look for a .note.gnu.build-id // section and use that as the file id, otherwise it falls back to // XORing the first 4096 bytes of the .text section to generate an identifier. - bool ElfFileIdentifier(uint8_t identifier[kMDGUIDSize]); + bool ElfFileIdentifier(wasteful_vector& identifier); // Load the identifier for the elf file mapped into memory at |base| into - // |identifier|. Return false if the identifier could not be created for the + // |identifier|. Return false if the identifier could not be created for this // file. - static bool ElfFileIdentifierFromMappedFile(const void* base, - uint8_t identifier[kMDGUIDSize]); + static bool ElfFileIdentifierFromMappedFile( + const void* base, + wasteful_vector& identifier); - // Convert the |identifier| data to a NULL terminated string. The string will - // be formatted as a UUID (e.g., 22F065BB-FC9C-49F7-80FE-26A7CEBD7BCE). - // The |buffer| should be at least 37 bytes long to receive all of the data - // and termination. Shorter buffers will contain truncated data. - static void ConvertIdentifierToString(const uint8_t identifier[kMDGUIDSize], - char* buffer, int buffer_length); + // Convert the |identifier| data to a string. The string will + // be formatted as a UUID in all uppercase without dashes. + // (e.g., 22F065BBFC9C49F780FE26A7CEBD7BCE). + static std::string ConvertIdentifierToUUIDString( + const wasteful_vector& identifier); + + // Convert the entire |identifier| data to a hex string. + static std::string ConvertIdentifierToString( + const wasteful_vector& identifier); private: // Storage for the path specified diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id_unittest.cc index 760eae8260d6..3a8193034887 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id_unittest.cc @@ -33,6 +33,7 @@ #include #include +#include #include "common/linux/elf_gnu_compat.h" #include "common/linux/elfutils.h" @@ -45,13 +46,11 @@ #include "breakpad_googletest_includes.h" using namespace google_breakpad; -using google_breakpad::ElfClass32; -using google_breakpad::ElfClass64; -using google_breakpad::SafeReadLink; using google_breakpad::synth_elf::ELF; using google_breakpad::synth_elf::Notes; using google_breakpad::test_assembler::kLittleEndian; using google_breakpad::test_assembler::Section; +using std::vector; using ::testing::Types; namespace { @@ -64,6 +63,8 @@ void PopulateSection(Section* section, int size, int prime_number) { section->Append(1, (i % prime_number) % 256); } +typedef wasteful_vector id_vector; + } // namespace #ifndef __ANDROID__ @@ -87,19 +88,20 @@ TEST(FileIDStripTest, StripSelf) { sprintf(cmdline, "strip \"%s\"", templ.c_str()); ASSERT_EQ(0, system(cmdline)) << "Failed to execute: " << cmdline; - uint8_t identifier1[sizeof(MDGUID)]; - uint8_t identifier2[sizeof(MDGUID)]; + PageAllocator allocator; + id_vector identifier1(&allocator, kDefaultBuildIdSize); + id_vector identifier2(&allocator, kDefaultBuildIdSize); + FileID fileid1(exe_name); EXPECT_TRUE(fileid1.ElfFileIdentifier(identifier1)); FileID fileid2(templ.c_str()); EXPECT_TRUE(fileid2.ElfFileIdentifier(identifier2)); - char identifier_string1[37]; - char identifier_string2[37]; - FileID::ConvertIdentifierToString(identifier1, identifier_string1, - 37); - FileID::ConvertIdentifierToString(identifier2, identifier_string2, - 37); - EXPECT_STREQ(identifier_string1, identifier_string2); + + string identifier_string1 = + FileID::ConvertIdentifierToUUIDString(identifier1); + string identifier_string2 = + FileID::ConvertIdentifierToUUIDString(identifier2); + EXPECT_EQ(identifier_string1, identifier_string2); } #endif // !__ANDROID__ @@ -116,8 +118,22 @@ public: elfdata = &elfdata_v[0]; } + id_vector make_vector() { + return id_vector(&allocator, kDefaultBuildIdSize); + } + + template + string get_file_id(const uint8_t (&data)[N]) { + id_vector expected_identifier(make_vector()); + expected_identifier.insert(expected_identifier.end(), + &data[0], + data + N); + return FileID::ConvertIdentifierToUUIDString(expected_identifier); + } + vector elfdata_v; uint8_t* elfdata; + PageAllocator allocator; }; typedef Types ElfClasses; @@ -125,10 +141,8 @@ typedef Types ElfClasses; TYPED_TEST_CASE(FileIDTest, ElfClasses); TYPED_TEST(FileIDTest, ElfClass) { - uint8_t identifier[sizeof(MDGUID)]; const char expected_identifier_string[] = - "80808080-8080-0000-0000-008080808080"; - char identifier_string[sizeof(expected_identifier_string)]; + "80808080808000000000008080808080"; const size_t kTextSectionSize = 128; ELF elf(EM_386, TypeParam::kClass, kLittleEndian); @@ -140,58 +154,106 @@ TYPED_TEST(FileIDTest, ElfClass) { elf.Finish(); this->GetElfContents(elf); + id_vector identifier(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier)); - FileID::ConvertIdentifierToString(identifier, identifier_string, - sizeof(identifier_string)); - EXPECT_STREQ(expected_identifier_string, identifier_string); + string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); + EXPECT_EQ(expected_identifier_string, identifier_string); } TYPED_TEST(FileIDTest, BuildID) { - const uint8_t kExpectedIdentifier[sizeof(MDGUID)] = + const uint8_t kExpectedIdentifierBytes[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; - char expected_identifier_string[] = - "00000000-0000-0000-0000-000000000000"; - FileID::ConvertIdentifierToString(kExpectedIdentifier, - expected_identifier_string, - sizeof(expected_identifier_string)); - - uint8_t identifier[sizeof(MDGUID)]; - char identifier_string[sizeof(expected_identifier_string)]; + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13}; + const string expected_identifier_string = + this->get_file_id(kExpectedIdentifierBytes); ELF elf(EM_386, TypeParam::kClass, kLittleEndian); Section text(kLittleEndian); text.Append(4096, 0); elf.AddSection(".text", text, SHT_PROGBITS); Notes notes(kLittleEndian); - notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifier, - sizeof(kExpectedIdentifier)); + notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, + sizeof(kExpectedIdentifierBytes)); elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE); elf.Finish(); this->GetElfContents(elf); + id_vector identifier(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier)); + EXPECT_EQ(sizeof(kExpectedIdentifierBytes), identifier.size()); - FileID::ConvertIdentifierToString(identifier, identifier_string, - sizeof(identifier_string)); - EXPECT_STREQ(expected_identifier_string, identifier_string); + string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); + EXPECT_EQ(expected_identifier_string, identifier_string); +} + +// Test that a build id note with fewer bytes than usual is handled. +TYPED_TEST(FileIDTest, BuildIDShort) { + const uint8_t kExpectedIdentifierBytes[] = + {0x00, 0x01, 0x02, 0x03}; + const string expected_identifier_string = + this->get_file_id(kExpectedIdentifierBytes); + + ELF elf(EM_386, TypeParam::kClass, kLittleEndian); + Section text(kLittleEndian); + text.Append(4096, 0); + elf.AddSection(".text", text, SHT_PROGBITS); + Notes notes(kLittleEndian); + notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, + sizeof(kExpectedIdentifierBytes)); + elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE); + elf.Finish(); + this->GetElfContents(elf); + + id_vector identifier(this->make_vector()); + EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, + identifier)); + EXPECT_EQ(sizeof(kExpectedIdentifierBytes), identifier.size()); + + string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); + EXPECT_EQ(expected_identifier_string, identifier_string); +} + +// Test that a build id note with more bytes than usual is handled. +TYPED_TEST(FileIDTest, BuildIDLong) { + const uint8_t kExpectedIdentifierBytes[] = + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F}; + const string expected_identifier_string = + this->get_file_id(kExpectedIdentifierBytes); + + ELF elf(EM_386, TypeParam::kClass, kLittleEndian); + Section text(kLittleEndian); + text.Append(4096, 0); + elf.AddSection(".text", text, SHT_PROGBITS); + Notes notes(kLittleEndian); + notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, + sizeof(kExpectedIdentifierBytes)); + elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE); + elf.Finish(); + this->GetElfContents(elf); + + id_vector identifier(this->make_vector()); + EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, + identifier)); + EXPECT_EQ(sizeof(kExpectedIdentifierBytes), identifier.size()); + + string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); + EXPECT_EQ(expected_identifier_string, identifier_string); } TYPED_TEST(FileIDTest, BuildIDPH) { - const uint8_t kExpectedIdentifier[sizeof(MDGUID)] = + const uint8_t kExpectedIdentifierBytes[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; - char expected_identifier_string[] = - "00000000-0000-0000-0000-000000000000"; - FileID::ConvertIdentifierToString(kExpectedIdentifier, - expected_identifier_string, - sizeof(expected_identifier_string)); - - uint8_t identifier[sizeof(MDGUID)]; - char identifier_string[sizeof(expected_identifier_string)]; + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13}; + const string expected_identifier_string = + this->get_file_id(kExpectedIdentifierBytes); ELF elf(EM_386, TypeParam::kClass, kLittleEndian); Section text(kLittleEndian); @@ -200,31 +262,25 @@ TYPED_TEST(FileIDTest, BuildIDPH) { Notes notes(kLittleEndian); notes.AddNote(0, "Linux", reinterpret_cast("\0x42\0x02\0\0"), 4); - notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifier, - sizeof(kExpectedIdentifier)); + notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, + sizeof(kExpectedIdentifierBytes)); int note_idx = elf.AddSection(".note", notes, SHT_NOTE); elf.AddSegment(note_idx, note_idx, PT_NOTE); elf.Finish(); this->GetElfContents(elf); + id_vector identifier(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier)); + EXPECT_EQ(sizeof(kExpectedIdentifierBytes), identifier.size()); - FileID::ConvertIdentifierToString(identifier, identifier_string, - sizeof(identifier_string)); - EXPECT_STREQ(expected_identifier_string, identifier_string); + string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); + EXPECT_EQ(expected_identifier_string, identifier_string); } // Test to make sure two files with different text sections produce // different hashes when not using a build id. TYPED_TEST(FileIDTest, UniqueHashes) { - char identifier_string_1[] = - "00000000-0000-0000-0000-000000000000"; - char identifier_string_2[] = - "00000000-0000-0000-0000-000000000000"; - uint8_t identifier_1[sizeof(MDGUID)]; - uint8_t identifier_2[sizeof(MDGUID)]; - { ELF elf1(EM_386, TypeParam::kClass, kLittleEndian); Section foo_1(kLittleEndian); @@ -237,10 +293,11 @@ TYPED_TEST(FileIDTest, UniqueHashes) { this->GetElfContents(elf1); } + id_vector identifier_1(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier_1)); - FileID::ConvertIdentifierToString(identifier_1, identifier_string_1, - sizeof(identifier_string_1)); + string identifier_string_1 = + FileID::ConvertIdentifierToUUIDString(identifier_1); { ELF elf2(EM_386, TypeParam::kClass, kLittleEndian); @@ -254,10 +311,28 @@ TYPED_TEST(FileIDTest, UniqueHashes) { this->GetElfContents(elf2); } + id_vector identifier_2(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier_2)); - FileID::ConvertIdentifierToString(identifier_2, identifier_string_2, - sizeof(identifier_string_2)); + string identifier_string_2 = + FileID::ConvertIdentifierToUUIDString(identifier_2); - EXPECT_STRNE(identifier_string_1, identifier_string_2); + EXPECT_NE(identifier_string_1, identifier_string_2); +} + +TYPED_TEST(FileIDTest, ConvertIdentifierToString) { + const uint8_t kIdentifierBytes[] = + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F}; + const char* kExpected = + "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"; + + id_vector identifier(this->make_vector()); + identifier.insert(identifier.end(), + kIdentifierBytes, + kIdentifierBytes + sizeof(kIdentifierBytes)); + ASSERT_EQ(kExpected, + FileID::ConvertIdentifierToString(identifier)); } diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc index 4492fe84542c..702526af7537 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc @@ -72,7 +72,9 @@ bool HTTPUpload::SendRequest(const string &url, // We may have been linked statically; if curl_easy_init is in the // current binary, no need to search for a dynamic version. void* curl_lib = dlopen(NULL, RTLD_NOW); - if (!curl_lib || dlsym(curl_lib, "curl_easy_init") == NULL) { + if (!CheckCurlLib(curl_lib)) { + fprintf(stderr, + "Failed to open curl lib from binary, use libcurl.so instead\n"); dlerror(); // Clear dlerror before attempting to open libraries. dlclose(curl_lib); curl_lib = NULL; @@ -113,6 +115,10 @@ bool HTTPUpload::SendRequest(const string &url, *(void**) (&curl_easy_setopt) = dlsym(curl_lib, "curl_easy_setopt"); (*curl_easy_setopt)(curl, CURLOPT_URL, url.c_str()); (*curl_easy_setopt)(curl, CURLOPT_USERAGENT, kUserAgent); + // Support multithread by disabling timeout handling, would get SIGSEGV with + // Curl_resolv_timeout in stack trace otherwise. + // See https://curl.haxx.se/libcurl/c/threadsafe.html + (*curl_easy_setopt)(curl, CURLOPT_NOSIGNAL, 1); // Set proxy information if necessary. if (!proxy.empty()) (*curl_easy_setopt)(curl, CURLOPT_PROXY, proxy.c_str()); @@ -197,6 +203,13 @@ bool HTTPUpload::SendRequest(const string &url, return err_code == CURLE_OK; } +// static +bool HTTPUpload::CheckCurlLib(void* curl_lib) { + return curl_lib && + dlsym(curl_lib, "curl_easy_init") && + dlsym(curl_lib, "curl_easy_setopt"); +} + // static bool HTTPUpload::CheckParameters(const map ¶meters) { for (map::const_iterator pos = parameters.begin(); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.h b/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.h index 4f0e452f469d..bc1d5d5700b6 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.h @@ -74,6 +74,9 @@ class HTTPUpload { // any quote (") characters. Returns true if so. static bool CheckParameters(const map ¶meters); + // Checks the curl_lib parameter points to a valid curl lib. + static bool CheckCurlLib(void* curl_lib); + // No instances of this class should be created. // Disallow all constructors, destructors, and operator=. HTTPUpload(); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/ignore_ret.h b/toolkit/crashreporter/google-breakpad/src/common/linux/ignore_ret.h index f60384bbada0..efd274c20c74 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/ignore_ret.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/ignore_ret.h @@ -35,6 +35,6 @@ // the call fails, IGNORE_RET() can be used to mark the return code as ignored. // This avoids spurious compiler warnings. -#define IGNORE_RET(x) do { if (x); } while (0) +#define IGNORE_RET(x) do { if (x) {} } while (0) #endif // COMMON_LINUX_IGNORE_RET_H_ diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.h b/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.h index de84a63b4059..25905ad8ffd0 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.h @@ -43,7 +43,7 @@ namespace google_breakpad { class LibcurlWrapper { public: LibcurlWrapper(); - ~LibcurlWrapper(); + virtual ~LibcurlWrapper(); virtual bool Init(); virtual bool SetProxy(const string& proxy_host, const string& proxy_userpwd); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc index 592b66c8d646..4e938269f260 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc @@ -87,18 +87,7 @@ bool MemoryMappedFile::Map(const char* path, size_t offset) { return true; } -#if defined(__x86_64__) || defined(__aarch64__) || \ - (defined(__mips__) && _MIPS_SIM == _ABI64) void* data = sys_mmap(NULL, file_len, PROT_READ, MAP_PRIVATE, fd, offset); -#else - if ((offset & 4095) != 0) { - // Not page aligned. - sys_close(fd); - return false; - } - void* data = sys_mmap2( - NULL, file_len, PROT_READ, MAP_PRIVATE, fd, offset >> 12); -#endif sys_close(fd); if (data == MAP_FAILED) { return false; diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.cc new file mode 100644 index 000000000000..bbd3181e16ad --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.cc @@ -0,0 +1,155 @@ +// Copyright (c) 2011 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// symbol_upload.cc: implemented google_breakpad::sym_upload::Start, a helper +// function for linux symbol upload tool. + +#include "common/linux/http_upload.h" +#include "common/linux/symbol_upload.h" + +#include +#include + +#include +#include + +namespace google_breakpad { +namespace sym_upload { + +void TokenizeByChar(const string &source_string, int c, + std::vector *results) { + assert(results); + string::size_type cur_pos = 0, next_pos = 0; + while ((next_pos = source_string.find(c, cur_pos)) != string::npos) { + if (next_pos != cur_pos) + results->push_back(source_string.substr(cur_pos, next_pos - cur_pos)); + cur_pos = next_pos + 1; + } + if (cur_pos < source_string.size() && next_pos != cur_pos) + results->push_back(source_string.substr(cur_pos)); +} + +//============================================================================= +// Parse out the module line which have 5 parts. +// MODULE +bool ModuleDataForSymbolFile(const string &file, + std::vector *module_parts) { + assert(module_parts); + const size_t kModulePartNumber = 5; + FILE* fp = fopen(file.c_str(), "r"); + if (fp) { + char buffer[1024]; + if (fgets(buffer, sizeof(buffer), fp)) { + string line(buffer); + string::size_type line_break_pos = line.find_first_of('\n'); + if (line_break_pos == string::npos) { + assert(0 && "The file is invalid!"); + fclose(fp); + return false; + } + line.resize(line_break_pos); + const char kDelimiter = ' '; + TokenizeByChar(line, kDelimiter, module_parts); + if (module_parts->size() != kModulePartNumber) + module_parts->clear(); + } + fclose(fp); + } + + return module_parts->size() == kModulePartNumber; +} + +//============================================================================= +string CompactIdentifier(const string &uuid) { + std::vector components; + TokenizeByChar(uuid, '-', &components); + string result; + for (size_t i = 0; i < components.size(); ++i) + result += components[i]; + return result; +} + +//============================================================================= +void Start(Options *options) { + std::map parameters; + options->success = false; + std::vector module_parts; + if (!ModuleDataForSymbolFile(options->symbolsPath, &module_parts)) { + fprintf(stderr, "Failed to parse symbol file!\n"); + return; + } + + string compacted_id = CompactIdentifier(module_parts[3]); + + // Add parameters + if (!options->version.empty()) + parameters["version"] = options->version; + + // MODULE + // 0 1 2 3 4 + parameters["os"] = module_parts[1]; + parameters["cpu"] = module_parts[2]; + parameters["debug_file"] = module_parts[4]; + parameters["code_file"] = module_parts[4]; + parameters["debug_identifier"] = compacted_id; + + std::map files; + files["symbol_file"] = options->symbolsPath; + + string response, error; + long response_code; + bool success = HTTPUpload::SendRequest(options->uploadURLStr, + parameters, + files, + options->proxy, + options->proxy_user_pwd, + "", + &response, + &response_code, + &error); + + if (!success) { + printf("Failed to send symbol file: %s\n", error.c_str()); + printf("Response code: %ld\n", response_code); + printf("Response:\n"); + printf("%s\n", response.c_str()); + } else if (response_code == 0) { + printf("Failed to send symbol file: No response code\n"); + } else if (response_code != 200) { + printf("Failed to send symbol file: Response code %ld\n", response_code); + printf("Response:\n"); + printf("%s\n", response.c_str()); + } else { + printf("Successfully sent the symbol file.\n"); + } + options->success = success; +} + +} // namespace sym_upload +} // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.h b/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.h new file mode 100644 index 000000000000..0a469692ac84 --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.h @@ -0,0 +1,59 @@ +// -*- mode: c++ -*- + +// Copyright (c) 2011 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// symbol_upload.h: helper functions for linux symbol upload tool. + +#ifndef COMMON_LINUX_SYMBOL_UPLOAD_H_ +#define COMMON_LINUX_SYMBOL_UPLOAD_H_ + +#include + +#include "common/using_std_string.h" + +namespace google_breakpad { +namespace sym_upload { + +typedef struct { + string symbolsPath; + string uploadURLStr; + string proxy; + string proxy_user_pwd; + string version; + bool success; +} Options; + +// Starts upload to symbol server with options. +void Start(Options* options); + +} // namespace sym_upload +} // namespace google_breakpad + +#endif // COMMON_LINUX_SYMBOL_UPLOAD_H_ diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.cc index b978550f85e5..98e81dab7523 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.cc @@ -213,8 +213,10 @@ void ELF::Finish() { SymbolTable::SymbolTable(Endianness endianness, size_t addr_size, StringTable& table) : Section(endianness), - addr_size_(addr_size), table_(table) { +#ifndef NDEBUG + addr_size_ = addr_size; +#endif assert(addr_size_ == 4 || addr_size_ == 8); } diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.h b/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.h index 330ceae8edb5..1d2a20ca22b4 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.h @@ -173,7 +173,9 @@ class SymbolTable : public Section { uint64_t size, unsigned info, uint16_t shndx); private: +#ifndef NDEBUG size_t addr_size_; +#endif StringTable& table_; }; diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/Breakpad.xcconfig b/toolkit/crashreporter/google-breakpad/src/common/mac/Breakpad.xcconfig index 672be2cee555..f09136908109 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/Breakpad.xcconfig +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/Breakpad.xcconfig @@ -27,12 +27,6 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -ARCHS = $(ARCHS_STANDARD_32_64_BIT) -SDKROOT = macosx10.5 - -GCC_VERSION = 4.2 -GCC_VERSION[sdk=macosx10.4][arch=*] = 4.0 - GCC_C_LANGUAGE_STANDARD = c99 GCC_WARN_CHECK_SWITCH_STATEMENTS = YES @@ -41,7 +35,10 @@ GCC_WARN_64_TO_32_BIT_CONVERSION = NO GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES GCC_WARN_ABOUT_RETURN_TYPE = YES GCC_WARN_MISSING_PARENTHESES = YES -GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES + +// Once https://bugs.chromium.org/p/google-breakpad/issues/detail?id=697 +// is fixed this should be reenabled. +//GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES GCC_WARN_ABOUT_MISSING_NEWLINE = YES GCC_WARN_SIGN_COMPARE = YES GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES @@ -51,6 +48,5 @@ GCC_WARN_UNUSED_VARIABLE = YES GCC_TREAT_WARNINGS_AS_ERRORS = YES DEBUG_INFORMATION_FORMAT = dwarf-with-dsym -DEBUG_INFORMATION_FORMAT[sdk=macosx10.4][arch=*] = stabs ALWAYS_SEARCH_USER_PATHS = NO diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/HTTPMultipartUpload.m b/toolkit/crashreporter/google-breakpad/src/common/mac/HTTPMultipartUpload.m index 2ed1b6322651..9ac886d53ea2 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/HTTPMultipartUpload.m +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/HTTPMultipartUpload.m @@ -30,6 +30,65 @@ #import "HTTPMultipartUpload.h" #import "GTMDefines.h" +// As -[NSString stringByAddingPercentEscapesUsingEncoding:] has been +// deprecated with iOS 9.0 / OS X 10.11 SDKs, this function re-implements it +// using -[NSString stringByAddingPercentEncodingWithAllowedCharacters:] when +// using those SDKs. +static NSString *PercentEncodeNSString(NSString *key) { +#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_9_0) && \ + __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0) || \ + (defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ + defined(MAC_OS_X_VERSION_10_11) && \ + MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11) + return [key stringByAddingPercentEncodingWithAllowedCharacters: + [NSCharacterSet URLQueryAllowedCharacterSet]]; +#else + return [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; +#endif +} + +// As -[NSURLConnection sendSynchronousRequest:returningResponse:error:] has +// been deprecated with iOS 9.0 / OS X 10.11 SDKs, this function re-implements +// it using -[NSURLSession dataTaskWithRequest:completionHandler:] when using +// those SDKs. +static NSData *SendSynchronousNSURLRequest(NSURLRequest *req, + NSURLResponse **out_response, + NSError **out_error) { +#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_9_0) && \ + __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0) || \ + (defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ + defined(MAC_OS_X_VERSION_10_11) && \ + MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11) + __block NSData* result = nil; + __block NSError* error = nil; + __block NSURLResponse* response = nil; + dispatch_semaphore_t wait_semaphone = dispatch_semaphore_create(0); + [[[NSURLSession sharedSession] + dataTaskWithRequest:req + completionHandler:^(NSData *data, + NSURLResponse *resp, + NSError *err) { + if (out_error) + error = [err retain]; + if (out_response) + response = [resp retain]; + if (err == nil) + result = [data retain]; + dispatch_semaphore_signal(wait_semaphone); + }] resume]; + dispatch_semaphore_wait(wait_semaphone, DISPATCH_TIME_FOREVER); + dispatch_release(wait_semaphone); + if (out_error) + *out_error = [error autorelease]; + if (out_response) + *out_response = [response autorelease]; + return [result autorelease]; +#else + return [NSURLConnection sendSynchronousRequest:req + returningResponse:out_response + error:out_error]; +#endif +} @interface HTTPMultipartUpload(PrivateMethods) - (NSString *)multipartBoundary; // Each of the following methods will append the starting multipart boundary, @@ -52,8 +111,7 @@ //============================================================================= - (NSData *)formDataForKey:(NSString *)key value:(NSString *)value { - NSString *escaped = - [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + NSString *escaped = PercentEncodeNSString(key); NSString *fmt = @"--%@\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n"; NSString *form = [NSString stringWithFormat:fmt, boundary_, escaped, value]; @@ -64,8 +122,7 @@ //============================================================================= - (NSData *)formDataForFileContents:(NSData *)contents name:(NSString *)name { NSMutableData *data = [NSMutableData data]; - NSString *escaped = - [name stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + NSString *escaped = PercentEncodeNSString(name); NSString *fmt = @"--%@\r\nContent-Disposition: form-data; name=\"%@\"; " "filename=\"minidump.dmp\"\r\nContent-Type: application/octet-stream\r\n\r\n"; NSString *pre = [NSString stringWithFormat:fmt, boundary_, escaped]; @@ -196,9 +253,7 @@ [[req HTTPBody] writeToURL:[req URL] options:0 error:error]; } else { NSURLResponse *response = nil; - data = [NSURLConnection sendSynchronousRequest:req - returningResponse:&response - error:error]; + data = SendSynchronousNSURLRequest(req, &response, error); response_ = (NSHTTPURLResponse *)[response retain]; } [req release]; diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.cc b/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.cc index 4dcdb73e8771..b20a05586823 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.cc @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -316,7 +317,7 @@ class DumpSymbols::DumperLineToModule: compilation_dir_ = compilation_dir; } - void ReadProgram(const char *program, uint64 length, + void ReadProgram(const uint8_t *program, uint64 length, Module *module, vector *lines) { DwarfLineToModule handler(module, compilation_dir_, lines); dwarf2reader::LineInfo parser(program, length, byte_reader_, &handler); @@ -327,6 +328,65 @@ class DumpSymbols::DumperLineToModule: dwarf2reader::ByteReader *byte_reader_; // WEAK }; +bool DumpSymbols::CreateEmptyModule(scoped_ptr& module) { + // Select an object file, if SetArchitecture hasn't been called to set one + // explicitly. + if (!selected_object_file_) { + // If there's only one architecture, that's the one. + if (object_files_.size() == 1) + selected_object_file_ = &object_files_[0]; + else { + // Look for an object file whose architecture matches our own. + const NXArchInfo *local_arch = NXGetLocalArchInfo(); + if (!SetArchitecture(local_arch->cputype, local_arch->cpusubtype)) { + fprintf(stderr, "%s: object file contains more than one" + " architecture, none of which match the current" + " architecture; specify an architecture explicitly" + " with '-a ARCH' to resolve the ambiguity\n", + object_filename_.c_str()); + return false; + } + } + } + + assert(selected_object_file_); + + // Find the name of the selected file's architecture, to appear in + // the MODULE record and in error messages. + const NXArchInfo *selected_arch_info = + google_breakpad::BreakpadGetArchInfoFromCpuType( + selected_object_file_->cputype, selected_object_file_->cpusubtype); + + const char *selected_arch_name = selected_arch_info->name; + if (strcmp(selected_arch_name, "i386") == 0) + selected_arch_name = "x86"; + + // Produce a name to use in error messages that includes the + // filename, and the architecture, if there is more than one. + selected_object_name_ = object_filename_; + if (object_files_.size() > 1) { + selected_object_name_ += ", architecture "; + selected_object_name_ + selected_arch_name; + } + + // Compute a module name, to appear in the MODULE record. + string module_name = object_filename_; + module_name = basename(&module_name[0]); + + // Choose an identifier string, to appear in the MODULE record. + string identifier = Identifier(); + if (identifier.empty()) + return false; + identifier += "0"; + + // Create a module to hold the debugging information. + module.reset(new Module(module_name, + "mac", + selected_arch_name, + identifier)); + return true; +} + bool DumpSymbols::ReadDwarf(google_breakpad::Module *module, const mach_o::Reader &macho_reader, const mach_o::SectionMap &dwarf_sections, @@ -346,7 +406,7 @@ bool DumpSymbols::ReadDwarf(google_breakpad::Module *module, it != dwarf_sections.end(); ++it) { file_context.AddSectionToSectionMap( it->first, - reinterpret_cast(it->second.contents.start), + it->second.contents.start, it->second.contents.Size()); } @@ -354,7 +414,7 @@ bool DumpSymbols::ReadDwarf(google_breakpad::Module *module, dwarf2reader::SectionMap::const_iterator debug_info_entry = file_context.section_map().find("__debug_info"); assert(debug_info_entry != file_context.section_map().end()); - const std::pair& debug_info_section = + const std::pair& debug_info_section = debug_info_entry->second; // There had better be a __debug_info section! if (!debug_info_section.first) { @@ -377,7 +437,8 @@ bool DumpSymbols::ReadDwarf(google_breakpad::Module *module, // Make a Dwarf2Handler that drives our DIEHandler. dwarf2reader::DIEDispatcher die_dispatcher(&root_handler); // Make a DWARF parser for the compilation unit at OFFSET. - dwarf2reader::CompilationUnit dwarf_reader(file_context.section_map(), + dwarf2reader::CompilationUnit dwarf_reader(selected_object_name_, + file_context.section_map(), offset, &byte_reader, &die_dispatcher); @@ -424,7 +485,7 @@ bool DumpSymbols::ReadCFI(google_breakpad::Module *module, } // Find the call frame information and its size. - const char *cfi = reinterpret_cast(section.contents.start); + const uint8_t *cfi = section.contents.start; size_t cfi_size = section.contents.Size(); // Plug together the parser, handler, and their entourages. @@ -534,61 +595,9 @@ bool DumpSymbols::LoadCommandDumper::SymtabCommand(const ByteBuffer &entries, } bool DumpSymbols::ReadSymbolData(Module** out_module) { - // Select an object file, if SetArchitecture hasn't been called to set one - // explicitly. - if (!selected_object_file_) { - // If there's only one architecture, that's the one. - if (object_files_.size() == 1) - selected_object_file_ = &object_files_[0]; - else { - // Look for an object file whose architecture matches our own. - const NXArchInfo *local_arch = NXGetLocalArchInfo(); - if (!SetArchitecture(local_arch->cputype, local_arch->cpusubtype)) { - fprintf(stderr, "%s: object file contains more than one" - " architecture, none of which match the current" - " architecture; specify an architecture explicitly" - " with '-a ARCH' to resolve the ambiguity\n", - object_filename_.c_str()); - return false; - } - } - } - - assert(selected_object_file_); - - // Find the name of the selected file's architecture, to appear in - // the MODULE record and in error messages. - const NXArchInfo *selected_arch_info = - google_breakpad::BreakpadGetArchInfoFromCpuType( - selected_object_file_->cputype, selected_object_file_->cpusubtype); - - const char *selected_arch_name = selected_arch_info->name; - if (strcmp(selected_arch_name, "i386") == 0) - selected_arch_name = "x86"; - - // Produce a name to use in error messages that includes the - // filename, and the architecture, if there is more than one. - selected_object_name_ = object_filename_; - if (object_files_.size() > 1) { - selected_object_name_ += ", architecture "; - selected_object_name_ + selected_arch_name; - } - - // Compute a module name, to appear in the MODULE record. - string module_name = object_filename_; - module_name = basename(&module_name[0]); - - // Choose an identifier string, to appear in the MODULE record. - string identifier = Identifier(); - if (identifier.empty()) + scoped_ptr module; + if (!CreateEmptyModule(module)) return false; - identifier += "0"; - - // Create a module to hold the debugging information. - scoped_ptr module(new Module(module_name, - "mac", - selected_arch_name, - identifier)); // Parse the selected object file. mach_o::Reader::Reporter reporter(selected_object_name_); @@ -623,4 +632,15 @@ bool DumpSymbols::WriteSymbolFile(std::ostream &stream) { return false; } +// Read the selected object file's debugging information, and write out the +// header only to |stream|. Return true on success; if an error occurs, report +// it and return false. +bool DumpSymbols::WriteSymbolFileHeader(std::ostream &stream) { + scoped_ptr module; + if (!CreateEmptyModule(module)) + return false; + + return module->Write(stream, symbol_data_); +} + } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h b/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h index b09928c95fbc..9463f7dc0ce5 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h @@ -112,6 +112,11 @@ class DumpSymbols { // return false. bool WriteSymbolFile(std::ostream &stream); + // Read the selected object file's debugging information, and write out the + // header only to |stream|. Return true on success; if an error occurs, report + // it and return false. + bool WriteSymbolFileHeader(std::ostream &stream); + // As above, but simply return the debugging information in module // instead of writing it to a stream. The caller owns the resulting // module object and must delete it when finished. @@ -130,6 +135,10 @@ class DumpSymbols { // Return an identifier string for the file this DumpSymbols is dumping. std::string Identifier(); + + // Creates an empty module object. + bool CreateEmptyModule(scoped_ptr& module); + // Read debugging information from |dwarf_sections|, which was taken from // |macho_reader|, and add it to |module|. On success, return true; // on failure, report the problem and return false. diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/macho_reader.cc b/toolkit/crashreporter/google-breakpad/src/common/mac/macho_reader.cc index 6d7207ce4bf3..52f3c411beb7 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/macho_reader.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/macho_reader.cc @@ -181,15 +181,15 @@ void Reader::Reporter::LoadCommandRegionTruncated() { void Reader::Reporter::LoadCommandsOverrun(size_t claimed, size_t i, LoadCommandType type) { - fprintf(stderr, "%s: file's header claims there are %ld" - " load commands, but load command #%ld", + fprintf(stderr, "%s: file's header claims there are %zu" + " load commands, but load command #%zu", filename_.c_str(), claimed, i); if (type) fprintf(stderr, ", of type %d,", type); fprintf(stderr, " extends beyond the end of the load command region\n"); } void Reader::Reporter::LoadCommandTooShort(size_t i, LoadCommandType type) { - fprintf(stderr, "%s: the contents of load command #%ld, of type %d," + fprintf(stderr, "%s: the contents of load command #%zu, of type %d," " extend beyond the size given in the load command's header\n", filename_.c_str(), i, type); } diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build b/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build index 4db2ea620066..6d6df28e21bf 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build @@ -29,6 +29,7 @@ if CONFIG['MOZ_CRASHREPORTER']: HOST_CXXFLAGS += [ '-O2', '-g', + '-stdlib=libc++', ] HostLibrary('host_breakpad_mac_common_s') diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/testing/GTMSenTestCase.m b/toolkit/crashreporter/google-breakpad/src/common/mac/testing/GTMSenTestCase.m index 5607c3162582..162f01e97cab 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/testing/GTMSenTestCase.m +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/testing/GTMSenTestCase.m @@ -26,10 +26,6 @@ #import "GTMObjC2Runtime.h" #import "GTMUnitTestDevLog.h" -#if !GTM_IPHONE_SDK -#import "GTMGarbageCollection.h" -#endif // !GTM_IPHONE_SDK - #if GTM_IPHONE_SDK && !GTM_IPHONE_USE_SENTEST #import @@ -430,71 +426,3 @@ static int MethodSort(id a, id b, void *context) { } @end - -// Leak detection -#if !GTM_IPHONE_DEVICE && !GTM_SUPPRESS_RUN_LEAKS_HOOK -// Don't want to get leaks on the iPhone Device as the device doesn't -// have 'leaks'. The simulator does though. - -// COV_NF_START -// We don't have leak checking on by default, so this won't be hit. -static void _GTMRunLeaks(void) { - // This is an atexit handler. It runs leaks for us to check if we are - // leaking anything in our tests. - const char* cExclusionsEnv = getenv("GTM_LEAKS_SYMBOLS_TO_IGNORE"); - NSMutableString *exclusions = [NSMutableString string]; - if (cExclusionsEnv) { - NSString *exclusionsEnv = [NSString stringWithUTF8String:cExclusionsEnv]; - NSArray *exclusionsArray = [exclusionsEnv componentsSeparatedByString:@","]; - NSString *exclusion; - NSCharacterSet *wcSet = [NSCharacterSet whitespaceCharacterSet]; - GTM_FOREACH_OBJECT(exclusion, exclusionsArray) { - exclusion = [exclusion stringByTrimmingCharactersInSet:wcSet]; - [exclusions appendFormat:@"-exclude \"%@\" ", exclusion]; - } - } - // Clearing out DYLD_ROOT_PATH because iPhone Simulator framework libraries - // are different from regular OS X libraries and leaks will fail to run - // because of missing symbols. Also capturing the output of leaks and then - // pipe rather than a direct pipe, because otherwise if leaks failed, - // the system() call will still be successful. Bug: - // http://code.google.com/p/google-toolbox-for-mac/issues/detail?id=56 - NSString *string - = [NSString stringWithFormat: - @"LeakOut=`DYLD_ROOT_PATH='' /usr/bin/leaks %@%d` &&" - @"echo \"$LeakOut\"|/usr/bin/sed -e 's/Leak: /Leaks:0: warning: Leak /'", - exclusions, getpid()]; - int ret = system([string UTF8String]); - if (ret) { - fprintf(stderr, - "%s:%d: Error: Unable to run leaks. 'system' returned: %d\n", - __FILE__, __LINE__, ret); - fflush(stderr); - } -} -// COV_NF_END - -static __attribute__((constructor)) void _GTMInstallLeaks(void) { - BOOL checkLeaks = YES; -#if !GTM_IPHONE_SDK - checkLeaks = GTMIsGarbageCollectionEnabled() ? NO : YES; -#endif // !GTM_IPHONE_SDK - if (checkLeaks) { - checkLeaks = getenv("GTM_ENABLE_LEAKS") ? YES : NO; - if (checkLeaks) { - // COV_NF_START - // We don't have leak checking on by default, so this won't be hit. - fprintf(stderr, "Leak Checking Enabled\n"); - fflush(stderr); - int ret = atexit(&_GTMRunLeaks); - // To avoid unused variable warning when _GTMDevAssert is stripped. - (void)ret; - _GTMDevAssert(ret == 0, - @"Unable to install _GTMRunLeaks as an atexit handler (%d)", - errno); - // COV_NF_END - } - } -} - -#endif // !GTM_IPHONE_DEVICE && !GTM_SUPPRESS_RUN_LEAKS_HOOK diff --git a/toolkit/crashreporter/google-breakpad/src/common/memory.h b/toolkit/crashreporter/google-breakpad/src/common/memory.h index d6aa137d35c0..9158b50c8b85 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/memory.h +++ b/toolkit/crashreporter/google-breakpad/src/common/memory.h @@ -44,7 +44,6 @@ #ifdef __APPLE__ #define sys_mmap mmap -#define sys_mmap2 mmap #define sys_munmap munmap #define MAP_ANONYMOUS MAP_ANON #else @@ -64,7 +63,8 @@ class PageAllocator { : page_size_(getpagesize()), last_(NULL), current_page_(NULL), - page_offset_(0) { + page_offset_(0), + pages_allocated_(0) { } ~PageAllocator() { @@ -112,16 +112,12 @@ class PageAllocator { return false; } + unsigned long pages_allocated() { return pages_allocated_; } + private: uint8_t *GetNPages(size_t num_pages) { -#if defined(__x86_64__) || defined(__aarch64__) || defined(__aarch64__) || \ - ((defined(__mips__) && _MIPS_SIM == _ABI64)) void *a = sys_mmap(NULL, page_size_ * num_pages, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); -#else - void *a = sys_mmap2(NULL, page_size_ * num_pages, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); -#endif if (a == MAP_FAILED) return NULL; @@ -136,6 +132,8 @@ class PageAllocator { header->num_pages = num_pages; last_ = header; + pages_allocated_ += num_pages; + return reinterpret_cast(a); } @@ -157,6 +155,7 @@ class PageAllocator { PageHeader *last_; uint8_t *current_page_; size_t page_offset_; + unsigned long pages_allocated_; }; // Wrapper to use with STL containers @@ -165,12 +164,30 @@ struct PageStdAllocator : public std::allocator { typedef typename std::allocator::pointer pointer; typedef typename std::allocator::size_type size_type; - explicit PageStdAllocator(PageAllocator& allocator): allocator_(allocator) {} + explicit PageStdAllocator(PageAllocator& allocator) : allocator_(allocator), + stackdata_(NULL), + stackdata_size_(0) + {} + template PageStdAllocator(const PageStdAllocator& other) - : allocator_(other.allocator_) {} + : allocator_(other.allocator_), + stackdata_(nullptr), + stackdata_size_(0) + {} + + explicit PageStdAllocator(PageAllocator& allocator, + pointer stackdata, + size_type stackdata_size) : allocator_(allocator), + stackdata_(stackdata), + stackdata_size_(stackdata_size) + {} inline pointer allocate(size_type n, const void* = 0) { - return static_cast(allocator_.Alloc(sizeof(T) * n)); + const size_type size = sizeof(T) * n; + if (size <= stackdata_size_) { + return stackdata_; + } + return static_cast(allocator_.Alloc(size)); } inline void deallocate(pointer, size_type) { @@ -188,6 +205,8 @@ struct PageStdAllocator : public std::allocator { template friend struct PageStdAllocator; PageAllocator& allocator_; + pointer stackdata_; + size_type stackdata_size_; }; // A wasteful vector is a std::vector, except that it allocates memory from a @@ -200,6 +219,24 @@ class wasteful_vector : public std::vector > { : std::vector >(PageStdAllocator(*allocator)) { std::vector >::reserve(size_hint); } + protected: + wasteful_vector(PageStdAllocator allocator) + : std::vector >(allocator) {} +}; + +// auto_wasteful_vector allocates space on the stack for N entries to avoid +// using the PageAllocator for small data, while still allowing for larger data. +template +class auto_wasteful_vector : public wasteful_vector { + T stackdata_[N]; + public: + auto_wasteful_vector(PageAllocator* allocator) + : wasteful_vector( + PageStdAllocator(*allocator, + &stackdata_[0], + sizeof(stackdata_))) { + std::vector >::reserve(N); + } }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/memory_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/memory_unittest.cc index 1e511ca56ea7..8d2494c2327d 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/memory_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/memory_unittest.cc @@ -38,11 +38,13 @@ typedef testing::Test PageAllocatorTest; TEST(PageAllocatorTest, Setup) { PageAllocator allocator; + EXPECT_EQ(0U, allocator.pages_allocated()); } TEST(PageAllocatorTest, SmallObjects) { PageAllocator allocator; + EXPECT_EQ(0U, allocator.pages_allocated()); for (unsigned i = 1; i < 1024; ++i) { uint8_t *p = reinterpret_cast(allocator.Alloc(i)); ASSERT_FALSE(p == NULL); @@ -53,8 +55,10 @@ TEST(PageAllocatorTest, SmallObjects) { TEST(PageAllocatorTest, LargeObject) { PageAllocator allocator; + EXPECT_EQ(0U, allocator.pages_allocated()); uint8_t *p = reinterpret_cast(allocator.Alloc(10000)); ASSERT_FALSE(p == NULL); + EXPECT_EQ(3U, allocator.pages_allocated()); for (unsigned i = 1; i < 10; ++i) { uint8_t *p = reinterpret_cast(allocator.Alloc(i)); ASSERT_FALSE(p == NULL); @@ -75,6 +79,7 @@ TEST(WastefulVectorTest, Setup) { TEST(WastefulVectorTest, Simple) { PageAllocator allocator_; + EXPECT_EQ(0U, allocator_.pages_allocated()); wasteful_vector v(&allocator_); for (unsigned i = 0; i < 256; ++i) { @@ -84,6 +89,7 @@ TEST(WastefulVectorTest, Simple) { } ASSERT_FALSE(v.empty()); ASSERT_EQ(v.size(), 256u); + EXPECT_EQ(1U, allocator_.pages_allocated()); for (unsigned i = 0; i < 256; ++i) ASSERT_EQ(v[i], i); } @@ -91,7 +97,28 @@ TEST(WastefulVectorTest, Simple) { TEST(WastefulVectorTest, UsesPageAllocator) { PageAllocator allocator_; wasteful_vector v(&allocator_); + EXPECT_EQ(1U, allocator_.pages_allocated()); v.push_back(1); ASSERT_TRUE(allocator_.OwnsPointer(&v[0])); } + +TEST(WastefulVectorTest, AutoWastefulVector) { + PageAllocator allocator_; + EXPECT_EQ(0U, allocator_.pages_allocated()); + + auto_wasteful_vector v(&allocator_); + EXPECT_EQ(0U, allocator_.pages_allocated()); + + v.push_back(1); + EXPECT_EQ(0U, allocator_.pages_allocated()); + EXPECT_FALSE(allocator_.OwnsPointer(&v[0])); + + v.resize(4); + EXPECT_EQ(0U, allocator_.pages_allocated()); + EXPECT_FALSE(allocator_.OwnsPointer(&v[0])); + + v.resize(10); + EXPECT_EQ(1U, allocator_.pages_allocated()); + EXPECT_TRUE(allocator_.OwnsPointer(&v[0])); +} diff --git a/toolkit/crashreporter/google-breakpad/src/common/module.cc b/toolkit/crashreporter/google-breakpad/src/common/module.cc index ca52f9fc80c8..e701f1b59f7c 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/module.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/module.cc @@ -49,11 +49,13 @@ using std::hex; Module::Module(const string &name, const string &os, - const string &architecture, const string &id) : + const string &architecture, const string &id, + const string &code_id /* = "" */) : name_(name), os_(os), architecture_(architecture), id_(id), + code_id_(code_id), load_address_(0) { } Module::~Module() { @@ -258,6 +260,10 @@ bool Module::Write(std::ostream &stream, SymbolData symbol_data) { if (!stream.good()) return ReportError(); + if (!code_id_.empty()) { + stream << "INFO CODE_ID " << code_id_ << endl; + } + if (symbol_data != ONLY_CFI) { AssignSourceIds(); diff --git a/toolkit/crashreporter/google-breakpad/src/common/module.h b/toolkit/crashreporter/google-breakpad/src/common/module.h index 299bc3857e02..305f94579df1 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/module.h +++ b/toolkit/crashreporter/google-breakpad/src/common/module.h @@ -186,7 +186,7 @@ class Module { // Create a new module with the given name, operating system, // architecture, and ID string. Module(const string &name, const string &os, const string &architecture, - const string &id); + const string &id, const string &code_id = ""); ~Module(); // Set the module's load address to LOAD_ADDRESS; addresses given @@ -292,6 +292,7 @@ class Module { string os() const { return os_; } string architecture() const { return architecture_; } string identifier() const { return id_; } + string code_identifier() const { return code_id_; } private: // Report an error that has occurred writing the symbol file, using @@ -304,7 +305,7 @@ class Module { static bool WriteRuleMap(const RuleMap &rule_map, std::ostream &stream); // Module header entries. - string name_, os_, architecture_, id_; + string name_, os_, architecture_, id_, code_id_; // The module's nominal load address. Addresses for functions and // lines are absolute, assuming the module is loaded at this diff --git a/toolkit/crashreporter/google-breakpad/src/common/module_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/module_unittest.cc index bf72736d9026..3789f9ec5ec8 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/module_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/module_unittest.cc @@ -64,6 +64,7 @@ static Module::Function *generate_duplicate_function(const string &name) { #define MODULE_OS "os-name" #define MODULE_ARCH "architecture" #define MODULE_ID "id-string" +#define MODULE_CODE_ID "code-id-string" TEST(Write, Header) { stringstream s; @@ -74,6 +75,16 @@ TEST(Write, Header) { contents.c_str()); } +TEST(Write, HeaderCodeId) { + stringstream s; + Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID, MODULE_CODE_ID); + m.Write(s, ALL_SYMBOL_DATA); + string contents = s.str(); + EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n" + "INFO CODE_ID code-id-string\n", + contents.c_str()); +} + TEST(Write, OneLineFunc) { stringstream s; Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID); diff --git a/toolkit/crashreporter/google-breakpad/src/common/moz.build b/toolkit/crashreporter/google-breakpad/src/common/moz.build index f5ee9fab6ebb..7bb6e9b6d621 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/moz.build +++ b/toolkit/crashreporter/google-breakpad/src/common/moz.build @@ -43,6 +43,10 @@ if CONFIG['OS_ARCH'] != 'WINNT': 'module.cc', 'string_conversion.cc', ] + if CONFIG['OS_ARCH'] == 'Darwin': + HOST_CXXFLAGS += [ + '-stdlib=libc++', + ] HOST_CXXFLAGS += [ '-O2', '-g', diff --git a/toolkit/crashreporter/google-breakpad/src/common/stdio_wrapper.h b/toolkit/crashreporter/google-breakpad/src/common/stdio_wrapper.h new file mode 100644 index 000000000000..a3dd50aab66c --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/common/stdio_wrapper.h @@ -0,0 +1,43 @@ +// Copyright (c) 2016, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#ifndef GOOGLE_BREAKPAD_COMMON_STDIO_WRAPPER_H +#define GOOGLE_BREAKPAD_COMMON_STDIO_WRAPPER_H + +#include + +#if defined(_MSC_VER) && MSC_VER < 1900 +#include + +#define snprintf _snprintf +typedef SSIZE_T ssize_t; +#endif + + +#endif // GOOGLE_BREAKPAD_COMMON_STDIO_WRAPPER_H diff --git a/toolkit/crashreporter/google-breakpad/src/common/windows/omap.cc b/toolkit/crashreporter/google-breakpad/src/common/windows/omap.cc index 67b9206559cf..554a57c2db14 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/windows/omap.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/windows/omap.cc @@ -210,7 +210,7 @@ bool FindAndLoadOmapTable(const wchar_t* name, reinterpret_cast(&table->at(0)), &count_read))) { fprintf(stderr, "IDiaEnumDebugStreamData::Next failed while reading " - "data from stream \"%ws\"\n"); + "data from stream \"%ws\"\n", name); return false; } diff --git a/toolkit/crashreporter/google-breakpad/src/config.h.in b/toolkit/crashreporter/google-breakpad/src/config.h.in index 1db015930932..ee6a67ad95df 100644 --- a/toolkit/crashreporter/google-breakpad/src/config.h.in +++ b/toolkit/crashreporter/google-breakpad/src/config.h.in @@ -3,6 +3,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_A_OUT_H +/* define if the compiler supports basic C++11 syntax */ +#undef HAVE_CXX11 + /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h index c936e1e683e3..d8828043ff38 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h @@ -40,6 +40,12 @@ #ifndef GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ #define GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ +#if (defined(_INTTYPES_H) || defined(_INTTYPES_H_)) && \ + !defined(__STDC_FORMAT_MACROS) +#error "inttypes.h has already been included before this header file, but " +#error "without __STDC_FORMAT_MACROS defined." +#endif + #ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS #endif /* __STDC_FORMAT_MACROS */ diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h index 6cbe3023f9c1..f4e2b5891c34 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h @@ -157,4 +157,20 @@ enum MDMIPSRegisterNumbers { MD_CONTEXT_MIPS_FLOATING_POINT \ MD_CONTEXT_MIPS_DSP) +/** + * Breakpad defines for MIPS64 + */ +#define MD_CONTEXT_MIPS64 0x00080000 +#define MD_CONTEXT_MIPS64_INTEGER (MD_CONTEXT_MIPS64 | 0x00000002) +#define MD_CONTEXT_MIPS64_FLOATING_POINT (MD_CONTEXT_MIPS64 | 0x00000004) +#define MD_CONTEXT_MIPS64_DSP (MD_CONTEXT_MIPS64 | 0x00000008) + +#define MD_CONTEXT_MIPS64_FULL (MD_CONTEXT_MIPS64_INTEGER | \ + MD_CONTEXT_MIPS64_FLOATING_POINT | \ + MD_CONTEXT_MIPS64_DSP) + +#define MD_CONTEXT_MIPS64_ALL (MD_CONTEXT_MIPS64_INTEGER | \ + MD_CONTEXT_MIPS64_FLOATING_POINT \ + MD_CONTEXT_MIPS64_DSP) + #endif // GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_MIPS_H__ diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h index e4cd59edd5f1..6fa3fba444e7 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h @@ -100,6 +100,9 @@ typedef enum { /* STATUS_STACK_BUFFER_OVERRUN */ MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION = 0xc0000374, /* STATUS_HEAP_CORRUPTION */ + MD_EXCEPTION_OUT_OF_MEMORY = 0xe0000008, + /* Exception thrown by Chromium allocators to indicate OOM. + See base/process/memory.h in Chromium for rationale. */ MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION = 0xe06d7363 /* Per http://support.microsoft.com/kb/185294, generated by Visual C++ compiler */ diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_format.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_format.h index 17a5abba33f4..251e503df953 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_format.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_format.h @@ -328,6 +328,10 @@ typedef enum { MD_MEMORY_INFO_LIST_STREAM = 16, /* MDRawMemoryInfoList */ MD_THREAD_INFO_LIST_STREAM = 17, MD_HANDLE_OPERATION_LIST_STREAM = 18, + MD_TOKEN_STREAM = 19, + MD_JAVASCRIPT_DATA_STREAM = 20, + MD_SYSTEM_MEMORY_INFO_STREAM = 21, + MD_PROCESS_VM_COUNTERS_STREAM = 22, MD_LAST_RESERVED_STREAM = 0x0000ffff, /* Breakpad extension types. 0x4767 = "Gg" */ @@ -449,15 +453,26 @@ static const size_t MDCVInfoPDB70_minsize = offsetof(MDCVInfoPDB70, #define MD_CVINFOPDB70_SIGNATURE 0x53445352 /* cvSignature = 'SDSR' */ +/* + * Modern ELF toolchains insert a "build id" into the ELF headers that + * usually contains a hash of some ELF headers + sections to uniquely + * identify a binary. + * + * https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/compiling-build-id.html + * https://sourceware.org/binutils/docs-2.26/ld/Options.html#index-g_t_002d_002dbuild_002did-292 + */ typedef struct { - uint32_t data1[2]; - uint32_t data2; - uint32_t data3; - uint32_t data4; - uint32_t data5[3]; - uint8_t extra[2]; + uint32_t cv_signature; + uint8_t build_id[1]; /* Bytes of build id from GNU_BUILD_ID ELF note. + * This is variable-length, but usually 20 bytes + * as the binutils ld default is a SHA-1 hash. */ } MDCVInfoELF; +static const size_t MDCVInfoELF_minsize = offsetof(MDCVInfoELF, + build_id[0]); + +#define MD_CVINFOELF_SIGNATURE 0x4270454c /* cvSignature = 'BpEL' */ + /* In addition to the two CodeView record formats above, used for linking * to external pdb files, it is possible for debugging data to be carried * directly in the CodeView record itself. These signature values will @@ -638,6 +653,7 @@ typedef enum { MD_CPU_ARCHITECTURE_SPARC = 0x8001, /* Breakpad-defined value for SPARC */ MD_CPU_ARCHITECTURE_PPC64 = 0x8002, /* Breakpad-defined value for PPC64 */ MD_CPU_ARCHITECTURE_ARM64 = 0x8003, /* Breakpad-defined value for ARM64 */ + MD_CPU_ARCHITECTURE_MIPS64 = 0x8004, /* Breakpad-defined value for MIPS64 */ MD_CPU_ARCHITECTURE_UNKNOWN = 0xffff /* PROCESSOR_ARCHITECTURE_UNKNOWN */ } MDCPUArchitecture; @@ -705,6 +721,41 @@ typedef struct { /* MAX_PATH from windef.h */ #define MD_MAX_PATH 260 +/* For MDXStateConfigFeatureMscInfo.features */ +typedef struct { + uint32_t offset; + uint32_t size; +} MDXStateFeature; + +/* For MDXStateConfigFeatureMscInfo.enabled_features from winnt.h */ +typedef enum { + MD_XSTATE_LEGACY_FLOATING_POINT = 0, /* XSTATE_LEGACY_FLOATING_POINT */ + MD_XSTATE_LEGACY_SSE = 1, /* XSTATE_LEGACY_SSE */ + MD_XSTATE_GSSE = 2, /* XSTATE_GSSE */ + MD_XSTATE_AVX = MD_XSTATE_GSSE, /* XSTATE_AVX */ + MD_XSTATE_MPX_BNDREGS = 3, /* XSTATE_MPX_BNDREGS */ + MD_XSTATE_MPX_BNDCSR = 4, /* XSTATE_MPX_BNDCSR */ + MD_XSTATE_AVX512_KMASK = 5, /* XSTATE_AVX512_KMASK */ + MD_XSTATE_AVX512_ZMM_H = 6, /* XSTATE_AVX512_ZMM_H */ + MD_XSTATE_AVX512_ZMM = 7, /* XSTATE_AVX512_ZMM */ + MD_XSTATE_IPT = 8, /* XSTATE_IPT */ + MD_XSTATE_LWP = 62 /* XSTATE_LWP */ +} MDXStateFeatureFlag; + +/* MAXIMUM_XSTATE_FEATURES from winnt.h */ +#define MD_MAXIMUM_XSTATE_FEATURES 64 + +/* For MDRawMiscInfo.xstate_data */ +typedef struct { + uint32_t size_of_info; + uint32_t context_size; + /* An entry in the features array is valid only if the corresponding bit in + * the enabled_features flag is set. */ + uint64_t enabled_features; + MDXStateFeature features[MD_MAXIMUM_XSTATE_FEATURES]; +} MDXStateConfigFeatureMscInfo; + + /* The miscellaneous information stream contains a variety * of small pieces of information. A member is valid if * it's within the available size and its corresponding @@ -765,9 +816,22 @@ typedef struct { * MD_MISCINFO_FLAGS1_BUILDSTRING. */ uint16_t build_string[MD_MAX_PATH]; /* UTF-16-encoded, 0-terminated */ uint16_t dbg_bld_str[40]; /* UTF-16-encoded, 0-terminated */ + + /* The following fields are not present in MINIDUMP_MISC_INFO_4 but are + * in MINIDUMP_MISC_INFO_5. When this struct is populated, these values + * may not be set. Use flags1 and size_of_info to determine whether these + * values are present. */ + + /* The following field has its own flags for establishing the validity of + * the structure's contents.*/ + MDXStateConfigFeatureMscInfo xstate_data; + + /* The following field is only valid if flags1 contains + * MD_MISCINFO_FLAGS1_PROCESS_COOKIE. */ + uint32_t process_cookie; } MDRawMiscInfo; /* MINIDUMP_MISC_INFO, MINIDUMP_MISC_INFO_2, * MINIDUMP_MISC_INFO_3, MINIDUMP_MISC_INFO_4, - * MINIDUMP_MISC_INFO_N */ + * MINIDUMP_MISC_INFO_5, MINIDUMP_MISC_INFO_N */ static const size_t MD_MISCINFO_SIZE = offsetof(MDRawMiscInfo, processor_max_mhz); @@ -775,7 +839,14 @@ static const size_t MD_MISCINFO2_SIZE = offsetof(MDRawMiscInfo, process_integrity_level); static const size_t MD_MISCINFO3_SIZE = offsetof(MDRawMiscInfo, build_string[0]); -static const size_t MD_MISCINFO4_SIZE = sizeof(MDRawMiscInfo); +static const size_t MD_MISCINFO4_SIZE = + offsetof(MDRawMiscInfo, xstate_data); +/* Version 5 of the MDRawMiscInfo structure is not a multiple of 8 in size and + * yet it contains some 8-bytes sized fields. This causes many compilers to + * round the structure size up to a multiple of 8 by adding padding at the end. + * The following hack is thus required for matching the proper on-disk size. */ +static const size_t MD_MISCINFO5_SIZE = + offsetof(MDRawMiscInfo, process_cookie) + sizeof(uint32_t); /* For (MDRawMiscInfo).flags1. These values indicate which fields in the * MDRawMiscInfoStructure are valid. */ @@ -796,6 +867,8 @@ typedef enum { /* MINIDUMP_MISC3_PROTECTED_PROCESS */ MD_MISCINFO_FLAGS1_BUILDSTRING = 0x00000100, /* MINIDUMP_MISC4_BUILDSTRING */ + MD_MISCINFO_FLAGS1_PROCESS_COOKIE = 0x00000200, + /* MINIDUMP_MISC5_PROCESS_COOKIE */ } MDMiscInfoFlags1; /* diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_size.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_size.h index 918544b66238..fae57923cc4b 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_size.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_size.h @@ -75,6 +75,12 @@ class minidump_size { static size_t size() { return MDCVInfoPDB70_minsize; } }; +template<> +class minidump_size { + public: + static size_t size() { return MDCVInfoELF_minsize; } +}; + template<> class minidump_size { public: diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h index 21f595e7b2c3..c59142315b9a 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h @@ -45,6 +45,7 @@ #ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__ #define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__ +#include #include namespace google_breakpad { @@ -61,15 +62,24 @@ class CallStack { // Resets the CallStack to its initial empty state void Clear(); - + const vector* frames() const { return &frames_; } + // Set the TID associated with this call stack. + void set_tid(uint32_t tid) { tid_ = tid; } + + uint32_t tid() const { return tid_; } + private: // Stackwalker is responsible for building the frames_ vector. friend class Stackwalker; // Storage for pushed frames. vector frames_; + + // The TID associated with this call stack. Default to 0 if it's not + // available. + uint32_t tid_; }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_module.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_module.h index 4e8928243ca2..b139907c44c4 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_module.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_module.h @@ -86,7 +86,14 @@ class CodeModule { // ownership of. The new CodeModule may be of a different concrete class // than the CodeModule being copied, but will behave identically to the // copied CodeModule as far as the CodeModule interface is concerned. - virtual const CodeModule* Copy() const = 0; + virtual CodeModule* Copy() const = 0; + + // Getter and setter for shrink_down_delta. This is used when the address + // range for a module is shrunk down due to address range conflicts with + // other modules. The base_address and size fields are not updated and they + // should always reflect the original values (reported in the minidump). + virtual uint64_t shrink_down_delta() const = 0; + virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) = 0; }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_modules.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_modules.h index a38579af6d1f..509137cbbe99 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_modules.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_modules.h @@ -35,7 +35,12 @@ #ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ #define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ +#include + +#include + #include "google_breakpad/common/breakpad_types.h" +#include "processor/linked_ptr.h" namespace google_breakpad { @@ -91,6 +96,14 @@ class CodeModules { // returns objects in may differ between a copy and the original CodeModules // object. virtual const CodeModules* Copy() const = 0; + + // Returns a vector of all modules which address ranges needed to be shrunk + // down due to address range conflicts with other modules. + virtual std::vector > + GetShrunkRangeModules() const = 0; + + // Returns true, if module address range shrink is enabled. + virtual bool IsModuleShrinkEnabled() const = 0; }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/microdump.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/microdump.h index abdaecb19ab4..0e2cb74944d9 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/microdump.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/microdump.h @@ -58,6 +58,9 @@ class MicrodumpModules : public BasicCodeModules { public: // Takes over ownership of |module|. void Add(const CodeModule* module); + + // Enables/disables module address range shrink. + void SetEnableModuleShrink(bool is_enabled); }; // MicrodumpContext carries a CPU-specific context. @@ -66,6 +69,9 @@ class MicrodumpContext : public DumpContext { public: virtual void SetContextARM(MDRawContextARM* arm); virtual void SetContextARM64(MDRawContextARM64* arm64); + virtual void SetContextX86(MDRawContextX86* x86); + virtual void SetContextMIPS(MDRawContextMIPS* mips32); + virtual void SetContextMIPS64(MDRawContextMIPS* mips64); }; // This class provides access to microdump memory regions. diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h index 2b5025e4ff55..c8c3cd4815c1 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h @@ -151,6 +151,8 @@ class MinidumpStream : public MinidumpObject { // that implements MinidumpStream can compare expected_size to a // known size as an integrity check. virtual bool Read(uint32_t expected_size) = 0; + + DISALLOW_COPY_AND_ASSIGN(MinidumpStream); }; @@ -191,6 +193,8 @@ class MinidumpContext : public DumpContext { // for access to data about the minidump file itself, such as whether // it should be byte-swapped. Minidump* minidump_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpContext); }; @@ -358,6 +362,8 @@ class MinidumpThreadList : public MinidumpStream { // The list of threads. MinidumpThreads* threads_; uint32_t thread_count_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpThreadList); }; @@ -392,7 +398,14 @@ class MinidumpModule : public MinidumpObject, virtual string debug_file() const; virtual string debug_identifier() const; virtual string version() const; - virtual const CodeModule* Copy() const; + virtual CodeModule* Copy() const; + + // Getter and setter for shrink_down_delta. This is used when the address + // range for a module is shrunk down due to address range conflicts with + // other modules. The base_address and size fields are not updated and they + // should always reflect the original values (reported in the minidump). + virtual uint64_t shrink_down_delta() const; + virtual void SetShrinkDownDelta(uint64_t shrink_down_delta); // The CodeView record, which contains information to locate the module's // debugging information (pdb). This is returned as uint8_t* because @@ -501,6 +514,13 @@ class MinidumpModuleList : public MinidumpStream, virtual const MinidumpModule* GetModuleAtIndex(unsigned int index) const; virtual const CodeModules* Copy() const; + // Returns a vector of all modules which address ranges needed to be shrunk + // down due to address range conflicts with other modules. + virtual vector > GetShrunkRangeModules() const; + + // Returns true, if module address range shrink is enabled. + virtual bool IsModuleShrinkEnabled() const; + // Print a human-readable representation of the object to stdout. void Print(); @@ -525,6 +545,8 @@ class MinidumpModuleList : public MinidumpStream, MinidumpModules *modules_; uint32_t module_count_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpModuleList); }; @@ -587,6 +609,8 @@ class MinidumpMemoryList : public MinidumpStream { // The list of regions. MemoryRegions *regions_; uint32_t region_count_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpMemoryList); }; @@ -626,6 +650,8 @@ class MinidumpException : public MinidumpStream { MDRawExceptionStream exception_; MinidumpContext* context_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpException); }; // MinidumpAssertion wraps MDRawAssertionInfo, which contains information @@ -666,6 +692,8 @@ class MinidumpAssertion : public MinidumpStream { string expression_; string function_; string file_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpAssertion); }; @@ -719,6 +747,8 @@ class MinidumpSystemInfo : public MinidumpStream { // A string identifying the CPU vendor, if known. const string* cpu_vendor_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpSystemInfo); }; @@ -752,6 +782,8 @@ class MinidumpMiscInfo : public MinidumpStream { string daylight_name_; string build_string_; string dbg_bld_str_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpMiscInfo); }; @@ -784,6 +816,8 @@ class MinidumpBreakpadInfo : public MinidumpStream { bool Read(uint32_t expected_size_); MDRawBreakpadInfo breakpad_info_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpBreakpadInfo); }; // MinidumpMemoryInfo wraps MDRawMemoryInfo, which provides information @@ -854,6 +888,8 @@ class MinidumpMemoryInfoList : public MinidumpStream { MinidumpMemoryInfos* infos_; uint32_t info_count_; + + DISALLOW_COPY_AND_ASSIGN(MinidumpMemoryInfoList); }; // MinidumpLinuxMaps wraps information about a single mapped memory region @@ -1061,6 +1097,9 @@ class Minidump { // Print a human-readable representation of the object to stdout. void Print(); + // Is the OS Android. + bool IsAndroid(); + private: // MinidumpStreamInfo is used in the MinidumpStreamMap. It lets // the Minidump object locate interesting streams quickly, and @@ -1121,6 +1160,8 @@ class Minidump { // construction or after a failed Read(); true following a successful // Read(). bool valid_; + + DISALLOW_COPY_AND_ASSIGN(Minidump); }; diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/process_state.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/process_state.h index 728656f2bd7c..9f12b0c69970 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/process_state.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/process_state.h @@ -39,8 +39,10 @@ #include "common/using_std_string.h" #include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/processor/system_info.h" +#include "google_breakpad/processor/code_modules.h" #include "google_breakpad/processor/minidump.h" +#include "google_breakpad/processor/system_info.h" +#include "processor/linked_ptr.h" namespace google_breakpad { @@ -109,6 +111,9 @@ class ProcessState { } const SystemInfo* system_info() const { return &system_info_; } const CodeModules* modules() const { return modules_; } + const vector >* shrunk_range_modules() const { + return &shrunk_range_modules_; + } const vector* modules_without_symbols() const { return &modules_without_symbols_; } @@ -172,6 +177,10 @@ class ProcessState { // ProcessState. const CodeModules *modules_; + // The modules which virtual address ranges were shrunk down due to + // virtual address conflicts. + vector > shrunk_range_modules_; + // The modules that didn't have symbols when the report was processed. vector modules_without_symbols_; diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/system_info.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/system_info.h index 9583d9e89c73..8d2f60be48b8 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/system_info.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/system_info.h @@ -44,7 +44,7 @@ namespace google_breakpad { struct SystemInfo { public: SystemInfo() : os(), os_short(), os_version(), cpu(), cpu_info(), - cpu_count(0) {} + cpu_count(0), gl_version(), gl_vendor(), gl_renderer() {} // Resets the SystemInfo object to its default values. void Clear() { @@ -54,6 +54,9 @@ struct SystemInfo { cpu.clear(); cpu_info.clear(); cpu_count = 0; + gl_version.clear(); + gl_vendor.clear(); + gl_renderer.clear(); } // A string identifying the operating system, such as "Windows NT", @@ -91,6 +94,11 @@ struct SystemInfo { // The number of processors in the system. Will be greater than one for // multi-core systems. int cpu_count; + + // The GPU information. Currently only populated in microdumps. + string gl_version; + string gl_vendor; + string gl_renderer; }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_module.h b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_module.h index 3fe782bbeabc..0f7b3e4316dd 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_module.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_module.h @@ -57,6 +57,7 @@ class BasicCodeModule : public CodeModule { explicit BasicCodeModule(const CodeModule *that) : base_address_(that->base_address()), size_(that->size()), + shrink_down_delta_(that->shrink_down_delta()), code_file_(that->code_file()), code_identifier_(that->code_identifier()), debug_file_(that->debug_file()), @@ -64,18 +65,19 @@ class BasicCodeModule : public CodeModule { version_(that->version()) {} BasicCodeModule(uint64_t base_address, uint64_t size, - const string &code_file, - const string &code_identifier, - const string &debug_file, - const string &debug_identifier, - const string &version) - : base_address_(base_address), - size_(size), - code_file_(code_file), - code_identifier_(code_identifier), - debug_file_(debug_file), - debug_identifier_(debug_identifier), - version_(version) + const string &code_file, + const string &code_identifier, + const string &debug_file, + const string &debug_identifier, + const string &version) + : base_address_(base_address), + size_(size), + shrink_down_delta_(0), + code_file_(code_file), + code_identifier_(code_identifier), + debug_file_(debug_file), + debug_identifier_(debug_identifier), + version_(version) {} virtual ~BasicCodeModule() {} @@ -83,16 +85,21 @@ class BasicCodeModule : public CodeModule { // members. virtual uint64_t base_address() const { return base_address_; } virtual uint64_t size() const { return size_; } + virtual uint64_t shrink_down_delta() const { return shrink_down_delta_; } + virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) { + shrink_down_delta_ = shrink_down_delta; + } virtual string code_file() const { return code_file_; } virtual string code_identifier() const { return code_identifier_; } virtual string debug_file() const { return debug_file_; } virtual string debug_identifier() const { return debug_identifier_; } virtual string version() const { return version_; } - virtual const CodeModule* Copy() const { return new BasicCodeModule(this); } + virtual CodeModule* Copy() const { return new BasicCodeModule(this); } private: uint64_t base_address_; uint64_t size_; + uint64_t shrink_down_delta_; string code_file_; string code_identifier_; string debug_file_; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.cc b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.cc index 40b45a8bf887..48d971677cda 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.cc @@ -38,6 +38,8 @@ #include +#include + #include "google_breakpad/processor/code_module.h" #include "processor/linked_ptr.h" #include "processor/logging.h" @@ -45,51 +47,66 @@ namespace google_breakpad { +using std::vector; + BasicCodeModules::BasicCodeModules(const CodeModules *that) - : main_address_(0), - map_(new RangeMap >()) { + : main_address_(0), map_() { BPLOG_IF(ERROR, !that) << "BasicCodeModules::BasicCodeModules requires " "|that|"; assert(that); + map_.SetEnableShrinkDown(that->IsModuleShrinkEnabled()); + const CodeModule *main_module = that->GetMainModule(); if (main_module) main_address_ = main_module->base_address(); unsigned int count = that->module_count(); - for (unsigned int module_sequence = 0; - module_sequence < count; - ++module_sequence) { + for (unsigned int i = 0; i < count; ++i) { // Make a copy of the module and insert it into the map. Use // GetModuleAtIndex because ordering is unimportant when slurping the // entire list, and GetModuleAtIndex may be faster than // GetModuleAtSequence. - linked_ptr module( - that->GetModuleAtIndex(module_sequence)->Copy()); - if (!map_->StoreRange(module->base_address(), module->size(), module)) { - BPLOG(ERROR) << "Module " << module->code_file() << - " could not be stored"; + linked_ptr module(that->GetModuleAtIndex(i)->Copy()); + if (!map_.StoreRange(module->base_address(), module->size(), module)) { + BPLOG(ERROR) << "Module " << module->code_file() + << " could not be stored"; } } + + // Report modules with shrunk ranges. + for (unsigned int i = 0; i < count; ++i) { + linked_ptr module(that->GetModuleAtIndex(i)->Copy()); + uint64_t delta = 0; + if (map_.RetrieveRange(module->base_address() + module->size() - 1, + &module, NULL /* base */, &delta, NULL /* size */) && + delta > 0) { + BPLOG(INFO) << "The range for module " << module->code_file() + << " was shrunk down by " << HexString(delta) << " bytes."; + linked_ptr shrunk_range_module(module->Copy()); + shrunk_range_module->SetShrinkDownDelta(delta); + shrunk_range_modules_.push_back(shrunk_range_module); + } + } + + // TODO(ivanpe): Report modules with conflicting ranges. The list of such + // modules should be copied from |that|. } -BasicCodeModules::BasicCodeModules() - : main_address_(0), - map_(new RangeMap >()) { -} +BasicCodeModules::BasicCodeModules() : main_address_(0), map_() { } BasicCodeModules::~BasicCodeModules() { - delete map_; } unsigned int BasicCodeModules::module_count() const { - return map_->GetCount(); + return map_.GetCount(); } const CodeModule* BasicCodeModules::GetModuleForAddress( uint64_t address) const { linked_ptr module; - if (!map_->RetrieveRange(address, &module, NULL, NULL)) { + if (!map_.RetrieveRange(address, &module, NULL /* base */, NULL /* delta */, + NULL /* size */)) { BPLOG(INFO) << "No module at " << HexString(address); return NULL; } @@ -104,7 +121,8 @@ const CodeModule* BasicCodeModules::GetMainModule() const { const CodeModule* BasicCodeModules::GetModuleAtSequence( unsigned int sequence) const { linked_ptr module; - if (!map_->RetrieveRangeAtIndex(sequence, &module, NULL, NULL)) { + if (!map_.RetrieveRangeAtIndex(sequence, &module, NULL /* base */, + NULL /* delta */, NULL /* size */)) { BPLOG(ERROR) << "RetrieveRangeAtIndex failed for sequence " << sequence; return NULL; } @@ -125,4 +143,13 @@ const CodeModules* BasicCodeModules::Copy() const { return new BasicCodeModules(this); } +vector > +BasicCodeModules::GetShrunkRangeModules() const { + return shrunk_range_modules_; +} + +bool BasicCodeModules::IsModuleShrinkEnabled() const { + return map_.IsShrinkDownEnabled(); +} + } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.h b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.h index ace569b8a7ad..50f8a03d817a 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.h @@ -41,13 +41,16 @@ #ifndef PROCESSOR_BASIC_CODE_MODULES_H__ #define PROCESSOR_BASIC_CODE_MODULES_H__ +#include + +#include + #include "google_breakpad/processor/code_modules.h" +#include "processor/linked_ptr.h" +#include "processor/range_map.h" namespace google_breakpad { -template class linked_ptr; -template class RangeMap; - class BasicCodeModules : public CodeModules { public: // Creates a new BasicCodeModules object given any existing CodeModules @@ -66,6 +69,9 @@ class BasicCodeModules : public CodeModules { virtual const CodeModule* GetModuleAtSequence(unsigned int sequence) const; virtual const CodeModule* GetModuleAtIndex(unsigned int index) const; virtual const CodeModules* Copy() const; + virtual std::vector > + GetShrunkRangeModules() const; + virtual bool IsModuleShrinkEnabled() const; protected: BasicCodeModules(); @@ -75,7 +81,11 @@ class BasicCodeModules : public CodeModules { // The map used to contain each CodeModule, keyed by each CodeModule's // address range. - RangeMap > *map_; + RangeMap > map_; + + // A vector of all CodeModules that were shrunk downs due to + // address range conflicts. + std::vector > shrunk_range_modules_; private: // Disallow copy constructor and assignment operator. diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver.cc b/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver.cc index 10dcb2763e89..aa66e15995cc 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver.cc @@ -203,15 +203,16 @@ void BasicSourceLineResolver::Module::LookupAddress(StackFrame *frame) const { MemAddr function_base; MemAddr function_size; MemAddr public_address; - if (functions_.RetrieveNearestRange(address, &func, - &function_base, &function_size) && + if (functions_.RetrieveNearestRange(address, &func, &function_base, + NULL /* delta */, &function_size) && address >= function_base && address - function_base < function_size) { frame->function_name = func->name; frame->function_base = frame->module->base_address() + function_base; linked_ptr line; MemAddr line_base; - if (func->lines.RetrieveRange(address, &line, &line_base, NULL)) { + if (func->lines.RetrieveRange(address, &line, &line_base, NULL /* delta */, + NULL /* size */)) { FileMap::const_iterator it = files_.find(line->source_file_id); if (it != files_.end()) { frame->source_file_name = files_.find(line->source_file_id)->second; @@ -256,8 +257,8 @@ WindowsFrameInfo *BasicSourceLineResolver::Module::FindWindowsFrameInfo( // comparison in an overflow-friendly way. linked_ptr function; MemAddr function_base, function_size; - if (functions_.RetrieveNearestRange(address, &function, - &function_base, &function_size) && + if (functions_.RetrieveNearestRange(address, &function, &function_base, + NULL /* delta */, &function_size) && address >= function_base && address - function_base < function_size) { result->parameter_size = function->parameter_size; result->valid |= WindowsFrameInfo::VALID_PARAMETER_SIZE; @@ -286,8 +287,8 @@ CFIFrameInfo *BasicSourceLineResolver::Module::FindCFIFrameInfo( // provides an initial set of register recovery rules. Then, walk // forward from the initial rule's starting address to frame's // instruction address, applying delta rules. - if (!cfi_initial_rules_.RetrieveRange(address, &initial_rules, - &initial_base, &initial_size)) { + if (!cfi_initial_rules_.RetrieveRange(address, &initial_rules, &initial_base, + NULL /* delta */, &initial_size)) { return NULL; } @@ -482,7 +483,7 @@ bool SymbolParseHelper::ParseFile(char *file_line, long *index, } *filename = tokens[1]; - if (!filename) { + if (!*filename) { return false; } @@ -595,7 +596,7 @@ bool SymbolParseHelper::ParsePublicSymbol(char *public_line, *stack_param_size < 0) { return false; } - *name = tokens[2]; + *name = tokens[2]; return true; } diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc index 7d4cd5c50bc1..a75044c74b75 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc @@ -68,9 +68,11 @@ class TestCodeModule : public CodeModule { virtual string debug_file() const { return ""; } virtual string debug_identifier() const { return ""; } virtual string version() const { return ""; } - virtual const CodeModule* Copy() const { + virtual CodeModule* Copy() const { return new TestCodeModule(code_file_); } + virtual uint64_t shrink_down_delta() const { return 0; } + virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) {} private: string code_file_; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc b/toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc index e3276716c819..925f084690a3 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc @@ -48,6 +48,7 @@ void CallStack::Clear() { ++iterator) { delete *iterator; } + tid_ = 0; } } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/processor/disassembler_x86.cc b/toolkit/crashreporter/google-breakpad/src/processor/disassembler_x86.cc index 9eba848d8c72..559022404f6e 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/disassembler_x86.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/disassembler_x86.cc @@ -27,7 +27,6 @@ #include "processor/disassembler_x86.h" #include -#include namespace google_breakpad { diff --git a/toolkit/crashreporter/google-breakpad/src/processor/dump_context.cc b/toolkit/crashreporter/google-breakpad/src/processor/dump_context.cc index 49fb77b15fca..762d4fe21d7a 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/dump_context.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/dump_context.cc @@ -34,17 +34,14 @@ #include "google_breakpad/processor/dump_context.h" #include -#include #ifdef _WIN32 #include -#if defined(_MSC_VER) && _MSC_VER < 1900 -#define snprintf _snprintf -#endif #else // _WIN32 #include #endif // _WIN32 +#include "common/stdio_wrapper.h" #include "processor/logging.h" namespace google_breakpad { @@ -134,7 +131,8 @@ const MDRawContextARM64* DumpContext::GetContextARM64() const { } const MDRawContextMIPS* DumpContext::GetContextMIPS() const { - if (GetContextCPU() != MD_CONTEXT_MIPS) { + if ((GetContextCPU() != MD_CONTEXT_MIPS) && + (GetContextCPU() != MD_CONTEXT_MIPS64)) { BPLOG(ERROR) << "DumpContext cannot get MIPS context"; return NULL; } @@ -175,6 +173,7 @@ bool DumpContext::GetInstructionPointer(uint64_t* ip) const { *ip = GetContextX86()->eip; break; case MD_CONTEXT_MIPS: + case MD_CONTEXT_MIPS64: *ip = GetContextMIPS()->epc; break; default: @@ -218,6 +217,7 @@ bool DumpContext::GetStackPointer(uint64_t* sp) const { *sp = GetContextX86()->esp; break; case MD_CONTEXT_MIPS: + case MD_CONTEXT_MIPS64: *sp = GetContextMIPS()->iregs[MD_CONTEXT_MIPS_REG_SP]; break; default: @@ -295,6 +295,7 @@ void DumpContext::FreeContext() { break; case MD_CONTEXT_MIPS: + case MD_CONTEXT_MIPS64: delete context_.ctx_mips; break; @@ -601,7 +602,8 @@ void DumpContext::Print() { break; } - case MD_CONTEXT_MIPS: { + case MD_CONTEXT_MIPS: + case MD_CONTEXT_MIPS64: { const MDRawContextMIPS* context_mips = GetContextMIPS(); printf("MDRawContextMIPS\n"); printf(" context_flags = 0x%x\n", diff --git a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.cc b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.cc index a196da79ab78..63056c438e5a 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.cc @@ -54,14 +54,18 @@ namespace { +// Prefixes for memory mapping names. +constexpr char kHeapPrefix[] = "[heap"; +constexpr char kStackPrefix[] = "[stack"; + // This function in libc is called if the program was compiled with // -fstack-protector and a function's stack canary changes. -const char kStackCheckFailureFunction[] = "__stack_chk_fail"; +constexpr char kStackCheckFailureFunction[] = "__stack_chk_fail"; // This function in libc is called if the program was compiled with // -D_FORTIFY_SOURCE=2, a function like strcpy() is called, and the runtime // can determine that the call would overflow the target buffer. -const char kBoundsCheckFailureFunction[] = "__chk_fail"; +constexpr char kBoundsCheckFailureFunction[] = "__chk_fail"; #ifndef _WIN32 const unsigned int MAX_INSTRUCTION_LEN = 15; @@ -231,21 +235,10 @@ bool ExploitabilityLinux::EndedOnIllegalWrite(uint64_t instruction_ptr) { MAX_OBJDUMP_BUFFER_LEN, objdump_output_buffer); - // Put buffer data into stream to output line-by-line. - std::stringstream objdump_stream; - objdump_stream.str(string(objdump_output_buffer)); string line; - - // Pipe each output line into the string until the string contains - // the first instruction from objdump. - // Loop until the line shows the first instruction or there are no lines left. - do { - if (!getline(objdump_stream, line)) { - BPLOG(INFO) << "Objdump instructions not found"; - return false; - } - } while (line.find("0:") == string::npos); - // This first instruction contains the above substring. + if (!GetObjdumpInstructionLine(objdump_output_buffer, &line)) { + return false; + } // Convert objdump instruction line into the operation and operands. string instruction = ""; @@ -399,6 +392,33 @@ bool ExploitabilityLinux::CalculateAddress(const string &address_expression, return true; } +// static +bool ExploitabilityLinux::GetObjdumpInstructionLine( + const char *objdump_output_buffer, + string *instruction_line) { + // Put buffer data into stream to output line-by-line. + std::stringstream objdump_stream; + objdump_stream.str(string(objdump_output_buffer)); + + // Pipe each output line into the string until the string contains the first + // instruction from objdump. All lines before the "<.data>:" section are + // skipped. Loop until the line shows the first instruction or there are no + // lines left. + bool data_section_seen = false; + do { + if (!getline(objdump_stream, *instruction_line)) { + BPLOG(INFO) << "Objdump instructions not found"; + return false; + } + if (instruction_line->find("<.data>:") != string::npos) { + data_section_seen = true; + } + } while (!data_section_seen || instruction_line->find("0:") == string::npos); + // This first instruction contains the above substring. + + return true; +} + bool ExploitabilityLinux::TokenizeObjdumpInstruction(const string &line, string *operation, string *dest, @@ -523,9 +543,9 @@ bool ExploitabilityLinux::StackPointerOffStack(uint64_t stack_ptr) { // Checks if the stack pointer maps to a valid mapping and if the mapping // is not the stack. If the mapping has no name, it is inconclusive whether // it is off the stack. - return !linux_maps || - (linux_maps->GetPathname().compare("") && - linux_maps->GetPathname().compare("[stack]")); + return !linux_maps || (linux_maps->GetPathname().compare("") && + linux_maps->GetPathname().compare( + 0, strlen(kStackPrefix), kStackPrefix)); } bool ExploitabilityLinux::ExecutableStackOrHeap() { @@ -535,9 +555,10 @@ bool ExploitabilityLinux::ExecutableStackOrHeap() { const MinidumpLinuxMaps *linux_maps = linux_maps_list->GetLinuxMapsAtIndex(i); // Check for executable stack or heap for each mapping. - if (linux_maps && - (!linux_maps->GetPathname().compare("[stack]") || - !linux_maps->GetPathname().compare("[heap]")) && + if (linux_maps && (!linux_maps->GetPathname().compare( + 0, strlen(kStackPrefix), kStackPrefix) || + !linux_maps->GetPathname().compare( + 0, strlen(kHeapPrefix), kHeapPrefix)) && linux_maps->IsExecutable()) { return true; } diff --git a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.h b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.h index 93c5082fb3c2..e3ff13b6e07d 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.h @@ -86,6 +86,13 @@ class ExploitabilityLinux : public Exploitability { const unsigned int MAX_OBJDUMP_BUFFER_LEN, char *objdump_output_buffer); + // Parses the objdump output given in |objdump_output_buffer| and extracts + // the line of the first instruction into |instruction_line|. Returns true + // when the instruction line is successfully extracted. + static bool GetObjdumpInstructionLine( + const char *objdump_output_buffer, + string *instruction_line); + // Tokenizes out the operation and operands from a line of instruction // disassembled by objdump. This method modifies the pointers to match the // tokens of the instruction, and returns if the tokenizing was a success. diff --git a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_unittest.cc index 700f9e58cc59..528ee5f21376 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_unittest.cc @@ -47,9 +47,10 @@ namespace google_breakpad { class ExploitabilityLinuxTest : public ExploitabilityLinux { public: - using ExploitabilityLinux::DisassembleBytes; - using ExploitabilityLinux::TokenizeObjdumpInstruction; using ExploitabilityLinux::CalculateAddress; + using ExploitabilityLinux::DisassembleBytes; + using ExploitabilityLinux::GetObjdumpInstructionLine; + using ExploitabilityLinux::TokenizeObjdumpInstruction; }; class ExploitabilityLinuxTestMinidumpContext : public MinidumpContext { @@ -160,6 +161,8 @@ TEST(ExploitabilityTest, TestLinuxEngine) { ExploitabilityFor("linux_inside_module_exe_region2.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_INTERESTING, ExploitabilityFor("linux_stack_pointer_in_stack.dmp")); + ASSERT_EQ(google_breakpad::EXPLOITABILITY_INTERESTING, + ExploitabilityFor("linux_stack_pointer_in_stack_alt_name.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, ExploitabilityFor("linux_stack_pointer_in_module.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, @@ -194,11 +197,54 @@ TEST(ExploitabilityLinuxUtilsTest, DisassembleBytesTest) { std::stringstream objdump_stream; objdump_stream.str(string(buffer)); string line = ""; - while ((line.find("0:") == string::npos) && getline(objdump_stream, line)) { - } + while (line.find("<.data>") == string::npos) + getline(objdump_stream, line); + getline(objdump_stream, line); ASSERT_EQ(line, " 0:\tc7 00 05 00 00 00 \tmov DWORD PTR [rax],0x5"); } +TEST(ExploitabilityLinuxUtilsTest, GetObjdumpInstructionLine) { + string disassebly = + "\n" + "/tmp/breakpad_mem_region-raw_bytes-tMmMo0: file format binary\n" + "// Trying to confuse the parser 0:\n" + "\n" + "Disassembly of section .data:\n" + "\n" + "0000000000000000 <.data>:\n" + " 0:\tc7 00 01 00 00 00 \tmov DWORD PTR [rax],0x1\n" + " 6:\t5d \tpop rbp\n" + " 7:\tc3 \tret \n" + " 8:\t55 \tpush rbp\n" + " 9:\t48 89 e5 \tmov rbp,rsp\n" + " c:\t53 \tpush rbx\n" + " d:\t48 \trex.W\n" + " e:\t81 \t.byte 0x81\n"; + string line; + EXPECT_TRUE(ExploitabilityLinuxTest::GetObjdumpInstructionLine( + disassebly.c_str(), &line)); + EXPECT_EQ(" 0:\tc7 00 01 00 00 00 \tmov DWORD PTR [rax],0x1", line); + + // There is no "0:" after "<.data>:". Expected to return false. + disassebly = + "\n" + "/tmp/breakpad_mem_region-raw_bytes-tMmMo0: file format binary\n" + "// Trying to confuse the parser 0:\n" + "\n" + "Disassembly of section .data:\n" + "\n" + " 0:\tc7 00 01 00 00 00 \tmov DWORD PTR [rax],0x1\n" + " 6:\t5d \tpop rbp\n" + " 7:\tc3 \tret \n" + " 8:\t55 \tpush rbp\n" + " 9:\t48 89 e5 \tmov rbp,rsp\n" + " d:\t48 \trex.W\n" + "0000000000000000 <.data>:\n" + " c:\t53 \tpush rbx\n"; + EXPECT_FALSE(ExploitabilityLinuxTest::GetObjdumpInstructionLine( + disassebly.c_str(), &line)); +} + TEST(ExploitabilityLinuxUtilsTest, TokenizeObjdumpInstructionTest) { ASSERT_FALSE(ExploitabilityLinuxTest::TokenizeObjdumpInstruction("", NULL, @@ -237,17 +283,17 @@ TEST(ExploitabilityLinuxUtilsTest, CalculateAddressTest) { MDRawContextAMD64 raw_context; raw_context.rdx = 12345; ExploitabilityLinuxTestMinidumpContext context(raw_context); - ASSERT_EQ(context.GetContextAMD64()->rdx, 12345); + ASSERT_EQ(context.GetContextAMD64()->rdx, 12345U); ASSERT_FALSE(ExploitabilityLinuxTest::CalculateAddress("", context, NULL)); uint64_t write_address = 0; ASSERT_TRUE(ExploitabilityLinuxTest::CalculateAddress("rdx-0x4D2", context, &write_address)); - ASSERT_EQ(write_address, 11111); + ASSERT_EQ(write_address, 11111U); ASSERT_TRUE(ExploitabilityLinuxTest::CalculateAddress("rdx+0x4D2", context, &write_address)); - ASSERT_EQ(write_address, 13579); + ASSERT_EQ(write_address, 13579U); ASSERT_FALSE(ExploitabilityLinuxTest::CalculateAddress("rdx+rax", context, &write_address)); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc index 72632f84f920..c7215228e94c 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc @@ -79,9 +79,11 @@ class TestCodeModule : public CodeModule { virtual string debug_file() const { return ""; } virtual string debug_identifier() const { return ""; } virtual string version() const { return ""; } - virtual const CodeModule* Copy() const { + virtual CodeModule* Copy() const { return new TestCodeModule(code_file_); } + virtual uint64_t shrink_down_delta() const { return 0; } + virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) {} private: string code_file_; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/logging.cc b/toolkit/crashreporter/google-breakpad/src/processor/logging.cc index 8bb95a695aa9..c1eebbc22331 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/logging.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/logging.cc @@ -35,20 +35,16 @@ #include #include -#include #include #include #include +#include "common/stdio_wrapper.h" #include "common/using_std_string.h" #include "processor/logging.h" #include "processor/pathname_stripper.h" -#ifdef _WIN32 -#define snprintf _snprintf -#endif - namespace google_breakpad { LogStream::LogStream(std::ostream &stream, Severity severity, diff --git a/toolkit/crashreporter/google-breakpad/src/processor/microdump.cc b/toolkit/crashreporter/google-breakpad/src/processor/microdump.cc index 6a51a9971a92..4af62f56f0c6 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/microdump.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/microdump.cc @@ -54,11 +54,16 @@ static const char kMicrodumpBegin[] = "-----BEGIN BREAKPAD MICRODUMP-----"; static const char kMicrodumpEnd[] = "-----END BREAKPAD MICRODUMP-----"; static const char kOsKey[] = ": O "; static const char kCpuKey[] = ": C "; +static const char kGpuKey[] = ": G "; static const char kMmapKey[] = ": M "; static const char kStackKey[] = ": S "; static const char kStackFirstLineKey[] = ": S 0 "; static const char kArmArchitecture[] = "arm"; static const char kArm64Architecture[] = "arm64"; +static const char kX86Architecture[] = "x86"; +static const char kMipsArchitecture[] = "mips"; +static const char kMips64Architecture[] = "mips64"; +static const char kGpuUnknown[] = "UNKNOWN"; template T HexStrToL(const string& str) { @@ -99,12 +104,15 @@ namespace google_breakpad { void MicrodumpModules::Add(const CodeModule* module) { linked_ptr module_ptr(module); - if (!map_->StoreRange(module->base_address(), module->size(), module_ptr)) { + if (!map_.StoreRange(module->base_address(), module->size(), module_ptr)) { BPLOG(ERROR) << "Module " << module->code_file() << " could not be stored"; } } +void MicrodumpModules::SetEnableModuleShrink(bool is_enabled) { + map_.SetEnableShrinkDown(is_enabled); +} // // MicrodumpContext @@ -122,6 +130,24 @@ void MicrodumpContext::SetContextARM64(MDRawContextARM64* arm64) { valid_ = true; } +void MicrodumpContext::SetContextX86(MDRawContextX86* x86) { + DumpContext::SetContextFlags(MD_CONTEXT_X86); + DumpContext::SetContextX86(x86); + valid_ = true; +} + +void MicrodumpContext::SetContextMIPS(MDRawContextMIPS* mips32) { + DumpContext::SetContextFlags(MD_CONTEXT_MIPS); + DumpContext::SetContextMIPS(mips32); + valid_ = true; +} + +void MicrodumpContext::SetContextMIPS64(MDRawContextMIPS* mips64) { + DumpContext::SetContextFlags(MD_CONTEXT_MIPS64); + DumpContext::SetContextMIPS(mips64); + valid_ = true; +} + // // MicrodumpMemoryRegion @@ -204,13 +230,12 @@ Microdump::Microdump(const string& contents) in_microdump = true; continue; } - if (line.find(kMicrodumpEnd) != string::npos) { - break; - } - if (!in_microdump) { continue; } + if (line.find(kMicrodumpEnd) != string::npos) { + break; + } size_t pos; if ((pos = line.find(kOsKey)) != string::npos) { @@ -240,6 +265,7 @@ Microdump::Microdump(const string& contents) } else if (os_id == "A") { system_info_->os = "Android"; system_info_->os_short = "android"; + modules_->SetEnableModuleShrink(true); } // OS line also contains release and version for future use. @@ -273,8 +299,9 @@ Microdump::Microdump(const string& contents) std::vector cpu_state_raw = ParseHexBuf(cpu_state_str); if (strcmp(arch.c_str(), kArmArchitecture) == 0) { if (cpu_state_raw.size() != sizeof(MDRawContextARM)) { - std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() << - " bytes instead of " << sizeof(MDRawContextARM) << std::endl; + std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() + << " bytes instead of " << sizeof(MDRawContextARM) + << std::endl; continue; } MDRawContextARM* arm = new MDRawContextARM(); @@ -282,16 +309,55 @@ Microdump::Microdump(const string& contents) context_->SetContextARM(arm); } else if (strcmp(arch.c_str(), kArm64Architecture) == 0) { if (cpu_state_raw.size() != sizeof(MDRawContextARM64)) { - std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() << - " bytes instead of " << sizeof(MDRawContextARM64) << std::endl; + std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() + << " bytes instead of " << sizeof(MDRawContextARM64) + << std::endl; continue; } MDRawContextARM64* arm = new MDRawContextARM64(); memcpy(arm, &cpu_state_raw[0], cpu_state_raw.size()); context_->SetContextARM64(arm); + } else if (strcmp(arch.c_str(), kX86Architecture) == 0) { + if (cpu_state_raw.size() != sizeof(MDRawContextX86)) { + std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() + << " bytes instead of " << sizeof(MDRawContextX86) + << std::endl; + continue; + } + MDRawContextX86* x86 = new MDRawContextX86(); + memcpy(x86, &cpu_state_raw[0], cpu_state_raw.size()); + context_->SetContextX86(x86); + } else if (strcmp(arch.c_str(), kMipsArchitecture) == 0) { + if (cpu_state_raw.size() != sizeof(MDRawContextMIPS)) { + std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() + << " bytes instead of " << sizeof(MDRawContextMIPS) + << std::endl; + continue; + } + MDRawContextMIPS* mips32 = new MDRawContextMIPS(); + memcpy(mips32, &cpu_state_raw[0], cpu_state_raw.size()); + context_->SetContextMIPS(mips32); + } else if (strcmp(arch.c_str(), kMips64Architecture) == 0) { + if (cpu_state_raw.size() != sizeof(MDRawContextMIPS)) { + std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() + << " bytes instead of " << sizeof(MDRawContextMIPS) + << std::endl; + continue; + } + MDRawContextMIPS* mips64 = new MDRawContextMIPS(); + memcpy(mips64, &cpu_state_raw[0], cpu_state_raw.size()); + context_->SetContextMIPS64(mips64); } else { std::cerr << "Unsupported architecture: " << arch << std::endl; } + } else if ((pos = line.find(kGpuKey)) != string::npos) { + string gpu_str(line, pos + strlen(kGpuKey)); + if (strcmp(gpu_str.c_str(), kGpuUnknown) != 0) { + std::istringstream gpu_tokens(gpu_str); + std::getline(gpu_tokens, system_info_->gl_version, '|'); + std::getline(gpu_tokens, system_info_->gl_vendor, '|'); + std::getline(gpu_tokens, system_info_->gl_renderer, '|'); + } } else if ((pos = line.find(kMmapKey)) != string::npos) { string mmap_line(line, pos + strlen(kMmapKey)); std::istringstream mmap_tokens(mmap_line); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/microdump_processor_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/microdump_processor_unittest.cc index e667c386122a..af897f7dacb9 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/microdump_processor_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/microdump_processor_unittest.cc @@ -86,8 +86,8 @@ class MicrodumpProcessorTest : public ::testing::Test { return processor.Process(microdump_contents, state); } - void AnalyzeDump(const string& microdump_file_name, ProcessState* state, - bool omit_symbols) { + void AnalyzeDump(const string& microdump_file_name, bool omit_symbols, + int expected_cpu_count, ProcessState* state) { string symbols_file = omit_symbols ? "" : files_path_ + "symbols/microdump"; string microdump_file_path = files_path_ + microdump_file_name; string microdump_contents; @@ -101,7 +101,7 @@ class MicrodumpProcessorTest : public ::testing::Test { ASSERT_EQ(0, state->requesting_thread()); ASSERT_EQ(1U, state->threads()->size()); - ASSERT_EQ(2, state->system_info()->cpu_count); + ASSERT_EQ(expected_cpu_count, state->system_info()->cpu_count); ASSERT_EQ("android", state->system_info()->os_short); ASSERT_EQ("Android", state->system_info()->os); } @@ -125,7 +125,8 @@ TEST_F(MicrodumpProcessorTest, TestProcess_Invalid) { TEST_F(MicrodumpProcessorTest, TestProcess_MissingSymbols) { ProcessState state; - AnalyzeDump("microdump-arm64.dmp", &state, true /* omit_symbols */); + AnalyzeDump("microdump-arm64.dmp", true /* omit_symbols */, + 2 /* expected_cpu_count */, &state); ASSERT_EQ(8U, state.modules()->module_count()); ASSERT_EQ("arm64", state.system_info()->cpu); @@ -155,10 +156,15 @@ TEST_F(MicrodumpProcessorTest, TestProcess_UnsupportedArch) { TEST_F(MicrodumpProcessorTest, TestProcessArm) { ProcessState state; - AnalyzeDump("microdump-arm.dmp", &state, false /* omit_symbols */); + AnalyzeDump("microdump-arm.dmp", false /* omit_symbols */, + 2 /* expected_cpu_count*/, &state); ASSERT_EQ(6U, state.modules()->module_count()); ASSERT_EQ("arm", state.system_info()->cpu); + ASSERT_EQ("OpenGL ES 3.0 V@104.0 AU@ (GIT@Id3510ff6dc)", + state.system_info()->gl_version); + ASSERT_EQ("Qualcomm", state.system_info()->gl_vendor); + ASSERT_EQ("Adreno (TM) 330", state.system_info()->gl_renderer); ASSERT_EQ("OS VERSION INFO", state.system_info()->os_version); ASSERT_EQ(8U, state.threads()->at(0)->frames()->size()); ASSERT_EQ("MicrodumpWriterTest_Setup_Test::TestBody", @@ -173,7 +179,8 @@ TEST_F(MicrodumpProcessorTest, TestProcessArm) { TEST_F(MicrodumpProcessorTest, TestProcessArm64) { ProcessState state; - AnalyzeDump("microdump-arm64.dmp", &state, false /* omit_symbols */); + AnalyzeDump("microdump-arm64.dmp", false /* omit_symbols */, + 2 /* expected_cpu_count*/, &state); ASSERT_EQ(8U, state.modules()->module_count()); ASSERT_EQ("arm64", state.system_info()->cpu); @@ -189,6 +196,75 @@ TEST_F(MicrodumpProcessorTest, TestProcessArm64) { state.threads()->at(0)->frames()->at(7)->module->code_file()); } +TEST_F(MicrodumpProcessorTest, TestProcessX86) { + ProcessState state; + AnalyzeDump("microdump-x86.dmp", false /* omit_symbols */, + 4 /* expected_cpu_count */, &state); + + ASSERT_EQ(124U, state.modules()->module_count()); + ASSERT_EQ("x86", state.system_info()->cpu); + ASSERT_EQ("asus/WW_Z00A/Z00A:5.0/LRX21V/2.19.40.22_20150627_5104_user:user/" + "release-keys", state.system_info()->os_version); + ASSERT_EQ(56U, state.threads()->at(0)->frames()->size()); + ASSERT_EQ("libc.so", + state.threads()->at(0)->frames()->at(0)->module->debug_file()); + // TODO(mmandlis): Get symbols for the test X86 microdump and test function + // names. +} + +TEST_F(MicrodumpProcessorTest, TestProcessMultiple) { + ProcessState state; + AnalyzeDump("microdump-multiple.dmp", false /* omit_symbols */, + 6 /* expected_cpu_count */, &state); + ASSERT_EQ(156U, state.modules()->module_count()); + ASSERT_EQ("arm", state.system_info()->cpu); + ASSERT_EQ("lge/p1_tmo_us/p1:6.0/MRA58K/1603210524c8d:user/release-keys", + state.system_info()->os_version); + ASSERT_EQ(5U, state.threads()->at(0)->frames()->size()); +} + +TEST_F(MicrodumpProcessorTest, TestProcessMips) { + ProcessState state; + AnalyzeDump("microdump-mips32.dmp", false /* omit_symbols */, + 2 /* expected_cpu_count */, &state); + + ASSERT_EQ(7U, state.modules()->module_count()); + ASSERT_EQ("mips", state.system_info()->cpu); + ASSERT_EQ("3.0.8-g893bf16 #7 SMP PREEMPT Fri Jul 10 15:20:59 PDT 2015", + state.system_info()->os_version); + ASSERT_EQ(4U, state.threads()->at(0)->frames()->size()); + + ASSERT_EQ("blaTest", + state.threads()->at(0)->frames()->at(0)->function_name); + ASSERT_EQ("Crash", + state.threads()->at(0)->frames()->at(1)->function_name); + ASSERT_EQ("main", + state.threads()->at(0)->frames()->at(2)->function_name); + ASSERT_EQ("crash_example", + state.threads()->at(0)->frames()->at(0)->module->debug_file()); +} + +TEST_F(MicrodumpProcessorTest, TestProcessMips64) { + ProcessState state; + AnalyzeDump("microdump-mips64.dmp", false /* omit_symbols */, + 1 /* expected_cpu_count */, &state); + + ASSERT_EQ(8U, state.modules()->module_count()); + ASSERT_EQ("mips64", state.system_info()->cpu); + ASSERT_EQ("3.10.0-gf185e20 #112 PREEMPT Mon Oct 5 11:12:49 PDT 2015", + state.system_info()->os_version); + ASSERT_EQ(4U, state.threads()->at(0)->frames()->size()); + + ASSERT_EQ("blaTest", + state.threads()->at(0)->frames()->at(0)->function_name); + ASSERT_EQ("Crash", + state.threads()->at(0)->frames()->at(1)->function_name); + ASSERT_EQ("main", + state.threads()->at(0)->frames()->at(2)->function_name); + ASSERT_EQ("crash_example", + state.threads()->at(0)->frames()->at(0)->module->debug_file()); +} + } // namespace int main(int argc, char* argv[]) { diff --git a/toolkit/crashreporter/google-breakpad/src/processor/minidump.cc b/toolkit/crashreporter/google-breakpad/src/processor/minidump.cc index f22400268dce..1e1d386df902 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/minidump.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/minidump.cc @@ -38,19 +38,16 @@ #include #include #include -#include #include #include #ifdef _WIN32 #include -#if defined(_MSC_VER) && _MSC_VER < 1900 -#define snprintf _snprintf -#endif #else // _WIN32 #include #endif // _WIN32 +#include #include #include #include @@ -60,6 +57,7 @@ #include "processor/range_map-inl.h" #include "common/scoped_ptr.h" +#include "common/stdio_wrapper.h" #include "google_breakpad/processor/dump_context.h" #include "processor/basic_code_module.h" #include "processor/basic_code_modules.h" @@ -165,19 +163,10 @@ static void Swap(uint128_struct* value) { } // Swapping signed integers -static inline void Swap(int16_t* value) { - Swap(reinterpret_cast(value)); -} - static inline void Swap(int32_t* value) { Swap(reinterpret_cast(value)); } -static inline void Swap(int64_t* value) { - Swap(reinterpret_cast(value)); -} - - static inline void Swap(MDLocationDescriptor* location_descriptor) { Swap(&location_descriptor->data_size); Swap(&location_descriptor->rva); @@ -208,6 +197,21 @@ static inline void Swap(MDSystemTime* system_time) { Swap(&system_time->milliseconds); } +static inline void Swap(MDXStateFeature* xstate_feature) { + Swap(&xstate_feature->offset); + Swap(&xstate_feature->size); +} + +static inline void Swap(MDXStateConfigFeatureMscInfo* xstate_feature_info) { + Swap(&xstate_feature_info->size_of_info); + Swap(&xstate_feature_info->context_size); + Swap(&xstate_feature_info->enabled_features); + + for (size_t i = 0; i < MD_MAXIMUM_XSTATE_FEATURES; i++) { + Swap(&xstate_feature_info->features[i]); + } +} + static inline void Swap(uint16_t* data, size_t size_in_bytes) { size_t data_length = size_in_bytes / sizeof(data[0]); for (size_t i = 0; i < data_length; i++) { @@ -1021,7 +1025,8 @@ bool MinidumpContext::Read(uint32_t expected_size) { break; } - case MD_CONTEXT_MIPS: { + case MD_CONTEXT_MIPS: + case MD_CONTEXT_MIPS64: { if (expected_size != sizeof(MDRawContextMIPS)) { BPLOG(ERROR) << "MinidumpContext MIPS size mismatch, " << expected_size @@ -1169,6 +1174,11 @@ bool MinidumpContext::CheckAgainstSystemInfo(uint32_t context_cpu_type) { if (system_info_cpu_type == MD_CPU_ARCHITECTURE_MIPS) return_value = true; break; + + case MD_CONTEXT_MIPS64: + if (system_info_cpu_type == MD_CPU_ARCHITECTURE_MIPS64) + return_value = true; + break; } BPLOG_IF(ERROR, !return_value) << "MinidumpContext CPU " << @@ -1185,7 +1195,7 @@ bool MinidumpContext::CheckAgainstSystemInfo(uint32_t context_cpu_type) { // -uint32_t MinidumpMemoryRegion::max_bytes_ = 1024 * 1024; // 1MB +uint32_t MinidumpMemoryRegion::max_bytes_ = 2 * 1024 * 1024; // 2MB MinidumpMemoryRegion::MinidumpMemoryRegion(Minidump* minidump) @@ -1859,11 +1869,30 @@ string MinidumpModule::code_identifier() const { break; } + case MD_OS_ANDROID: + case MD_OS_LINUX: { + // If ELF CodeView data is present, return the debug id. + if (cv_record_ && cv_record_signature_ == MD_CVINFOELF_SIGNATURE) { + const MDCVInfoELF* cv_record_elf = + reinterpret_cast(&(*cv_record_)[0]); + assert(cv_record_elf->cv_signature == MD_CVINFOELF_SIGNATURE); + + for (unsigned int build_id_index = 0; + build_id_index < (cv_record_->size() - MDCVInfoELF_minsize); + ++build_id_index) { + char hexbyte[3]; + snprintf(hexbyte, sizeof(hexbyte), "%02x", + cv_record_elf->build_id[build_id_index]); + identifier += hexbyte; + } + break; + } + // Otherwise fall through to the case below. + } + case MD_OS_MAC_OS_X: case MD_OS_IOS: case MD_OS_SOLARIS: - case MD_OS_ANDROID: - case MD_OS_LINUX: case MD_OS_NACL: case MD_OS_PS3: { // TODO(mmentovai): support uuid extension if present, otherwise fall @@ -1914,6 +1943,13 @@ string MinidumpModule::debug_file() const { // GetCVRecord guarantees pdb_file_name is null-terminated. file = reinterpret_cast(cv_record_20->pdb_file_name); + } else if (cv_record_signature_ == MD_CVINFOELF_SIGNATURE) { + // It's actually an MDCVInfoELF structure. + assert(reinterpret_cast(&(*cv_record_)[0])-> + cv_signature == MD_CVINFOELF_SIGNATURE); + + // For MDCVInfoELF, the debug file is the code file. + file = *name_; } // If there's a CodeView record but it doesn't match a known signature, @@ -1965,6 +2001,25 @@ string MinidumpModule::debug_file() const { return file; } +static string guid_and_age_to_debug_id(const MDGUID& guid, + uint32_t age) { + char identifier_string[41]; + snprintf(identifier_string, sizeof(identifier_string), + "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%x", + guid.data1, + guid.data2, + guid.data3, + guid.data4[0], + guid.data4[1], + guid.data4[2], + guid.data4[3], + guid.data4[4], + guid.data4[5], + guid.data4[6], + guid.data4[7], + age); + return identifier_string; +} string MinidumpModule::debug_identifier() const { if (!valid_) { @@ -1987,22 +2042,8 @@ string MinidumpModule::debug_identifier() const { // Use the same format that the MS symbol server uses in filesystem // hierarchies. - char identifier_string[41]; - snprintf(identifier_string, sizeof(identifier_string), - "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%x", - cv_record_70->signature.data1, - cv_record_70->signature.data2, - cv_record_70->signature.data3, - cv_record_70->signature.data4[0], - cv_record_70->signature.data4[1], - cv_record_70->signature.data4[2], - cv_record_70->signature.data4[3], - cv_record_70->signature.data4[4], - cv_record_70->signature.data4[5], - cv_record_70->signature.data4[6], - cv_record_70->signature.data4[7], - cv_record_70->age); - identifier = identifier_string; + identifier = guid_and_age_to_debug_id(cv_record_70->signature, + cv_record_70->age); } else if (cv_record_signature_ == MD_CVINFOPDB20_SIGNATURE) { // It's actually an MDCVInfoPDB20 structure. const MDCVInfoPDB20* cv_record_20 = @@ -2015,6 +2056,22 @@ string MinidumpModule::debug_identifier() const { snprintf(identifier_string, sizeof(identifier_string), "%08X%x", cv_record_20->signature, cv_record_20->age); identifier = identifier_string; + } else if (cv_record_signature_ == MD_CVINFOELF_SIGNATURE) { + // It's actually an MDCVInfoELF structure. + const MDCVInfoELF* cv_record_elf = + reinterpret_cast(&(*cv_record_)[0]); + assert(cv_record_elf->cv_signature == MD_CVINFOELF_SIGNATURE); + + // For backwards-compatibility, stuff as many bytes as will fit into + // a MDGUID and use the MS symbol server format as MDCVInfoPDB70 does + // with age = 0. Historically Breakpad would do this during dump + // writing to fit the build id data into a MDCVInfoPDB70 struct. + // The full build id is available by calling code_identifier. + MDGUID guid = {0}; + memcpy(&guid, &cv_record_elf->build_id, + std::min(cv_record_->size() - MDCVInfoELF_minsize, + sizeof(MDGUID))); + identifier = guid_and_age_to_debug_id(guid, 0); } } @@ -2067,11 +2124,21 @@ string MinidumpModule::version() const { } -const CodeModule* MinidumpModule::Copy() const { +CodeModule* MinidumpModule::Copy() const { return new BasicCodeModule(this); } +uint64_t MinidumpModule::shrink_down_delta() const { + return 0; +} + +void MinidumpModule::SetShrinkDownDelta(uint64_t shrink_down_delta) { + // Not implemented + assert(false); +} + + const uint8_t* MinidumpModule::GetCVRecord(uint32_t* size) { if (!module_valid_) { BPLOG(ERROR) << "Invalid MinidumpModule for GetCVRecord"; @@ -2173,6 +2240,15 @@ const uint8_t* MinidumpModule::GetCVRecord(uint32_t* size) { "0-terminated"; return NULL; } + } else if (signature == MD_CVINFOELF_SIGNATURE) { + // Now that the structure type is known, recheck the size. + if (MDCVInfoELF_minsize > module_.cv_record.data_size) { + BPLOG(ERROR) << "MinidumpModule CodeViewELF record size mismatch, " << + MDCVInfoELF_minsize << " > " << + module_.cv_record.data_size; + return NULL; + } + // There's nothing to swap in CVInfoELF, it's just raw bytes. } // If the signature doesn't match something above, it's not something @@ -2373,6 +2449,20 @@ void MinidumpModule::Print() { cv_record_20->age); printf(" (cv_record).pdb_file_name = \"%s\"\n", cv_record_20->pdb_file_name); + } else if (cv_record_signature_ == MD_CVINFOELF_SIGNATURE) { + const MDCVInfoELF* cv_record_elf = + reinterpret_cast(cv_record); + assert(cv_record_elf->cv_signature == MD_CVINFOELF_SIGNATURE); + + printf(" (cv_record).cv_signature = 0x%x\n", + cv_record_elf->cv_signature); + printf(" (cv_record).build_id = "); + for (unsigned int build_id_index = 0; + build_id_index < (cv_record_size - MDCVInfoELF_minsize); + ++build_id_index) { + printf("%02x", cv_record_elf->build_id[build_id_index]); + } + printf("\n"); } else { printf(" (cv_record) = "); for (unsigned int cv_byte_index = 0; @@ -2432,6 +2522,7 @@ MinidumpModuleList::MinidumpModuleList(Minidump* minidump) range_map_(new RangeMap()), modules_(NULL), module_count_(0) { + range_map_->SetEnableShrinkDown(minidump_->IsAndroid()); } @@ -2607,7 +2698,8 @@ const MinidumpModule* MinidumpModuleList::GetModuleForAddress( } unsigned int module_index; - if (!range_map_->RetrieveRange(address, &module_index, NULL, NULL)) { + if (!range_map_->RetrieveRange(address, &module_index, NULL /* base */, + NULL /* delta */, NULL /* size */)) { BPLOG(INFO) << "MinidumpModuleList has no module at " << HexString(address); return NULL; @@ -2643,7 +2735,9 @@ const MinidumpModule* MinidumpModuleList::GetModuleAtSequence( } unsigned int module_index; - if (!range_map_->RetrieveRangeAtIndex(sequence, &module_index, NULL, NULL)) { + if (!range_map_->RetrieveRangeAtIndex(sequence, &module_index, + NULL /* base */, NULL /* delta */, + NULL /* size */)) { BPLOG(ERROR) << "MinidumpModuleList has no module at sequence " << sequence; return NULL; } @@ -2673,6 +2767,14 @@ const CodeModules* MinidumpModuleList::Copy() const { return new BasicCodeModules(this); } +vector > +MinidumpModuleList::GetShrunkRangeModules() const { + return vector >(); +} + +bool MinidumpModuleList::IsModuleShrinkEnabled() const { + return range_map_->IsShrinkDownEnabled(); +} void MinidumpModuleList::Print() { if (!valid_) { @@ -2858,7 +2960,8 @@ MinidumpMemoryRegion* MinidumpMemoryList::GetMemoryRegionForAddress( } unsigned int region_index; - if (!range_map_->RetrieveRange(address, ®ion_index, NULL, NULL)) { + if (!range_map_->RetrieveRange(address, ®ion_index, NULL /* base */, + NULL /* delta */, NULL /* size */)) { BPLOG(INFO) << "MinidumpMemoryList has no memory region at " << HexString(address); return NULL; @@ -3420,15 +3523,25 @@ MinidumpMiscInfo::MinidumpMiscInfo(Minidump* minidump) bool MinidumpMiscInfo::Read(uint32_t expected_size) { valid_ = false; + size_t padding = 0; if (expected_size != MD_MISCINFO_SIZE && expected_size != MD_MISCINFO2_SIZE && expected_size != MD_MISCINFO3_SIZE && - expected_size != MD_MISCINFO4_SIZE) { - BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << expected_size - << " != " << MD_MISCINFO_SIZE << ", " << MD_MISCINFO2_SIZE - << ", " << MD_MISCINFO3_SIZE << ", " << MD_MISCINFO4_SIZE - << ")"; - return false; + expected_size != MD_MISCINFO4_SIZE && + expected_size != MD_MISCINFO5_SIZE) { + if (expected_size > MD_MISCINFO5_SIZE) { + // Only read the part of the misc info structure we know how to handle + BPLOG(INFO) << "MinidumpMiscInfo size larger than expected " + << expected_size << ", skipping over the unknown part"; + padding = expected_size - MD_MISCINFO5_SIZE; + expected_size = MD_MISCINFO5_SIZE; + } else { + BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << expected_size + << " != " << MD_MISCINFO_SIZE << ", " << MD_MISCINFO2_SIZE + << ", " << MD_MISCINFO3_SIZE << ", " << MD_MISCINFO4_SIZE + << ", " << MD_MISCINFO5_SIZE << ")"; + return false; + } } if (!minidump_->ReadBytes(&misc_info_, expected_size)) { @@ -3436,6 +3549,20 @@ bool MinidumpMiscInfo::Read(uint32_t expected_size) { return false; } + if (padding != 0) { + off_t saved_position = minidump_->Tell(); + if (saved_position == -1) { + BPLOG(ERROR) << "MinidumpMiscInfo could not tell the current position"; + return false; + } + + if (!minidump_->SeekSet(saved_position + padding)) { + BPLOG(ERROR) << "MinidumpMiscInfo could not seek past the miscellaneous " + << "info structure"; + return false; + } + } + if (minidump_->swap()) { // Swap version 1 fields Swap(&misc_info_.size_of_info); @@ -3465,9 +3592,14 @@ bool MinidumpMiscInfo::Read(uint32_t expected_size) { // Do not swap UTF-16 strings. The swap is done as part of the // conversion to UTF-8 (code follows below). } + if (misc_info_.size_of_info > MD_MISCINFO4_SIZE) { + // Swap version 5 fields + Swap(&misc_info_.xstate_data); + Swap(&misc_info_.process_cookie); + } } - if (expected_size != misc_info_.size_of_info) { + if (expected_size + padding != misc_info_.size_of_info) { BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << expected_size << " != " << misc_info_.size_of_info; return false; @@ -3617,6 +3749,35 @@ void MinidumpMiscInfo::Print() { printf(" dbg_bld_str = (invalid)\n"); } } + if (misc_info_.size_of_info > MD_MISCINFO4_SIZE) { + // Print version 5 fields + if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_COOKIE) { + printf(" xstate_data.size_of_info = %d\n", + misc_info_.xstate_data.size_of_info); + printf(" xstate_data.context_size = %d\n", + misc_info_.xstate_data.context_size); + printf(" xstate_data.enabled_features = 0x%" PRIx64 "\n", + misc_info_.xstate_data.enabled_features); + for (size_t i = 0; i < MD_MAXIMUM_XSTATE_FEATURES; i++) { + if (misc_info_.xstate_data.enabled_features & (1 << i)) { + printf(" xstate_data.features[%02zu] = { %d, %d }\n", i, + misc_info_.xstate_data.features[i].offset, + misc_info_.xstate_data.features[i].size); + } + } + if (misc_info_.xstate_data.enabled_features == 0) { + printf(" xstate_data.features[] = (empty)\n"); + } + printf(" process_cookie = %d\n", + misc_info_.process_cookie); + } else { + printf(" xstate_data.size_of_info = (invalid)\n"); + printf(" xstate_data.context_size = (invalid)\n"); + printf(" xstate_data.enabled_features = (invalid)\n"); + printf(" xstate_data.features[] = (invalid)\n"); + printf(" process_cookie = (invalid)\n"); + } + } printf("\n"); } @@ -3962,7 +4123,8 @@ const MinidumpMemoryInfo* MinidumpMemoryInfoList::GetMemoryInfoForAddress( } unsigned int info_index; - if (!range_map_->RetrieveRange(address, &info_index, NULL, NULL)) { + if (!range_map_->RetrieveRange(address, &info_index, NULL /* base */, + NULL /* delta */, NULL /* size */)) { BPLOG(INFO) << "MinidumpMemoryInfoList has no memory info at " << HexString(address); return NULL; @@ -4221,6 +4383,9 @@ bool Minidump::GetContextCPUFlagsFromSystemInfo(uint32_t *context_cpu_flags) { case MD_CPU_ARCHITECTURE_MIPS: *context_cpu_flags = MD_CONTEXT_MIPS; break; + case MD_CPU_ARCHITECTURE_MIPS64: + *context_cpu_flags = MD_CONTEXT_MIPS64; + break; case MD_CPU_ARCHITECTURE_ALPHA: *context_cpu_flags = MD_CONTEXT_ALPHA; break; @@ -4459,6 +4624,24 @@ MinidumpLinuxMapsList *Minidump::GetLinuxMapsList() { return GetStream(&linux_maps_list); } +bool Minidump::IsAndroid() { + // Save the current stream position + off_t saved_position = Tell(); + if (saved_position == -1) { + return false; + } + const MDRawSystemInfo* system_info = + GetSystemInfo() ? GetSystemInfo()->system_info() : NULL; + + // Restore position and return + if (!SeekSet(saved_position)) { + BPLOG(ERROR) << "Couldn't seek back to saved position"; + return false; + } + + return system_info && system_info->platform_id == MD_OS_ANDROID; +} + static const char* get_stream_name(uint32_t stream_type) { switch (stream_type) { case MD_UNUSED_STREAM: @@ -4499,6 +4682,14 @@ static const char* get_stream_name(uint32_t stream_type) { return "MD_THREAD_INFO_LIST_STREAM"; case MD_HANDLE_OPERATION_LIST_STREAM: return "MD_HANDLE_OPERATION_LIST_STREAM"; + case MD_TOKEN_STREAM: + return "MD_TOKEN_STREAM"; + case MD_JAVASCRIPT_DATA_STREAM: + return "MD_JAVASCRIPT_DATA_STREAM"; + case MD_SYSTEM_MEMORY_INFO_STREAM: + return "MD_SYSTEM_MEMORY_INFO_STREAM"; + case MD_PROCESS_VM_COUNTERS_STREAM: + return "MD_PROCESS_VM_COUNTERS_STREAM"; case MD_LAST_RESERVED_STREAM: return "MD_LAST_RESERVED_STREAM"; case MD_BREAKPAD_INFO_STREAM: @@ -4564,7 +4755,7 @@ void Minidump::Print() { iterator != stream_map_->end(); ++iterator) { uint32_t stream_type = iterator->first; - MinidumpStreamInfo info = iterator->second; + const MinidumpStreamInfo& info = iterator->second; printf(" stream type 0x%x (%s) at index %d\n", stream_type, get_stream_name(stream_type), info.stream_index); @@ -4721,7 +4912,7 @@ bool Minidump::SeekToStreamType(uint32_t stream_type, return false; } - MinidumpStreamInfo info = iterator->second; + const MinidumpStreamInfo& info = iterator->second; if (info.stream_index >= header_.stream_count) { BPLOG(ERROR) << "SeekToStreamType: type " << stream_type << " out of range: " << diff --git a/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc b/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc index 3a20dfa5bfaf..33b4a1284bd4 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc @@ -30,11 +30,11 @@ #include "google_breakpad/processor/minidump_processor.h" #include -#include #include #include "common/scoped_ptr.h" +#include "common/stdio_wrapper.h" #include "common/using_std_string.h" #include "google_breakpad/processor/call_stack.h" #include "google_breakpad/processor/minidump.h" @@ -126,8 +126,20 @@ ProcessResult MinidumpProcessor::Process( // Put a copy of the module list into ProcessState object. This is not // necessarily a MinidumpModuleList, but it adheres to the CodeModules // interface, which is all that ProcessState needs to expose. - if (module_list) + if (module_list) { process_state->modules_ = module_list->Copy(); + process_state->shrunk_range_modules_ = + process_state->modules_->GetShrunkRangeModules(); + for (unsigned int i = 0; + i < process_state->shrunk_range_modules_.size(); + i++) { + linked_ptr module = + process_state->shrunk_range_modules_[i]; + BPLOG(INFO) << "The range for module " << module->code_file() + << " was shrunk down by " << HexString( + module->shrink_down_delta()) << " bytes. "; + } + } MinidumpMemoryList *memory_list = dump->GetMemoryList(); if (memory_list) { @@ -267,6 +279,7 @@ ProcessResult MinidumpProcessor::Process( // one bad thread. BPLOG(ERROR) << "No stackwalker for " << thread_string; } + stack->set_tid(thread_id); process_state->threads_.push_back(stack.release()); process_state->thread_memory_regions_.push_back(thread_memory); } @@ -524,6 +537,10 @@ bool MinidumpProcessor::GetCPUInfo(Minidump *dump, SystemInfo *info) { info->cpu = "mips"; break; } + case MD_CPU_ARCHITECTURE_MIPS64: { + info->cpu = "mips64"; + break; + } default: { // Assign the numeric architecture ID into the CPU string. @@ -741,6 +758,19 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { BPLOG(INFO) << "Unknown exception reason " << reason; break; } + } else if (raw_system_info->processor_architecture == + MD_CPU_ARCHITECTURE_X86 || + raw_system_info->processor_architecture == + MD_CPU_ARCHITECTURE_AMD64) { + switch (exception_flags) { + case MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT: + reason.append("EXC_I386_GPFLT"); + break; + default: + reason.append(flags_string); + BPLOG(INFO) << "Unknown exception reason " << reason; + break; + } } else { reason.append(flags_string); BPLOG(INFO) << "Unknown exception reason " << reason; @@ -791,25 +821,26 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { } break; } + case MD_CPU_ARCHITECTURE_AMD64: case MD_CPU_ARCHITECTURE_X86: { switch (exception_flags) { case MD_EXCEPTION_CODE_MAC_X86_INVALID_OPERATION: reason.append("EXC_I386_INVOP"); break; case MD_EXCEPTION_CODE_MAC_X86_INVALID_TASK_STATE_SEGMENT: - reason.append("EXC_INVTSSFLT"); + reason.append("EXC_I386_INVTSSFLT"); break; case MD_EXCEPTION_CODE_MAC_X86_SEGMENT_NOT_PRESENT: - reason.append("EXC_SEGNPFLT"); + reason.append("EXC_I386_SEGNPFLT"); break; case MD_EXCEPTION_CODE_MAC_X86_STACK_FAULT: - reason.append("EXC_STKFLT"); + reason.append("EXC_I386_STKFLT"); break; case MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT: - reason.append("EXC_GPFLT"); + reason.append("EXC_I386_GPFLT"); break; case MD_EXCEPTION_CODE_MAC_X86_ALIGNMENT_FAULT: - reason.append("EXC_ALIGNFLT"); + reason.append("EXC_I386_ALIGNFLT"); break; default: reason.append(flags_string); @@ -862,6 +893,7 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { } break; } + case MD_CPU_ARCHITECTURE_AMD64: case MD_CPU_ARCHITECTURE_X86: { switch (exception_flags) { case MD_EXCEPTION_CODE_MAC_X86_DIV: @@ -962,6 +994,7 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { } break; } + case MD_CPU_ARCHITECTURE_AMD64: case MD_CPU_ARCHITECTURE_X86: { switch (exception_flags) { case MD_EXCEPTION_CODE_MAC_X86_SGL: @@ -1153,6 +1186,9 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { case MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION: reason = "EXCEPTION_HEAP_CORRUPTION"; break; + case MD_EXCEPTION_OUT_OF_MEMORY: + reason = "Out of Memory"; + break; case MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION: reason = "Unhandled C++ Exception"; break; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc index 69e1f42e65d5..d43c1fc97a7e 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc @@ -414,6 +414,7 @@ TEST_F(MinidumpProcessorTest, TestBasicProcessing) { ASSERT_EQ(state.crash_reason(), "EXCEPTION_ACCESS_VIOLATION_WRITE"); ASSERT_EQ(state.crash_address(), 0x45U); ASSERT_EQ(state.threads()->size(), size_t(1)); + EXPECT_EQ((*state.threads())[0]->tid(), 3060U); ASSERT_EQ(state.requesting_thread(), 0); EXPECT_EQ(1171480435U, state.time_date_stamp()); EXPECT_EQ(1171480435U, state.process_create_time()); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/minidump_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/minidump_unittest.cc index bb7dac642c80..d29e9f4e5e15 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/minidump_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/minidump_unittest.cc @@ -63,6 +63,7 @@ using google_breakpad::SynthMinidump::Dump; using google_breakpad::SynthMinidump::Exception; using google_breakpad::SynthMinidump::Memory; using google_breakpad::SynthMinidump::Module; +using google_breakpad::SynthMinidump::Section; using google_breakpad::SynthMinidump::Stream; using google_breakpad::SynthMinidump::String; using google_breakpad::SynthMinidump::SystemInfo; @@ -90,7 +91,15 @@ TEST_F(MinidumpTest, TestMinidumpFromFile) { const MDRawHeader* header = minidump.header(); ASSERT_NE(header, (MDRawHeader*)NULL); ASSERT_EQ(header->signature, uint32_t(MD_HEADER_SIGNATURE)); - //TODO: add more checks here + + MinidumpModuleList *md_module_list = minidump.GetModuleList(); + ASSERT_TRUE(md_module_list != NULL); + const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0); + ASSERT_TRUE(md_module != NULL); + ASSERT_EQ("c:\\test_app.exe", md_module->code_file()); + ASSERT_EQ("c:\\test_app.pdb", md_module->debug_file()); + ASSERT_EQ("45D35F6C2d000", md_module->code_identifier()); + ASSERT_EQ("5A9832E5287241C1838ED98914E9B7FF1", md_module->debug_identifier()); } TEST_F(MinidumpTest, TestMinidumpFromStream) { @@ -385,44 +394,61 @@ TEST(Dump, ThreadMissingContext) { ASSERT_EQ(reinterpret_cast(NULL), md_context); } -TEST(Dump, OneModule) { - static const MDVSFixedFileInfo fixed_file_info = { - 0xb2fba33a, // signature - 0x33d7a728, // struct_version - 0x31afcb20, // file_version_hi - 0xe51cdab1, // file_version_lo - 0xd1ea6907, // product_version_hi - 0x03032857, // product_version_lo - 0x11bf71d7, // file_flags_mask - 0x5fb8cdbf, // file_flags - 0xe45d0d5d, // file_os - 0x107d9562, // file_type - 0x5a8844d4, // file_subtype - 0xa8d30b20, // file_date_hi - 0x651c3e4e // file_date_lo - }; +static const MDVSFixedFileInfo fixed_file_info = { + 0xb2fba33a, // signature + 0x33d7a728, // struct_version + 0x31afcb20, // file_version_hi + 0xe51cdab1, // file_version_lo + 0xd1ea6907, // product_version_hi + 0x03032857, // product_version_lo + 0x11bf71d7, // file_flags_mask + 0x5fb8cdbf, // file_flags + 0xe45d0d5d, // file_os + 0x107d9562, // file_type + 0x5a8844d4, // file_subtype + 0xa8d30b20, // file_date_hi + 0x651c3e4e // file_date_lo +}; +TEST(Dump, OneModule) { Dump dump(0, kBigEndian); String module_name(dump, "single module"); + Section cv_info(dump); + cv_info + .D32(MD_CVINFOPDB70_SIGNATURE) // signature + // signature, a MDGUID + .D32(0xabcd1234) + .D16(0xf00d) + .D16(0xbeef) + .Append("\x01\x02\x03\x04\x05\x06\x07\x08") + .D32(1) // age + .AppendCString("c:\\foo\\file.pdb"); // pdb_file_name + + String csd_version(dump, "Windows 9000"); + SystemInfo system_info(dump, SystemInfo::windows_x86, csd_version); + Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd, module_name, 0xb1054d2a, 0x34571371, fixed_file_info, // from synth_minidump_unittest_data.h - NULL, NULL); + &cv_info, nullptr); dump.Add(&module); dump.Add(&module_name); + dump.Add(&cv_info); + dump.Add(&system_info); + dump.Add(&csd_version); dump.Finish(); - + string contents; ASSERT_TRUE(dump.GetContents(&contents)); istringstream minidump_stream(contents); Minidump minidump(minidump_stream); ASSERT_TRUE(minidump.Read()); - ASSERT_EQ(1U, minidump.GetDirectoryEntryCount()); + ASSERT_EQ(2U, minidump.GetDirectoryEntryCount()); - const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(0); + const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(1); ASSERT_TRUE(dir != NULL); EXPECT_EQ((uint32_t) MD_MODULE_LIST_STREAM, dir->stream_type); @@ -435,6 +461,10 @@ TEST(Dump, OneModule) { ASSERT_EQ(0xa90206ca83eb2852ULL, md_module->base_address()); ASSERT_EQ(0xada542bd, md_module->size()); ASSERT_EQ("single module", md_module->code_file()); + ASSERT_EQ("c:\\foo\\file.pdb", md_module->debug_file()); + // time_date_stamp and size_of_image concatenated + ASSERT_EQ("B1054D2Aada542bd", md_module->code_identifier()); + ASSERT_EQ("ABCD1234F00DBEEF01020304050607081", md_module->debug_identifier()); const MDRawModule *md_raw_module = md_module->module(); ASSERT_TRUE(md_raw_module != NULL); @@ -444,6 +474,231 @@ TEST(Dump, OneModule) { sizeof(fixed_file_info)) == 0); } +// Test that a module with a MDCVInfoELF CV record is handled properly. +TEST(Dump, OneModuleCVELF) { + Dump dump(0, kLittleEndian); + String module_name(dump, "elf module"); + Section cv_info(dump); + cv_info + .D32(MD_CVINFOELF_SIGNATURE) // signature + // build_id + .Append("\x5f\xa9\xcd\xb4\x10\x53\xdf\x1b\x86\xfa\xb7\x33\xb4\xdf" + "\x37\x38\xce\xa3\x4a\x87"); + + const MDRawSystemInfo linux_x86 = { + MD_CPU_ARCHITECTURE_X86, // processor_architecture + 6, // processor_level + 0xd08, // processor_revision + 1, // number_of_processors + 0, // product_type + 0, // major_version + 0, // minor_version + 0, // build_number + MD_OS_LINUX, // platform_id + 0xdeadbeef, // csd_version_rva + 0x100, // suite_mask + 0, // reserved2 + { // cpu + { // x86_cpu_info + { 0x756e6547, 0x49656e69, 0x6c65746e }, // vendor_id + 0x6d8, // version_information + 0xafe9fbff, // feature_information + 0xffffffff // amd_extended_cpu_features + } + } + }; + String csd_version(dump, "Literally Linux"); + SystemInfo system_info(dump, linux_x86, csd_version); + + Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd, + module_name, + 0xb1054d2a, + 0x34571371, + fixed_file_info, // from synth_minidump_unittest_data.h + &cv_info, nullptr); + + dump.Add(&module); + dump.Add(&module_name); + dump.Add(&cv_info); + dump.Add(&system_info); + dump.Add(&csd_version); + dump.Finish(); + + string contents; + ASSERT_TRUE(dump.GetContents(&contents)); + istringstream minidump_stream(contents); + Minidump minidump(minidump_stream); + ASSERT_TRUE(minidump.Read()); + + MinidumpModuleList *md_module_list = minidump.GetModuleList(); + ASSERT_TRUE(md_module_list != NULL); + ASSERT_EQ(1U, md_module_list->module_count()); + + const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0); + ASSERT_TRUE(md_module != NULL); + ASSERT_EQ(0xa90206ca83eb2852ULL, md_module->base_address()); + ASSERT_EQ(0xada542bd, md_module->size()); + ASSERT_EQ("elf module", md_module->code_file()); + // debug_file == code_file + ASSERT_EQ("elf module", md_module->debug_file()); + // just the build_id, directly + ASSERT_EQ("5fa9cdb41053df1b86fab733b4df3738cea34a87", + md_module->code_identifier()); + // build_id truncted to GUID length and treated as such, with zero + // age appended + ASSERT_EQ("B4CDA95F53101BDF86FAB733B4DF37380", md_module->debug_identifier()); + + const MDRawModule *md_raw_module = md_module->module(); + ASSERT_TRUE(md_raw_module != NULL); + ASSERT_EQ(0xb1054d2aU, md_raw_module->time_date_stamp); + ASSERT_EQ(0x34571371U, md_raw_module->checksum); + ASSERT_TRUE(memcmp(&md_raw_module->version_info, &fixed_file_info, + sizeof(fixed_file_info)) == 0); +} + +// Test that a build_id that's shorter than a GUID is handled properly. +TEST(Dump, CVELFShort) { + Dump dump(0, kLittleEndian); + String module_name(dump, "elf module"); + Section cv_info(dump); + cv_info + .D32(MD_CVINFOELF_SIGNATURE) // signature + // build_id, shorter than a GUID + .Append("\x5f\xa9\xcd\xb4"); + + const MDRawSystemInfo linux_x86 = { + MD_CPU_ARCHITECTURE_X86, // processor_architecture + 6, // processor_level + 0xd08, // processor_revision + 1, // number_of_processors + 0, // product_type + 0, // major_version + 0, // minor_version + 0, // build_number + MD_OS_LINUX, // platform_id + 0xdeadbeef, // csd_version_rva + 0x100, // suite_mask + 0, // reserved2 + { // cpu + { // x86_cpu_info + { 0x756e6547, 0x49656e69, 0x6c65746e }, // vendor_id + 0x6d8, // version_information + 0xafe9fbff, // feature_information + 0xffffffff // amd_extended_cpu_features + } + } + }; + String csd_version(dump, "Literally Linux"); + SystemInfo system_info(dump, linux_x86, csd_version); + + Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd, + module_name, + 0xb1054d2a, + 0x34571371, + fixed_file_info, // from synth_minidump_unittest_data.h + &cv_info, nullptr); + + dump.Add(&module); + dump.Add(&module_name); + dump.Add(&cv_info); + dump.Add(&system_info); + dump.Add(&csd_version); + dump.Finish(); + + string contents; + ASSERT_TRUE(dump.GetContents(&contents)); + istringstream minidump_stream(contents); + Minidump minidump(minidump_stream); + ASSERT_TRUE(minidump.Read()); + ASSERT_EQ(2U, minidump.GetDirectoryEntryCount()); + + MinidumpModuleList *md_module_list = minidump.GetModuleList(); + ASSERT_TRUE(md_module_list != NULL); + ASSERT_EQ(1U, md_module_list->module_count()); + + const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0); + ASSERT_TRUE(md_module != NULL); + // just the build_id, directly + ASSERT_EQ("5fa9cdb4", md_module->code_identifier()); + // build_id expanded to GUID length and treated as such, with zero + // age appended + ASSERT_EQ("B4CDA95F0000000000000000000000000", md_module->debug_identifier()); +} + +// Test that a build_id that's very long is handled properly. +TEST(Dump, CVELFLong) { + Dump dump(0, kLittleEndian); + String module_name(dump, "elf module"); + Section cv_info(dump); + cv_info + .D32(MD_CVINFOELF_SIGNATURE) // signature + // build_id, lots of bytes + .Append("\x5f\xa9\xcd\xb4\x10\x53\xdf\x1b\x86\xfa\xb7\x33\xb4\xdf" + "\x37\x38\xce\xa3\x4a\x87\x01\x02\x03\x04\x05\x06\x07\x08" + "\x09\x0a\x0b\x0c\x0d\x0e\x0f"); + + + const MDRawSystemInfo linux_x86 = { + MD_CPU_ARCHITECTURE_X86, // processor_architecture + 6, // processor_level + 0xd08, // processor_revision + 1, // number_of_processors + 0, // product_type + 0, // major_version + 0, // minor_version + 0, // build_number + MD_OS_LINUX, // platform_id + 0xdeadbeef, // csd_version_rva + 0x100, // suite_mask + 0, // reserved2 + { // cpu + { // x86_cpu_info + { 0x756e6547, 0x49656e69, 0x6c65746e }, // vendor_id + 0x6d8, // version_information + 0xafe9fbff, // feature_information + 0xffffffff // amd_extended_cpu_features + } + } + }; + String csd_version(dump, "Literally Linux"); + SystemInfo system_info(dump, linux_x86, csd_version); + + Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd, + module_name, + 0xb1054d2a, + 0x34571371, + fixed_file_info, // from synth_minidump_unittest_data.h + &cv_info, nullptr); + + dump.Add(&module); + dump.Add(&module_name); + dump.Add(&cv_info); + dump.Add(&system_info); + dump.Add(&csd_version); + dump.Finish(); + + string contents; + ASSERT_TRUE(dump.GetContents(&contents)); + istringstream minidump_stream(contents); + Minidump minidump(minidump_stream); + ASSERT_TRUE(minidump.Read()); + ASSERT_EQ(2U, minidump.GetDirectoryEntryCount()); + + MinidumpModuleList *md_module_list = minidump.GetModuleList(); + ASSERT_TRUE(md_module_list != NULL); + ASSERT_EQ(1U, md_module_list->module_count()); + + const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0); + ASSERT_TRUE(md_module != NULL); + // just the build_id, directly + ASSERT_EQ( + "5fa9cdb41053df1b86fab733b4df3738cea34a870102030405060708090a0b0c0d0e0f", + md_module->code_identifier()); + // build_id truncated to GUID length and treated as such, with zero + // age appended. + ASSERT_EQ("B4CDA95F53101BDF86FAB733B4DF37380", md_module->debug_identifier()); +} + TEST(Dump, OneSystemInfo) { Dump dump(0, kLittleEndian); String csd_version(dump, "Petulant Pierogi"); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux.cc b/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux.cc index 0cd3772e0afe..3c0dea25d218 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux.cc @@ -12,6 +12,7 @@ #include #include +#include "common/using_std_string.h" #include "processor/logging.h" #if defined(OS_ANDROID) && !defined(__LP64__) @@ -25,7 +26,7 @@ namespace google_breakpad { -bool ParseProcMaps(const std::string& input, +bool ParseProcMaps(const string& input, std::vector* regions_out) { std::vector regions; @@ -33,8 +34,8 @@ bool ParseProcMaps(const std::string& input, // this point in time. // Split the string by newlines. - std::vector lines; - std::string l = ""; + std::vector lines; + string l = ""; for (size_t i = 0; i < input.size(); i++) { if (input[i] != '\n' && input[i] != '\r') { l.push_back(input[i]); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux_unittest.cc index 1ff4b031d9e9..466f23455e29 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux_unittest.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "breakpad_googletest_includes.h" +#include "common/using_std_string.h" #include "google_breakpad/processor/proc_maps_linux.h" namespace { @@ -227,7 +228,7 @@ TEST(ProcMapsTest, ParseProcMapsEmptyString) { // - File name has whitespaces. TEST(ProcMapsTest, ParseProcMapsWeirdCorrectInput) { std::vector regions; - const std::string kContents = + const string kContents = "00400000-0040b000 r-xp 00000000 fc:00 2106562 " " /bin/cat\r\n" "7f53b7dad000-7f53b7f62000 r-xp 00000000 fc:00 263011 " diff --git a/toolkit/crashreporter/google-breakpad/src/processor/processor.gyp b/toolkit/crashreporter/google-breakpad/src/processor/processor.gyp index fb3d7cde802c..083a3237f2d2 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/processor.gyp +++ b/toolkit/crashreporter/google-breakpad/src/processor/processor.gyp @@ -28,6 +28,7 @@ { 'includes': [ + '../build/common.gypi', 'processor_tools.gypi', ], 'targets': [ @@ -42,8 +43,6 @@ 'basic_code_modules.h', 'basic_source_line_resolver.cc', 'basic_source_line_resolver_types.h', - 'binarystream.cc', - 'binarystream.h', 'call_stack.cc', 'cfi_frame_info-inl.h', 'cfi_frame_info.cc', @@ -78,6 +77,7 @@ 'pathname_stripper.h', 'postfix_evaluator-inl.h', 'postfix_evaluator.h', + 'proc_maps_linux.cc', 'process_state.cc', 'range_map-inl.h', 'range_map.h', @@ -143,7 +143,6 @@ 'sources': [ 'address_map_unittest.cc', 'basic_source_line_resolver_unittest.cc', - 'binarystream_unittest.cc', 'cfi_frame_info_unittest.cc', 'contained_range_map_unittest.cc', 'disassembler_x86_unittest.cc', @@ -155,12 +154,14 @@ 'minidump_unittest.cc', 'pathname_stripper_unittest.cc', 'postfix_evaluator_unittest.cc', + 'range_map_shrink_down_unittest.cc', 'range_map_unittest.cc', 'stackwalker_address_list_unittest.cc', 'stackwalker_amd64_unittest.cc', 'stackwalker_arm64_unittest.cc', 'stackwalker_arm_unittest.cc', 'stackwalker_mips_unittest.cc', + 'stackwalker_mips64_unittest.cc', 'stackwalker_unittest_utils.h', 'stackwalker_x86_unittest.cc', 'static_address_map_unittest.cc', diff --git a/toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h b/toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h index 55dae8396d4a..9fe74c502903 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h @@ -40,26 +40,45 @@ #include #include "processor/range_map.h" +#include "processor/linked_ptr.h" #include "processor/logging.h" namespace google_breakpad { +template +void RangeMap::SetEnableShrinkDown( + bool enable_shrink_down) { + enable_shrink_down_ = enable_shrink_down; +} + +template +bool RangeMap::IsShrinkDownEnabled() const { + return enable_shrink_down_; +} template bool RangeMap::StoreRange(const AddressType &base, const AddressType &size, const EntryType &entry) { - AddressType high = base + size - 1; + return StoreRangeInternal(base, 0 /* delta */, size, entry); +} + +template +bool RangeMap::StoreRangeInternal( + const AddressType &base, const AddressType &delta, + const AddressType &size, const EntryType &entry) { + AddressType high = base + (size - 1); // Check for undersize or overflow. if (size <= 0 || high < base) { // The processor will hit this case too frequently with common symbol // files in the size == 0 case, which is more suited to a DEBUG channel. // Filter those out since there's no DEBUG channel at the moment. - BPLOG_IF(INFO, size != 0) << "StoreRange failed, " << HexString(base) << - "+" << HexString(size) << ", " << - HexString(high); + BPLOG_IF(INFO, size != 0) << "StoreRangeInternal failed, " + << HexString(base) << "+" << HexString(size) + << ", " << HexString(high) + << ", delta: " << HexString(delta); return false; } @@ -71,53 +90,80 @@ bool RangeMap::StoreRange(const AddressType &base, if (iterator_base != iterator_high) { // Some other range begins in the space used by this range. It may be // contained within the space used by this range, or it may extend lower. - // Regardless, it is an error. - // The processor hits this case too frequently with common symbol files. - // This is most appropriate for a DEBUG channel, but since none exists now - // simply comment out this logging. - // - // AddressType other_base = iterator_base->second.base(); - // AddressType other_size = iterator_base->first - other_base + 1; - // BPLOG(INFO) << "StoreRange failed, an existing range is contained by or " - // "extends lower than the new range: new " << - // HexString(base) << "+" << HexString(size) << - // ", existing " << HexString(other_base) << "+" << - // HexString(other_size); - - return false; + // If enable_shrink_down_ is true, shrink the current range down, otherwise + // this is an error. + if (enable_shrink_down_) { + AddressType additional_delta = iterator_base->first - base + 1; + return StoreRangeInternal(base + additional_delta, + delta + additional_delta, + size - additional_delta, entry); + } else { + // The processor hits this case too frequently with common symbol files. + // This is most appropriate for a DEBUG channel, but since none exists + // now simply comment out this logging. + // AddressType other_base = iterator_base->second.base(); + // AddressType other_size = iterator_base->first - other_base + 1; + // BPLOG(INFO) << "StoreRangeInternal failed, an existing range is " + // << "overlapping with the new range: new " + // << HexString(base) << "+" << HexString(size) + // << ", existing " << HexString(other_base) << "+" + // << HexString(other_size); + return false; + } } if (iterator_high != map_.end()) { if (iterator_high->second.base() <= high) { // The range above this one overlaps with this one. It may fully // contain this range, or it may begin within this range and extend - // higher. Regardless, it's an error. - // The processor hits this case too frequently with common symbol files. - // This is most appropriate for a DEBUG channel, but since none exists now - // simply comment out this logging. - // - // AddressType other_base = iterator_high->second.base(); - // AddressType other_size = iterator_high->first - other_base + 1; - // BPLOG(INFO) << "StoreRange failed, an existing range contains or " - // "extends higher than the new range: new " << - // HexString(base) << "+" << HexString(size) << - // ", existing " << HexString(other_base) << "+" << - // HexString(other_size); - return false; + // higher. If enable_shrink_down_ is true, shrink the other range down, + // otherwise this is an error. + if (enable_shrink_down_ && iterator_high->first > high) { + // Shrink the other range down. + AddressType other_high = iterator_high->first; + AddressType additional_delta = + high - iterator_high->second.base() + 1; + EntryType other_entry; + AddressType other_base = AddressType(); + AddressType other_size = AddressType(); + AddressType other_delta = AddressType(); + RetrieveRange(other_high, &other_entry, &other_base, &other_delta, + &other_size); + map_.erase(iterator_high); + map_.insert(MapValue(other_high, + Range(other_base + additional_delta, + other_delta + additional_delta, + other_entry))); + // Retry to store this range. + return StoreRangeInternal(base, delta, size, entry); + } else { + // The processor hits this case too frequently with common symbol files. + // This is most appropriate for a DEBUG channel, but since none exists + // now simply comment out this logging. + // + // AddressType other_base = iterator_high->second.base(); + // AddressType other_size = iterator_high->first - other_base + 1; + // BPLOG(INFO) << "StoreRangeInternal failed, an existing range " + // << "contains or extends higher than the new range: new " + // << HexString(base) << "+" << HexString(size) + // << ", existing " << HexString(other_base) << "+" + // << HexString(other_size); + return false; + } } } // Store the range in the map by its high address, so that lower_bound can // be used to quickly locate a range by address. - map_.insert(MapValue(high, Range(base, entry))); + map_.insert(MapValue(high, Range(base, delta, entry))); return true; } template bool RangeMap::RetrieveRange( - const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { + const AddressType &address, EntryType *entry, AddressType *entry_base, + AddressType *entry_delta, AddressType *entry_size) const { BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRange requires |entry|"; assert(entry); @@ -136,6 +182,8 @@ bool RangeMap::RetrieveRange( *entry = iterator->second.entry(); if (entry_base) *entry_base = iterator->second.base(); + if (entry_delta) + *entry_delta = iterator->second.delta(); if (entry_size) *entry_size = iterator->first - iterator->second.base() + 1; @@ -145,13 +193,13 @@ bool RangeMap::RetrieveRange( template bool RangeMap::RetrieveNearestRange( - const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { + const AddressType &address, EntryType *entry, AddressType *entry_base, + AddressType *entry_delta, AddressType *entry_size) const { BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveNearestRange requires |entry|"; assert(entry); // If address is within a range, RetrieveRange can handle it. - if (RetrieveRange(address, entry, entry_base, entry_size)) + if (RetrieveRange(address, entry, entry_base, entry_delta, entry_size)) return true; // upper_bound gives the first element whose key is greater than address, @@ -167,6 +215,8 @@ bool RangeMap::RetrieveNearestRange( *entry = iterator->second.entry(); if (entry_base) *entry_base = iterator->second.base(); + if (entry_delta) + *entry_delta = iterator->second.delta(); if (entry_size) *entry_size = iterator->first - iterator->second.base() + 1; @@ -176,8 +226,8 @@ bool RangeMap::RetrieveNearestRange( template bool RangeMap::RetrieveRangeAtIndex( - int index, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const { + int index, EntryType *entry, AddressType *entry_base, + AddressType *entry_delta, AddressType *entry_size) const { BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRangeAtIndex requires |entry|"; assert(entry); @@ -195,6 +245,8 @@ bool RangeMap::RetrieveRangeAtIndex( *entry = iterator->second.entry(); if (entry_base) *entry_base = iterator->second.base(); + if (entry_delta) + *entry_delta = iterator->second.delta(); if (entry_size) *entry_size = iterator->first - iterator->second.base() + 1; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/range_map.h b/toolkit/crashreporter/google-breakpad/src/processor/range_map.h index 2572e4927d85..d90a67327faa 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/range_map.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/range_map.h @@ -52,40 +52,56 @@ template class RangeMapSerializer; template class RangeMap { public: - RangeMap() : map_() {} + RangeMap() : enable_shrink_down_(false), map_() {} + + // |enable_shrink_down| tells whether overlapping ranges can be shrunk down. + // If true, then adding a new range that overlaps with an existing one can + // be a successful operation. The range which ends at the higher address + // will be shrunk down by moving its start position to a higher address so + // that it does not overlap anymore. + void SetEnableShrinkDown(bool enable_shrink_down); + bool IsShrinkDownEnabled() const; // Inserts a range into the map. Returns false for a parameter error, // or if the location of the range would conflict with a range already - // stored in the map. - bool StoreRange(const AddressType &base, - const AddressType &size, + // stored in the map. If enable_shrink_down is true and there is an overlap + // between the current range and some other range (already in the map), + // shrink down the range which ends at a higher address. + bool StoreRange(const AddressType &base, const AddressType &size, const EntryType &entry); - // Locates the range encompassing the supplied address. If there is - // no such range, returns false. entry_base and entry_size, if non-NULL, - // are set to the base and size of the entry's range. + // Locates the range encompassing the supplied address. If there is no such + // range, returns false. entry_base, entry_delta, and entry_size, if + // non-NULL, are set to the base, delta, and size of the entry's range. + // A positive entry delta (> 0) indicates that there was an overlap and the + // entry was shrunk down (original start address was increased by delta). bool RetrieveRange(const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) const; + AddressType *entry_base, AddressType *entry_delta, + AddressType *entry_size) const; // Locates the range encompassing the supplied address, if one exists. // If no range encompasses the supplied address, locates the nearest range // to the supplied address that is lower than the address. Returns false - // if no range meets these criteria. entry_base and entry_size, if - // non-NULL, are set to the base and size of the entry's range. + // if no range meets these criteria. entry_base, entry_delta, and entry_size, + // if non-NULL, are set to the base, delta, and size of the entry's range. + // A positive entry delta (> 0) indicates that there was an overlap and the + // entry was shrunk down (original start address was increased by delta). bool RetrieveNearestRange(const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) - const; + AddressType *entry_base, AddressType *entry_delta, + AddressType *entry_size) const; // Treating all ranges as a list ordered by the address spaces that they // occupy, locates the range at the index specified by index. Returns - // false if index is larger than the number of ranges stored. entry_base - // and entry_size, if non-NULL, are set to the base and size of the entry's - // range. + // false if index is larger than the number of ranges stored. entry_base, + // entry_delta, and entry_size, if non-NULL, are set to the base, delta, and + // size of the entry's range. + // A positive entry delta (> 0) indicates that there was an overlap and the + // entry was shrunk down (original start address was increased by delta). // // RetrieveRangeAtIndex is not optimized for speedy operation. bool RetrieveRangeAtIndex(int index, EntryType *entry, - AddressType *entry_base, AddressType *entry_size) - const; + AddressType *entry_base, AddressType *entry_delta, + AddressType *entry_size) const; // Returns the number of ranges stored in the RangeMap. int GetCount() const; @@ -99,12 +115,19 @@ class RangeMap { friend class ModuleComparer; friend class RangeMapSerializer; + // Same a StoreRange() with the only exception that the |delta| can be + // passed in. + bool StoreRangeInternal(const AddressType &base, const AddressType &delta, + const AddressType &size, const EntryType &entry); + class Range { public: - Range(const AddressType &base, const EntryType &entry) - : base_(base), entry_(entry) {} + Range(const AddressType &base, const AddressType &delta, + const EntryType &entry) + : base_(base), delta_(delta), entry_(entry) {} AddressType base() const { return base_; } + AddressType delta() const { return delta_; } EntryType entry() const { return entry_; } private: @@ -112,6 +135,9 @@ class RangeMap { // be stored, because RangeMap uses it as the key to the map. const AddressType base_; + // The delta when the range is shrunk down. + const AddressType delta_; + // The entry corresponding to a range. const EntryType entry_; }; @@ -121,6 +147,9 @@ class RangeMap { typedef typename AddressToRangeMap::const_iterator MapConstIterator; typedef typename AddressToRangeMap::value_type MapValue; + // Whether overlapping ranges can be shrunk down. + bool enable_shrink_down_; + // Maps the high address of each range to a EntryType. AddressToRangeMap map_; }; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/range_map_shrink_down_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/range_map_shrink_down_unittest.cc new file mode 100644 index 000000000000..8dd0e709b119 --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/processor/range_map_shrink_down_unittest.cc @@ -0,0 +1,355 @@ +// Copyright (c) 2016, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + +// range_map_shrink_down_unittest.cc: Unit tests for RangeMap that specifically +// test shrink down when ranges overlap. +// +// Author: Ivan Penkov + +#include +#include + +#include "processor/range_map-inl.h" + +#include "breakpad_googletest_includes.h" +#include "common/scoped_ptr.h" +#include "processor/linked_ptr.h" +#include "processor/logging.h" + +namespace { + +using google_breakpad::linked_ptr; +using google_breakpad::scoped_ptr; +using google_breakpad::RangeMap; + +// A CountedObject holds an int. A global (not thread safe!) count of +// allocated CountedObjects is maintained to help test memory management. +class CountedObject { + public: + explicit CountedObject(int id) : id_(id) { ++count_; } + ~CountedObject() { --count_; } + + static int count() { return count_; } + int id() const { return id_; } + + private: + static int count_; + int id_; +}; + +int CountedObject::count_; + +typedef int AddressType; +typedef RangeMap> TestMap; + +// Same range cannot be stored wice. +TEST(RangeMap, TestShinkDown_SameRange) { + TestMap range_map; + range_map.SetEnableShrinkDown(true); + linked_ptr object_1(new CountedObject(1)); + EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, + object_1)); + + // Same range cannot be stored wice. + linked_ptr object_2(new CountedObject(2)); + EXPECT_FALSE(range_map.StoreRange(0 /* base address */, 100 /* size */, + object_2)); +} + +// If a range is completely contained by another range, then the larger range +// should be shrinked down. +TEST(RangeMap, TestShinkDown_CompletelyContained) { + TestMap range_map; + range_map.SetEnableShrinkDown(true); + // Larger range is added first. + linked_ptr object_1(new CountedObject(1)); + EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, + object_1)); + // Smaller (contained) range is added second. + linked_ptr object_2(new CountedObject(2)); + EXPECT_TRUE(range_map.StoreRange(10 /* base address */, 80 /* size */, + object_2)); + linked_ptr object; + AddressType retrieved_base = AddressType(); + AddressType retrieved_delta = AddressType(); + AddressType retrieved_size = AddressType(); + // The first range contains the second, so the first range should have been + // shrunk to [90, 99]. Range [0, 9] should be free. + EXPECT_FALSE(range_map.RetrieveRange(0, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_FALSE(range_map.RetrieveRange(9, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_TRUE(range_map.RetrieveRange(90, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(1, object->id()); + EXPECT_EQ(90, retrieved_base); + EXPECT_EQ(90, retrieved_delta); + EXPECT_EQ(10, retrieved_size); + // Validate the properties of the smaller range (should be untouched). + EXPECT_TRUE(range_map.RetrieveRange(10, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(2, object->id()); + EXPECT_EQ(10, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(80, retrieved_size); +} + +// Same as the previous test, however the larger range is added second. +TEST(RangeMap, TestShinkDown_CompletelyContained_LargerAddedSecond) { + TestMap range_map; + range_map.SetEnableShrinkDown(true); + // Smaller (contained) range is added first. + linked_ptr object_1(new CountedObject(1)); + EXPECT_TRUE(range_map.StoreRange(10 /* base address */, 80 /* size */, + object_1)); + // Larger range is added second. + linked_ptr object_2(new CountedObject(2)); + EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, + object_2)); + linked_ptr object; + AddressType retrieved_base = AddressType(); + AddressType retrieved_delta = AddressType(); + AddressType retrieved_size = AddressType(); + // The second range contains the first, so the second range should have been + // shrunk to [90, 99]. Range [0, 9] should be free. + EXPECT_FALSE(range_map.RetrieveRange(0, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_FALSE(range_map.RetrieveRange(9, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_TRUE(range_map.RetrieveRange(90, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(2, object->id()); + EXPECT_EQ(90, retrieved_base); + EXPECT_EQ(90, retrieved_delta); + EXPECT_EQ(10, retrieved_size); + // Validate the properties of the smaller range (should be untouched). + EXPECT_TRUE(range_map.RetrieveRange(10, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(1, object->id()); + EXPECT_EQ(10, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(80, retrieved_size); +} + +TEST(RangeMap, TestShinkDown_PartialOverlap_AtBeginning) { + TestMap range_map; + range_map.SetEnableShrinkDown(true); + linked_ptr object_1(new CountedObject(1)); + EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, + object_1)); + + // Partial overlap at the beginning of the new range. + linked_ptr object_2(new CountedObject(2)); + EXPECT_TRUE(range_map.StoreRange(90 /* base address */, 110 /* size */, + object_2)); + + linked_ptr object; + AddressType retrieved_base = AddressType(); + AddressType retrieved_delta = AddressType(); + AddressType retrieved_size = AddressType(); + // The second range is supposed to be shrunk down so the following address + // should resize in the first range. + EXPECT_TRUE(range_map.RetrieveRange(99, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(1, object->id()); + EXPECT_EQ(0, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(100, retrieved_size); + // Validate the properties of the shrunk down range. + EXPECT_TRUE(range_map.RetrieveRange(100, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(2, object->id()); + EXPECT_EQ(100, retrieved_base); + EXPECT_EQ(10, retrieved_delta); + EXPECT_EQ(100, retrieved_size); +} + +TEST(RangeMap, TestShinkDown_PartialOverlap_AtEnd) { + TestMap range_map; + range_map.SetEnableShrinkDown(true); + linked_ptr object_1(new CountedObject(1)); + EXPECT_TRUE(range_map.StoreRange(50 /* base address */, 50 /* size */, + object_1)); + + // Partial overlap at the end of the new range. + linked_ptr object_2(new CountedObject(2)); + EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 70 /* size */, + object_2)); + + linked_ptr object; + AddressType retrieved_base = AddressType(); + AddressType retrieved_delta = AddressType(); + AddressType retrieved_size = AddressType(); + // The first range is supposed to be shrunk down so the following address + // should resize in the first range. + EXPECT_TRUE(range_map.RetrieveRange(69, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(2, object->id()); + EXPECT_EQ(0, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(70, retrieved_size); + // Validate the properties of the shrunk down range. + EXPECT_TRUE(range_map.RetrieveRange(70, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(1, object->id()); + EXPECT_EQ(70, retrieved_base); + EXPECT_EQ(20, retrieved_delta); + EXPECT_EQ(30, retrieved_size); +} + +// A new range is overlapped at both ends. The new range and the range +// that overlaps at the end should be shrink. The range that overlaps at the +// beginning should be left untouched. +TEST(RangeMap, TestShinkDown_OverlapAtBothEnds) { + TestMap range_map; + range_map.SetEnableShrinkDown(true); + // This should overlap object_3 at the beginning. + linked_ptr object_1(new CountedObject(1)); + EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, + object_1)); + + // This should overlap object_3 at the end. + linked_ptr object_2(new CountedObject(2)); + EXPECT_TRUE(range_map.StoreRange(100 /* base address */, 100 /* size */, + object_2)); + + // This should be overlapped on both ends by object_1 and object_2. + linked_ptr object_3(new CountedObject(3)); + EXPECT_TRUE(range_map.StoreRange(50 /* base address */, 100 /* size */, + object_3)); + + linked_ptr object; + AddressType retrieved_base = AddressType(); + AddressType retrieved_delta = AddressType(); + AddressType retrieved_size = AddressType(); + // The first range should be intact. + EXPECT_TRUE(range_map.RetrieveRange(0, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(1, object->id()); + EXPECT_EQ(0, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(100, retrieved_size); + // The second range should be shrunk down by 50. + EXPECT_TRUE(range_map.RetrieveRange(150, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(2, object->id()); + EXPECT_EQ(150, retrieved_base); + EXPECT_EQ(50, retrieved_delta); + EXPECT_EQ(50, retrieved_size); + // The third range (in the middle) should be shrunk down by 50. + EXPECT_TRUE(range_map.RetrieveRange(100, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(3, object->id()); + EXPECT_EQ(100, retrieved_base); + EXPECT_EQ(50, retrieved_delta); + EXPECT_EQ(50, retrieved_size); +} + +TEST(RangeMap, TestShinkDown_MultipleConflicts) { + TestMap range_map; + range_map.SetEnableShrinkDown(true); + // This should overlap with object_3. + linked_ptr object_1(new CountedObject(1)); + EXPECT_TRUE(range_map.StoreRange(10 /* base address */, 90 /* size */, + object_1)); + + // This should also overlap with object_3 but after object_1. + linked_ptr object_2(new CountedObject(2)); + EXPECT_TRUE(range_map.StoreRange(100 /* base address */, 100 /* size */, + object_2)); + + // This should be overlapped on both object_1 and object_2. Since + // object_3 ends with the higher address it must be shrunk. + linked_ptr object_3(new CountedObject(3)); + EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 300 /* size */, + object_3)); + + linked_ptr object; + AddressType retrieved_base = AddressType(); + AddressType retrieved_delta = AddressType(); + AddressType retrieved_size = AddressType(); + // The first range should be intact. + EXPECT_TRUE(range_map.RetrieveRange(99, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(1, object->id()); + EXPECT_EQ(10, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(90, retrieved_size); + // The second range should be intact. + EXPECT_TRUE(range_map.RetrieveRange(199, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(2, object->id()); + EXPECT_EQ(100, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(100, retrieved_size); + // The third range should be shrunk down by 200. + EXPECT_TRUE(range_map.RetrieveRange(299, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(3, object->id()); + EXPECT_EQ(200, retrieved_base); + EXPECT_EQ(200, retrieved_delta); + EXPECT_EQ(100, retrieved_size); +} + +// Adding two ranges without overlap should succeed and the ranges should +// be left intact. +TEST(RangeMap, TestShinkDown_NoConflicts) { + TestMap range_map; + range_map.SetEnableShrinkDown(true); + // Adding range 1. + linked_ptr object_1(new CountedObject(1)); + EXPECT_TRUE(range_map.StoreRange(10 /* base address */, 90 /* size */, + object_1)); + + // Adding range 2 - no overlap with range 1. + linked_ptr object_2(new CountedObject(2)); + EXPECT_TRUE(range_map.StoreRange(110 /* base address */, 90 /* size */, + object_2)); + + linked_ptr object; + AddressType retrieved_base = AddressType(); + AddressType retrieved_delta = AddressType(); + AddressType retrieved_size = AddressType(); + // The first range should be intact. + EXPECT_TRUE(range_map.RetrieveRange(99, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(1, object->id()); + EXPECT_EQ(10, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(90, retrieved_size); + // The second range should be intact. + EXPECT_TRUE(range_map.RetrieveRange(199, &object, &retrieved_base, + &retrieved_delta, &retrieved_size)); + EXPECT_EQ(2, object->id()); + EXPECT_EQ(110, retrieved_base); + EXPECT_EQ(0, retrieved_delta); + EXPECT_EQ(90, retrieved_size); +} + +} // namespace diff --git a/toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc index bf9b7279ad26..31b89e5de30f 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc @@ -166,8 +166,10 @@ static bool RetrieveTest(TestMap *range_map, const RangeTest *range_test) { linked_ptr object; AddressType retrieved_base = AddressType(); AddressType retrieved_size = AddressType(); + AddressType retrieved_delta = AddressType(); bool retrieved = range_map->RetrieveRange(address, &object, &retrieved_base, + &retrieved_delta, &retrieved_size); bool observed_result = retrieved && object->id() == range_test->id; @@ -209,10 +211,12 @@ static bool RetrieveTest(TestMap *range_map, const RangeTest *range_test) { linked_ptr nearest_object; AddressType nearest_base = AddressType(); + AddressType nearest_delta = AddressType(); AddressType nearest_size = AddressType(); bool retrieved_nearest = range_map->RetrieveNearestRange(address, &nearest_object, &nearest_base, + &nearest_delta, &nearest_size); // When checking one greater than the high side, RetrieveNearestRange @@ -274,7 +278,8 @@ static bool RetrieveIndexTest(TestMap *range_map, int set) { int object_count = range_map->GetCount(); for (int object_index = 0; object_index < object_count; ++object_index) { AddressType base; - if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, NULL)) { + if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, + NULL /* delta */, NULL /* size */)) { fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, " "expected success, observed failure\n", set, object_index); @@ -314,7 +319,8 @@ static bool RetrieveIndexTest(TestMap *range_map, int set) { // Make sure that RetrieveRangeAtIndex doesn't allow lookups at indices that // are too high. - if (range_map->RetrieveRangeAtIndex(object_count, &object, NULL, NULL)) { + if (range_map->RetrieveRangeAtIndex(object_count, &object, NULL /* base */, + NULL /* delta */, NULL /* size */)) { fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d (too large), " "expected failure, observed success\n", set, object_count); @@ -343,7 +349,8 @@ static bool RetriveAtIndexTest2() { int object_count = range_map->GetCount(); for (int object_index = 0; object_index < object_count; ++object_index) { AddressType base; - if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, NULL)) { + if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, + NULL /* delta */, NULL /* size */)) { fprintf(stderr, "FAILED: RetrieveAtIndexTest2 index %d, " "expected success, observed failure\n", object_index); return false; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalk_common.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalk_common.cc index 3a6e17feca87..704039f34843 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalk_common.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalk_common.cc @@ -35,13 +35,13 @@ #include "processor/stackwalk_common.h" #include -#include #include #include #include #include +#include "common/stdio_wrapper.h" #include "common/using_std_string.h" #include "google_breakpad/processor/call_stack.h" #include "google_breakpad/processor/code_module.h" @@ -112,10 +112,10 @@ static string StripSeparator(const string &original) { } // PrintStackContents prints the stack contents of the current frame to stdout. -static void PrintStackContents(const std::string &indent, +static void PrintStackContents(const string &indent, const StackFrame *frame, const StackFrame *prev_frame, - const std::string &cpu, + const string &cpu, const MemoryRegion *memory, const CodeModules* modules, SourceLineResolverInterface *resolver) { @@ -181,7 +181,7 @@ static void PrintStackContents(const std::string &indent, // Print data in hex. const int kBytesPerRow = 16; - std::string data_as_string; + string data_as_string; for (int i = 0; i < kBytesPerRow; ++i, ++address) { uint8_t value = 0; if (address < stack_end && @@ -546,7 +546,7 @@ static void PrintStack(const CallStack *stack, sequence = PrintRegister64("pc", frame_arm64->context.iregs[32], sequence); } - } else if (cpu == "mips") { + } else if ((cpu == "mips") || (cpu == "mips64")) { const StackFrameMIPS* frame_mips = reinterpret_cast(frame); @@ -607,7 +607,7 @@ static void PrintStack(const CallStack *stack, // Print stack contents. if (output_stack_contents && frame_index + 1 < frame_count) { - const std::string indent(" "); + const string indent(" "); PrintStackContents(indent, frame, stack->frames()->at(frame_index + 1), cpu, memory, modules, resolver); } @@ -803,6 +803,20 @@ void PrintProcessState(const ProcessState& process_state, process_state.system_info()->cpu_count != 1 ? "s" : ""); printf("\n"); + // Print GPU information + string gl_version = process_state.system_info()->gl_version; + string gl_vendor = process_state.system_info()->gl_vendor; + string gl_renderer = process_state.system_info()->gl_renderer; + printf("GPU:"); + if (!gl_version.empty() || !gl_vendor.empty() || !gl_renderer.empty()) { + printf(" %s\n", gl_version.c_str()); + printf(" %s\n", gl_vendor.c_str()); + printf(" %s\n", gl_renderer.c_str()); + } else { + printf(" UNKNOWN\n"); + } + printf("\n"); + // Print crash information. if (process_state.crashed()) { printf("Crash reason: %s\n", process_state.crash_reason().c_str()); @@ -865,6 +879,7 @@ void PrintProcessStateMachineReadable(const ProcessState& process_state) { // Print OS and CPU information. // OS|{OS Name}|{OS Version} // CPU|{CPU Name}|{CPU Info}|{Number of CPUs} + // GPU|{GPU version}|{GPU vendor}|{GPU renderer} printf("OS%c%s%c%s\n", kOutputSeparator, StripSeparator(process_state.system_info()->os).c_str(), kOutputSeparator, @@ -876,6 +891,12 @@ void PrintProcessStateMachineReadable(const ProcessState& process_state) { StripSeparator(process_state.system_info()->cpu_info).c_str(), kOutputSeparator, process_state.system_info()->cpu_count); + printf("GPU%c%s%c%s%c%s\n", kOutputSeparator, + StripSeparator(process_state.system_info()->gl_version).c_str(), + kOutputSeparator, + StripSeparator(process_state.system_info()->gl_vendor).c_str(), + kOutputSeparator, + StripSeparator(process_state.system_info()->gl_renderer).c_str()); int requesting_thread = process_state.requesting_thread(); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc index 94b66334fe3d..98cb0b5be841 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc @@ -234,6 +234,7 @@ Stackwalker* Stackwalker::StackwalkerForCPU( break; case MD_CONTEXT_MIPS: + case MD_CONTEXT_MIPS64: cpu_stackwalker = new StackwalkerMIPS(system_info, context->GetContextMIPS(), memory, modules, frame_symbolizer); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.cc index f252a33b7157..440724a1e3b8 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.cc @@ -147,6 +147,29 @@ StackFrameAMD64* StackwalkerAMD64::GetCallerByCFIFrameInfo( return frame.release(); } +bool StackwalkerAMD64::IsEndOfStack(uint64_t caller_rip, uint64_t caller_rsp, + uint64_t callee_rsp) { + // Treat an instruction address of 0 as end-of-stack. + if (caller_rip == 0) { + return true; + } + + // If the new stack pointer is at a lower address than the old, then + // that's clearly incorrect. Treat this as end-of-stack to enforce + // progress and avoid infinite loops. + if (caller_rsp < callee_rsp) { + return true; + } + + return false; +} + +// Returns true if `ptr` is not in x86-64 canonical form. +// https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details +static bool is_non_canonical(uint64_t ptr) { + return ptr > 0x7FFFFFFFFFFF && ptr < 0xFFFF800000000000; +} + StackFrameAMD64* StackwalkerAMD64::GetCallerByFramePointerRecovery( const vector& frames) { StackFrameAMD64* last_frame = static_cast(frames.back()); @@ -169,14 +192,28 @@ StackFrameAMD64* StackwalkerAMD64::GetCallerByFramePointerRecovery( // %caller_rip = *(%callee_rbp + 8) // %caller_rbp = *(%callee_rbp) + // If rbp is not 8-byte aligned it can't be a frame pointer. + if (last_rbp % 8 != 0) { + return NULL; + } + uint64_t caller_rip, caller_rbp; if (memory_->GetMemoryAtAddress(last_rbp + 8, &caller_rip) && memory_->GetMemoryAtAddress(last_rbp, &caller_rbp)) { uint64_t caller_rsp = last_rbp + 16; - // Simple sanity check that the stack is growing downwards as expected. - if (caller_rbp < last_rbp || caller_rsp < last_rsp) + // If the recovered rip is not a canonical address it can't be + // the return address, so rbp must not have been a frame pointer. + if (is_non_canonical(caller_rip)) { return NULL; + } + + // Simple sanity check that the stack is growing downwards as expected. + if (IsEndOfStack(caller_rip, caller_rsp, last_rsp) || + caller_rbp < last_rbp) { + // Reached end-of-stack or stack is not growing downwards. + return NULL; + } StackFrameAMD64* frame = new StackFrameAMD64(); frame->trust = StackFrame::FRAME_TRUST_FP; @@ -284,15 +321,11 @@ StackFrame* StackwalkerAMD64::GetCallerFrame(const CallStack* stack, new_frame->context.rbp = static_cast(new_frame->context.rbp); } - // Treat an instruction address of 0 as end-of-stack. - if (new_frame->context.rip == 0) - return NULL; - - // If the new stack pointer is at a lower address than the old, then - // that's clearly incorrect. Treat this as end-of-stack to enforce - // progress and avoid infinite loops. - if (new_frame->context.rsp <= last_frame->context.rsp) + if (IsEndOfStack(new_frame->context.rip, new_frame->context.rsp, + last_frame->context.rsp)) { + // Reached end-of-stack. return NULL; + } // new_frame->context.rip is the return address, which is the instruction // after the CALL that caused us to arrive at the callee. Set diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.h b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.h index 8f3dbd528024..67c455104832 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.h @@ -78,6 +78,14 @@ class StackwalkerAMD64 : public Stackwalker { StackFrameAMD64* GetCallerByCFIFrameInfo(const vector &frames, CFIFrameInfo* cfi_frame_info); + // Checks whether end-of-stack is reached. An instruction address of 0 is an + // end-of-stack marker. If the stack pointer of the caller is at a lower + // address than the stack pointer of the callee, then that's clearly incorrect + // and it is treated as end-of-stack to enforce progress and avoid infinite + // loops. + bool IsEndOfStack(uint64_t caller_rip, uint64_t caller_rsp, + uint64_t callee_rsp); + // Assumes a traditional frame layout where the frame pointer has not been // omitted. The expectation is that caller's %rbp is pushed to the stack // after the return address of the callee, and that the callee's %rsp can diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64_unittest.cc index a54198bfd0af..935bef866bcd 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64_unittest.cc @@ -72,8 +72,8 @@ class StackwalkerAMD64Fixture { : stack_section(kLittleEndian), // Give the two modules reasonable standard locations and names // for tests to play with. - module1(0x40000000c0000000ULL, 0x10000, "module1", "version1"), - module2(0x50000000b0000000ULL, 0x10000, "module2", "version2") { + module1(0x00007400c0000000ULL, 0x10000, "module1", "version1"), + module2(0x00007500b0000000ULL, 0x10000, "module2", "version2") { // Identify the system as a Linux system. system_info.os = "Linux"; system_info.os_short = "linux"; @@ -149,7 +149,7 @@ TEST_F(SanityCheck, NoResolver) { // provide any call frame information, so trying to reconstruct the // context frame's caller should fail. So there's no need for us to // provide stack contents. - raw_context.rip = 0x40000000c0000200ULL; + raw_context.rip = 0x00007400c0000200ULL; raw_context.rbp = 0x8000000080000000ULL; StackFrameSymbolizer frame_symbolizer(NULL, NULL); @@ -176,7 +176,7 @@ TEST_F(GetContextFrame, Simple) { // provide any call frame information, so trying to reconstruct the // context frame's caller should fail. So there's no need for us to // provide stack contents. - raw_context.rip = 0x40000000c0000200ULL; + raw_context.rip = 0x00007400c0000200ULL; raw_context.rbp = 0x8000000080000000ULL; StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); @@ -200,7 +200,7 @@ TEST_F(GetContextFrame, Simple) { // The stackwalker should be able to produce the context frame even // without stack memory present. TEST_F(GetContextFrame, NoStackMemory) { - raw_context.rip = 0x40000000c0000200ULL; + raw_context.rip = 0x00007400c0000200ULL; raw_context.rbp = 0x8000000080000000ULL; StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); @@ -230,23 +230,23 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) { // Force scanning through three frames to ensure that the // stack pointer is set properly in scan-recovered frames. stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address1 = 0x50000000b0000100ULL; - uint64_t return_address2 = 0x50000000b0000900ULL; + uint64_t return_address1 = 0x00007500b0000100ULL; + uint64_t return_address2 = 0x00007500b0000900ULL; Label frame1_sp, frame2_sp, frame1_rbp; stack_section // frame 0 .Append(16, 0) // space - .D64(0x40000000b0000000ULL) // junk that's not - .D64(0x50000000d0000000ULL) // a return address + .D64(0x00007400b0000000ULL) // junk that's not + .D64(0x00007500d0000000ULL) // a return address .D64(return_address1) // actual return address // frame 1 .Mark(&frame1_sp) .Append(16, 0) // space - .D64(0x40000000b0000000ULL) // more junk - .D64(0x50000000d0000000ULL) + .D64(0x00007400b0000000ULL) // more junk + .D64(0x00007500d0000000ULL) .Mark(&frame1_rbp) .D64(stack_section.start()) // This is in the right place to be @@ -260,7 +260,7 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) { RegionFromSection(); - raw_context.rip = 0x40000000c0000200ULL; + raw_context.rip = 0x00007400c0000200ULL; raw_context.rbp = frame1_rbp.Value(); raw_context.rsp = stack_section.start().Value(); @@ -308,18 +308,18 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { // it is only considered a valid return address if it // lies within a function's bounds. stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address = 0x50000000b0000110ULL; + uint64_t return_address = 0x00007500b0000110ULL; Label frame1_sp, frame1_rbp; stack_section // frame 0 .Append(16, 0) // space - .D64(0x40000000b0000000ULL) // junk that's not - .D64(0x50000000b0000000ULL) // a return address + .D64(0x00007400b0000000ULL) // junk that's not + .D64(0x00007500b0000000ULL) // a return address - .D64(0x40000000c0001000ULL) // a couple of plausible addresses - .D64(0x50000000b000aaaaULL) // that are not within functions + .D64(0x00007400c0001000ULL) // a couple of plausible addresses + .D64(0x00007500b000aaaaULL) // that are not within functions .D64(return_address) // actual return address // frame 1 @@ -328,7 +328,7 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { .Mark(&frame1_rbp); RegionFromSection(); - raw_context.rip = 0x40000000c0000200ULL; + raw_context.rip = 0x00007400c0000200ULL; raw_context.rbp = frame1_rbp.Value(); raw_context.rsp = stack_section.start().Value(); @@ -355,7 +355,7 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust); ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); EXPECT_EQ("platypus", frame0->function_name); - EXPECT_EQ(0x40000000c0000100ULL, frame0->function_base); + EXPECT_EQ(0x00007400c0000100ULL, frame0->function_base); StackFrameAMD64 *frame1 = static_cast(frames->at(1)); EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust); @@ -367,7 +367,240 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp); EXPECT_EQ(frame1_rbp.Value(), frame1->context.rbp); EXPECT_EQ("echidna", frame1->function_name); - EXPECT_EQ(0x50000000b0000100ULL, frame1->function_base); + EXPECT_EQ(0x00007500b0000100ULL, frame1->function_base); +} + +// StackwalkerAMD64::GetCallerByFramePointerRecovery should never return an +// instruction pointer of 0 because IP of 0 is an end of stack marker and the +// stack walk may be terminated prematurely. Instead it should return NULL +// so that the stack walking code can proceed to stack scanning. +TEST_F(GetCallerFrame, GetCallerByFramePointerRecovery) { + MockCodeModule user32_dll(0x00007ff9cb8a0000ULL, 0x14E000, "user32.dll", + "version1"); + SetModuleSymbols(&user32_dll, // user32.dll + "PUBLIC fa60 0 DispatchMessageWorker\n" + "PUBLIC fee0 0 UserCallWinProcCheckWow\n" + "PUBLIC 1cdb0 0 _fnHkINLPMSG\n" + "STACK CFI INIT fa60 340 .cfa: $rsp .ra: .cfa 8 - ^\n" + "STACK CFI fa60 .cfa: $rsp 128 +\n" + "STACK CFI INIT fee0 49f .cfa: $rsp .ra: .cfa 8 - ^\n" + "STACK CFI fee0 .cfa: $rsp 240 +\n" + "STACK CFI INIT 1cdb0 9f .cfa: $rsp .ra: .cfa 8 - ^\n" + "STACK CFI 1cdb0 .cfa: $rsp 80 +\n"); + + // Create some modules with some stock debugging information. + MockCodeModules local_modules; + local_modules.Add(&user32_dll); + + Label frame0_rsp; + Label frame0_rbp; + Label frame1_rsp; + Label frame2_rsp; + + stack_section.start() = 0x00000099abf0f238ULL; + stack_section + .Mark(&frame0_rsp) + .D64(0x00007ff9cb8b00dcULL) + .Mark(&frame1_rsp) + .D64(0x0000000000000000ULL) + .D64(0x0000000000000001ULL) + .D64(0x00000099abf0f308ULL) + .D64(0x00007ff9cb8bce3aULL) // Stack residue from execution of + // user32!_fnHkINLPMSG+0x8a + .D64(0x000000000000c2e0ULL) + .D64(0x00000099abf0f328ULL) + .D64(0x0000000100000001ULL) + .D64(0x0000000000000000ULL) + .D64(0x0000000000000000ULL) + .D64(0x0000000000000000ULL) + .D64(0x0000000000000000ULL) + .D64(0x0000000000000000ULL) + .D64(0x0000000000000000ULL) + .D64(0x00007ff9ccad53e4ULL) + .D64(0x0000000000000048ULL) + .D64(0x0000000000000001ULL) + .D64(0x00000099abf0f5e0ULL) + .D64(0x00000099b61f7388ULL) + .D64(0x0000000000000030ULL) + .D64(0xffffff66540f0a1fULL) + .D64(0xffffff6649e08c77ULL) + .D64(0x00007ff9cb8affb4ULL) // Return address in + // user32!UserCallWinProcCheckWow+0xd4 + .D64(0x0000000000000000ULL) + .D64(0x00000099abf0f368ULL) + .D64(0x0000000000000000ULL) + .D64(0x0000000000000000ULL) + .D64(0x0000000000000000ULL) + .D64(0x00000099a8150fd8ULL) + .D64(0x00000099abf0f3e8ULL) + .D64(0x00007ff9cb8afc07ULL) // Return address in + // user32!DispatchMessageWorker+0x1a7 + .Mark(&frame2_rsp) + .Append(256, 0) + .Mark(&frame0_rbp) // The following are expected by + // GetCallerByFramePointerRecovery. + .D64(0xfffffffffffffffeULL) // %caller_rbp = *(%callee_rbp) + .D64(0x0000000000000000ULL) // %caller_rip = *(%callee_rbp + 8) + .D64(0x00000099a3e31040ULL) // %caller_rsp = *(%callee_rbp + 16) + .Append(256, 0); + + RegionFromSection(); + raw_context.rip = 0x00000099a8150fd8ULL; // IP in context frame is guarbage + raw_context.rsp = frame0_rsp.Value(); + raw_context.rbp = frame0_rbp.Value(); + + StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); + StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, + &local_modules, &frame_symbolizer); + vector modules_without_symbols; + vector modules_with_corrupt_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols, + &modules_with_corrupt_symbols)); + ASSERT_EQ(0U, modules_without_symbols.size()); + ASSERT_EQ(0U, modules_with_corrupt_symbols.size()); + frames = call_stack.frames(); + + ASSERT_EQ(3U, frames->size()); + + { // To avoid reusing locals by mistake + StackFrameAMD64 *frame = static_cast(frames->at(0)); + EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame->trust); + ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame->context_validity); + EXPECT_EQ("", frame->function_name); + EXPECT_EQ(0x00000099a8150fd8ULL, frame->instruction); + EXPECT_EQ(0x00000099a8150fd8ULL, frame->context.rip); + EXPECT_EQ(frame0_rsp.Value(), frame->context.rsp); + EXPECT_EQ(frame0_rbp.Value(), frame->context.rbp); + } + + { // To avoid reusing locals by mistake + StackFrameAMD64 *frame = static_cast(frames->at(1)); + EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame->trust); + ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP | + StackFrameAMD64::CONTEXT_VALID_RSP | + StackFrameAMD64::CONTEXT_VALID_RBP), + frame->context_validity); + EXPECT_EQ("UserCallWinProcCheckWow", frame->function_name); + EXPECT_EQ(140710838468828ULL, frame->instruction + 1); + EXPECT_EQ(140710838468828ULL, frame->context.rip); + EXPECT_EQ(frame1_rsp.Value(), frame->context.rsp); + EXPECT_EQ(&user32_dll, frame->module); + } + + { // To avoid reusing locals by mistake + StackFrameAMD64 *frame = static_cast(frames->at(2)); + EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame->trust); + ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP | + StackFrameAMD64::CONTEXT_VALID_RSP | + StackFrameAMD64::CONTEXT_VALID_RBP), + frame->context_validity); + EXPECT_EQ("DispatchMessageWorker", frame->function_name); + EXPECT_EQ(140710838467591ULL, frame->instruction + 1); + EXPECT_EQ(140710838467591ULL, frame->context.rip); + EXPECT_EQ(frame2_rsp.Value(), frame->context.rsp); + EXPECT_EQ(&user32_dll, frame->module); + } +} + +// Don't use frame pointer recovery if %rbp is not 8-byte aligned, which +// indicates that it's not being used as a frame pointer. +TEST_F(GetCallerFrame, FramePointerNotAligned) { + stack_section.start() = 0x8000000080000000ULL; + uint64_t return_address1 = 0x00007500b0000100ULL; + Label frame0_rbp, not_frame1_rbp, frame1_sp; + stack_section + // frame 0 + .Align(8, 0) + .Append(2, 0) // mis-align the frame pointer + .Mark(&frame0_rbp) + .D64(not_frame1_rbp) // not the previous frame pointer + .D64(0x00007500b0000a00ULL) // plausible but wrong return address + .Align(8, 0) + .D64(return_address1) // return address + // frame 1 + .Mark(&frame1_sp) + .Mark(¬_frame1_rbp) + .Append(32, 0); // end of stack + + + RegionFromSection(); + + raw_context.rip = 0x00007400c0000200ULL; + raw_context.rbp = frame0_rbp.Value(); + raw_context.rsp = stack_section.start().Value(); + + StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); + StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, + &frame_symbolizer); + vector modules_without_symbols; + vector modules_with_corrupt_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols, + &modules_with_corrupt_symbols)); + frames = call_stack.frames(); + ASSERT_EQ(2U, frames->size()); + + StackFrameAMD64 *frame0 = static_cast(frames->at(0)); + EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust); + ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); + EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context))); + + StackFrameAMD64 *frame1 = static_cast(frames->at(1)); + EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust); + ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP | + StackFrameAMD64::CONTEXT_VALID_RSP), + frame1->context_validity); + EXPECT_EQ(return_address1, frame1->context.rip); + EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp); +} + +// Don't use frame pointer recovery if the recovered %rip is not +// a canonical x86-64 address. +TEST_F(GetCallerFrame, NonCanonicalInstructionPointerFromFramePointer) { + stack_section.start() = 0x8000000080000000ULL; + uint64_t return_address1 = 0x00007500b0000100ULL; + Label frame0_rbp, frame1_sp, not_frame1_bp; + stack_section + // frame 0 + .Align(8, 0) + .Mark(&frame0_rbp) + .D64(not_frame1_bp) // some junk on the stack + .D64(0xDADADADADADADADA) // not the return address + .D64(return_address1) // return address + // frame 1 + .Mark(&frame1_sp) + .Append(16, 0) + .Mark(¬_frame1_bp) + .Append(32, 0); // end of stack + + + RegionFromSection(); + + raw_context.rip = 0x00007400c0000200ULL; + raw_context.rbp = frame0_rbp.Value(); + raw_context.rsp = stack_section.start().Value(); + + StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); + StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, + &frame_symbolizer); + vector modules_without_symbols; + vector modules_with_corrupt_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols, + &modules_with_corrupt_symbols)); + frames = call_stack.frames(); + ASSERT_EQ(2U, frames->size()); + + StackFrameAMD64 *frame0 = static_cast(frames->at(0)); + EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust); + ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); + EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context))); + + StackFrameAMD64 *frame1 = static_cast(frames->at(1)); + EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust); + ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP | + StackFrameAMD64::CONTEXT_VALID_RSP), + frame1->context_validity); + EXPECT_EQ(return_address1, frame1->context.rip); + EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp); } // Test that set_max_frames_scanned prevents using stack scanning @@ -377,23 +610,23 @@ TEST_F(GetCallerFrame, ScanningNotAllowed) { // only addresses located within loaded modules are // considered valid return addresses. stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address1 = 0x50000000b0000100ULL; - uint64_t return_address2 = 0x50000000b0000900ULL; + uint64_t return_address1 = 0x00007500b0000100ULL; + uint64_t return_address2 = 0x00007500b0000900ULL; Label frame1_sp, frame2_sp, frame1_rbp; stack_section // frame 0 .Append(16, 0) // space - .D64(0x40000000b0000000ULL) // junk that's not - .D64(0x50000000d0000000ULL) // a return address + .D64(0x00007400b0000000ULL) // junk that's not + .D64(0x00007500d0000000ULL) // a return address .D64(return_address1) // actual return address // frame 1 .Mark(&frame1_sp) .Append(16, 0) // space - .D64(0x40000000b0000000ULL) // more junk - .D64(0x50000000d0000000ULL) + .D64(0x00007400b0000000ULL) // more junk + .D64(0x00007500d0000000ULL) .Mark(&frame1_rbp) .D64(stack_section.start()) // This is in the right place to be @@ -407,7 +640,7 @@ TEST_F(GetCallerFrame, ScanningNotAllowed) { RegionFromSection(); - raw_context.rip = 0x40000000c0000200ULL; + raw_context.rip = 0x00007400c0000200ULL; raw_context.rbp = frame1_rbp.Value(); raw_context.rsp = stack_section.start().Value(); @@ -438,18 +671,18 @@ TEST_F(GetCallerFrame, CallerPushedRBP) { // %rbp directly below the return address, assume that it is indeed the // next frame's %rbp. stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address = 0x50000000b0000110ULL; + uint64_t return_address = 0x00007500b0000110ULL; Label frame0_rbp, frame1_sp, frame1_rbp; stack_section // frame 0 .Append(16, 0) // space - .D64(0x40000000b0000000ULL) // junk that's not - .D64(0x50000000b0000000ULL) // a return address + .D64(0x00007400b0000000ULL) // junk that's not + .D64(0x00007500b0000000ULL) // a return address - .D64(0x40000000c0001000ULL) // a couple of plausible addresses - .D64(0x50000000b000aaaaULL) // that are not within functions + .D64(0x00007400c0001000ULL) // a couple of plausible addresses + .D64(0x00007500b000aaaaULL) // that are not within functions .Mark(&frame0_rbp) .D64(frame1_rbp) // caller-pushed %rbp @@ -460,7 +693,7 @@ TEST_F(GetCallerFrame, CallerPushedRBP) { .Mark(&frame1_rbp); // end of stack RegionFromSection(); - raw_context.rip = 0x40000000c0000200ULL; + raw_context.rip = 0x00007400c0000200ULL; raw_context.rbp = frame0_rbp.Value(); raw_context.rsp = stack_section.start().Value(); @@ -488,7 +721,7 @@ TEST_F(GetCallerFrame, CallerPushedRBP) { ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); EXPECT_EQ(frame0_rbp.Value(), frame0->context.rbp); EXPECT_EQ("sasquatch", frame0->function_name); - EXPECT_EQ(0x40000000c0000100ULL, frame0->function_base); + EXPECT_EQ(0x00007400c0000100ULL, frame0->function_base); StackFrameAMD64 *frame1 = static_cast(frames->at(1)); EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame1->trust); @@ -500,7 +733,7 @@ TEST_F(GetCallerFrame, CallerPushedRBP) { EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp); EXPECT_EQ(frame1_rbp.Value(), frame1->context.rbp); EXPECT_EQ("yeti", frame1->function_name); - EXPECT_EQ(0x50000000b0000100ULL, frame1->function_base); + EXPECT_EQ(0x00007500b0000100ULL, frame1->function_base); } struct CFIFixture: public StackwalkerAMD64Fixture { @@ -531,7 +764,7 @@ struct CFIFixture: public StackwalkerAMD64Fixture { // Provide some distinctive values for the caller's registers. expected.rsp = 0x8000000080000000ULL; - expected.rip = 0x40000000c0005510ULL; + expected.rip = 0x00007400c0005510ULL; expected.rbp = 0x68995b1de4700266ULL; expected.rbx = 0x5a5beeb38de23be8ULL; expected.r12 = 0xed1b02e8cc0fc79cULL; @@ -568,7 +801,7 @@ struct CFIFixture: public StackwalkerAMD64Fixture { EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust); ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); EXPECT_EQ("enchiridion", frame0->function_name); - EXPECT_EQ(0x40000000c0004000ULL, frame0->function_base); + EXPECT_EQ(0x00007400c0004000ULL, frame0->function_base); StackFrameAMD64 *frame1 = static_cast(frames->at(1)); EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust); @@ -601,9 +834,9 @@ class CFI: public CFIFixture, public Test { }; TEST_F(CFI, At4000) { Label frame1_rsp = expected.rsp; stack_section - .D64(0x40000000c0005510ULL) // return address + .D64(0x00007400c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x40000000c0004000ULL; + raw_context.rip = 0x00007400c0004000ULL; CheckWalk(); } @@ -611,9 +844,9 @@ TEST_F(CFI, At4001) { Label frame1_rsp = expected.rsp; stack_section .D64(0x5a5beeb38de23be8ULL) // saved %rbx - .D64(0x40000000c0005510ULL) // return address + .D64(0x00007400c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x40000000c0004001ULL; + raw_context.rip = 0x00007400c0004001ULL; raw_context.rbx = 0xbe0487d2f9eafe29ULL; // callee's (distinct) %rbx value CheckWalk(); } @@ -622,9 +855,9 @@ TEST_F(CFI, At4002) { Label frame1_rsp = expected.rsp; stack_section .D64(0x5a5beeb38de23be8ULL) // saved %rbx - .D64(0x40000000c0005510ULL) // return address + .D64(0x00007400c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x40000000c0004002ULL; + raw_context.rip = 0x00007400c0004002ULL; raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0xb0118de918a4bceaULL; // callee's (distinct) %r12 value CheckWalk(); @@ -637,9 +870,9 @@ TEST_F(CFI, At4003) { .D64(0x1d20ad8acacbe930ULL) // saved %r13 .D64(0x319e68b49e3ace0fULL) // garbage .D64(0x5a5beeb38de23be8ULL) // saved %rbx - .D64(0x40000000c0005510ULL) // return address + .D64(0x00007400c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x40000000c0004003ULL; + raw_context.rip = 0x00007400c0004003ULL; raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0x89d04fa804c87a43ULL; // callee's (distinct) %r12 raw_context.r13 = 0x5118e02cbdb24b03ULL; // callee's (distinct) %r13 @@ -654,9 +887,9 @@ TEST_F(CFI, At4004) { .D64(0x1d20ad8acacbe930ULL) // saved %r13 .D64(0x319e68b49e3ace0fULL) // garbage .D64(0x5a5beeb38de23be8ULL) // saved %rbx - .D64(0x40000000c0005510ULL) // return address + .D64(0x00007400c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x40000000c0004004ULL; + raw_context.rip = 0x00007400c0004004ULL; raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0x89d04fa804c87a43ULL; // callee's (distinct) %r12 raw_context.r13 = 0x5118e02cbdb24b03ULL; // callee's (distinct) %r13 @@ -672,10 +905,10 @@ TEST_F(CFI, At4005) { .D64(0x5a5beeb38de23be8ULL) // saved %rbx .D64(0xaa95fa054aedfbaeULL) // garbage .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x40000000c0004005ULL; + raw_context.rip = 0x00007400c0004005ULL; raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0x46b1b8868891b34aULL; // callee's %r12 - raw_context.r13 = 0x40000000c0005510ULL; // return address + raw_context.r13 = 0x00007400c0005510ULL; // return address CheckWalk(); } @@ -690,10 +923,10 @@ TEST_F(CFI, At4006) { .D64(0x5a5beeb38de23be8ULL) // saved %rbx .D64(0xf015ee516ad89eabULL) // garbage .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x40000000c0004006ULL; + raw_context.rip = 0x00007400c0004006ULL; raw_context.rbp = frame0_rbp.Value(); raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0x26e007b341acfebdULL; // callee's %r12 - raw_context.r13 = 0x40000000c0005510ULL; // return address + raw_context.r13 = 0x00007400c0005510ULL; // return address CheckWalk(); } diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips.cc index 7db342192323..db55d460c06d 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips.cc @@ -53,14 +53,25 @@ StackwalkerMIPS::StackwalkerMIPS(const SystemInfo* system_info, MemoryRegion* memory, const CodeModules* modules, StackFrameSymbolizer* resolver_helper) - : Stackwalker(system_info, memory, modules, resolver_helper), - context_(context) { - if (memory_ && memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) { - BPLOG(ERROR) << "Memory out of range for stackwalking: " - << HexString(memory_->GetBase()) - << "+" - << HexString(memory_->GetSize()); - memory_ = NULL; +: Stackwalker(system_info, memory, modules, resolver_helper), + context_(context) { + if (context_->context_flags & MD_CONTEXT_MIPS64 ) { + if ((memory_ && memory_->GetBase() + memory_->GetSize() - 1) + > 0xffffffffffffffff) { + BPLOG(ERROR) << "Memory out of range for stackwalking mips64: " + << HexString(memory_->GetBase()) + << "+" + << HexString(memory_->GetSize()); + memory_ = NULL; + } + } else { + if ((memory_ && memory_->GetBase() + memory_->GetSize() - 1) > 0xffffffff) { + BPLOG(ERROR) << "Memory out of range for stackwalking mips32: " + << HexString(memory_->GetBase()) + << "+" + << HexString(memory_->GetSize()); + memory_ = NULL; + } } } @@ -96,73 +107,143 @@ StackFrameMIPS* StackwalkerMIPS::GetCallerByCFIFrameInfo( CFIFrameInfo* cfi_frame_info) { StackFrameMIPS* last_frame = static_cast(frames.back()); - uint32_t sp = 0, pc = 0; + if (context_->context_flags & MD_CONTEXT_MIPS) { + uint32_t sp = 0, pc = 0; - // Populate a dictionary with the valid register values in last_frame. - CFIFrameInfo::RegisterValueMap callee_registers; - // Use the STACK CFI data to recover the caller's register values. - CFIFrameInfo::RegisterValueMap caller_registers; + // Populate a dictionary with the valid register values in last_frame. + CFIFrameInfo::RegisterValueMap callee_registers; + // Use the STACK CFI data to recover the caller's register values. + CFIFrameInfo::RegisterValueMap caller_registers; - for (int i = 0; kRegisterNames[i]; ++i) { - caller_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; - callee_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; - } - - if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_, - &caller_registers)) { - return NULL; - } - - CFIFrameInfo::RegisterValueMap::const_iterator entry = - caller_registers.find(".cfa"); - - if (entry != caller_registers.end()) { - sp = entry->second; - caller_registers["$sp"] = entry->second; - } - - entry = caller_registers.find(".ra"); - if (entry != caller_registers.end()) { - caller_registers["$ra"] = entry->second; - pc = entry->second - 2 * sizeof(pc); - } - caller_registers["$pc"] = pc; - // Construct a new stack frame given the values the CFI recovered. - scoped_ptr frame(new StackFrameMIPS()); - - for (int i = 0; kRegisterNames[i]; ++i) { - CFIFrameInfo::RegisterValueMap::const_iterator caller_entry = - caller_registers.find(kRegisterNames[i]); - - if (caller_entry != caller_registers.end()) { - // The value of this register is recovered; fill the context with the - // value from caller_registers. - frame->context.iregs[i] = caller_entry->second; - frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); - } else if (((i >= INDEX_MIPS_REG_S0 && i <= INDEX_MIPS_REG_S7) || - (i > INDEX_MIPS_REG_GP && i < INDEX_MIPS_REG_RA)) && - (last_frame->context_validity & - StackFrameMIPS::RegisterValidFlag(i))) { - // If the STACK CFI data doesn't mention some callee-save register, and - // it is valid in the callee, assume the callee has not yet changed it. - // Calee-save registers according to the MIPS o32 ABI specification are: - // $s0 to $s7 - // $sp, $s8 - frame->context.iregs[i] = last_frame->context.iregs[i]; - frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); + for (int i = 0; kRegisterNames[i]; ++i) { + caller_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; + callee_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; } + + if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_, + &caller_registers)) { + return NULL; + } + + CFIFrameInfo::RegisterValueMap::const_iterator entry = + caller_registers.find(".cfa"); + + if (entry != caller_registers.end()) { + sp = entry->second; + caller_registers["$sp"] = entry->second; + } + + entry = caller_registers.find(".ra"); + if (entry != caller_registers.end()) { + caller_registers["$ra"] = entry->second; + pc = entry->second - 2 * sizeof(pc); + } + caller_registers["$pc"] = pc; + // Construct a new stack frame given the values the CFI recovered. + scoped_ptr frame(new StackFrameMIPS()); + + for (int i = 0; kRegisterNames[i]; ++i) { + CFIFrameInfo::RegisterValueMap::const_iterator caller_entry = + caller_registers.find(kRegisterNames[i]); + + if (caller_entry != caller_registers.end()) { + // The value of this register is recovered; fill the context with the + // value from caller_registers. + frame->context.iregs[i] = caller_entry->second; + frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); + } else if (((i >= INDEX_MIPS_REG_S0 && i <= INDEX_MIPS_REG_S7) || + (i > INDEX_MIPS_REG_GP && i < INDEX_MIPS_REG_RA)) && + (last_frame->context_validity & + StackFrameMIPS::RegisterValidFlag(i))) { + // If the STACK CFI data doesn't mention some callee-save register, and + // it is valid in the callee, assume the callee has not yet changed it. + // Calee-save registers according to the MIPS o32 ABI specification are: + // $s0 to $s7 + // $sp, $s8 + frame->context.iregs[i] = last_frame->context.iregs[i]; + frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); + } + } + + frame->context.epc = caller_registers["$pc"]; + frame->instruction = caller_registers["$pc"]; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = caller_registers["$ra"]; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; + + frame->trust = StackFrame::FRAME_TRUST_CFI; + + return frame.release(); + } else { + uint64_t sp = 0, pc = 0; + + // Populate a dictionary with the valid register values in last_frame. + CFIFrameInfo::RegisterValueMap callee_registers; + // Use the STACK CFI data to recover the caller's register values. + CFIFrameInfo::RegisterValueMap caller_registers; + + for (int i = 0; kRegisterNames[i]; ++i) { + caller_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; + callee_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; + } + + if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_, + &caller_registers)) { + return NULL; + } + + CFIFrameInfo::RegisterValueMap::const_iterator entry = + caller_registers.find(".cfa"); + + if (entry != caller_registers.end()) { + sp = entry->second; + caller_registers["$sp"] = entry->second; + } + + entry = caller_registers.find(".ra"); + if (entry != caller_registers.end()) { + caller_registers["$ra"] = entry->second; + pc = entry->second - 2 * sizeof(pc); + } + caller_registers["$pc"] = pc; + // Construct a new stack frame given the values the CFI recovered. + scoped_ptr frame(new StackFrameMIPS()); + + for (int i = 0; kRegisterNames[i]; ++i) { + CFIFrameInfo::RegisterValueMap::const_iterator caller_entry = + caller_registers.find(kRegisterNames[i]); + + if (caller_entry != caller_registers.end()) { + // The value of this register is recovered; fill the context with the + // value from caller_registers. + frame->context.iregs[i] = caller_entry->second; + frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); + } else if (((i >= INDEX_MIPS_REG_S0 && i <= INDEX_MIPS_REG_S7) || + (i >= INDEX_MIPS_REG_GP && i < INDEX_MIPS_REG_RA)) && + (last_frame->context_validity & + StackFrameMIPS::RegisterValidFlag(i))) { + // If the STACK CFI data doesn't mention some callee-save register, and + // it is valid in the callee, assume the callee has not yet changed it. + // Calee-save registers according to the MIPS o32 ABI specification are: + // $s0 to $s7 + // $sp, $s8 + frame->context.iregs[i] = last_frame->context.iregs[i]; + frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); + } + } + + frame->context.epc = caller_registers["$pc"]; + frame->instruction = caller_registers["$pc"]; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = caller_registers["$ra"]; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; + + frame->trust = StackFrame::FRAME_TRUST_CFI; + + return frame.release(); } - - frame->context.epc = caller_registers["$pc"]; - frame->instruction = caller_registers["$pc"]; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = caller_registers["$ra"]; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; - - frame->trust = StackFrame::FRAME_TRUST_CFI; - - return frame.release(); } StackFrame* StackwalkerMIPS::GetCallerFrame(const CallStack* stack, @@ -204,7 +285,7 @@ StackFrame* StackwalkerMIPS::GetCallerFrame(const CallStack* stack, last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]) { return NULL; } - + return new_frame.release(); } @@ -215,19 +296,20 @@ StackFrameMIPS* StackwalkerMIPS::GetCallerByStackScan( StackFrameMIPS* last_frame = static_cast(frames.back()); - uint32_t last_sp = last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]; - uint32_t caller_pc, caller_sp, caller_fp; + if (context_->context_flags & MD_CONTEXT_MIPS) { + uint32_t last_sp = last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]; + uint32_t caller_pc, caller_sp, caller_fp; - // Return address cannot be obtained directly. - // Force stackwalking. + // Return address cannot be obtained directly. + // Force stackwalking. - // We cannot use frame pointer to get the return address. - // We'll scan the stack for a - // return address. This can happen if last_frame is executing code - // for a module for which we don't have symbols. - int count = kMaxFrameStackSize / sizeof(caller_pc); + // We cannot use frame pointer to get the return address. + // We'll scan the stack for a + // return address. This can happen if last_frame is executing code + // for a module for which we don't have symbols. + int count = kMaxFrameStackSize / sizeof(caller_pc); - if (frames.size() > 1) { + if (frames.size() > 1) { // In case of mips32 ABI stack frame of a nonleaf function // must have minimum stack frame assigned for 4 arguments (4 words). // Move stack pointer for 4 words to avoid reporting non-existing frames @@ -235,65 +317,131 @@ StackFrameMIPS* StackwalkerMIPS::GetCallerByStackScan( // There is no way of knowing if topmost frame belongs to a leaf or // a nonleaf function. last_sp += kMinArgsOnStack * sizeof(caller_pc); - // Adjust 'count' so that return address is scanned only in limits + // Adjust 'count' so that return address is scanned only in limits // of one stack frame. count -= kMinArgsOnStack; - } - - do { - // Scanning for return address from stack pointer of the last frame. - if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc, count)) { - // If we can't find an instruction pointer even with stack scanning, - // give up. - BPLOG(ERROR) << " ScanForReturnAddress failed "; - return NULL; } - // Get $fp stored in the stack frame. - if (!memory_->GetMemoryAtAddress(caller_sp - sizeof(caller_pc), - &caller_fp)) { - BPLOG(INFO) << " GetMemoryAtAddress for fp failed " ; + + do { + // Scanning for return address from stack pointer of the last frame. + if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc, count)) { + // If we can't find an instruction pointer even with stack scanning, + // give up. + BPLOG(ERROR) << " ScanForReturnAddress failed "; + return NULL; + } + // Get $fp stored in the stack frame. + if (!memory_->GetMemoryAtAddress(caller_sp - sizeof(caller_pc), + &caller_fp)) { + BPLOG(INFO) << " GetMemoryAtAddress for fp failed " ; + return NULL; + } + + count = count - (caller_sp - last_sp) / sizeof(caller_pc); + // Now scan the next address in the stack. + last_sp = caller_sp + sizeof(caller_pc); + } while ((caller_fp - caller_sp >= kMaxFrameStackSize) && count > 0); + + if (!count) { + BPLOG(INFO) << " No frame found " ; return NULL; } - count = count - (caller_sp - last_sp) / sizeof(caller_pc); - // Now scan the next address in the stack. - last_sp = caller_sp + sizeof(caller_pc); - } while ((caller_fp - caller_sp >= kMaxFrameStackSize) && count > 0); + // ScanForReturnAddress found a reasonable return address. Advance + // $sp to the location above the one where the return address was + // found. + caller_sp += sizeof(caller_pc); + // caller_pc is actually containing $ra value; + // $pc is two instructions before $ra, + // so the caller_pc needs to be decremented accordingly. + caller_pc -= 2 * sizeof(caller_pc); - if (!count) { - BPLOG(INFO) << " No frame found " ; - return NULL; + // Create a new stack frame (ownership will be transferred to the caller) + // and fill it in. + StackFrameMIPS* frame = new StackFrameMIPS(); + frame->trust = StackFrame::FRAME_TRUST_SCAN; + frame->context = last_frame->context; + frame->context.epc = caller_pc; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; + frame->instruction = caller_pc; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_SP] = caller_sp; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_SP; + frame->context.iregs[MD_CONTEXT_MIPS_REG_FP] = caller_fp; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_FP; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = + caller_pc + 2 * sizeof(caller_pc); + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; + + return frame; + } else { + uint64_t last_sp = last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]; + uint64_t caller_pc, caller_sp, caller_fp; + + // Return address cannot be obtained directly. + // Force stackwalking. + + // We cannot use frame pointer to get the return address. + // We'll scan the stack for a + // return address. This can happen if last_frame is executing code + // for a module for which we don't have symbols. + int count = kMaxFrameStackSize / sizeof(caller_pc); + + do { + // Scanning for return address from stack pointer of the last frame. + if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc, count)) { + // If we can't find an instruction pointer even with stack scanning, + // give up. + BPLOG(ERROR) << " ScanForReturnAddress failed "; + return NULL; + } + // Get $fp stored in the stack frame. + if (!memory_->GetMemoryAtAddress(caller_sp - sizeof(caller_pc), + &caller_fp)) { + BPLOG(INFO) << " GetMemoryAtAddress for fp failed " ; + return NULL; + } + + count = count - (caller_sp - last_sp) / sizeof(caller_pc); + // Now scan the next address in the stack. + last_sp = caller_sp + sizeof(caller_pc); + } while ((caller_fp - caller_sp >= kMaxFrameStackSize) && count > 0); + + if (!count) { + BPLOG(INFO) << " No frame found " ; + return NULL; + } + + // ScanForReturnAddress found a reasonable return address. Advance + // $sp to the location above the one where the return address was + // found. + caller_sp += sizeof(caller_pc); + // caller_pc is actually containing $ra value; + // $pc is two instructions before $ra, + // so the caller_pc needs to be decremented accordingly. + caller_pc -= 2 * sizeof(caller_pc); + + // Create a new stack frame (ownership will be transferred to the caller) + // and fill it in. + StackFrameMIPS* frame = new StackFrameMIPS(); + frame->trust = StackFrame::FRAME_TRUST_SCAN; + frame->context = last_frame->context; + frame->context.epc = caller_pc; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; + frame->instruction = caller_pc; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_SP] = caller_sp; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_SP; + frame->context.iregs[MD_CONTEXT_MIPS_REG_FP] = caller_fp; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_FP; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = + caller_pc + 2 * sizeof(caller_pc); + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; + + return frame; } - - // ScanForReturnAddress found a reasonable return address. Advance - // $sp to the location above the one where the return address was - // found. - caller_sp += sizeof(caller_pc); - // caller_pc is actually containing $ra value; - // $pc is two instructions before $ra, - // so the caller_pc needs to be decremented accordingly. - caller_pc -= 2 * sizeof(caller_pc); - - - // Create a new stack frame (ownership will be transferred to the caller) - // and fill it in. - StackFrameMIPS* frame = new StackFrameMIPS(); - frame->trust = StackFrame::FRAME_TRUST_SCAN; - frame->context = last_frame->context; - frame->context.epc = caller_pc; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; - frame->instruction = caller_pc; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_SP] = caller_sp; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_SP; - frame->context.iregs[MD_CONTEXT_MIPS_REG_FP] = caller_fp; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_FP; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = - caller_pc + 2 * sizeof(caller_pc); - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; - - return frame; } } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips_unittest.cc index ed4be4f5b161..5398c2b330f6 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips_unittest.cc @@ -145,6 +145,7 @@ class StackwalkerMIPSFixture { class SanityCheck: public StackwalkerMIPSFixture, public Test { }; TEST_F(SanityCheck, NoResolver) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; stack_section.start() = 0x80000000; stack_section.D32(0).D32(0x0); RegionFromSection(); @@ -173,6 +174,7 @@ TEST_F(SanityCheck, NoResolver) { class GetContextFrame: public StackwalkerMIPSFixture, public Test { }; TEST_F(GetContextFrame, Simple) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; stack_section.start() = 0x80000000; stack_section.D32(0).D32(0x0); RegionFromSection(); @@ -199,6 +201,7 @@ TEST_F(GetContextFrame, Simple) { // The stackwalker should be able to produce the context frame even // without stack memory present. TEST_F(GetContextFrame, NoStackMemory) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; raw_context.epc = 0x00400020; raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000; @@ -222,6 +225,7 @@ TEST_F(GetContextFrame, NoStackMemory) { class GetCallerFrame: public StackwalkerMIPSFixture, public Test { }; TEST_F(GetCallerFrame, ScanWithoutSymbols) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; // When the stack walker resorts to scanning the stack, // only addresses located within loaded modules are // considered valid return addresses. @@ -298,6 +302,7 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) { } TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; // During stack scanning, if a potential return address // is located within a loaded module that has symbols, // it is only considered a valid return address if it @@ -366,6 +371,7 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { } TEST_F(GetCallerFrame, CheckStackFrameSizeLimit) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; // If the stackwalker resorts to stack scanning, it will scan only // 1024 bytes of stack which correspondes to maximum size of stack frame. stack_section.start() = 0x80000000; @@ -437,6 +443,7 @@ TEST_F(GetCallerFrame, CheckStackFrameSizeLimit) { // Test that set_max_frames_scanned prevents using stack scanning // to find caller frames. TEST_F(GetCallerFrame, ScanningNotAllowed) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; // When the stack walker resorts to scanning the stack, // only fixed number of frames are allowed to be scanned out from stack stack_section.start() = 0x80000000; @@ -646,6 +653,7 @@ class CFI: public CFIFixture, public Test { }; // TODO(gordanac): add CFI tests TEST_F(CFI, At4004) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; Label frame1_sp = expected.iregs[MD_CONTEXT_MIPS_REG_SP]; stack_section // frame0 @@ -660,6 +668,7 @@ TEST_F(CFI, At4004) { // Check that we reject rules that would cause the stack pointer to // move in the wrong direction. TEST_F(CFI, RejectBackwards) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; raw_context.epc = 0x40005000; raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000; raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = 0x00405510; @@ -679,6 +688,7 @@ TEST_F(CFI, RejectBackwards) { // Check that we reject rules whose expressions' evaluation fails. TEST_F(CFI, RejectBadExpressions) { + raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; raw_context.epc = 0x00407000; raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000; raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = 0x00405510; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_unittest_utils.h b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_unittest_utils.h index 73ceb199fe8a..ee22a8fe1c1d 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_unittest_utils.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_unittest_utils.h @@ -48,6 +48,7 @@ #include "google_breakpad/processor/memory_region.h" #include "google_breakpad/processor/symbol_supplier.h" #include "google_breakpad/processor/system_info.h" +#include "processor/linked_ptr.h" class MockMemoryRegion: public google_breakpad::MemoryRegion { public: @@ -114,9 +115,11 @@ class MockCodeModule: public google_breakpad::CodeModule { string debug_file() const { return code_file_; } string debug_identifier() const { return code_file_; } string version() const { return version_; } - const google_breakpad::CodeModule *Copy() const { + google_breakpad::CodeModule *Copy() const { abort(); // Tests won't use this. } + virtual uint64_t shrink_down_delta() const { return 0; } + virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) {} private: uint64_t base_address_; @@ -126,11 +129,11 @@ class MockCodeModule: public google_breakpad::CodeModule { }; class MockCodeModules: public google_breakpad::CodeModules { - public: + public: typedef google_breakpad::CodeModule CodeModule; typedef google_breakpad::CodeModules CodeModules; - void Add(const MockCodeModule *module) { + void Add(const MockCodeModule *module) { modules_.push_back(module); } @@ -157,9 +160,19 @@ class MockCodeModules: public google_breakpad::CodeModules { return modules_.at(index); } - const CodeModules *Copy() const { abort(); } // Tests won't use this. + CodeModules *Copy() const { abort(); } // Tests won't use this - private: + virtual std::vector > + GetShrunkRangeModules() const { + return std::vector >(); + } + + // Returns true, if module address range shrink is enabled. + bool IsModuleShrinkEnabled() const { + return false; + } + + private: typedef std::vector ModuleVector; ModuleVector modules_; }; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/static_map_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/static_map_unittest.cc index 97b1e61a9373..393d43d5c530 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/static_map_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/static_map_unittest.cc @@ -180,7 +180,7 @@ class TestValidMap : public ::testing::Test { void TearDown() { for (int i = 0;i < kNumberTestCases; ++i) - delete map_data[i]; + ::operator delete(map_data[i]); } diff --git a/toolkit/crashreporter/google-breakpad/src/processor/symbolic_constants_win.cc b/toolkit/crashreporter/google-breakpad/src/processor/symbolic_constants_win.cc index 333aa04174da..a6ee26a2601d 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/symbolic_constants_win.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/symbolic_constants_win.cc @@ -33,17 +33,18 @@ // // Author: Ben Wagner -#include #include +#include "common/stdio_wrapper.h" +#include "common/using_std_string.h" #include "google_breakpad/common/breakpad_types.h" #include "google_breakpad/common/minidump_exception_win32.h" #include "processor/symbolic_constants_win.h" namespace google_breakpad { -std::string NTStatusToString(uint32_t ntstatus) { - std::string reason; +string NTStatusToString(uint32_t ntstatus) { + string reason; // The content of this switch was created from ntstatus.h in the 8.1 SDK with // // egrep '#define [A-Z_0-9]+\s+\(\(NTSTATUS\)0xC[0-9A-F]+L\)' ntstatus.h @@ -6406,7 +6407,7 @@ std::string NTStatusToString(uint32_t ntstatus) { break; default: { char reason_string[11]; - std::snprintf(reason_string, sizeof(reason_string), "0x%08x", ntstatus); + snprintf(reason_string, sizeof(reason_string), "0x%08x", ntstatus); reason = reason_string; break; } diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdis.h b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdis.h index 94103396f65a..83a88612a3cc 100644 --- a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdis.h +++ b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdis.h @@ -1,10 +1,6 @@ #ifndef LIBDISASM_H #define LIBDISASM_H -#ifdef WIN32 -#include -#endif - #include /* 'NEW" types diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdisasm.gyp b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdisasm.gyp index c48ac824f25b..5c8dc458677e 100644 --- a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdisasm.gyp +++ b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdisasm.gyp @@ -27,6 +27,9 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. { + 'includes': [ + '../../build/common.gypi', + ], 'targets': [ { 'target_name': 'libdisasm', diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/x86_disasm.c b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/x86_disasm.c index 51a213a46e33..1b82f4e66712 100644 --- a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/x86_disasm.c +++ b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/x86_disasm.c @@ -35,7 +35,7 @@ unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len, if ( offset >= buf_len ) { /* another caller screwup ;) */ - x86_report_error(report_disasm_bounds, (void*)(long)buf_rva+offset); + x86_report_error(report_disasm_bounds, (void*)(long)(buf_rva+offset)); return 0; } @@ -53,13 +53,13 @@ unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len, /* check and see if we had an invalid instruction */ if (! size ) { - x86_report_error(report_invalid_insn, (void*)(long)buf_rva+offset ); + x86_report_error(report_invalid_insn, (void*)(long)(buf_rva+offset)); return 0; } /* check if we overran the end of the buffer */ if ( size > len ) { - x86_report_error( report_insn_bounds, (void*)(long)buf_rva + offset ); + x86_report_error( report_insn_bounds, (void*)(long)(buf_rva + offset)); MAKE_INVALID( insn, bytes ); return 0; } diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h index 93fdad751b4c..162a27e7777b 100644 --- a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h +++ b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h @@ -82,12 +82,13 @@ #ifndef SYS_LINUX_SYSCALL_SUPPORT_H #define SYS_LINUX_SYSCALL_SUPPORT_H -/* We currently only support x86-32, x86-64, ARM, MIPS, and PPC on Linux. +/* We currently only support x86-32, x86-64, ARM, MIPS, PPC, s390 and s390x + * on Linux. * Porting to other related platforms should not be difficult. */ #if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) || \ defined(__mips__) || defined(__PPC__) || defined(__ARM_EABI__) || \ - defined(__aarch64__)) \ + defined(__aarch64__) || defined(__s390__)) \ && (defined(__linux) || defined(__ANDROID__)) #ifndef SYS_CPLUSPLUS @@ -256,7 +257,7 @@ struct kernel_rusage { }; #if defined(__i386__) || defined(__ARM_EABI__) || defined(__ARM_ARCH_3__) \ - || defined(__PPC__) + || defined(__PPC__) || (defined(__s390__) && !defined(__s390x__)) /* include/asm-{arm,i386,mips,ppc}/signal.h */ struct kernel_old_sigaction { @@ -321,7 +322,7 @@ struct kernel_sockaddr { char sa_data[14]; }; -/* include/asm-{arm,aarch64,i386,mips,ppc}/stat.h */ +/* include/asm-{arm,aarch64,i386,mips,ppc,s390}/stat.h */ #ifdef __mips__ #if _MIPS_SIM == _MIPS_SIM_ABI64 struct kernel_stat { @@ -394,7 +395,7 @@ struct kernel_stat64 { }; #endif -/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc}/stat.h */ +/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc,s390}/stat.h */ #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) struct kernel_stat { /* The kernel headers suggest that st_dev and st_rdev should be 32bit @@ -511,9 +512,53 @@ struct kernel_stat { unsigned int __unused4; unsigned int __unused5; }; +#elif defined(__s390x__) +struct kernel_stat { + unsigned long st_dev; + unsigned long st_ino; + unsigned long st_nlink; + unsigned int st_mode; + unsigned int st_uid; + unsigned int st_gid; + unsigned int __pad1; + unsigned long st_rdev; + unsigned long st_size; + unsigned long st_atime_; + unsigned long st_atime_nsec_; + unsigned long st_mtime_; + unsigned long st_mtime_nsec_; + unsigned long st_ctime_; + unsigned long st_ctime_nsec_; + unsigned long st_blksize; + long st_blocks; + unsigned long __unused[3]; +}; +#elif defined(__s390__) +struct kernel_stat { + unsigned short st_dev; + unsigned short __pad1; + unsigned long st_ino; + unsigned short st_mode; + unsigned short st_nlink; + unsigned short st_uid; + unsigned short st_gid; + unsigned short st_rdev; + unsigned short __pad2; + unsigned long st_size; + unsigned long st_blksize; + unsigned long st_blocks; + unsigned long st_atime_; + unsigned long st_atime_nsec_; + unsigned long st_mtime_; + unsigned long st_mtime_nsec_; + unsigned long st_ctime_; + unsigned long st_ctime_nsec_; + unsigned long __unused4; + unsigned long __unused5; +}; #endif -/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc}/statfs.h */ +/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc,s390}/statfs.h */ #ifdef __mips__ #if _MIPS_SIM != _MIPS_SIM_ABI64 struct kernel_statfs64 { @@ -531,6 +576,22 @@ struct kernel_statfs64 { unsigned long f_spare[6]; }; #endif +#elif defined(__s390__) +/* See also arch/s390/include/asm/compat.h */ +struct kernel_statfs64 { + unsigned int f_type; + unsigned int f_bsize; + unsigned long long f_blocks; + unsigned long long f_bfree; + unsigned long long f_bavail; + unsigned long long f_files; + unsigned long long f_ffree; + struct { int val[2]; } f_fsid; + unsigned int f_namelen; + unsigned int f_frsize; + unsigned int f_flags; + unsigned int f_spare[4]; +}; #elif !defined(__x86_64__) struct kernel_statfs64 { unsigned long f_type; @@ -547,7 +608,7 @@ struct kernel_statfs64 { }; #endif -/* include/asm-{arm,i386,mips,x86_64,ppc,generic}/statfs.h */ +/* include/asm-{arm,i386,mips,x86_64,ppc,generic,s390}/statfs.h */ #ifdef __mips__ struct kernel_statfs { long f_type; @@ -579,6 +640,21 @@ struct kernel_statfs { uint64_t f_frsize; uint64_t f_spare[5]; }; +#elif defined(__s390__) +struct kernel_statfs { + unsigned int f_type; + unsigned int f_bsize; + unsigned long f_blocks; + unsigned long f_bfree; + unsigned long f_bavail; + unsigned long f_files; + unsigned long f_ffree; + struct { int val[2]; } f_fsid; + unsigned int f_namelen; + unsigned int f_frsize; + unsigned int f_flags; + unsigned int f_spare[4]; +}; #else struct kernel_statfs { unsigned long f_type; @@ -951,7 +1027,7 @@ struct kernel_statfs { #ifndef __NR_getcpu #define __NR_getcpu (__NR_SYSCALL_BASE + 345) #endif -/* End of ARM 3/EABI definitions */ +/* End of ARM 3/EABI definitions */ #elif defined(__aarch64__) #ifndef __NR_setxattr #define __NR_setxattr 5 @@ -1504,6 +1580,189 @@ struct kernel_statfs { #define __NR_getcpu 302 #endif /* End of powerpc defininitions */ +#elif defined(__s390__) +#ifndef __NR_quotactl +#define __NR_quotactl 131 +#endif +#ifndef __NR_rt_sigreturn +#define __NR_rt_sigreturn 173 +#endif +#ifndef __NR_rt_sigaction +#define __NR_rt_sigaction 174 +#endif +#ifndef __NR_rt_sigprocmask +#define __NR_rt_sigprocmask 175 +#endif +#ifndef __NR_rt_sigpending +#define __NR_rt_sigpending 176 +#endif +#ifndef __NR_rt_sigsuspend +#define __NR_rt_sigsuspend 179 +#endif +#ifndef __NR_pread64 +#define __NR_pread64 180 +#endif +#ifndef __NR_pwrite64 +#define __NR_pwrite64 181 +#endif +#ifndef __NR_getdents64 +#define __NR_getdents64 220 +#endif +#ifndef __NR_readahead +#define __NR_readahead 222 +#endif +#ifndef __NR_setxattr +#define __NR_setxattr 224 +#endif +#ifndef __NR_lsetxattr +#define __NR_lsetxattr 225 +#endif +#ifndef __NR_getxattr +#define __NR_getxattr 227 +#endif +#ifndef __NR_lgetxattr +#define __NR_lgetxattr 228 +#endif +#ifndef __NR_listxattr +#define __NR_listxattr 230 +#endif +#ifndef __NR_llistxattr +#define __NR_llistxattr 231 +#endif +#ifndef __NR_gettid +#define __NR_gettid 236 +#endif +#ifndef __NR_tkill +#define __NR_tkill 237 +#endif +#ifndef __NR_futex +#define __NR_futex 238 +#endif +#ifndef __NR_sched_setaffinity +#define __NR_sched_setaffinity 239 +#endif +#ifndef __NR_sched_getaffinity +#define __NR_sched_getaffinity 240 +#endif +#ifndef __NR_set_tid_address +#define __NR_set_tid_address 252 +#endif +#ifndef __NR_clock_gettime +#define __NR_clock_gettime 260 +#endif +#ifndef __NR_clock_getres +#define __NR_clock_getres 261 +#endif +#ifndef __NR_statfs64 +#define __NR_statfs64 265 +#endif +#ifndef __NR_fstatfs64 +#define __NR_fstatfs64 266 +#endif +#ifndef __NR_ioprio_set +#define __NR_ioprio_set 282 +#endif +#ifndef __NR_ioprio_get +#define __NR_ioprio_get 283 +#endif +#ifndef __NR_openat +#define __NR_openat 288 +#endif +#ifndef __NR_unlinkat +#define __NR_unlinkat 294 +#endif +#ifndef __NR_move_pages +#define __NR_move_pages 310 +#endif +#ifndef __NR_getcpu +#define __NR_getcpu 311 +#endif +#ifndef __NR_fallocate +#define __NR_fallocate 314 +#endif +/* Some syscalls are named/numbered differently between s390 and s390x. */ +#ifdef __s390x__ +# ifndef __NR_getrlimit +# define __NR_getrlimit 191 +# endif +# ifndef __NR_setresuid +# define __NR_setresuid 208 +# endif +# ifndef __NR_getresuid +# define __NR_getresuid 209 +# endif +# ifndef __NR_setresgid +# define __NR_setresgid 210 +# endif +# ifndef __NR_getresgid +# define __NR_getresgid 211 +# endif +# ifndef __NR_setfsuid +# define __NR_setfsuid 215 +# endif +# ifndef __NR_setfsgid +# define __NR_setfsgid 216 +# endif +# ifndef __NR_fadvise64 +# define __NR_fadvise64 253 +# endif +# ifndef __NR_newfstatat +# define __NR_newfstatat 293 +# endif +#else /* __s390x__ */ +# ifndef __NR_getrlimit +# define __NR_getrlimit 76 +# endif +# ifndef __NR_setfsuid +# define __NR_setfsuid 138 +# endif +# ifndef __NR_setfsgid +# define __NR_setfsgid 139 +# endif +# ifndef __NR_setresuid +# define __NR_setresuid 164 +# endif +# ifndef __NR_getresuid +# define __NR_getresuid 165 +# endif +# ifndef __NR_setresgid +# define __NR_setresgid 170 +# endif +# ifndef __NR_getresgid +# define __NR_getresgid 171 +# endif +# ifndef __NR_ugetrlimit +# define __NR_ugetrlimit 191 +# endif +# ifndef __NR_mmap2 +# define __NR_mmap2 192 +# endif +# ifndef __NR_setresuid32 +# define __NR_setresuid32 208 +# endif +# ifndef __NR_getresuid32 +# define __NR_getresuid32 209 +# endif +# ifndef __NR_setresgid32 +# define __NR_setresgid32 210 +# endif +# ifndef __NR_getresgid32 +# define __NR_getresgid32 211 +# endif +# ifndef __NR_setfsuid32 +# define __NR_setfsuid32 215 +# endif +# ifndef __NR_setfsgid32 +# define __NR_setfsgid32 216 +# endif +# ifndef __NR_fadvise64_64 +# define __NR_fadvise64_64 264 +# endif +# ifndef __NR_fstatat64 +# define __NR_fstatat64 293 +# endif +#endif /* __s390__ */ +/* End of s390/s390x definitions */ #endif @@ -1567,7 +1826,7 @@ struct kernel_statfs { #undef LSS_RETURN #if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) \ - || defined(__ARM_EABI__) || defined(__aarch64__)) + || defined(__ARM_EABI__) || defined(__aarch64__) || defined(__s390__)) /* Failing system calls return a negative result in the range of * -1..-4095. These are "errno" values with the sign inverted. */ @@ -1836,32 +2095,6 @@ struct kernel_statfs { LSS_RETURN(int, __res); } - #define __NR__fadvise64_64 __NR_fadvise64_64 - LSS_INLINE _syscall6(int, _fadvise64_64, int, fd, - unsigned, offset_lo, unsigned, offset_hi, - unsigned, len_lo, unsigned, len_hi, - int, advice) - - LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, - loff_t len, int advice) { - return LSS_NAME(_fadvise64_64)(fd, - (unsigned)offset, (unsigned)(offset >>32), - (unsigned)len, (unsigned)(len >> 32), - advice); - } - - #define __NR__fallocate __NR_fallocate - LSS_INLINE _syscall6(int, _fallocate, int, fd, - int, mode, - unsigned, offset_lo, unsigned, offset_hi, - unsigned, len_lo, unsigned, len_hi) - - LSS_INLINE int LSS_NAME(fallocate)(int fd, int mode, - loff_t offset, loff_t len) { - union { loff_t off; unsigned w[2]; } o = { offset }, l = { len }; - return LSS_NAME(_fallocate)(fd, mode, o.w[0], o.w[1], l.w[0], l.w[1]); - } - LSS_INLINE _syscall1(int, set_thread_area, void *, u) LSS_INLINE _syscall1(int, get_thread_area, void *, u) @@ -2149,13 +2382,6 @@ struct kernel_statfs { } LSS_INLINE _syscall2(int, arch_prctl, int, c, void *, a) - /* Need to make sure loff_t isn't truncated to 32-bits under x32. */ - LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, loff_t len, - int advice) { - LSS_BODY(4, int, fadvise64, LSS_SYSCALL_ARG(fd), (uint64_t)(offset), - (uint64_t)(len), LSS_SYSCALL_ARG(advice)); - } - LSS_INLINE void (*LSS_NAME(restore_rt)(void))(void) { /* On x86-64, the kernel does not know how to return from * a signal handler. Instead, it relies on user space to provide a @@ -2966,6 +3192,138 @@ struct kernel_statfs { } LSS_RETURN(int, __ret, __err); } + #elif defined(__s390__) + #undef LSS_REG + #define LSS_REG(r, a) register unsigned long __r##r __asm__("r"#r) = (unsigned long) a + #undef LSS_BODY + #define LSS_BODY(type, name, args...) \ + register unsigned long __nr __asm__("r1") \ + = (unsigned long)(__NR_##name); \ + register long __res_r2 __asm__("r2"); \ + long __res; \ + __asm__ __volatile__ \ + ("svc 0\n\t" \ + : "=d"(__res_r2) \ + : "d"(__nr), ## args \ + : "memory"); \ + __res = __res_r2; \ + LSS_RETURN(type, __res) + #undef _syscall0 + #define _syscall0(type, name) \ + type LSS_NAME(name)(void) { \ + LSS_BODY(type, name); \ + } + #undef _syscall1 + #define _syscall1(type, name, type1, arg1) \ + type LSS_NAME(name)(type1 arg1) { \ + LSS_REG(2, arg1); \ + LSS_BODY(type, name, "0"(__r2)); \ + } + #undef _syscall2 + #define _syscall2(type, name, type1, arg1, type2, arg2) \ + type LSS_NAME(name)(type1 arg1, type2 arg2) { \ + LSS_REG(2, arg1); LSS_REG(3, arg2); \ + LSS_BODY(type, name, "0"(__r2), "d"(__r3)); \ + } + #undef _syscall3 + #define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ + type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3) { \ + LSS_REG(2, arg1); LSS_REG(3, arg2); LSS_REG(4, arg3); \ + LSS_BODY(type, name, "0"(__r2), "d"(__r3), "d"(__r4)); \ + } + #undef _syscall4 + #define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, \ + type4, arg4) \ + type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, \ + type4 arg4) { \ + LSS_REG(2, arg1); LSS_REG(3, arg2); LSS_REG(4, arg3); \ + LSS_REG(5, arg4); \ + LSS_BODY(type, name, "0"(__r2), "d"(__r3), "d"(__r4), \ + "d"(__r5)); \ + } + #undef _syscall5 + #define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, \ + type4, arg4, type5, arg5) \ + type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, \ + type4 arg4, type5 arg5) { \ + LSS_REG(2, arg1); LSS_REG(3, arg2); LSS_REG(4, arg3); \ + LSS_REG(5, arg4); LSS_REG(6, arg5); \ + LSS_BODY(type, name, "0"(__r2), "d"(__r3), "d"(__r4), \ + "d"(__r5), "d"(__r6)); \ + } + #undef _syscall6 + #define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3, \ + type4, arg4, type5, arg5, type6, arg6) \ + type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, \ + type4 arg4, type5 arg5, type6 arg6) { \ + LSS_REG(2, arg1); LSS_REG(3, arg2); LSS_REG(4, arg3); \ + LSS_REG(5, arg4); LSS_REG(6, arg5); LSS_REG(7, arg6); \ + LSS_BODY(type, name, "0"(__r2), "d"(__r3), "d"(__r4), \ + "d"(__r5), "d"(__r6), "d"(__r7)); \ + } + LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack, + int flags, void *arg, int *parent_tidptr, + void *newtls, int *child_tidptr) { + long __ret; + { + register int (*__fn)(void *) __asm__ ("r1") = fn; + register void *__cstack __asm__ ("r2") = child_stack; + register int __flags __asm__ ("r3") = flags; + register void *__arg __asm__ ("r0") = arg; + register int *__ptidptr __asm__ ("r4") = parent_tidptr; + register void *__newtls __asm__ ("r6") = newtls; + register int *__ctidptr __asm__ ("r5") = child_tidptr; + __asm__ __volatile__ ( + #ifndef __s390x__ + /* arg already in r0 */ + "ltr %4, %4\n\t" /* check fn, which is already in r1 */ + "jz 1f\n\t" /* NULL function pointer, return -EINVAL */ + "ltr %5, %5\n\t" /* check child_stack, which is already in r2 */ + "jz 1f\n\t" /* NULL stack pointer, return -EINVAL */ + /* flags already in r3 */ + /* parent_tidptr already in r4 */ + /* child_tidptr already in r5 */ + /* newtls already in r6 */ + "svc %2\n\t" /* invoke clone syscall */ + "ltr %0,%%r2\n\t" /* load return code into __ret and test */ + "jnz 1f\n\t" /* return to parent if non-zero */ + /* start child thread */ + "lr %%r2, %7\n\t" /* set first parameter to void *arg */ + "ahi %%r15, -96\n\t" /* make room on the stack for the save area */ + "xc 0(4,%%r15), 0(%%r15)\n\t" + "basr %%r14, %4\n\t" /* jump to fn */ + "svc %3\n" /* invoke exit syscall */ + "1:\n" + #else + /* arg already in r0 */ + "ltgr %4, %4\n\t" /* check fn, which is already in r1 */ + "jz 1f\n\t" /* NULL function pointer, return -EINVAL */ + "ltgr %5, %5\n\t" /* check child_stack, which is already in r2 */ + "jz 1f\n\t" /* NULL stack pointer, return -EINVAL */ + /* flags already in r3 */ + /* parent_tidptr already in r4 */ + /* child_tidptr already in r5 */ + /* newtls already in r6 */ + "svc %2\n\t" /* invoke clone syscall */ + "ltgr %0, %%r2\n\t" /* load return code into __ret and test */ + "jnz 1f\n\t" /* return to parent if non-zero */ + /* start child thread */ + "lgr %%r2, %7\n\t" /* set first parameter to void *arg */ + "aghi %%r15, -160\n\t" /* make room on the stack for the save area */ + "xc 0(8,%%r15), 0(%%r15)\n\t" + "basr %%r14, %4\n\t" /* jump to fn */ + "svc %3\n" /* invoke exit syscall */ + "1:\n" + #endif + : "=r" (__ret) + : "0" (-EINVAL), "i" (__NR_clone), "i" (__NR_exit), + "d" (__fn), "d" (__cstack), "d" (__flags), "d" (__arg), + "d" (__ptidptr), "d" (__newtls), "d" (__ctidptr) + : "cc", "r14", "memory" + ); + } + LSS_RETURN(int, __ret); + } #endif #define __NR__exit __NR_exit #define __NR__gettid __NR_gettid @@ -3180,14 +3538,77 @@ struct kernel_statfs { LSS_INLINE _syscall4(int, socketpair, int, d, int, t, int, p, int*, s) #endif - #if defined(__x86_64__) + #if defined(__NR_fadvise64) + #if defined(__x86_64__) + /* Need to make sure loff_t isn't truncated to 32-bits under x32. */ + LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, loff_t len, + int advice) { + LSS_BODY(4, int, fadvise64, LSS_SYSCALL_ARG(fd), (uint64_t)(offset), + (uint64_t)(len), LSS_SYSCALL_ARG(advice)); + } + #else + LSS_INLINE _syscall4(int, fadvise64, + int, fd, loff_t, offset, loff_t, len, int, advice) + #endif + #elif defined(__i386__) + #define __NR__fadvise64_64 __NR_fadvise64_64 + LSS_INLINE _syscall6(int, _fadvise64_64, int, fd, + unsigned, offset_lo, unsigned, offset_hi, + unsigned, len_lo, unsigned, len_hi, + int, advice) + + LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, + loff_t len, int advice) { + return LSS_NAME(_fadvise64_64)(fd, + (unsigned)offset, (unsigned)(offset >>32), + (unsigned)len, (unsigned)(len >> 32), + advice); + } + + #elif defined(__s390__) && !defined(__s390x__) + #define __NR__fadvise64_64 __NR_fadvise64_64 + struct kernel_fadvise64_64_args { + int fd; + long long offset; + long long len; + int advice; + }; + + LSS_INLINE _syscall1(int, _fadvise64_64, + struct kernel_fadvise64_64_args *args) + + LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, + loff_t len, int advice) { + struct kernel_fadvise64_64_args args = { fd, offset, len, advice }; + return LSS_NAME(_fadvise64_64)(&args); + } + #endif + #if defined(__NR_fallocate) + #if defined(__x86_64__) /* Need to make sure loff_t isn't truncated to 32-bits under x32. */ LSS_INLINE int LSS_NAME(fallocate)(int f, int mode, loff_t offset, loff_t len) { LSS_BODY(4, int, fallocate, LSS_SYSCALL_ARG(f), LSS_SYSCALL_ARG(mode), (uint64_t)(offset), (uint64_t)(len)); } + #elif defined(__i386__) || (defined(__s390__) && !defined(__s390x__)) + #define __NR__fallocate __NR_fallocate + LSS_INLINE _syscall6(int, _fallocate, int, fd, + int, mode, + unsigned, offset_lo, unsigned, offset_hi, + unsigned, len_lo, unsigned, len_hi) + LSS_INLINE int LSS_NAME(fallocate)(int fd, int mode, + loff_t offset, loff_t len) { + union { loff_t off; unsigned w[2]; } o = { offset }, l = { len }; + return LSS_NAME(_fallocate)(fd, mode, o.w[0], o.w[1], l.w[0], l.w[1]); + } + #else + LSS_INLINE _syscall4(int, fallocate, + int, f, int, mode, loff_t, offset, loff_t, len) + #endif + #endif + #if defined(__x86_64__) || defined(__s390x__) LSS_INLINE int LSS_NAME(getresgid32)(gid_t *rgid, gid_t *egid, gid_t *sgid) { @@ -3199,15 +3620,6 @@ struct kernel_statfs { uid_t *suid) { return LSS_NAME(getresuid)(ruid, euid, suid); } - - /* Need to make sure __off64_t isn't truncated to 32-bits under x32. */ - LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, - int64_t o) { - LSS_BODY(6, void*, mmap, LSS_SYSCALL_ARG(s), LSS_SYSCALL_ARG(l), - LSS_SYSCALL_ARG(p), LSS_SYSCALL_ARG(f), - LSS_SYSCALL_ARG(d), (uint64_t)(o)); - } - LSS_INLINE _syscall4(int, newfstatat, int, d, const char *, p, struct kernel_stat*, b, int, f) @@ -3231,6 +3643,7 @@ struct kernel_statfs { LSS_INLINE int LSS_NAME(sigaction)(int signum, const struct kernel_sigaction *act, struct kernel_sigaction *oldact) { + #if defined(__x86_64__) /* On x86_64, the kernel requires us to always set our own * SA_RESTORER in order to be able to return from a signal handler. * This function must have a "magic" signature that the "gdb" @@ -3242,10 +3655,10 @@ struct kernel_statfs { a.sa_restorer = LSS_NAME(restore_rt)(); return LSS_NAME(rt_sigaction)(signum, &a, oldact, (KERNEL_NSIG+7)/8); - } else { + } else + #endif return LSS_NAME(rt_sigaction)(signum, act, oldact, (KERNEL_NSIG+7)/8); - } } LSS_INLINE int LSS_NAME(sigpending)(struct kernel_sigset_t *set) { @@ -3264,7 +3677,8 @@ struct kernel_statfs { #endif #if defined(__x86_64__) || defined(__ARM_ARCH_3__) || \ defined(__ARM_EABI__) || defined(__aarch64__) || \ - (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI32) + (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI32) || \ + defined(__s390__) LSS_INLINE _syscall4(pid_t, wait4, pid_t, p, int*, s, int, o, struct kernel_rusage*, r) @@ -3273,11 +3687,14 @@ struct kernel_statfs { return LSS_NAME(wait4)(pid, status, options, 0); } #endif - #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) + #if defined(__NR_openat) LSS_INLINE _syscall4(int, openat, int, d, const char *, p, int, f, int, m) + #endif + #if defined(__NR_unlinkat) LSS_INLINE _syscall3(int, unlinkat, int, d, const char *, p, int, f) #endif - #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) + #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ + (defined(__s390__) && !defined(__s390x__)) #define __NR__getresgid32 __NR_getresgid32 #define __NR__getresuid32 __NR_getresuid32 #define __NR__setfsgid32 __NR_setfsgid32 @@ -3431,9 +3848,11 @@ struct kernel_statfs { (1UL << ((signum - 1) % (8*sizeof(set->sig[0]))))); } } - #if defined(__i386__) || defined(__ARM_ARCH_3__) || \ - defined(__ARM_EABI__) || \ - (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || defined(__PPC__) + #if defined(__i386__) || \ + defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ + (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ + defined(__PPC__) || \ + (defined(__s390__) && !defined(__s390x__)) #define __NR__sigaction __NR_sigaction #define __NR__sigpending __NR_sigpending #define __NR__sigprocmask __NR_sigprocmask @@ -3444,13 +3863,23 @@ struct kernel_statfs { LSS_INLINE _syscall5(int, _llseek, uint, fd, unsigned long, hi, unsigned long, lo, loff_t *, res, uint, wh) -#if !defined(__ARM_EABI__) - LSS_INLINE _syscall1(void*, mmap, void*, a) -#endif - LSS_INLINE _syscall6(void*, mmap2, void*, s, +#if defined(__s390__) && !defined(__s390x__) + /* On s390, mmap2() arguments are passed in memory. */ + LSS_INLINE void* LSS_NAME(_mmap2)(void *s, size_t l, int p, int f, int d, + off_t o) { + unsigned long buf[6] = { (unsigned long) s, (unsigned long) l, + (unsigned long) p, (unsigned long) f, + (unsigned long) d, (unsigned long) o }; + LSS_REG(2, buf); + LSS_BODY(void*, mmap2, "0"(__r2)); + } +#else + #define __NR__mmap2 __NR_mmap2 + LSS_INLINE _syscall6(void*, _mmap2, void*, s, size_t, l, int, p, int, f, int, d, - off_t, o) + off_t, o) +#endif LSS_INLINE _syscall3(int, _sigaction, int, s, const struct kernel_old_sigaction*, a, struct kernel_old_sigaction*, o) @@ -3572,6 +4001,43 @@ struct kernel_statfs { return rc; } #endif + #if defined(__i386__) || \ + defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ + (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ + defined(__PPC__) || \ + (defined(__s390__) && !defined(__s390x__)) + /* On these architectures, implement mmap() with mmap2(). */ + LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, + int64_t o) { + if (o % 4096) { + LSS_ERRNO = EINVAL; + return (void *) -1; + } + return LSS_NAME(_mmap2)(s, l, p, f, d, (o / 4096)); + } + #elif defined(__s390x__) + /* On s390x, mmap() arguments are passed in memory. */ + LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, + int64_t o) { + unsigned long buf[6] = { (unsigned long) s, (unsigned long) l, + (unsigned long) p, (unsigned long) f, + (unsigned long) d, (unsigned long) o }; + LSS_REG(2, buf); + LSS_BODY(void*, mmap, "0"(__r2)); + } + #elif defined(__x86_64__) + /* Need to make sure __off64_t isn't truncated to 32-bits under x32. */ + LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, + int64_t o) { + LSS_BODY(6, void*, mmap, LSS_SYSCALL_ARG(s), LSS_SYSCALL_ARG(l), + LSS_SYSCALL_ARG(p), LSS_SYSCALL_ARG(f), + LSS_SYSCALL_ARG(d), (uint64_t)(o)); + } + #else + /* Remaining 64-bit architectures. */ + LSS_INLINE _syscall6(void*, mmap, void*, addr, size_t, length, int, prot, + int, flags, int, fd, int64_t, offset) + #endif #if defined(__PPC__) #undef LSS_SC_LOADARGS_0 #define LSS_SC_LOADARGS_0(dummy...) @@ -3675,7 +4141,8 @@ struct kernel_statfs { int*, sv) #endif #if defined(__i386__) || defined(__ARM_ARCH_3__) || \ - (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) + (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ + defined(__s390__) #define __NR__socketcall __NR_socketcall LSS_INLINE _syscall2(int, _socketcall, int, c, va_list, a) @@ -3719,7 +4186,7 @@ struct kernel_statfs { return LSS_NAME(socketcall)(8, d, type, protocol, sv); } #endif - #if defined(__i386__) || defined(__PPC__) + #if defined(__NR_fstatat64) LSS_INLINE _syscall4(int, fstatat64, int, d, const char *, p, struct kernel_stat64 *, b, int, f) @@ -3758,8 +4225,9 @@ struct kernel_statfs { #endif /* TODO(csilvers): see if ppc can/should support this as well */ #if defined(__i386__) || defined(__ARM_ARCH_3__) || \ - defined(__ARM_EABI__) || \ - (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64) + defined(__ARM_EABI__) || \ + (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64) || \ + (defined(__s390__) && !defined(__s390x__)) #define __NR__statfs64 __NR_statfs64 #define __NR__fstatfs64 __NR_fstatfs64 LSS_INLINE _syscall3(int, _statfs64, const char*, p, diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/COPYRIGHT b/toolkit/crashreporter/google-breakpad/src/third_party/musl/COPYRIGHT new file mode 100644 index 000000000000..f0ee3b78d879 --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/third_party/musl/COPYRIGHT @@ -0,0 +1,163 @@ +musl as a whole is licensed under the following standard MIT license: + +---------------------------------------------------------------------- +Copyright © 2005-2014 Rich Felker, et al. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +---------------------------------------------------------------------- + +Authors/contributors include: + +Alex Dowad +Alexander Monakov +Anthony G. Basile +Arvid Picciani +Bobby Bingham +Boris Brezillon +Brent Cook +Chris Spiegel +Clément Vasseur +Daniel Micay +Denys Vlasenko +Emil Renner Berthing +Felix Fietkau +Felix Janda +Gianluca Anzolin +Hauke Mehrtens +Hiltjo Posthuma +Isaac Dunham +Jaydeep Patil +Jens Gustedt +Jeremy Huntwork +Jo-Philipp Wich +Joakim Sindholt +John Spencer +Josiah Worcester +Justin Cormack +Khem Raj +Kylie McClain +Luca Barbato +Luka Perkov +M Farkas-Dyck (Strake) +Mahesh Bodapati +Michael Forney +Natanael Copa +Nicholas J. Kain +orc +Pascal Cuoq +Petr Hosek +Pierre Carrier +Rich Felker +Richard Pennington +Shiz +sin +Solar Designer +Stefan Kristiansson +Szabolcs Nagy +Timo Teräs +Trutz Behn +Valentin Ochs +William Haddon + +Portions of this software are derived from third-party works licensed +under terms compatible with the above MIT license: + +The TRE regular expression implementation (src/regex/reg* and +src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed +under a 2-clause BSD license (license text in the source files). The +included version has been heavily modified by Rich Felker in 2012, in +the interests of size, simplicity, and namespace cleanliness. + +Much of the math library code (src/math/* and src/complex/*) is +Copyright © 1993,2004 Sun Microsystems or +Copyright © 2003-2011 David Schultz or +Copyright © 2003-2009 Steven G. Kargl or +Copyright © 2003-2009 Bruce D. Evans or +Copyright © 2008 Stephen L. Moshier +and labelled as such in comments in the individual source files. All +have been licensed under extremely permissive terms. + +The ARM memcpy code (src/string/arm/memcpy_el.S) is Copyright © 2008 +The Android Open Source Project and is licensed under a two-clause BSD +license. It was taken from Bionic libc, used on Android. + +The implementation of DES for crypt (src/crypt/crypt_des.c) is +Copyright © 1994 David Burren. It is licensed under a BSD license. + +The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was +originally written by Solar Designer and placed into the public +domain. The code also comes with a fallback permissive license for use +in jurisdictions that may not recognize the public domain. + +The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011 +Valentin Ochs and is licensed under an MIT-style license. + +The BSD PRNG implementation (src/prng/random.c) and XSI search API +(src/search/*.c) functions are Copyright © 2011 Szabolcs Nagy and +licensed under following terms: "Permission to use, copy, modify, +and/or distribute this code for any purpose with or without fee is +hereby granted. There is no warranty." + +The x86_64 port was written by Nicholas J. Kain and is licensed under +the standard MIT terms. + +The mips and microblaze ports were originally written by Richard +Pennington for use in the ellcc project. The original code was adapted +by Rich Felker for build system and code conventions during upstream +integration. It is licensed under the standard MIT terms. + +The mips64 port was contributed by Imagination Technologies and is +licensed under the standard MIT terms. + +The powerpc port was also originally written by Richard Pennington, +and later supplemented and integrated by John Spencer. It is licensed +under the standard MIT terms. + +All other files which have no copyright comments are original works +produced specifically for use as part of this library, written either +by Rich Felker, the main author of the library, or by one or more +contibutors listed above. Details on authorship of individual files +can be found in the git version control history of the project. The +omission of copyright and license comments in each file is in the +interest of source tree size. + +In addition, permission is hereby granted for all public header files +(include/* and arch/*/bits/*) and crt files intended to be linked into +applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit +the copyright notice and permission notice otherwise required by the +license, and to use these files without any requirement of +attribution. These files include substantial contributions from: + +Bobby Bingham +John Spencer +Nicholas J. Kain +Rich Felker +Richard Pennington +Stefan Kristiansson +Szabolcs Nagy + +all of whom have explicitly granted such permission. + +This file previously contained text expressing a belief that most of +the files covered by the above exception were sufficiently trivial not +to be subject to copyright, resulting in confusion over whether it +negated the permissions granted in the license. In the spirit of +permissive licensing, and of not having licensing issues being an +obstacle to adoption, that text has been removed. diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/README b/toolkit/crashreporter/google-breakpad/src/third_party/musl/README new file mode 100644 index 000000000000..a30eb112750c --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/third_party/musl/README @@ -0,0 +1,23 @@ + + musl libc + +musl, pronounced like the word "mussel", is an MIT-licensed +implementation of the standard C library targetting the Linux syscall +API, suitable for use in a wide range of deployment environments. musl +offers efficient static and dynamic linking support, lightweight code +and low runtime overhead, strong fail-safe guarantees under correct +usage, and correctness in the sense of standards conformance and +safety. musl is built on the principle that these goals are best +achieved through simple code that is easy to understand and maintain. + +The 1.1 release series for musl features coverage for all interfaces +defined in ISO C99 and POSIX 2008 base, along with a number of +non-standardized interfaces for compatibility with Linux, BSD, and +glibc functionality. + +For basic installation instructions, see the included INSTALL file. +Information on full musl-targeted compiler toolchains, system +bootstrapping, and Linux distributions built on musl can be found on +the project website: + + http://www.musl-libc.org/ diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/README.breakpad b/toolkit/crashreporter/google-breakpad/src/third_party/musl/README.breakpad new file mode 100644 index 000000000000..f500c4359ec7 --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/third_party/musl/README.breakpad @@ -0,0 +1,3 @@ +This directory contains the elf header from +https://git.musl-libc.org/cgit/musl/tree/ +that is required to get ELF working in dump_syms on Mac OS X. diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/VERSION b/toolkit/crashreporter/google-breakpad/src/third_party/musl/VERSION new file mode 100644 index 000000000000..e9bc14996e26 --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/third_party/musl/VERSION @@ -0,0 +1 @@ +1.1.14 diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/include/elf.h b/toolkit/crashreporter/google-breakpad/src/third_party/musl/include/elf.h new file mode 100644 index 000000000000..8b3cd3ed3f2d --- /dev/null +++ b/toolkit/crashreporter/google-breakpad/src/third_party/musl/include/elf.h @@ -0,0 +1,2827 @@ +#ifndef _ELF_H +#define _ELF_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef uint16_t Elf32_Half; +typedef uint16_t Elf64_Half; + +typedef uint32_t Elf32_Word; +typedef int32_t Elf32_Sword; +typedef uint32_t Elf64_Word; +typedef int32_t Elf64_Sword; + +typedef uint64_t Elf32_Xword; +typedef int64_t Elf32_Sxword; +typedef uint64_t Elf64_Xword; +typedef int64_t Elf64_Sxword; + +typedef uint32_t Elf32_Addr; +typedef uint64_t Elf64_Addr; + +typedef uint32_t Elf32_Off; +typedef uint64_t Elf64_Off; + +typedef uint16_t Elf32_Section; +typedef uint16_t Elf64_Section; + +typedef Elf32_Half Elf32_Versym; +typedef Elf64_Half Elf64_Versym; + +#define EI_NIDENT (16) + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; +} Elf32_Ehdr; + +typedef struct { + unsigned char e_ident[EI_NIDENT]; + Elf64_Half e_type; + Elf64_Half e_machine; + Elf64_Word e_version; + Elf64_Addr e_entry; + Elf64_Off e_phoff; + Elf64_Off e_shoff; + Elf64_Word e_flags; + Elf64_Half e_ehsize; + Elf64_Half e_phentsize; + Elf64_Half e_phnum; + Elf64_Half e_shentsize; + Elf64_Half e_shnum; + Elf64_Half e_shstrndx; +} Elf64_Ehdr; + +#define EI_MAG0 0 +#define ELFMAG0 0x7f + +#define EI_MAG1 1 +#define ELFMAG1 'E' + +#define EI_MAG2 2 +#define ELFMAG2 'L' + +#define EI_MAG3 3 +#define ELFMAG3 'F' + + +#define ELFMAG "\177ELF" +#define SELFMAG 4 + +#define EI_CLASS 4 +#define ELFCLASSNONE 0 +#define ELFCLASS32 1 +#define ELFCLASS64 2 +#define ELFCLASSNUM 3 + +#define EI_DATA 5 +#define ELFDATANONE 0 +#define ELFDATA2LSB 1 +#define ELFDATA2MSB 2 +#define ELFDATANUM 3 + +#define EI_VERSION 6 + + +#define EI_OSABI 7 +#define ELFOSABI_NONE 0 +#define ELFOSABI_SYSV 0 +#define ELFOSABI_HPUX 1 +#define ELFOSABI_NETBSD 2 +#define ELFOSABI_LINUX 3 +#define ELFOSABI_GNU 3 +#define ELFOSABI_SOLARIS 6 +#define ELFOSABI_AIX 7 +#define ELFOSABI_IRIX 8 +#define ELFOSABI_FREEBSD 9 +#define ELFOSABI_TRU64 10 +#define ELFOSABI_MODESTO 11 +#define ELFOSABI_OPENBSD 12 +#define ELFOSABI_ARM 97 +#define ELFOSABI_STANDALONE 255 + +#define EI_ABIVERSION 8 + +#define EI_PAD 9 + + + +#define ET_NONE 0 +#define ET_REL 1 +#define ET_EXEC 2 +#define ET_DYN 3 +#define ET_CORE 4 +#define ET_NUM 5 +#define ET_LOOS 0xfe00 +#define ET_HIOS 0xfeff +#define ET_LOPROC 0xff00 +#define ET_HIPROC 0xffff + + + +#define EM_NONE 0 +#define EM_M32 1 +#define EM_SPARC 2 +#define EM_386 3 +#define EM_68K 4 +#define EM_88K 5 +#define EM_860 7 +#define EM_MIPS 8 +#define EM_S370 9 +#define EM_MIPS_RS3_LE 10 + +#define EM_PARISC 15 +#define EM_VPP500 17 +#define EM_SPARC32PLUS 18 +#define EM_960 19 +#define EM_PPC 20 +#define EM_PPC64 21 +#define EM_S390 22 + +#define EM_V800 36 +#define EM_FR20 37 +#define EM_RH32 38 +#define EM_RCE 39 +#define EM_ARM 40 +#define EM_FAKE_ALPHA 41 +#define EM_SH 42 +#define EM_SPARCV9 43 +#define EM_TRICORE 44 +#define EM_ARC 45 +#define EM_H8_300 46 +#define EM_H8_300H 47 +#define EM_H8S 48 +#define EM_H8_500 49 +#define EM_IA_64 50 +#define EM_MIPS_X 51 +#define EM_COLDFIRE 52 +#define EM_68HC12 53 +#define EM_MMA 54 +#define EM_PCP 55 +#define EM_NCPU 56 +#define EM_NDR1 57 +#define EM_STARCORE 58 +#define EM_ME16 59 +#define EM_ST100 60 +#define EM_TINYJ 61 +#define EM_X86_64 62 +#define EM_PDSP 63 + +#define EM_FX66 66 +#define EM_ST9PLUS 67 +#define EM_ST7 68 +#define EM_68HC16 69 +#define EM_68HC11 70 +#define EM_68HC08 71 +#define EM_68HC05 72 +#define EM_SVX 73 +#define EM_ST19 74 +#define EM_VAX 75 +#define EM_CRIS 76 +#define EM_JAVELIN 77 +#define EM_FIREPATH 78 +#define EM_ZSP 79 +#define EM_MMIX 80 +#define EM_HUANY 81 +#define EM_PRISM 82 +#define EM_AVR 83 +#define EM_FR30 84 +#define EM_D10V 85 +#define EM_D30V 86 +#define EM_V850 87 +#define EM_M32R 88 +#define EM_MN10300 89 +#define EM_MN10200 90 +#define EM_PJ 91 +#define EM_OR1K 92 +#define EM_ARC_A5 93 +#define EM_XTENSA 94 +#define EM_AARCH64 183 +#define EM_TILEPRO 188 +#define EM_MICROBLAZE 189 +#define EM_TILEGX 191 +#define EM_NUM 192 +#define EM_ALPHA 0x9026 + +#define EV_NONE 0 +#define EV_CURRENT 1 +#define EV_NUM 2 + +typedef struct { + Elf32_Word sh_name; + Elf32_Word sh_type; + Elf32_Word sh_flags; + Elf32_Addr sh_addr; + Elf32_Off sh_offset; + Elf32_Word sh_size; + Elf32_Word sh_link; + Elf32_Word sh_info; + Elf32_Word sh_addralign; + Elf32_Word sh_entsize; +} Elf32_Shdr; + +typedef struct { + Elf64_Word sh_name; + Elf64_Word sh_type; + Elf64_Xword sh_flags; + Elf64_Addr sh_addr; + Elf64_Off sh_offset; + Elf64_Xword sh_size; + Elf64_Word sh_link; + Elf64_Word sh_info; + Elf64_Xword sh_addralign; + Elf64_Xword sh_entsize; +} Elf64_Shdr; + + + +#define SHN_UNDEF 0 +#define SHN_LORESERVE 0xff00 +#define SHN_LOPROC 0xff00 +#define SHN_BEFORE 0xff00 + +#define SHN_AFTER 0xff01 + +#define SHN_HIPROC 0xff1f +#define SHN_LOOS 0xff20 +#define SHN_HIOS 0xff3f +#define SHN_ABS 0xfff1 +#define SHN_COMMON 0xfff2 +#define SHN_XINDEX 0xffff +#define SHN_HIRESERVE 0xffff + + + +#define SHT_NULL 0 +#define SHT_PROGBITS 1 +#define SHT_SYMTAB 2 +#define SHT_STRTAB 3 +#define SHT_RELA 4 +#define SHT_HASH 5 +#define SHT_DYNAMIC 6 +#define SHT_NOTE 7 +#define SHT_NOBITS 8 +#define SHT_REL 9 +#define SHT_SHLIB 10 +#define SHT_DYNSYM 11 +#define SHT_INIT_ARRAY 14 +#define SHT_FINI_ARRAY 15 +#define SHT_PREINIT_ARRAY 16 +#define SHT_GROUP 17 +#define SHT_SYMTAB_SHNDX 18 +#define SHT_NUM 19 +#define SHT_LOOS 0x60000000 +#define SHT_GNU_ATTRIBUTES 0x6ffffff5 +#define SHT_GNU_HASH 0x6ffffff6 +#define SHT_GNU_LIBLIST 0x6ffffff7 +#define SHT_CHECKSUM 0x6ffffff8 +#define SHT_LOSUNW 0x6ffffffa +#define SHT_SUNW_move 0x6ffffffa +#define SHT_SUNW_COMDAT 0x6ffffffb +#define SHT_SUNW_syminfo 0x6ffffffc +#define SHT_GNU_verdef 0x6ffffffd +#define SHT_GNU_verneed 0x6ffffffe +#define SHT_GNU_versym 0x6fffffff +#define SHT_HISUNW 0x6fffffff +#define SHT_HIOS 0x6fffffff +#define SHT_LOPROC 0x70000000 +#define SHT_HIPROC 0x7fffffff +#define SHT_LOUSER 0x80000000 +#define SHT_HIUSER 0x8fffffff + +#define SHF_WRITE (1 << 0) +#define SHF_ALLOC (1 << 1) +#define SHF_EXECINSTR (1 << 2) +#define SHF_MERGE (1 << 4) +#define SHF_STRINGS (1 << 5) +#define SHF_INFO_LINK (1 << 6) +#define SHF_LINK_ORDER (1 << 7) +#define SHF_OS_NONCONFORMING (1 << 8) + +#define SHF_GROUP (1 << 9) +#define SHF_TLS (1 << 10) +#define SHF_MASKOS 0x0ff00000 +#define SHF_MASKPROC 0xf0000000 +#define SHF_ORDERED (1 << 30) +#define SHF_EXCLUDE (1U << 31) + +#define GRP_COMDAT 0x1 + +typedef struct { + Elf32_Word st_name; + Elf32_Addr st_value; + Elf32_Word st_size; + unsigned char st_info; + unsigned char st_other; + Elf32_Section st_shndx; +} Elf32_Sym; + +typedef struct { + Elf64_Word st_name; + unsigned char st_info; + unsigned char st_other; + Elf64_Section st_shndx; + Elf64_Addr st_value; + Elf64_Xword st_size; +} Elf64_Sym; + +typedef struct { + Elf32_Half si_boundto; + Elf32_Half si_flags; +} Elf32_Syminfo; + +typedef struct { + Elf64_Half si_boundto; + Elf64_Half si_flags; +} Elf64_Syminfo; + +#define SYMINFO_BT_SELF 0xffff +#define SYMINFO_BT_PARENT 0xfffe +#define SYMINFO_BT_LOWRESERVE 0xff00 + +#define SYMINFO_FLG_DIRECT 0x0001 +#define SYMINFO_FLG_PASSTHRU 0x0002 +#define SYMINFO_FLG_COPY 0x0004 +#define SYMINFO_FLG_LAZYLOAD 0x0008 + +#define SYMINFO_NONE 0 +#define SYMINFO_CURRENT 1 +#define SYMINFO_NUM 2 + +#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) +#define ELF32_ST_TYPE(val) ((val) & 0xf) +#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) + +#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) +#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) +#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) + +#define STB_LOCAL 0 +#define STB_GLOBAL 1 +#define STB_WEAK 2 +#define STB_NUM 3 +#define STB_LOOS 10 +#define STB_GNU_UNIQUE 10 +#define STB_HIOS 12 +#define STB_LOPROC 13 +#define STB_HIPROC 15 + +#define STT_NOTYPE 0 +#define STT_OBJECT 1 +#define STT_FUNC 2 +#define STT_SECTION 3 +#define STT_FILE 4 +#define STT_COMMON 5 +#define STT_TLS 6 +#define STT_NUM 7 +#define STT_LOOS 10 +#define STT_GNU_IFUNC 10 +#define STT_HIOS 12 +#define STT_LOPROC 13 +#define STT_HIPROC 15 + +#define STN_UNDEF 0 + +#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) +#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) + +#define STV_DEFAULT 0 +#define STV_INTERNAL 1 +#define STV_HIDDEN 2 +#define STV_PROTECTED 3 + + + + +typedef struct +{ + Elf32_Addr r_offset; + Elf32_Word r_info; +} Elf32_Rel; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; +} Elf64_Rel; + + + +typedef struct { + Elf32_Addr r_offset; + Elf32_Word r_info; + Elf32_Sword r_addend; +} Elf32_Rela; + +typedef struct { + Elf64_Addr r_offset; + Elf64_Xword r_info; + Elf64_Sxword r_addend; +} Elf64_Rela; + + + +#define ELF32_R_SYM(val) ((val) >> 8) +#define ELF32_R_TYPE(val) ((val) & 0xff) +#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) + +#define ELF64_R_SYM(i) ((i) >> 32) +#define ELF64_R_TYPE(i) ((i) & 0xffffffff) +#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) + + + +typedef struct { + Elf32_Word p_type; + Elf32_Off p_offset; + Elf32_Addr p_vaddr; + Elf32_Addr p_paddr; + Elf32_Word p_filesz; + Elf32_Word p_memsz; + Elf32_Word p_flags; + Elf32_Word p_align; +} Elf32_Phdr; + +typedef struct { + Elf64_Word p_type; + Elf64_Word p_flags; + Elf64_Off p_offset; + Elf64_Addr p_vaddr; + Elf64_Addr p_paddr; + Elf64_Xword p_filesz; + Elf64_Xword p_memsz; + Elf64_Xword p_align; +} Elf64_Phdr; + + + +#define PT_NULL 0 +#define PT_LOAD 1 +#define PT_DYNAMIC 2 +#define PT_INTERP 3 +#define PT_NOTE 4 +#define PT_SHLIB 5 +#define PT_PHDR 6 +#define PT_TLS 7 +#define PT_NUM 8 +#define PT_LOOS 0x60000000 +#define PT_GNU_EH_FRAME 0x6474e550 +#define PT_GNU_STACK 0x6474e551 +#define PT_GNU_RELRO 0x6474e552 +#define PT_LOSUNW 0x6ffffffa +#define PT_SUNWBSS 0x6ffffffa +#define PT_SUNWSTACK 0x6ffffffb +#define PT_HISUNW 0x6fffffff +#define PT_HIOS 0x6fffffff +#define PT_LOPROC 0x70000000 +#define PT_HIPROC 0x7fffffff + + +#define PN_XNUM 0xffff + + +#define PF_X (1 << 0) +#define PF_W (1 << 1) +#define PF_R (1 << 2) +#define PF_MASKOS 0x0ff00000 +#define PF_MASKPROC 0xf0000000 + + + +#define NT_PRSTATUS 1 +#define NT_FPREGSET 2 +#define NT_PRPSINFO 3 +#define NT_PRXREG 4 +#define NT_TASKSTRUCT 4 +#define NT_PLATFORM 5 +#define NT_AUXV 6 +#define NT_GWINDOWS 7 +#define NT_ASRS 8 +#define NT_PSTATUS 10 +#define NT_PSINFO 13 +#define NT_PRCRED 14 +#define NT_UTSNAME 15 +#define NT_LWPSTATUS 16 +#define NT_LWPSINFO 17 +#define NT_PRFPXREG 20 +#define NT_SIGINFO 0x53494749 +#define NT_FILE 0x46494c45 +#define NT_PRXFPREG 0x46e62b7f +#define NT_PPC_VMX 0x100 +#define NT_PPC_SPE 0x101 +#define NT_PPC_VSX 0x102 +#define NT_386_TLS 0x200 +#define NT_386_IOPERM 0x201 +#define NT_X86_XSTATE 0x202 +#define NT_S390_HIGH_GPRS 0x300 +#define NT_S390_TIMER 0x301 +#define NT_S390_TODCMP 0x302 +#define NT_S390_TODPREG 0x303 +#define NT_S390_CTRS 0x304 +#define NT_S390_PREFIX 0x305 +#define NT_S390_LAST_BREAK 0x306 +#define NT_S390_SYSTEM_CALL 0x307 +#define NT_S390_TDB 0x308 +#define NT_ARM_VFP 0x400 +#define NT_ARM_TLS 0x401 +#define NT_ARM_HW_BREAK 0x402 +#define NT_ARM_HW_WATCH 0x403 +#define NT_METAG_CBUF 0x500 +#define NT_METAG_RPIPE 0x501 +#define NT_METAG_TLS 0x502 +#define NT_VERSION 1 + + + + +typedef struct { + Elf32_Sword d_tag; + union { + Elf32_Word d_val; + Elf32_Addr d_ptr; + } d_un; +} Elf32_Dyn; + +typedef struct { + Elf64_Sxword d_tag; + union { + Elf64_Xword d_val; + Elf64_Addr d_ptr; + } d_un; +} Elf64_Dyn; + + + +#define DT_NULL 0 +#define DT_NEEDED 1 +#define DT_PLTRELSZ 2 +#define DT_PLTGOT 3 +#define DT_HASH 4 +#define DT_STRTAB 5 +#define DT_SYMTAB 6 +#define DT_RELA 7 +#define DT_RELASZ 8 +#define DT_RELAENT 9 +#define DT_STRSZ 10 +#define DT_SYMENT 11 +#define DT_INIT 12 +#define DT_FINI 13 +#define DT_SONAME 14 +#define DT_RPATH 15 +#define DT_SYMBOLIC 16 +#define DT_REL 17 +#define DT_RELSZ 18 +#define DT_RELENT 19 +#define DT_PLTREL 20 +#define DT_DEBUG 21 +#define DT_TEXTREL 22 +#define DT_JMPREL 23 +#define DT_BIND_NOW 24 +#define DT_INIT_ARRAY 25 +#define DT_FINI_ARRAY 26 +#define DT_INIT_ARRAYSZ 27 +#define DT_FINI_ARRAYSZ 28 +#define DT_RUNPATH 29 +#define DT_FLAGS 30 +#define DT_ENCODING 32 +#define DT_PREINIT_ARRAY 32 +#define DT_PREINIT_ARRAYSZ 33 +#define DT_NUM 34 +#define DT_LOOS 0x6000000d +#define DT_HIOS 0x6ffff000 +#define DT_LOPROC 0x70000000 +#define DT_HIPROC 0x7fffffff +#define DT_PROCNUM DT_MIPS_NUM + +#define DT_VALRNGLO 0x6ffffd00 +#define DT_GNU_PRELINKED 0x6ffffdf5 +#define DT_GNU_CONFLICTSZ 0x6ffffdf6 +#define DT_GNU_LIBLISTSZ 0x6ffffdf7 +#define DT_CHECKSUM 0x6ffffdf8 +#define DT_PLTPADSZ 0x6ffffdf9 +#define DT_MOVEENT 0x6ffffdfa +#define DT_MOVESZ 0x6ffffdfb +#define DT_FEATURE_1 0x6ffffdfc +#define DT_POSFLAG_1 0x6ffffdfd + +#define DT_SYMINSZ 0x6ffffdfe +#define DT_SYMINENT 0x6ffffdff +#define DT_VALRNGHI 0x6ffffdff +#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) +#define DT_VALNUM 12 + +#define DT_ADDRRNGLO 0x6ffffe00 +#define DT_GNU_HASH 0x6ffffef5 +#define DT_TLSDESC_PLT 0x6ffffef6 +#define DT_TLSDESC_GOT 0x6ffffef7 +#define DT_GNU_CONFLICT 0x6ffffef8 +#define DT_GNU_LIBLIST 0x6ffffef9 +#define DT_CONFIG 0x6ffffefa +#define DT_DEPAUDIT 0x6ffffefb +#define DT_AUDIT 0x6ffffefc +#define DT_PLTPAD 0x6ffffefd +#define DT_MOVETAB 0x6ffffefe +#define DT_SYMINFO 0x6ffffeff +#define DT_ADDRRNGHI 0x6ffffeff +#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) +#define DT_ADDRNUM 11 + + + +#define DT_VERSYM 0x6ffffff0 + +#define DT_RELACOUNT 0x6ffffff9 +#define DT_RELCOUNT 0x6ffffffa + + +#define DT_FLAGS_1 0x6ffffffb +#define DT_VERDEF 0x6ffffffc + +#define DT_VERDEFNUM 0x6ffffffd +#define DT_VERNEED 0x6ffffffe + +#define DT_VERNEEDNUM 0x6fffffff +#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) +#define DT_VERSIONTAGNUM 16 + + + +#define DT_AUXILIARY 0x7ffffffd +#define DT_FILTER 0x7fffffff +#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) +#define DT_EXTRANUM 3 + + +#define DF_ORIGIN 0x00000001 +#define DF_SYMBOLIC 0x00000002 +#define DF_TEXTREL 0x00000004 +#define DF_BIND_NOW 0x00000008 +#define DF_STATIC_TLS 0x00000010 + + + +#define DF_1_NOW 0x00000001 +#define DF_1_GLOBAL 0x00000002 +#define DF_1_GROUP 0x00000004 +#define DF_1_NODELETE 0x00000008 +#define DF_1_LOADFLTR 0x00000010 +#define DF_1_INITFIRST 0x00000020 +#define DF_1_NOOPEN 0x00000040 +#define DF_1_ORIGIN 0x00000080 +#define DF_1_DIRECT 0x00000100 +#define DF_1_TRANS 0x00000200 +#define DF_1_INTERPOSE 0x00000400 +#define DF_1_NODEFLIB 0x00000800 +#define DF_1_NODUMP 0x00001000 +#define DF_1_CONFALT 0x00002000 +#define DF_1_ENDFILTEE 0x00004000 +#define DF_1_DISPRELDNE 0x00008000 +#define DF_1_DISPRELPND 0x00010000 +#define DF_1_NODIRECT 0x00020000 +#define DF_1_IGNMULDEF 0x00040000 +#define DF_1_NOKSYMS 0x00080000 +#define DF_1_NOHDR 0x00100000 +#define DF_1_EDITED 0x00200000 +#define DF_1_NORELOC 0x00400000 +#define DF_1_SYMINTPOSE 0x00800000 +#define DF_1_GLOBAUDIT 0x01000000 +#define DF_1_SINGLETON 0x02000000 + +#define DTF_1_PARINIT 0x00000001 +#define DTF_1_CONFEXP 0x00000002 + + +#define DF_P1_LAZYLOAD 0x00000001 +#define DF_P1_GROUPPERM 0x00000002 + + + + +typedef struct { + Elf32_Half vd_version; + Elf32_Half vd_flags; + Elf32_Half vd_ndx; + Elf32_Half vd_cnt; + Elf32_Word vd_hash; + Elf32_Word vd_aux; + Elf32_Word vd_next; +} Elf32_Verdef; + +typedef struct { + Elf64_Half vd_version; + Elf64_Half vd_flags; + Elf64_Half vd_ndx; + Elf64_Half vd_cnt; + Elf64_Word vd_hash; + Elf64_Word vd_aux; + Elf64_Word vd_next; +} Elf64_Verdef; + + + +#define VER_DEF_NONE 0 +#define VER_DEF_CURRENT 1 +#define VER_DEF_NUM 2 + + +#define VER_FLG_BASE 0x1 +#define VER_FLG_WEAK 0x2 + + +#define VER_NDX_LOCAL 0 +#define VER_NDX_GLOBAL 1 +#define VER_NDX_LORESERVE 0xff00 +#define VER_NDX_ELIMINATE 0xff01 + + + +typedef struct { + Elf32_Word vda_name; + Elf32_Word vda_next; +} Elf32_Verdaux; + +typedef struct { + Elf64_Word vda_name; + Elf64_Word vda_next; +} Elf64_Verdaux; + + + + +typedef struct { + Elf32_Half vn_version; + Elf32_Half vn_cnt; + Elf32_Word vn_file; + Elf32_Word vn_aux; + Elf32_Word vn_next; +} Elf32_Verneed; + +typedef struct { + Elf64_Half vn_version; + Elf64_Half vn_cnt; + Elf64_Word vn_file; + Elf64_Word vn_aux; + Elf64_Word vn_next; +} Elf64_Verneed; + + + +#define VER_NEED_NONE 0 +#define VER_NEED_CURRENT 1 +#define VER_NEED_NUM 2 + + + +typedef struct { + Elf32_Word vna_hash; + Elf32_Half vna_flags; + Elf32_Half vna_other; + Elf32_Word vna_name; + Elf32_Word vna_next; +} Elf32_Vernaux; + +typedef struct { + Elf64_Word vna_hash; + Elf64_Half vna_flags; + Elf64_Half vna_other; + Elf64_Word vna_name; + Elf64_Word vna_next; +} Elf64_Vernaux; + + + +#define VER_FLG_WEAK 0x2 + + + +typedef struct { + uint32_t a_type; + union { + uint32_t a_val; + } a_un; +} Elf32_auxv_t; + +typedef struct { + uint64_t a_type; + union { + uint64_t a_val; + } a_un; +} Elf64_auxv_t; + + + +#define AT_NULL 0 +#define AT_IGNORE 1 +#define AT_EXECFD 2 +#define AT_PHDR 3 +#define AT_PHENT 4 +#define AT_PHNUM 5 +#define AT_PAGESZ 6 +#define AT_BASE 7 +#define AT_FLAGS 8 +#define AT_ENTRY 9 +#define AT_NOTELF 10 +#define AT_UID 11 +#define AT_EUID 12 +#define AT_GID 13 +#define AT_EGID 14 +#define AT_CLKTCK 17 + + +#define AT_PLATFORM 15 +#define AT_HWCAP 16 + + + + +#define AT_FPUCW 18 + + +#define AT_DCACHEBSIZE 19 +#define AT_ICACHEBSIZE 20 +#define AT_UCACHEBSIZE 21 + + + +#define AT_IGNOREPPC 22 + +#define AT_SECURE 23 + +#define AT_BASE_PLATFORM 24 + +#define AT_RANDOM 25 + +#define AT_HWCAP2 26 + +#define AT_EXECFN 31 + + + +#define AT_SYSINFO 32 +#define AT_SYSINFO_EHDR 33 + + + +#define AT_L1I_CACHESHAPE 34 +#define AT_L1D_CACHESHAPE 35 +#define AT_L2_CACHESHAPE 36 +#define AT_L3_CACHESHAPE 37 + + + + +typedef struct { + Elf32_Word n_namesz; + Elf32_Word n_descsz; + Elf32_Word n_type; +} Elf32_Nhdr; + +typedef struct { + Elf64_Word n_namesz; + Elf64_Word n_descsz; + Elf64_Word n_type; +} Elf64_Nhdr; + + + + +#define ELF_NOTE_SOLARIS "SUNW Solaris" + + +#define ELF_NOTE_GNU "GNU" + + + + + +#define ELF_NOTE_PAGESIZE_HINT 1 + + +#define NT_GNU_ABI_TAG 1 +#define ELF_NOTE_ABI NT_GNU_ABI_TAG + + + +#define ELF_NOTE_OS_LINUX 0 +#define ELF_NOTE_OS_GNU 1 +#define ELF_NOTE_OS_SOLARIS2 2 +#define ELF_NOTE_OS_FREEBSD 3 + +#define NT_GNU_BUILD_ID 3 +#define NT_GNU_GOLD_VERSION 4 + + + +typedef struct { + Elf32_Xword m_value; + Elf32_Word m_info; + Elf32_Word m_poffset; + Elf32_Half m_repeat; + Elf32_Half m_stride; +} Elf32_Move; + +typedef struct { + Elf64_Xword m_value; + Elf64_Xword m_info; + Elf64_Xword m_poffset; + Elf64_Half m_repeat; + Elf64_Half m_stride; +} Elf64_Move; + + +#define ELF32_M_SYM(info) ((info) >> 8) +#define ELF32_M_SIZE(info) ((unsigned char) (info)) +#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) + +#define ELF64_M_SYM(info) ELF32_M_SYM (info) +#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) +#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) + +#define EF_CPU32 0x00810000 + +#define R_68K_NONE 0 +#define R_68K_32 1 +#define R_68K_16 2 +#define R_68K_8 3 +#define R_68K_PC32 4 +#define R_68K_PC16 5 +#define R_68K_PC8 6 +#define R_68K_GOT32 7 +#define R_68K_GOT16 8 +#define R_68K_GOT8 9 +#define R_68K_GOT32O 10 +#define R_68K_GOT16O 11 +#define R_68K_GOT8O 12 +#define R_68K_PLT32 13 +#define R_68K_PLT16 14 +#define R_68K_PLT8 15 +#define R_68K_PLT32O 16 +#define R_68K_PLT16O 17 +#define R_68K_PLT8O 18 +#define R_68K_COPY 19 +#define R_68K_GLOB_DAT 20 +#define R_68K_JMP_SLOT 21 +#define R_68K_RELATIVE 22 +#define R_68K_NUM 23 + +#define R_386_NONE 0 +#define R_386_32 1 +#define R_386_PC32 2 +#define R_386_GOT32 3 +#define R_386_PLT32 4 +#define R_386_COPY 5 +#define R_386_GLOB_DAT 6 +#define R_386_JMP_SLOT 7 +#define R_386_RELATIVE 8 +#define R_386_GOTOFF 9 +#define R_386_GOTPC 10 +#define R_386_32PLT 11 +#define R_386_TLS_TPOFF 14 +#define R_386_TLS_IE 15 +#define R_386_TLS_GOTIE 16 +#define R_386_TLS_LE 17 +#define R_386_TLS_GD 18 +#define R_386_TLS_LDM 19 +#define R_386_16 20 +#define R_386_PC16 21 +#define R_386_8 22 +#define R_386_PC8 23 +#define R_386_TLS_GD_32 24 +#define R_386_TLS_GD_PUSH 25 +#define R_386_TLS_GD_CALL 26 +#define R_386_TLS_GD_POP 27 +#define R_386_TLS_LDM_32 28 +#define R_386_TLS_LDM_PUSH 29 +#define R_386_TLS_LDM_CALL 30 +#define R_386_TLS_LDM_POP 31 +#define R_386_TLS_LDO_32 32 +#define R_386_TLS_IE_32 33 +#define R_386_TLS_LE_32 34 +#define R_386_TLS_DTPMOD32 35 +#define R_386_TLS_DTPOFF32 36 +#define R_386_TLS_TPOFF32 37 +#define R_386_SIZE32 38 +#define R_386_TLS_GOTDESC 39 +#define R_386_TLS_DESC_CALL 40 +#define R_386_TLS_DESC 41 +#define R_386_IRELATIVE 42 +#define R_386_NUM 43 + + + + + +#define STT_SPARC_REGISTER 13 + + + +#define EF_SPARCV9_MM 3 +#define EF_SPARCV9_TSO 0 +#define EF_SPARCV9_PSO 1 +#define EF_SPARCV9_RMO 2 +#define EF_SPARC_LEDATA 0x800000 +#define EF_SPARC_EXT_MASK 0xFFFF00 +#define EF_SPARC_32PLUS 0x000100 +#define EF_SPARC_SUN_US1 0x000200 +#define EF_SPARC_HAL_R1 0x000400 +#define EF_SPARC_SUN_US3 0x000800 + + + +#define R_SPARC_NONE 0 +#define R_SPARC_8 1 +#define R_SPARC_16 2 +#define R_SPARC_32 3 +#define R_SPARC_DISP8 4 +#define R_SPARC_DISP16 5 +#define R_SPARC_DISP32 6 +#define R_SPARC_WDISP30 7 +#define R_SPARC_WDISP22 8 +#define R_SPARC_HI22 9 +#define R_SPARC_22 10 +#define R_SPARC_13 11 +#define R_SPARC_LO10 12 +#define R_SPARC_GOT10 13 +#define R_SPARC_GOT13 14 +#define R_SPARC_GOT22 15 +#define R_SPARC_PC10 16 +#define R_SPARC_PC22 17 +#define R_SPARC_WPLT30 18 +#define R_SPARC_COPY 19 +#define R_SPARC_GLOB_DAT 20 +#define R_SPARC_JMP_SLOT 21 +#define R_SPARC_RELATIVE 22 +#define R_SPARC_UA32 23 + + + +#define R_SPARC_PLT32 24 +#define R_SPARC_HIPLT22 25 +#define R_SPARC_LOPLT10 26 +#define R_SPARC_PCPLT32 27 +#define R_SPARC_PCPLT22 28 +#define R_SPARC_PCPLT10 29 +#define R_SPARC_10 30 +#define R_SPARC_11 31 +#define R_SPARC_64 32 +#define R_SPARC_OLO10 33 +#define R_SPARC_HH22 34 +#define R_SPARC_HM10 35 +#define R_SPARC_LM22 36 +#define R_SPARC_PC_HH22 37 +#define R_SPARC_PC_HM10 38 +#define R_SPARC_PC_LM22 39 +#define R_SPARC_WDISP16 40 +#define R_SPARC_WDISP19 41 +#define R_SPARC_GLOB_JMP 42 +#define R_SPARC_7 43 +#define R_SPARC_5 44 +#define R_SPARC_6 45 +#define R_SPARC_DISP64 46 +#define R_SPARC_PLT64 47 +#define R_SPARC_HIX22 48 +#define R_SPARC_LOX10 49 +#define R_SPARC_H44 50 +#define R_SPARC_M44 51 +#define R_SPARC_L44 52 +#define R_SPARC_REGISTER 53 +#define R_SPARC_UA64 54 +#define R_SPARC_UA16 55 +#define R_SPARC_TLS_GD_HI22 56 +#define R_SPARC_TLS_GD_LO10 57 +#define R_SPARC_TLS_GD_ADD 58 +#define R_SPARC_TLS_GD_CALL 59 +#define R_SPARC_TLS_LDM_HI22 60 +#define R_SPARC_TLS_LDM_LO10 61 +#define R_SPARC_TLS_LDM_ADD 62 +#define R_SPARC_TLS_LDM_CALL 63 +#define R_SPARC_TLS_LDO_HIX22 64 +#define R_SPARC_TLS_LDO_LOX10 65 +#define R_SPARC_TLS_LDO_ADD 66 +#define R_SPARC_TLS_IE_HI22 67 +#define R_SPARC_TLS_IE_LO10 68 +#define R_SPARC_TLS_IE_LD 69 +#define R_SPARC_TLS_IE_LDX 70 +#define R_SPARC_TLS_IE_ADD 71 +#define R_SPARC_TLS_LE_HIX22 72 +#define R_SPARC_TLS_LE_LOX10 73 +#define R_SPARC_TLS_DTPMOD32 74 +#define R_SPARC_TLS_DTPMOD64 75 +#define R_SPARC_TLS_DTPOFF32 76 +#define R_SPARC_TLS_DTPOFF64 77 +#define R_SPARC_TLS_TPOFF32 78 +#define R_SPARC_TLS_TPOFF64 79 +#define R_SPARC_GOTDATA_HIX22 80 +#define R_SPARC_GOTDATA_LOX10 81 +#define R_SPARC_GOTDATA_OP_HIX22 82 +#define R_SPARC_GOTDATA_OP_LOX10 83 +#define R_SPARC_GOTDATA_OP 84 +#define R_SPARC_H34 85 +#define R_SPARC_SIZE32 86 +#define R_SPARC_SIZE64 87 +#define R_SPARC_GNU_VTINHERIT 250 +#define R_SPARC_GNU_VTENTRY 251 +#define R_SPARC_REV32 252 + +#define R_SPARC_NUM 253 + + + +#define DT_SPARC_REGISTER 0x70000001 +#define DT_SPARC_NUM 2 + + +#define EF_MIPS_NOREORDER 1 +#define EF_MIPS_PIC 2 +#define EF_MIPS_CPIC 4 +#define EF_MIPS_XGOT 8 +#define EF_MIPS_64BIT_WHIRL 16 +#define EF_MIPS_ABI2 32 +#define EF_MIPS_ABI_ON32 64 +#define EF_MIPS_NAN2008 1024 +#define EF_MIPS_ARCH 0xf0000000 + + + +#define EF_MIPS_ARCH_1 0x00000000 +#define EF_MIPS_ARCH_2 0x10000000 +#define EF_MIPS_ARCH_3 0x20000000 +#define EF_MIPS_ARCH_4 0x30000000 +#define EF_MIPS_ARCH_5 0x40000000 +#define EF_MIPS_ARCH_32 0x50000000 +#define EF_MIPS_ARCH_64 0x60000000 +#define EF_MIPS_ARCH_32R2 0x70000000 +#define EF_MIPS_ARCH_64R2 0x80000000 + + +#define E_MIPS_ARCH_1 0x00000000 +#define E_MIPS_ARCH_2 0x10000000 +#define E_MIPS_ARCH_3 0x20000000 +#define E_MIPS_ARCH_4 0x30000000 +#define E_MIPS_ARCH_5 0x40000000 +#define E_MIPS_ARCH_32 0x50000000 +#define E_MIPS_ARCH_64 0x60000000 + + + +#define SHN_MIPS_ACOMMON 0xff00 +#define SHN_MIPS_TEXT 0xff01 +#define SHN_MIPS_DATA 0xff02 +#define SHN_MIPS_SCOMMON 0xff03 +#define SHN_MIPS_SUNDEFINED 0xff04 + + + +#define SHT_MIPS_LIBLIST 0x70000000 +#define SHT_MIPS_MSYM 0x70000001 +#define SHT_MIPS_CONFLICT 0x70000002 +#define SHT_MIPS_GPTAB 0x70000003 +#define SHT_MIPS_UCODE 0x70000004 +#define SHT_MIPS_DEBUG 0x70000005 +#define SHT_MIPS_REGINFO 0x70000006 +#define SHT_MIPS_PACKAGE 0x70000007 +#define SHT_MIPS_PACKSYM 0x70000008 +#define SHT_MIPS_RELD 0x70000009 +#define SHT_MIPS_IFACE 0x7000000b +#define SHT_MIPS_CONTENT 0x7000000c +#define SHT_MIPS_OPTIONS 0x7000000d +#define SHT_MIPS_SHDR 0x70000010 +#define SHT_MIPS_FDESC 0x70000011 +#define SHT_MIPS_EXTSYM 0x70000012 +#define SHT_MIPS_DENSE 0x70000013 +#define SHT_MIPS_PDESC 0x70000014 +#define SHT_MIPS_LOCSYM 0x70000015 +#define SHT_MIPS_AUXSYM 0x70000016 +#define SHT_MIPS_OPTSYM 0x70000017 +#define SHT_MIPS_LOCSTR 0x70000018 +#define SHT_MIPS_LINE 0x70000019 +#define SHT_MIPS_RFDESC 0x7000001a +#define SHT_MIPS_DELTASYM 0x7000001b +#define SHT_MIPS_DELTAINST 0x7000001c +#define SHT_MIPS_DELTACLASS 0x7000001d +#define SHT_MIPS_DWARF 0x7000001e +#define SHT_MIPS_DELTADECL 0x7000001f +#define SHT_MIPS_SYMBOL_LIB 0x70000020 +#define SHT_MIPS_EVENTS 0x70000021 +#define SHT_MIPS_TRANSLATE 0x70000022 +#define SHT_MIPS_PIXIE 0x70000023 +#define SHT_MIPS_XLATE 0x70000024 +#define SHT_MIPS_XLATE_DEBUG 0x70000025 +#define SHT_MIPS_WHIRL 0x70000026 +#define SHT_MIPS_EH_REGION 0x70000027 +#define SHT_MIPS_XLATE_OLD 0x70000028 +#define SHT_MIPS_PDR_EXCEPTION 0x70000029 + + + +#define SHF_MIPS_GPREL 0x10000000 +#define SHF_MIPS_MERGE 0x20000000 +#define SHF_MIPS_ADDR 0x40000000 +#define SHF_MIPS_STRINGS 0x80000000 +#define SHF_MIPS_NOSTRIP 0x08000000 +#define SHF_MIPS_LOCAL 0x04000000 +#define SHF_MIPS_NAMES 0x02000000 +#define SHF_MIPS_NODUPE 0x01000000 + + + + + +#define STO_MIPS_DEFAULT 0x0 +#define STO_MIPS_INTERNAL 0x1 +#define STO_MIPS_HIDDEN 0x2 +#define STO_MIPS_PROTECTED 0x3 +#define STO_MIPS_PLT 0x8 +#define STO_MIPS_SC_ALIGN_UNUSED 0xff + + +#define STB_MIPS_SPLIT_COMMON 13 + + + +typedef union { + struct { + Elf32_Word gt_current_g_value; + Elf32_Word gt_unused; + } gt_header; + struct { + Elf32_Word gt_g_value; + Elf32_Word gt_bytes; + } gt_entry; +} Elf32_gptab; + + + +typedef struct { + Elf32_Word ri_gprmask; + Elf32_Word ri_cprmask[4]; + Elf32_Sword ri_gp_value; +} Elf32_RegInfo; + + + +typedef struct { + unsigned char kind; + + unsigned char size; + Elf32_Section section; + + Elf32_Word info; +} Elf_Options; + + + +#define ODK_NULL 0 +#define ODK_REGINFO 1 +#define ODK_EXCEPTIONS 2 +#define ODK_PAD 3 +#define ODK_HWPATCH 4 +#define ODK_FILL 5 +#define ODK_TAGS 6 +#define ODK_HWAND 7 +#define ODK_HWOR 8 + + + +#define OEX_FPU_MIN 0x1f +#define OEX_FPU_MAX 0x1f00 +#define OEX_PAGE0 0x10000 +#define OEX_SMM 0x20000 +#define OEX_FPDBUG 0x40000 +#define OEX_PRECISEFP OEX_FPDBUG +#define OEX_DISMISS 0x80000 + +#define OEX_FPU_INVAL 0x10 +#define OEX_FPU_DIV0 0x08 +#define OEX_FPU_OFLO 0x04 +#define OEX_FPU_UFLO 0x02 +#define OEX_FPU_INEX 0x01 + + + +#define OHW_R4KEOP 0x1 +#define OHW_R8KPFETCH 0x2 +#define OHW_R5KEOP 0x4 +#define OHW_R5KCVTL 0x8 + +#define OPAD_PREFIX 0x1 +#define OPAD_POSTFIX 0x2 +#define OPAD_SYMBOL 0x4 + + + +typedef struct { + Elf32_Word hwp_flags1; + Elf32_Word hwp_flags2; +} Elf_Options_Hw; + + + +#define OHWA0_R4KEOP_CHECKED 0x00000001 +#define OHWA1_R4KEOP_CLEAN 0x00000002 + + + +#define R_MIPS_NONE 0 +#define R_MIPS_16 1 +#define R_MIPS_32 2 +#define R_MIPS_REL32 3 +#define R_MIPS_26 4 +#define R_MIPS_HI16 5 +#define R_MIPS_LO16 6 +#define R_MIPS_GPREL16 7 +#define R_MIPS_LITERAL 8 +#define R_MIPS_GOT16 9 +#define R_MIPS_PC16 10 +#define R_MIPS_CALL16 11 +#define R_MIPS_GPREL32 12 + +#define R_MIPS_SHIFT5 16 +#define R_MIPS_SHIFT6 17 +#define R_MIPS_64 18 +#define R_MIPS_GOT_DISP 19 +#define R_MIPS_GOT_PAGE 20 +#define R_MIPS_GOT_OFST 21 +#define R_MIPS_GOT_HI16 22 +#define R_MIPS_GOT_LO16 23 +#define R_MIPS_SUB 24 +#define R_MIPS_INSERT_A 25 +#define R_MIPS_INSERT_B 26 +#define R_MIPS_DELETE 27 +#define R_MIPS_HIGHER 28 +#define R_MIPS_HIGHEST 29 +#define R_MIPS_CALL_HI16 30 +#define R_MIPS_CALL_LO16 31 +#define R_MIPS_SCN_DISP 32 +#define R_MIPS_REL16 33 +#define R_MIPS_ADD_IMMEDIATE 34 +#define R_MIPS_PJUMP 35 +#define R_MIPS_RELGOT 36 +#define R_MIPS_JALR 37 +#define R_MIPS_TLS_DTPMOD32 38 +#define R_MIPS_TLS_DTPREL32 39 +#define R_MIPS_TLS_DTPMOD64 40 +#define R_MIPS_TLS_DTPREL64 41 +#define R_MIPS_TLS_GD 42 +#define R_MIPS_TLS_LDM 43 +#define R_MIPS_TLS_DTPREL_HI16 44 +#define R_MIPS_TLS_DTPREL_LO16 45 +#define R_MIPS_TLS_GOTTPREL 46 +#define R_MIPS_TLS_TPREL32 47 +#define R_MIPS_TLS_TPREL64 48 +#define R_MIPS_TLS_TPREL_HI16 49 +#define R_MIPS_TLS_TPREL_LO16 50 +#define R_MIPS_GLOB_DAT 51 +#define R_MIPS_COPY 126 +#define R_MIPS_JUMP_SLOT 127 + +#define R_MIPS_NUM 128 + + + +#define PT_MIPS_REGINFO 0x70000000 +#define PT_MIPS_RTPROC 0x70000001 +#define PT_MIPS_OPTIONS 0x70000002 + + + +#define PF_MIPS_LOCAL 0x10000000 + + + +#define DT_MIPS_RLD_VERSION 0x70000001 +#define DT_MIPS_TIME_STAMP 0x70000002 +#define DT_MIPS_ICHECKSUM 0x70000003 +#define DT_MIPS_IVERSION 0x70000004 +#define DT_MIPS_FLAGS 0x70000005 +#define DT_MIPS_BASE_ADDRESS 0x70000006 +#define DT_MIPS_MSYM 0x70000007 +#define DT_MIPS_CONFLICT 0x70000008 +#define DT_MIPS_LIBLIST 0x70000009 +#define DT_MIPS_LOCAL_GOTNO 0x7000000a +#define DT_MIPS_CONFLICTNO 0x7000000b +#define DT_MIPS_LIBLISTNO 0x70000010 +#define DT_MIPS_SYMTABNO 0x70000011 +#define DT_MIPS_UNREFEXTNO 0x70000012 +#define DT_MIPS_GOTSYM 0x70000013 +#define DT_MIPS_HIPAGENO 0x70000014 +#define DT_MIPS_RLD_MAP 0x70000016 +#define DT_MIPS_DELTA_CLASS 0x70000017 +#define DT_MIPS_DELTA_CLASS_NO 0x70000018 + +#define DT_MIPS_DELTA_INSTANCE 0x70000019 +#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a + +#define DT_MIPS_DELTA_RELOC 0x7000001b +#define DT_MIPS_DELTA_RELOC_NO 0x7000001c + +#define DT_MIPS_DELTA_SYM 0x7000001d + +#define DT_MIPS_DELTA_SYM_NO 0x7000001e + +#define DT_MIPS_DELTA_CLASSSYM 0x70000020 + +#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 + +#define DT_MIPS_CXX_FLAGS 0x70000022 +#define DT_MIPS_PIXIE_INIT 0x70000023 +#define DT_MIPS_SYMBOL_LIB 0x70000024 +#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 +#define DT_MIPS_LOCAL_GOTIDX 0x70000026 +#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 +#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 +#define DT_MIPS_OPTIONS 0x70000029 +#define DT_MIPS_INTERFACE 0x7000002a +#define DT_MIPS_DYNSTR_ALIGN 0x7000002b +#define DT_MIPS_INTERFACE_SIZE 0x7000002c +#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d + +#define DT_MIPS_PERF_SUFFIX 0x7000002e + +#define DT_MIPS_COMPACT_SIZE 0x7000002f +#define DT_MIPS_GP_VALUE 0x70000030 +#define DT_MIPS_AUX_DYNAMIC 0x70000031 + +#define DT_MIPS_PLTGOT 0x70000032 + +#define DT_MIPS_RWPLT 0x70000034 +#define DT_MIPS_NUM 0x35 + + + +#define RHF_NONE 0 +#define RHF_QUICKSTART (1 << 0) +#define RHF_NOTPOT (1 << 1) +#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) +#define RHF_NO_MOVE (1 << 3) +#define RHF_SGI_ONLY (1 << 4) +#define RHF_GUARANTEE_INIT (1 << 5) +#define RHF_DELTA_C_PLUS_PLUS (1 << 6) +#define RHF_GUARANTEE_START_INIT (1 << 7) +#define RHF_PIXIE (1 << 8) +#define RHF_DEFAULT_DELAY_LOAD (1 << 9) +#define RHF_REQUICKSTART (1 << 10) +#define RHF_REQUICKSTARTED (1 << 11) +#define RHF_CORD (1 << 12) +#define RHF_NO_UNRES_UNDEF (1 << 13) +#define RHF_RLD_ORDER_SAFE (1 << 14) + + + +typedef struct +{ + Elf32_Word l_name; + Elf32_Word l_time_stamp; + Elf32_Word l_checksum; + Elf32_Word l_version; + Elf32_Word l_flags; +} Elf32_Lib; + +typedef struct +{ + Elf64_Word l_name; + Elf64_Word l_time_stamp; + Elf64_Word l_checksum; + Elf64_Word l_version; + Elf64_Word l_flags; +} Elf64_Lib; + + + + +#define LL_NONE 0 +#define LL_EXACT_MATCH (1 << 0) +#define LL_IGNORE_INT_VER (1 << 1) +#define LL_REQUIRE_MINOR (1 << 2) +#define LL_EXPORTS (1 << 3) +#define LL_DELAY_LOAD (1 << 4) +#define LL_DELTA (1 << 5) + + + +typedef Elf32_Addr Elf32_Conflict; + + + + + + +#define EF_PARISC_TRAPNIL 0x00010000 +#define EF_PARISC_EXT 0x00020000 +#define EF_PARISC_LSB 0x00040000 +#define EF_PARISC_WIDE 0x00080000 +#define EF_PARISC_NO_KABP 0x00100000 + +#define EF_PARISC_LAZYSWAP 0x00400000 +#define EF_PARISC_ARCH 0x0000ffff + + + +#define EFA_PARISC_1_0 0x020b +#define EFA_PARISC_1_1 0x0210 +#define EFA_PARISC_2_0 0x0214 + + + +#define SHN_PARISC_ANSI_COMMON 0xff00 + +#define SHN_PARISC_HUGE_COMMON 0xff01 + + + +#define SHT_PARISC_EXT 0x70000000 +#define SHT_PARISC_UNWIND 0x70000001 +#define SHT_PARISC_DOC 0x70000002 + + + +#define SHF_PARISC_SHORT 0x20000000 +#define SHF_PARISC_HUGE 0x40000000 +#define SHF_PARISC_SBP 0x80000000 + + + +#define STT_PARISC_MILLICODE 13 + +#define STT_HP_OPAQUE (STT_LOOS + 0x1) +#define STT_HP_STUB (STT_LOOS + 0x2) + + + +#define R_PARISC_NONE 0 +#define R_PARISC_DIR32 1 +#define R_PARISC_DIR21L 2 +#define R_PARISC_DIR17R 3 +#define R_PARISC_DIR17F 4 +#define R_PARISC_DIR14R 6 +#define R_PARISC_PCREL32 9 +#define R_PARISC_PCREL21L 10 +#define R_PARISC_PCREL17R 11 +#define R_PARISC_PCREL17F 12 +#define R_PARISC_PCREL14R 14 +#define R_PARISC_DPREL21L 18 +#define R_PARISC_DPREL14R 22 +#define R_PARISC_GPREL21L 26 +#define R_PARISC_GPREL14R 30 +#define R_PARISC_LTOFF21L 34 +#define R_PARISC_LTOFF14R 38 +#define R_PARISC_SECREL32 41 +#define R_PARISC_SEGBASE 48 +#define R_PARISC_SEGREL32 49 +#define R_PARISC_PLTOFF21L 50 +#define R_PARISC_PLTOFF14R 54 +#define R_PARISC_LTOFF_FPTR32 57 +#define R_PARISC_LTOFF_FPTR21L 58 +#define R_PARISC_LTOFF_FPTR14R 62 +#define R_PARISC_FPTR64 64 +#define R_PARISC_PLABEL32 65 +#define R_PARISC_PLABEL21L 66 +#define R_PARISC_PLABEL14R 70 +#define R_PARISC_PCREL64 72 +#define R_PARISC_PCREL22F 74 +#define R_PARISC_PCREL14WR 75 +#define R_PARISC_PCREL14DR 76 +#define R_PARISC_PCREL16F 77 +#define R_PARISC_PCREL16WF 78 +#define R_PARISC_PCREL16DF 79 +#define R_PARISC_DIR64 80 +#define R_PARISC_DIR14WR 83 +#define R_PARISC_DIR14DR 84 +#define R_PARISC_DIR16F 85 +#define R_PARISC_DIR16WF 86 +#define R_PARISC_DIR16DF 87 +#define R_PARISC_GPREL64 88 +#define R_PARISC_GPREL14WR 91 +#define R_PARISC_GPREL14DR 92 +#define R_PARISC_GPREL16F 93 +#define R_PARISC_GPREL16WF 94 +#define R_PARISC_GPREL16DF 95 +#define R_PARISC_LTOFF64 96 +#define R_PARISC_LTOFF14WR 99 +#define R_PARISC_LTOFF14DR 100 +#define R_PARISC_LTOFF16F 101 +#define R_PARISC_LTOFF16WF 102 +#define R_PARISC_LTOFF16DF 103 +#define R_PARISC_SECREL64 104 +#define R_PARISC_SEGREL64 112 +#define R_PARISC_PLTOFF14WR 115 +#define R_PARISC_PLTOFF14DR 116 +#define R_PARISC_PLTOFF16F 117 +#define R_PARISC_PLTOFF16WF 118 +#define R_PARISC_PLTOFF16DF 119 +#define R_PARISC_LTOFF_FPTR64 120 +#define R_PARISC_LTOFF_FPTR14WR 123 +#define R_PARISC_LTOFF_FPTR14DR 124 +#define R_PARISC_LTOFF_FPTR16F 125 +#define R_PARISC_LTOFF_FPTR16WF 126 +#define R_PARISC_LTOFF_FPTR16DF 127 +#define R_PARISC_LORESERVE 128 +#define R_PARISC_COPY 128 +#define R_PARISC_IPLT 129 +#define R_PARISC_EPLT 130 +#define R_PARISC_TPREL32 153 +#define R_PARISC_TPREL21L 154 +#define R_PARISC_TPREL14R 158 +#define R_PARISC_LTOFF_TP21L 162 +#define R_PARISC_LTOFF_TP14R 166 +#define R_PARISC_LTOFF_TP14F 167 +#define R_PARISC_TPREL64 216 +#define R_PARISC_TPREL14WR 219 +#define R_PARISC_TPREL14DR 220 +#define R_PARISC_TPREL16F 221 +#define R_PARISC_TPREL16WF 222 +#define R_PARISC_TPREL16DF 223 +#define R_PARISC_LTOFF_TP64 224 +#define R_PARISC_LTOFF_TP14WR 227 +#define R_PARISC_LTOFF_TP14DR 228 +#define R_PARISC_LTOFF_TP16F 229 +#define R_PARISC_LTOFF_TP16WF 230 +#define R_PARISC_LTOFF_TP16DF 231 +#define R_PARISC_GNU_VTENTRY 232 +#define R_PARISC_GNU_VTINHERIT 233 +#define R_PARISC_TLS_GD21L 234 +#define R_PARISC_TLS_GD14R 235 +#define R_PARISC_TLS_GDCALL 236 +#define R_PARISC_TLS_LDM21L 237 +#define R_PARISC_TLS_LDM14R 238 +#define R_PARISC_TLS_LDMCALL 239 +#define R_PARISC_TLS_LDO21L 240 +#define R_PARISC_TLS_LDO14R 241 +#define R_PARISC_TLS_DTPMOD32 242 +#define R_PARISC_TLS_DTPMOD64 243 +#define R_PARISC_TLS_DTPOFF32 244 +#define R_PARISC_TLS_DTPOFF64 245 +#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L +#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R +#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L +#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R +#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 +#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 +#define R_PARISC_HIRESERVE 255 + + + +#define PT_HP_TLS (PT_LOOS + 0x0) +#define PT_HP_CORE_NONE (PT_LOOS + 0x1) +#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) +#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) +#define PT_HP_CORE_COMM (PT_LOOS + 0x4) +#define PT_HP_CORE_PROC (PT_LOOS + 0x5) +#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) +#define PT_HP_CORE_STACK (PT_LOOS + 0x7) +#define PT_HP_CORE_SHM (PT_LOOS + 0x8) +#define PT_HP_CORE_MMF (PT_LOOS + 0x9) +#define PT_HP_PARALLEL (PT_LOOS + 0x10) +#define PT_HP_FASTBIND (PT_LOOS + 0x11) +#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) +#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) +#define PT_HP_STACK (PT_LOOS + 0x14) + +#define PT_PARISC_ARCHEXT 0x70000000 +#define PT_PARISC_UNWIND 0x70000001 + + + +#define PF_PARISC_SBP 0x08000000 + +#define PF_HP_PAGE_SIZE 0x00100000 +#define PF_HP_FAR_SHARED 0x00200000 +#define PF_HP_NEAR_SHARED 0x00400000 +#define PF_HP_CODE 0x01000000 +#define PF_HP_MODIFY 0x02000000 +#define PF_HP_LAZYSWAP 0x04000000 +#define PF_HP_SBP 0x08000000 + + + + + + +#define EF_ALPHA_32BIT 1 +#define EF_ALPHA_CANRELAX 2 + + + + +#define SHT_ALPHA_DEBUG 0x70000001 +#define SHT_ALPHA_REGINFO 0x70000002 + + + +#define SHF_ALPHA_GPREL 0x10000000 + + +#define STO_ALPHA_NOPV 0x80 +#define STO_ALPHA_STD_GPLOAD 0x88 + + + +#define R_ALPHA_NONE 0 +#define R_ALPHA_REFLONG 1 +#define R_ALPHA_REFQUAD 2 +#define R_ALPHA_GPREL32 3 +#define R_ALPHA_LITERAL 4 +#define R_ALPHA_LITUSE 5 +#define R_ALPHA_GPDISP 6 +#define R_ALPHA_BRADDR 7 +#define R_ALPHA_HINT 8 +#define R_ALPHA_SREL16 9 +#define R_ALPHA_SREL32 10 +#define R_ALPHA_SREL64 11 +#define R_ALPHA_GPRELHIGH 17 +#define R_ALPHA_GPRELLOW 18 +#define R_ALPHA_GPREL16 19 +#define R_ALPHA_COPY 24 +#define R_ALPHA_GLOB_DAT 25 +#define R_ALPHA_JMP_SLOT 26 +#define R_ALPHA_RELATIVE 27 +#define R_ALPHA_TLS_GD_HI 28 +#define R_ALPHA_TLSGD 29 +#define R_ALPHA_TLS_LDM 30 +#define R_ALPHA_DTPMOD64 31 +#define R_ALPHA_GOTDTPREL 32 +#define R_ALPHA_DTPREL64 33 +#define R_ALPHA_DTPRELHI 34 +#define R_ALPHA_DTPRELLO 35 +#define R_ALPHA_DTPREL16 36 +#define R_ALPHA_GOTTPREL 37 +#define R_ALPHA_TPREL64 38 +#define R_ALPHA_TPRELHI 39 +#define R_ALPHA_TPRELLO 40 +#define R_ALPHA_TPREL16 41 + +#define R_ALPHA_NUM 46 + + +#define LITUSE_ALPHA_ADDR 0 +#define LITUSE_ALPHA_BASE 1 +#define LITUSE_ALPHA_BYTOFF 2 +#define LITUSE_ALPHA_JSR 3 +#define LITUSE_ALPHA_TLS_GD 4 +#define LITUSE_ALPHA_TLS_LDM 5 + + +#define DT_ALPHA_PLTRO (DT_LOPROC + 0) +#define DT_ALPHA_NUM 1 + + + + +#define EF_PPC_EMB 0x80000000 + + +#define EF_PPC_RELOCATABLE 0x00010000 +#define EF_PPC_RELOCATABLE_LIB 0x00008000 + + + +#define R_PPC_NONE 0 +#define R_PPC_ADDR32 1 +#define R_PPC_ADDR24 2 +#define R_PPC_ADDR16 3 +#define R_PPC_ADDR16_LO 4 +#define R_PPC_ADDR16_HI 5 +#define R_PPC_ADDR16_HA 6 +#define R_PPC_ADDR14 7 +#define R_PPC_ADDR14_BRTAKEN 8 +#define R_PPC_ADDR14_BRNTAKEN 9 +#define R_PPC_REL24 10 +#define R_PPC_REL14 11 +#define R_PPC_REL14_BRTAKEN 12 +#define R_PPC_REL14_BRNTAKEN 13 +#define R_PPC_GOT16 14 +#define R_PPC_GOT16_LO 15 +#define R_PPC_GOT16_HI 16 +#define R_PPC_GOT16_HA 17 +#define R_PPC_PLTREL24 18 +#define R_PPC_COPY 19 +#define R_PPC_GLOB_DAT 20 +#define R_PPC_JMP_SLOT 21 +#define R_PPC_RELATIVE 22 +#define R_PPC_LOCAL24PC 23 +#define R_PPC_UADDR32 24 +#define R_PPC_UADDR16 25 +#define R_PPC_REL32 26 +#define R_PPC_PLT32 27 +#define R_PPC_PLTREL32 28 +#define R_PPC_PLT16_LO 29 +#define R_PPC_PLT16_HI 30 +#define R_PPC_PLT16_HA 31 +#define R_PPC_SDAREL16 32 +#define R_PPC_SECTOFF 33 +#define R_PPC_SECTOFF_LO 34 +#define R_PPC_SECTOFF_HI 35 +#define R_PPC_SECTOFF_HA 36 + + +#define R_PPC_TLS 67 +#define R_PPC_DTPMOD32 68 +#define R_PPC_TPREL16 69 +#define R_PPC_TPREL16_LO 70 +#define R_PPC_TPREL16_HI 71 +#define R_PPC_TPREL16_HA 72 +#define R_PPC_TPREL32 73 +#define R_PPC_DTPREL16 74 +#define R_PPC_DTPREL16_LO 75 +#define R_PPC_DTPREL16_HI 76 +#define R_PPC_DTPREL16_HA 77 +#define R_PPC_DTPREL32 78 +#define R_PPC_GOT_TLSGD16 79 +#define R_PPC_GOT_TLSGD16_LO 80 +#define R_PPC_GOT_TLSGD16_HI 81 +#define R_PPC_GOT_TLSGD16_HA 82 +#define R_PPC_GOT_TLSLD16 83 +#define R_PPC_GOT_TLSLD16_LO 84 +#define R_PPC_GOT_TLSLD16_HI 85 +#define R_PPC_GOT_TLSLD16_HA 86 +#define R_PPC_GOT_TPREL16 87 +#define R_PPC_GOT_TPREL16_LO 88 +#define R_PPC_GOT_TPREL16_HI 89 +#define R_PPC_GOT_TPREL16_HA 90 +#define R_PPC_GOT_DTPREL16 91 +#define R_PPC_GOT_DTPREL16_LO 92 +#define R_PPC_GOT_DTPREL16_HI 93 +#define R_PPC_GOT_DTPREL16_HA 94 + + + +#define R_PPC_EMB_NADDR32 101 +#define R_PPC_EMB_NADDR16 102 +#define R_PPC_EMB_NADDR16_LO 103 +#define R_PPC_EMB_NADDR16_HI 104 +#define R_PPC_EMB_NADDR16_HA 105 +#define R_PPC_EMB_SDAI16 106 +#define R_PPC_EMB_SDA2I16 107 +#define R_PPC_EMB_SDA2REL 108 +#define R_PPC_EMB_SDA21 109 +#define R_PPC_EMB_MRKREF 110 +#define R_PPC_EMB_RELSEC16 111 +#define R_PPC_EMB_RELST_LO 112 +#define R_PPC_EMB_RELST_HI 113 +#define R_PPC_EMB_RELST_HA 114 +#define R_PPC_EMB_BIT_FLD 115 +#define R_PPC_EMB_RELSDA 116 + + +#define R_PPC_DIAB_SDA21_LO 180 +#define R_PPC_DIAB_SDA21_HI 181 +#define R_PPC_DIAB_SDA21_HA 182 +#define R_PPC_DIAB_RELSDA_LO 183 +#define R_PPC_DIAB_RELSDA_HI 184 +#define R_PPC_DIAB_RELSDA_HA 185 + + +#define R_PPC_IRELATIVE 248 + + +#define R_PPC_REL16 249 +#define R_PPC_REL16_LO 250 +#define R_PPC_REL16_HI 251 +#define R_PPC_REL16_HA 252 + + + +#define R_PPC_TOC16 255 + + +#define DT_PPC_GOT (DT_LOPROC + 0) +#define DT_PPC_NUM 1 + + +#define R_PPC64_NONE R_PPC_NONE +#define R_PPC64_ADDR32 R_PPC_ADDR32 +#define R_PPC64_ADDR24 R_PPC_ADDR24 +#define R_PPC64_ADDR16 R_PPC_ADDR16 +#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO +#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI +#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA +#define R_PPC64_ADDR14 R_PPC_ADDR14 +#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN +#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN +#define R_PPC64_REL24 R_PPC_REL24 +#define R_PPC64_REL14 R_PPC_REL14 +#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN +#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN +#define R_PPC64_GOT16 R_PPC_GOT16 +#define R_PPC64_GOT16_LO R_PPC_GOT16_LO +#define R_PPC64_GOT16_HI R_PPC_GOT16_HI +#define R_PPC64_GOT16_HA R_PPC_GOT16_HA + +#define R_PPC64_COPY R_PPC_COPY +#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT +#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT +#define R_PPC64_RELATIVE R_PPC_RELATIVE + +#define R_PPC64_UADDR32 R_PPC_UADDR32 +#define R_PPC64_UADDR16 R_PPC_UADDR16 +#define R_PPC64_REL32 R_PPC_REL32 +#define R_PPC64_PLT32 R_PPC_PLT32 +#define R_PPC64_PLTREL32 R_PPC_PLTREL32 +#define R_PPC64_PLT16_LO R_PPC_PLT16_LO +#define R_PPC64_PLT16_HI R_PPC_PLT16_HI +#define R_PPC64_PLT16_HA R_PPC_PLT16_HA + +#define R_PPC64_SECTOFF R_PPC_SECTOFF +#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO +#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI +#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA +#define R_PPC64_ADDR30 37 +#define R_PPC64_ADDR64 38 +#define R_PPC64_ADDR16_HIGHER 39 +#define R_PPC64_ADDR16_HIGHERA 40 +#define R_PPC64_ADDR16_HIGHEST 41 +#define R_PPC64_ADDR16_HIGHESTA 42 +#define R_PPC64_UADDR64 43 +#define R_PPC64_REL64 44 +#define R_PPC64_PLT64 45 +#define R_PPC64_PLTREL64 46 +#define R_PPC64_TOC16 47 +#define R_PPC64_TOC16_LO 48 +#define R_PPC64_TOC16_HI 49 +#define R_PPC64_TOC16_HA 50 +#define R_PPC64_TOC 51 +#define R_PPC64_PLTGOT16 52 +#define R_PPC64_PLTGOT16_LO 53 +#define R_PPC64_PLTGOT16_HI 54 +#define R_PPC64_PLTGOT16_HA 55 + +#define R_PPC64_ADDR16_DS 56 +#define R_PPC64_ADDR16_LO_DS 57 +#define R_PPC64_GOT16_DS 58 +#define R_PPC64_GOT16_LO_DS 59 +#define R_PPC64_PLT16_LO_DS 60 +#define R_PPC64_SECTOFF_DS 61 +#define R_PPC64_SECTOFF_LO_DS 62 +#define R_PPC64_TOC16_DS 63 +#define R_PPC64_TOC16_LO_DS 64 +#define R_PPC64_PLTGOT16_DS 65 +#define R_PPC64_PLTGOT16_LO_DS 66 + + +#define R_PPC64_TLS 67 +#define R_PPC64_DTPMOD64 68 +#define R_PPC64_TPREL16 69 +#define R_PPC64_TPREL16_LO 70 +#define R_PPC64_TPREL16_HI 71 +#define R_PPC64_TPREL16_HA 72 +#define R_PPC64_TPREL64 73 +#define R_PPC64_DTPREL16 74 +#define R_PPC64_DTPREL16_LO 75 +#define R_PPC64_DTPREL16_HI 76 +#define R_PPC64_DTPREL16_HA 77 +#define R_PPC64_DTPREL64 78 +#define R_PPC64_GOT_TLSGD16 79 +#define R_PPC64_GOT_TLSGD16_LO 80 +#define R_PPC64_GOT_TLSGD16_HI 81 +#define R_PPC64_GOT_TLSGD16_HA 82 +#define R_PPC64_GOT_TLSLD16 83 +#define R_PPC64_GOT_TLSLD16_LO 84 +#define R_PPC64_GOT_TLSLD16_HI 85 +#define R_PPC64_GOT_TLSLD16_HA 86 +#define R_PPC64_GOT_TPREL16_DS 87 +#define R_PPC64_GOT_TPREL16_LO_DS 88 +#define R_PPC64_GOT_TPREL16_HI 89 +#define R_PPC64_GOT_TPREL16_HA 90 +#define R_PPC64_GOT_DTPREL16_DS 91 +#define R_PPC64_GOT_DTPREL16_LO_DS 92 +#define R_PPC64_GOT_DTPREL16_HI 93 +#define R_PPC64_GOT_DTPREL16_HA 94 +#define R_PPC64_TPREL16_DS 95 +#define R_PPC64_TPREL16_LO_DS 96 +#define R_PPC64_TPREL16_HIGHER 97 +#define R_PPC64_TPREL16_HIGHERA 98 +#define R_PPC64_TPREL16_HIGHEST 99 +#define R_PPC64_TPREL16_HIGHESTA 100 +#define R_PPC64_DTPREL16_DS 101 +#define R_PPC64_DTPREL16_LO_DS 102 +#define R_PPC64_DTPREL16_HIGHER 103 +#define R_PPC64_DTPREL16_HIGHERA 104 +#define R_PPC64_DTPREL16_HIGHEST 105 +#define R_PPC64_DTPREL16_HIGHESTA 106 + + +#define R_PPC64_JMP_IREL 247 +#define R_PPC64_IRELATIVE 248 +#define R_PPC64_REL16 249 +#define R_PPC64_REL16_LO 250 +#define R_PPC64_REL16_HI 251 +#define R_PPC64_REL16_HA 252 + + +#define DT_PPC64_GLINK (DT_LOPROC + 0) +#define DT_PPC64_OPD (DT_LOPROC + 1) +#define DT_PPC64_OPDSZ (DT_LOPROC + 2) +#define DT_PPC64_NUM 3 + + + + + +#define EF_ARM_RELEXEC 0x01 +#define EF_ARM_HASENTRY 0x02 +#define EF_ARM_INTERWORK 0x04 +#define EF_ARM_APCS_26 0x08 +#define EF_ARM_APCS_FLOAT 0x10 +#define EF_ARM_PIC 0x20 +#define EF_ARM_ALIGN8 0x40 +#define EF_ARM_NEW_ABI 0x80 +#define EF_ARM_OLD_ABI 0x100 +#define EF_ARM_SOFT_FLOAT 0x200 +#define EF_ARM_VFP_FLOAT 0x400 +#define EF_ARM_MAVERICK_FLOAT 0x800 + +#define EF_ARM_ABI_FLOAT_SOFT 0x200 +#define EF_ARM_ABI_FLOAT_HARD 0x400 + + +#define EF_ARM_SYMSARESORTED 0x04 +#define EF_ARM_DYNSYMSUSESEGIDX 0x08 +#define EF_ARM_MAPSYMSFIRST 0x10 +#define EF_ARM_EABIMASK 0XFF000000 + + +#define EF_ARM_BE8 0x00800000 +#define EF_ARM_LE8 0x00400000 + +#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) +#define EF_ARM_EABI_UNKNOWN 0x00000000 +#define EF_ARM_EABI_VER1 0x01000000 +#define EF_ARM_EABI_VER2 0x02000000 +#define EF_ARM_EABI_VER3 0x03000000 +#define EF_ARM_EABI_VER4 0x04000000 +#define EF_ARM_EABI_VER5 0x05000000 + + +#define STT_ARM_TFUNC STT_LOPROC +#define STT_ARM_16BIT STT_HIPROC + + +#define SHF_ARM_ENTRYSECT 0x10000000 +#define SHF_ARM_COMDEF 0x80000000 + + + +#define PF_ARM_SB 0x10000000 + +#define PF_ARM_PI 0x20000000 +#define PF_ARM_ABS 0x40000000 + + +#define PT_ARM_EXIDX (PT_LOPROC + 1) + + +#define SHT_ARM_EXIDX (SHT_LOPROC + 1) +#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) +#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) + + +#define R_AARCH64_NONE 0 +#define R_AARCH64_ABS64 257 +#define R_AARCH64_ABS32 258 +#define R_AARCH64_ABS16 259 +#define R_AARCH64_PREL64 260 +#define R_AARCH64_PREL32 261 +#define R_AARCH64_PREL16 262 +#define R_AARCH64_MOVW_UABS_G0 263 +#define R_AARCH64_MOVW_UABS_G0_NC 264 +#define R_AARCH64_MOVW_UABS_G1 265 +#define R_AARCH64_MOVW_UABS_G1_NC 266 +#define R_AARCH64_MOVW_UABS_G2 267 +#define R_AARCH64_MOVW_UABS_G2_NC 268 +#define R_AARCH64_MOVW_UABS_G3 269 +#define R_AARCH64_MOVW_SABS_G0 270 +#define R_AARCH64_MOVW_SABS_G1 271 +#define R_AARCH64_MOVW_SABS_G2 272 +#define R_AARCH64_LD_PREL_LO19 273 +#define R_AARCH64_ADR_PREL_LO21 274 +#define R_AARCH64_ADR_PREL_PG_HI21 275 +#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 +#define R_AARCH64_ADD_ABS_LO12_NC 277 +#define R_AARCH64_LDST8_ABS_LO12_NC 278 +#define R_AARCH64_TSTBR14 279 +#define R_AARCH64_CONDBR19 280 +#define R_AARCH64_JUMP26 282 +#define R_AARCH64_CALL26 283 +#define R_AARCH64_LDST16_ABS_LO12_NC 284 +#define R_AARCH64_LDST32_ABS_LO12_NC 285 +#define R_AARCH64_LDST64_ABS_LO12_NC 286 +#define R_AARCH64_MOVW_PREL_G0 287 +#define R_AARCH64_MOVW_PREL_G0_NC 288 +#define R_AARCH64_MOVW_PREL_G1 289 +#define R_AARCH64_MOVW_PREL_G1_NC 290 +#define R_AARCH64_MOVW_PREL_G2 291 +#define R_AARCH64_MOVW_PREL_G2_NC 292 +#define R_AARCH64_MOVW_PREL_G3 293 +#define R_AARCH64_LDST128_ABS_LO12_NC 299 +#define R_AARCH64_MOVW_GOTOFF_G0 300 +#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 +#define R_AARCH64_MOVW_GOTOFF_G1 302 +#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 +#define R_AARCH64_MOVW_GOTOFF_G2 304 +#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 +#define R_AARCH64_MOVW_GOTOFF_G3 306 +#define R_AARCH64_GOTREL64 307 +#define R_AARCH64_GOTREL32 308 +#define R_AARCH64_GOT_LD_PREL19 309 +#define R_AARCH64_LD64_GOTOFF_LO15 310 +#define R_AARCH64_ADR_GOT_PAGE 311 +#define R_AARCH64_LD64_GOT_LO12_NC 312 +#define R_AARCH64_LD64_GOTPAGE_LO15 313 +#define R_AARCH64_TLSGD_ADR_PREL21 512 +#define R_AARCH64_TLSGD_ADR_PAGE21 513 +#define R_AARCH64_TLSGD_ADD_LO12_NC 514 +#define R_AARCH64_TLSGD_MOVW_G1 515 +#define R_AARCH64_TLSGD_MOVW_G0_NC 516 +#define R_AARCH64_TLSLD_ADR_PREL21 517 +#define R_AARCH64_TLSLD_ADR_PAGE21 518 +#define R_AARCH64_TLSLD_ADD_LO12_NC 519 +#define R_AARCH64_TLSLD_MOVW_G1 520 +#define R_AARCH64_TLSLD_MOVW_G0_NC 521 +#define R_AARCH64_TLSLD_LD_PREL19 522 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 +#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 +#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 +#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 +#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 +#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 +#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 +#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 +#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 +#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 +#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 +#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 +#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 +#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 +#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 +#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 +#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 +#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 +#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 +#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 +#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 +#define R_AARCH64_TLSDESC_LD_PREL19 560 +#define R_AARCH64_TLSDESC_ADR_PREL21 561 +#define R_AARCH64_TLSDESC_ADR_PAGE21 562 +#define R_AARCH64_TLSDESC_LD64_LO12 563 +#define R_AARCH64_TLSDESC_ADD_LO12 564 +#define R_AARCH64_TLSDESC_OFF_G1 565 +#define R_AARCH64_TLSDESC_OFF_G0_NC 566 +#define R_AARCH64_TLSDESC_LDR 567 +#define R_AARCH64_TLSDESC_ADD 568 +#define R_AARCH64_TLSDESC_CALL 569 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 +#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 +#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 +#define R_AARCH64_COPY 1024 +#define R_AARCH64_GLOB_DAT 1025 +#define R_AARCH64_JUMP_SLOT 1026 +#define R_AARCH64_RELATIVE 1027 +#define R_AARCH64_TLS_DTPMOD64 1028 +#define R_AARCH64_TLS_DTPREL64 1029 +#define R_AARCH64_TLS_TPREL64 1030 +#define R_AARCH64_TLSDESC 1031 + + +#define R_ARM_NONE 0 +#define R_ARM_PC24 1 +#define R_ARM_ABS32 2 +#define R_ARM_REL32 3 +#define R_ARM_PC13 4 +#define R_ARM_ABS16 5 +#define R_ARM_ABS12 6 +#define R_ARM_THM_ABS5 7 +#define R_ARM_ABS8 8 +#define R_ARM_SBREL32 9 +#define R_ARM_THM_PC22 10 +#define R_ARM_THM_PC8 11 +#define R_ARM_AMP_VCALL9 12 +#define R_ARM_TLS_DESC 13 +#define R_ARM_THM_SWI8 14 +#define R_ARM_XPC25 15 +#define R_ARM_THM_XPC22 16 +#define R_ARM_TLS_DTPMOD32 17 +#define R_ARM_TLS_DTPOFF32 18 +#define R_ARM_TLS_TPOFF32 19 +#define R_ARM_COPY 20 +#define R_ARM_GLOB_DAT 21 +#define R_ARM_JUMP_SLOT 22 +#define R_ARM_RELATIVE 23 +#define R_ARM_GOTOFF 24 +#define R_ARM_GOTPC 25 +#define R_ARM_GOT32 26 +#define R_ARM_PLT32 27 +#define R_ARM_CALL 28 +#define R_ARM_JUMP24 29 +#define R_ARM_THM_JUMP24 30 +#define R_ARM_BASE_ABS 31 +#define R_ARM_ALU_PCREL_7_0 32 +#define R_ARM_ALU_PCREL_15_8 33 +#define R_ARM_ALU_PCREL_23_15 34 +#define R_ARM_LDR_SBREL_11_0 35 +#define R_ARM_ALU_SBREL_19_12 36 +#define R_ARM_ALU_SBREL_27_20 37 +#define R_ARM_TARGET1 38 +#define R_ARM_SBREL31 39 +#define R_ARM_V4BX 40 +#define R_ARM_TARGET2 41 +#define R_ARM_PREL31 42 +#define R_ARM_MOVW_ABS_NC 43 +#define R_ARM_MOVT_ABS 44 +#define R_ARM_MOVW_PREL_NC 45 +#define R_ARM_MOVT_PREL 46 +#define R_ARM_THM_MOVW_ABS_NC 47 +#define R_ARM_THM_MOVT_ABS 48 +#define R_ARM_THM_MOVW_PREL_NC 49 +#define R_ARM_THM_MOVT_PREL 50 +#define R_ARM_THM_JUMP19 51 +#define R_ARM_THM_JUMP6 52 +#define R_ARM_THM_ALU_PREL_11_0 53 +#define R_ARM_THM_PC12 54 +#define R_ARM_ABS32_NOI 55 +#define R_ARM_REL32_NOI 56 +#define R_ARM_ALU_PC_G0_NC 57 +#define R_ARM_ALU_PC_G0 58 +#define R_ARM_ALU_PC_G1_NC 59 +#define R_ARM_ALU_PC_G1 60 +#define R_ARM_ALU_PC_G2 61 +#define R_ARM_LDR_PC_G1 62 +#define R_ARM_LDR_PC_G2 63 +#define R_ARM_LDRS_PC_G0 64 +#define R_ARM_LDRS_PC_G1 65 +#define R_ARM_LDRS_PC_G2 66 +#define R_ARM_LDC_PC_G0 67 +#define R_ARM_LDC_PC_G1 68 +#define R_ARM_LDC_PC_G2 69 +#define R_ARM_ALU_SB_G0_NC 70 +#define R_ARM_ALU_SB_G0 71 +#define R_ARM_ALU_SB_G1_NC 72 +#define R_ARM_ALU_SB_G1 73 +#define R_ARM_ALU_SB_G2 74 +#define R_ARM_LDR_SB_G0 75 +#define R_ARM_LDR_SB_G1 76 +#define R_ARM_LDR_SB_G2 77 +#define R_ARM_LDRS_SB_G0 78 +#define R_ARM_LDRS_SB_G1 79 +#define R_ARM_LDRS_SB_G2 80 +#define R_ARM_LDC_SB_G0 81 +#define R_ARM_LDC_SB_G1 82 +#define R_ARM_LDC_SB_G2 83 +#define R_ARM_MOVW_BREL_NC 84 +#define R_ARM_MOVT_BREL 85 +#define R_ARM_MOVW_BREL 86 +#define R_ARM_THM_MOVW_BREL_NC 87 +#define R_ARM_THM_MOVT_BREL 88 +#define R_ARM_THM_MOVW_BREL 89 +#define R_ARM_TLS_GOTDESC 90 +#define R_ARM_TLS_CALL 91 +#define R_ARM_TLS_DESCSEQ 92 +#define R_ARM_THM_TLS_CALL 93 +#define R_ARM_PLT32_ABS 94 +#define R_ARM_GOT_ABS 95 +#define R_ARM_GOT_PREL 96 +#define R_ARM_GOT_BREL12 97 +#define R_ARM_GOTOFF12 98 +#define R_ARM_GOTRELAX 99 +#define R_ARM_GNU_VTENTRY 100 +#define R_ARM_GNU_VTINHERIT 101 +#define R_ARM_THM_PC11 102 +#define R_ARM_THM_PC9 103 +#define R_ARM_TLS_GD32 104 + +#define R_ARM_TLS_LDM32 105 + +#define R_ARM_TLS_LDO32 106 + +#define R_ARM_TLS_IE32 107 + +#define R_ARM_TLS_LE32 108 +#define R_ARM_TLS_LDO12 109 +#define R_ARM_TLS_LE12 110 +#define R_ARM_TLS_IE12GP 111 +#define R_ARM_ME_TOO 128 +#define R_ARM_THM_TLS_DESCSEQ 129 +#define R_ARM_THM_TLS_DESCSEQ16 129 +#define R_ARM_THM_TLS_DESCSEQ32 130 +#define R_ARM_THM_GOT_BREL12 131 +#define R_ARM_IRELATIVE 160 +#define R_ARM_RXPC25 249 +#define R_ARM_RSBREL32 250 +#define R_ARM_THM_RPC22 251 +#define R_ARM_RREL32 252 +#define R_ARM_RABS22 253 +#define R_ARM_RPC24 254 +#define R_ARM_RBASE 255 + +#define R_ARM_NUM 256 + + + + +#define EF_IA_64_MASKOS 0x0000000f +#define EF_IA_64_ABI64 0x00000010 +#define EF_IA_64_ARCH 0xff000000 + + +#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) +#define PT_IA_64_UNWIND (PT_LOPROC + 1) +#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) +#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) +#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) + + +#define PF_IA_64_NORECOV 0x80000000 + + +#define SHT_IA_64_EXT (SHT_LOPROC + 0) +#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) + + +#define SHF_IA_64_SHORT 0x10000000 +#define SHF_IA_64_NORECOV 0x20000000 + + +#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) +#define DT_IA_64_NUM 1 + + +#define R_IA64_NONE 0x00 +#define R_IA64_IMM14 0x21 +#define R_IA64_IMM22 0x22 +#define R_IA64_IMM64 0x23 +#define R_IA64_DIR32MSB 0x24 +#define R_IA64_DIR32LSB 0x25 +#define R_IA64_DIR64MSB 0x26 +#define R_IA64_DIR64LSB 0x27 +#define R_IA64_GPREL22 0x2a +#define R_IA64_GPREL64I 0x2b +#define R_IA64_GPREL32MSB 0x2c +#define R_IA64_GPREL32LSB 0x2d +#define R_IA64_GPREL64MSB 0x2e +#define R_IA64_GPREL64LSB 0x2f +#define R_IA64_LTOFF22 0x32 +#define R_IA64_LTOFF64I 0x33 +#define R_IA64_PLTOFF22 0x3a +#define R_IA64_PLTOFF64I 0x3b +#define R_IA64_PLTOFF64MSB 0x3e +#define R_IA64_PLTOFF64LSB 0x3f +#define R_IA64_FPTR64I 0x43 +#define R_IA64_FPTR32MSB 0x44 +#define R_IA64_FPTR32LSB 0x45 +#define R_IA64_FPTR64MSB 0x46 +#define R_IA64_FPTR64LSB 0x47 +#define R_IA64_PCREL60B 0x48 +#define R_IA64_PCREL21B 0x49 +#define R_IA64_PCREL21M 0x4a +#define R_IA64_PCREL21F 0x4b +#define R_IA64_PCREL32MSB 0x4c +#define R_IA64_PCREL32LSB 0x4d +#define R_IA64_PCREL64MSB 0x4e +#define R_IA64_PCREL64LSB 0x4f +#define R_IA64_LTOFF_FPTR22 0x52 +#define R_IA64_LTOFF_FPTR64I 0x53 +#define R_IA64_LTOFF_FPTR32MSB 0x54 +#define R_IA64_LTOFF_FPTR32LSB 0x55 +#define R_IA64_LTOFF_FPTR64MSB 0x56 +#define R_IA64_LTOFF_FPTR64LSB 0x57 +#define R_IA64_SEGREL32MSB 0x5c +#define R_IA64_SEGREL32LSB 0x5d +#define R_IA64_SEGREL64MSB 0x5e +#define R_IA64_SEGREL64LSB 0x5f +#define R_IA64_SECREL32MSB 0x64 +#define R_IA64_SECREL32LSB 0x65 +#define R_IA64_SECREL64MSB 0x66 +#define R_IA64_SECREL64LSB 0x67 +#define R_IA64_REL32MSB 0x6c +#define R_IA64_REL32LSB 0x6d +#define R_IA64_REL64MSB 0x6e +#define R_IA64_REL64LSB 0x6f +#define R_IA64_LTV32MSB 0x74 +#define R_IA64_LTV32LSB 0x75 +#define R_IA64_LTV64MSB 0x76 +#define R_IA64_LTV64LSB 0x77 +#define R_IA64_PCREL21BI 0x79 +#define R_IA64_PCREL22 0x7a +#define R_IA64_PCREL64I 0x7b +#define R_IA64_IPLTMSB 0x80 +#define R_IA64_IPLTLSB 0x81 +#define R_IA64_COPY 0x84 +#define R_IA64_SUB 0x85 +#define R_IA64_LTOFF22X 0x86 +#define R_IA64_LDXMOV 0x87 +#define R_IA64_TPREL14 0x91 +#define R_IA64_TPREL22 0x92 +#define R_IA64_TPREL64I 0x93 +#define R_IA64_TPREL64MSB 0x96 +#define R_IA64_TPREL64LSB 0x97 +#define R_IA64_LTOFF_TPREL22 0x9a +#define R_IA64_DTPMOD64MSB 0xa6 +#define R_IA64_DTPMOD64LSB 0xa7 +#define R_IA64_LTOFF_DTPMOD22 0xaa +#define R_IA64_DTPREL14 0xb1 +#define R_IA64_DTPREL22 0xb2 +#define R_IA64_DTPREL64I 0xb3 +#define R_IA64_DTPREL32MSB 0xb4 +#define R_IA64_DTPREL32LSB 0xb5 +#define R_IA64_DTPREL64MSB 0xb6 +#define R_IA64_DTPREL64LSB 0xb7 +#define R_IA64_LTOFF_DTPREL22 0xba + + + + +#define R_SH_NONE 0 +#define R_SH_DIR32 1 +#define R_SH_REL32 2 +#define R_SH_DIR8WPN 3 +#define R_SH_IND12W 4 +#define R_SH_DIR8WPL 5 +#define R_SH_DIR8WPZ 6 +#define R_SH_DIR8BP 7 +#define R_SH_DIR8W 8 +#define R_SH_DIR8L 9 +#define R_SH_SWITCH16 25 +#define R_SH_SWITCH32 26 +#define R_SH_USES 27 +#define R_SH_COUNT 28 +#define R_SH_ALIGN 29 +#define R_SH_CODE 30 +#define R_SH_DATA 31 +#define R_SH_LABEL 32 +#define R_SH_SWITCH8 33 +#define R_SH_GNU_VTINHERIT 34 +#define R_SH_GNU_VTENTRY 35 +#define R_SH_TLS_GD_32 144 +#define R_SH_TLS_LD_32 145 +#define R_SH_TLS_LDO_32 146 +#define R_SH_TLS_IE_32 147 +#define R_SH_TLS_LE_32 148 +#define R_SH_TLS_DTPMOD32 149 +#define R_SH_TLS_DTPOFF32 150 +#define R_SH_TLS_TPOFF32 151 +#define R_SH_GOT32 160 +#define R_SH_PLT32 161 +#define R_SH_COPY 162 +#define R_SH_GLOB_DAT 163 +#define R_SH_JMP_SLOT 164 +#define R_SH_RELATIVE 165 +#define R_SH_GOTOFF 166 +#define R_SH_GOTPC 167 +#define R_SH_GOT20 201 +#define R_SH_GOTOFF20 202 +#define R_SH_GOTFUNCDESC 203 +#define R_SH_GOTFUNCDEST20 204 +#define R_SH_GOTOFFFUNCDESC 205 +#define R_SH_GOTOFFFUNCDEST20 206 +#define R_SH_FUNCDESC 207 +#define R_SH_FUNCDESC_VALUE 208 + +#define R_SH_NUM 256 + + + +#define R_390_NONE 0 +#define R_390_8 1 +#define R_390_12 2 +#define R_390_16 3 +#define R_390_32 4 +#define R_390_PC32 5 +#define R_390_GOT12 6 +#define R_390_GOT32 7 +#define R_390_PLT32 8 +#define R_390_COPY 9 +#define R_390_GLOB_DAT 10 +#define R_390_JMP_SLOT 11 +#define R_390_RELATIVE 12 +#define R_390_GOTOFF32 13 +#define R_390_GOTPC 14 +#define R_390_GOT16 15 +#define R_390_PC16 16 +#define R_390_PC16DBL 17 +#define R_390_PLT16DBL 18 +#define R_390_PC32DBL 19 +#define R_390_PLT32DBL 20 +#define R_390_GOTPCDBL 21 +#define R_390_64 22 +#define R_390_PC64 23 +#define R_390_GOT64 24 +#define R_390_PLT64 25 +#define R_390_GOTENT 26 +#define R_390_GOTOFF16 27 +#define R_390_GOTOFF64 28 +#define R_390_GOTPLT12 29 +#define R_390_GOTPLT16 30 +#define R_390_GOTPLT32 31 +#define R_390_GOTPLT64 32 +#define R_390_GOTPLTENT 33 +#define R_390_PLTOFF16 34 +#define R_390_PLTOFF32 35 +#define R_390_PLTOFF64 36 +#define R_390_TLS_LOAD 37 +#define R_390_TLS_GDCALL 38 + +#define R_390_TLS_LDCALL 39 + +#define R_390_TLS_GD32 40 + +#define R_390_TLS_GD64 41 + +#define R_390_TLS_GOTIE12 42 + +#define R_390_TLS_GOTIE32 43 + +#define R_390_TLS_GOTIE64 44 + +#define R_390_TLS_LDM32 45 + +#define R_390_TLS_LDM64 46 + +#define R_390_TLS_IE32 47 + +#define R_390_TLS_IE64 48 + +#define R_390_TLS_IEENT 49 + +#define R_390_TLS_LE32 50 + +#define R_390_TLS_LE64 51 + +#define R_390_TLS_LDO32 52 + +#define R_390_TLS_LDO64 53 + +#define R_390_TLS_DTPMOD 54 +#define R_390_TLS_DTPOFF 55 +#define R_390_TLS_TPOFF 56 + +#define R_390_20 57 +#define R_390_GOT20 58 +#define R_390_GOTPLT20 59 +#define R_390_TLS_GOTIE20 60 + + +#define R_390_NUM 61 + + + +#define R_CRIS_NONE 0 +#define R_CRIS_8 1 +#define R_CRIS_16 2 +#define R_CRIS_32 3 +#define R_CRIS_8_PCREL 4 +#define R_CRIS_16_PCREL 5 +#define R_CRIS_32_PCREL 6 +#define R_CRIS_GNU_VTINHERIT 7 +#define R_CRIS_GNU_VTENTRY 8 +#define R_CRIS_COPY 9 +#define R_CRIS_GLOB_DAT 10 +#define R_CRIS_JUMP_SLOT 11 +#define R_CRIS_RELATIVE 12 +#define R_CRIS_16_GOT 13 +#define R_CRIS_32_GOT 14 +#define R_CRIS_16_GOTPLT 15 +#define R_CRIS_32_GOTPLT 16 +#define R_CRIS_32_GOTREL 17 +#define R_CRIS_32_PLT_GOTREL 18 +#define R_CRIS_32_PLT_PCREL 19 + +#define R_CRIS_NUM 20 + + + +#define R_X86_64_NONE 0 +#define R_X86_64_64 1 +#define R_X86_64_PC32 2 +#define R_X86_64_GOT32 3 +#define R_X86_64_PLT32 4 +#define R_X86_64_COPY 5 +#define R_X86_64_GLOB_DAT 6 +#define R_X86_64_JUMP_SLOT 7 +#define R_X86_64_RELATIVE 8 +#define R_X86_64_GOTPCREL 9 + +#define R_X86_64_32 10 +#define R_X86_64_32S 11 +#define R_X86_64_16 12 +#define R_X86_64_PC16 13 +#define R_X86_64_8 14 +#define R_X86_64_PC8 15 +#define R_X86_64_DTPMOD64 16 +#define R_X86_64_DTPOFF64 17 +#define R_X86_64_TPOFF64 18 +#define R_X86_64_TLSGD 19 + +#define R_X86_64_TLSLD 20 + +#define R_X86_64_DTPOFF32 21 +#define R_X86_64_GOTTPOFF 22 + +#define R_X86_64_TPOFF32 23 +#define R_X86_64_PC64 24 +#define R_X86_64_GOTOFF64 25 +#define R_X86_64_GOTPC32 26 +#define R_X86_64_GOT64 27 +#define R_X86_64_GOTPCREL64 28 +#define R_X86_64_GOTPC64 29 +#define R_X86_64_GOTPLT64 30 +#define R_X86_64_PLTOFF64 31 +#define R_X86_64_SIZE32 32 +#define R_X86_64_SIZE64 33 + +#define R_X86_64_GOTPC32_TLSDESC 34 +#define R_X86_64_TLSDESC_CALL 35 + +#define R_X86_64_TLSDESC 36 +#define R_X86_64_IRELATIVE 37 +#define R_X86_64_RELATIVE64 38 +#define R_X86_64_NUM 39 + + + +#define R_MN10300_NONE 0 +#define R_MN10300_32 1 +#define R_MN10300_16 2 +#define R_MN10300_8 3 +#define R_MN10300_PCREL32 4 +#define R_MN10300_PCREL16 5 +#define R_MN10300_PCREL8 6 +#define R_MN10300_GNU_VTINHERIT 7 +#define R_MN10300_GNU_VTENTRY 8 +#define R_MN10300_24 9 +#define R_MN10300_GOTPC32 10 +#define R_MN10300_GOTPC16 11 +#define R_MN10300_GOTOFF32 12 +#define R_MN10300_GOTOFF24 13 +#define R_MN10300_GOTOFF16 14 +#define R_MN10300_PLT32 15 +#define R_MN10300_PLT16 16 +#define R_MN10300_GOT32 17 +#define R_MN10300_GOT24 18 +#define R_MN10300_GOT16 19 +#define R_MN10300_COPY 20 +#define R_MN10300_GLOB_DAT 21 +#define R_MN10300_JMP_SLOT 22 +#define R_MN10300_RELATIVE 23 + +#define R_MN10300_NUM 24 + + + +#define R_M32R_NONE 0 +#define R_M32R_16 1 +#define R_M32R_32 2 +#define R_M32R_24 3 +#define R_M32R_10_PCREL 4 +#define R_M32R_18_PCREL 5 +#define R_M32R_26_PCREL 6 +#define R_M32R_HI16_ULO 7 +#define R_M32R_HI16_SLO 8 +#define R_M32R_LO16 9 +#define R_M32R_SDA16 10 +#define R_M32R_GNU_VTINHERIT 11 +#define R_M32R_GNU_VTENTRY 12 + +#define R_M32R_16_RELA 33 +#define R_M32R_32_RELA 34 +#define R_M32R_24_RELA 35 +#define R_M32R_10_PCREL_RELA 36 +#define R_M32R_18_PCREL_RELA 37 +#define R_M32R_26_PCREL_RELA 38 +#define R_M32R_HI16_ULO_RELA 39 +#define R_M32R_HI16_SLO_RELA 40 +#define R_M32R_LO16_RELA 41 +#define R_M32R_SDA16_RELA 42 +#define R_M32R_RELA_GNU_VTINHERIT 43 +#define R_M32R_RELA_GNU_VTENTRY 44 +#define R_M32R_REL32 45 + +#define R_M32R_GOT24 48 +#define R_M32R_26_PLTREL 49 +#define R_M32R_COPY 50 +#define R_M32R_GLOB_DAT 51 +#define R_M32R_JMP_SLOT 52 +#define R_M32R_RELATIVE 53 +#define R_M32R_GOTOFF 54 +#define R_M32R_GOTPC24 55 +#define R_M32R_GOT16_HI_ULO 56 + +#define R_M32R_GOT16_HI_SLO 57 + +#define R_M32R_GOT16_LO 58 +#define R_M32R_GOTPC_HI_ULO 59 + +#define R_M32R_GOTPC_HI_SLO 60 + +#define R_M32R_GOTPC_LO 61 + +#define R_M32R_GOTOFF_HI_ULO 62 + +#define R_M32R_GOTOFF_HI_SLO 63 + +#define R_M32R_GOTOFF_LO 64 +#define R_M32R_NUM 256 + +#define R_MICROBLAZE_NONE 0 +#define R_MICROBLAZE_32 1 +#define R_MICROBLAZE_32_PCREL 2 +#define R_MICROBLAZE_64_PCREL 3 +#define R_MICROBLAZE_32_PCREL_LO 4 +#define R_MICROBLAZE_64 5 +#define R_MICROBLAZE_32_LO 6 +#define R_MICROBLAZE_SRO32 7 +#define R_MICROBLAZE_SRW32 8 +#define R_MICROBLAZE_64_NONE 9 +#define R_MICROBLAZE_32_SYM_OP_SYM 10 +#define R_MICROBLAZE_GNU_VTINHERIT 11 +#define R_MICROBLAZE_GNU_VTENTRY 12 +#define R_MICROBLAZE_GOTPC_64 13 +#define R_MICROBLAZE_GOT_64 14 +#define R_MICROBLAZE_PLT_64 15 +#define R_MICROBLAZE_REL 16 +#define R_MICROBLAZE_JUMP_SLOT 17 +#define R_MICROBLAZE_GLOB_DAT 18 +#define R_MICROBLAZE_GOTOFF_64 19 +#define R_MICROBLAZE_GOTOFF_32 20 +#define R_MICROBLAZE_COPY 21 +#define R_MICROBLAZE_TLS 22 +#define R_MICROBLAZE_TLSGD 23 +#define R_MICROBLAZE_TLSLD 24 +#define R_MICROBLAZE_TLSDTPMOD32 25 +#define R_MICROBLAZE_TLSDTPREL32 26 +#define R_MICROBLAZE_TLSDTPREL64 27 +#define R_MICROBLAZE_TLSGOTTPREL32 28 +#define R_MICROBLAZE_TLSTPREL32 29 + +#define R_OR1K_NONE 0 +#define R_OR1K_32 1 +#define R_OR1K_16 2 +#define R_OR1K_8 3 +#define R_OR1K_LO_16_IN_INSN 4 +#define R_OR1K_HI_16_IN_INSN 5 +#define R_OR1K_INSN_REL_26 6 +#define R_OR1K_GNU_VTENTRY 7 +#define R_OR1K_GNU_VTINHERIT 8 +#define R_OR1K_32_PCREL 9 +#define R_OR1K_16_PCREL 10 +#define R_OR1K_8_PCREL 11 +#define R_OR1K_GOTPC_HI16 12 +#define R_OR1K_GOTPC_LO16 13 +#define R_OR1K_GOT16 14 +#define R_OR1K_PLT26 15 +#define R_OR1K_GOTOFF_HI16 16 +#define R_OR1K_GOTOFF_LO16 17 +#define R_OR1K_COPY 18 +#define R_OR1K_GLOB_DAT 19 +#define R_OR1K_JMP_SLOT 20 +#define R_OR1K_RELATIVE 21 +#define R_OR1K_TLS_GD_HI16 22 +#define R_OR1K_TLS_GD_LO16 23 +#define R_OR1K_TLS_LDM_HI16 24 +#define R_OR1K_TLS_LDM_LO16 25 +#define R_OR1K_TLS_LDO_HI16 26 +#define R_OR1K_TLS_LDO_LO16 27 +#define R_OR1K_TLS_IE_HI16 28 +#define R_OR1K_TLS_IE_LO16 29 +#define R_OR1K_TLS_LE_HI16 30 +#define R_OR1K_TLS_LE_LO16 31 +#define R_OR1K_TLS_TPOFF 32 +#define R_OR1K_TLS_DTPOFF 33 +#define R_OR1K_TLS_DTPMOD 34 + +#ifdef __cplusplus +} +#endif + + +#endif diff --git a/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc b/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc index c8ade33a404d..84953172ea12 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc @@ -27,7 +27,9 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#include #include +#include #include #include @@ -37,37 +39,53 @@ #include "common/linux/dump_symbols.h" using google_breakpad::WriteSymbolFile; +using google_breakpad::WriteSymbolFileHeader; int usage(const char* self) { fprintf(stderr, "Usage: %s [OPTION] " "[directories-for-debug-file]\n\n", self); fprintf(stderr, "Options:\n"); + fprintf(stderr, " -i: Output module header information only.\n"); fprintf(stderr, " -c Do not generate CFI section\n"); fprintf(stderr, " -r Do not handle inter-compilation unit references\n"); + fprintf(stderr, " -v Print all warnings to stderr\n"); return 1; } int main(int argc, char **argv) { if (argc < 2) return usage(argv[0]); - + bool header_only = false; bool cfi = true; bool handle_inter_cu_refs = true; + bool log_to_stderr = false; int arg_index = 1; while (arg_index < argc && strlen(argv[arg_index]) > 0 && argv[arg_index][0] == '-') { - if (strcmp("-c", argv[arg_index]) == 0) { + if (strcmp("-i", argv[arg_index]) == 0) { + header_only = true; + } else if (strcmp("-c", argv[arg_index]) == 0) { cfi = false; } else if (strcmp("-r", argv[arg_index]) == 0) { handle_inter_cu_refs = false; + } else if (strcmp("-v", argv[arg_index]) == 0) { + log_to_stderr = true; } else { + printf("2.4 %s\n", argv[arg_index]); return usage(argv[0]); } ++arg_index; } if (arg_index == argc) return usage(argv[0]); - + // Save stderr so it can be used below. + FILE* saved_stderr = fdopen(dup(fileno(stderr)), "w"); + if (!log_to_stderr) { + if (freopen(_PATH_DEVNULL, "w", stderr)) { + // If it fails, not a lot we can (or should) do. + // Add this brace section to silence gcc warnings. + } + } const char* binary; std::vector debug_dirs; binary = argv[arg_index]; @@ -77,11 +95,18 @@ int main(int argc, char **argv) { debug_dirs.push_back(argv[debug_dir_index]); } - SymbolData symbol_data = cfi ? ALL_SYMBOL_DATA : NO_CFI; - google_breakpad::DumpOptions options(symbol_data, handle_inter_cu_refs); - if (!WriteSymbolFile(binary, debug_dirs, options, std::cout)) { - fprintf(stderr, "Failed to write symbol file.\n"); - return 1; + if (header_only) { + if (!WriteSymbolFileHeader(binary, std::cout)) { + fprintf(saved_stderr, "Failed to process file.\n"); + return 1; + } + } else { + SymbolData symbol_data = cfi ? ALL_SYMBOL_DATA : NO_CFI; + google_breakpad::DumpOptions options(symbol_data, handle_inter_cu_refs); + if (!WriteSymbolFile(binary, debug_dirs, options, std::cout)) { + fprintf(saved_stderr, "Failed to write symbol file.\n"); + return 1; + } } return 0; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc b/toolkit/crashreporter/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc index 8e9cd1291a0d..6f637845ee76 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc @@ -35,7 +35,6 @@ #include #include -#include #include #include #include @@ -50,6 +49,8 @@ #include "common/linux/memory_mapped_file.h" #include "common/minidump_type_helper.h" #include "common/scoped_ptr.h" +#include "common/using_std_string.h" +#include "google_breakpad/common/breakpad_types.h" #include "google_breakpad/common/minidump_format.h" #include "third_party/lss/linux_syscall_support.h" #include "tools/linux/md2core/minidump_memory_range.h" @@ -97,7 +98,7 @@ typedef MDTypeHelper::MDRawLinkMap MDRawLinkMap; static const MDRVA kInvalidMDRVA = static_cast(-1); static bool verbose; -static std::string g_custom_so_basedir; +static string g_custom_so_basedir; static int usage(const char* argv0) { fprintf(stderr, "Usage: %s [-v] \n", argv0); @@ -203,8 +204,8 @@ struct CrashedProcess { uint32_t permissions; uint64_t start_address, end_address, offset; - std::string filename; - std::string data; + string filename; + string data; }; std::map mappings; @@ -238,9 +239,9 @@ struct CrashedProcess { prpsinfo prps; - std::map signatures; + std::map signatures; - std::string dynamic_data; + string dynamic_data; MDRawDebug debug; std::vector link_map; }; @@ -494,11 +495,21 @@ ParseSystemInfo(CrashedProcess* crashinfo, const MinidumpMemoryRange& range, _exit(1); } #elif defined(__mips__) +# if _MIPS_SIM == _ABIO32 if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_MIPS) { fprintf(stderr, - "This version of minidump-2-core only supports mips (32bit).\n"); + "This version of minidump-2-core only supports mips o32 (32bit).\n"); _exit(1); } +# elif _MIPS_SIM == _ABI64 + if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_MIPS64) { + fprintf(stderr, + "This version of minidump-2-core only supports mips n64 (64bit).\n"); + _exit(1); + } +# else +# error "This mips ABI is currently not supported (n32)" +# endif #else #error "This code has not been ported to your platform yet" #endif @@ -525,6 +536,8 @@ ParseSystemInfo(CrashedProcess* crashinfo, const MinidumpMemoryRange& range, ? "ARM" : sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_MIPS ? "MIPS" + : sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_MIPS64 + ? "MIPS64" : "???", sysinfo->number_of_processors, sysinfo->processor_level, @@ -585,8 +598,8 @@ ParseMaps(CrashedProcess* crashinfo, const MinidumpMemoryRange& range) { ptr < range.data() + range.length();) { const uint8_t* eol = (uint8_t*)memchr(ptr, '\n', range.data() + range.length() - ptr); - std::string line((const char*)ptr, - eol ? eol - ptr : range.data() + range.length() - ptr); + string line((const char*)ptr, + eol ? eol - ptr : range.data() + range.length() - ptr); ptr = eol ? eol + 1 : range.data() + range.length(); unsigned long long start, stop, offset; char* permissions = NULL; @@ -863,17 +876,17 @@ ParseModuleStream(CrashedProcess* crashinfo, const MinidumpMemoryRange& range, record->signature.data4[2], record->signature.data4[3], record->signature.data4[4], record->signature.data4[5], record->signature.data4[6], record->signature.data4[7]); - std::string filename = + string filename = full_file.GetAsciiMDString(rawmodule->module_name_rva); size_t slash = filename.find_last_of('/'); - std::string basename = slash == std::string::npos ? - filename : filename.substr(slash + 1); + string basename = slash == string::npos ? + filename : filename.substr(slash + 1); if (strcmp(guid, "00000000-0000-0000-0000-000000000000")) { - std::string prefix; + string prefix; if (!g_custom_so_basedir.empty()) prefix = g_custom_so_basedir; else - prefix = std::string("/var/lib/breakpad/") + guid + "-" + basename; + prefix = string("/var/lib/breakpad/") + guid + "-" + basename; crashinfo->signatures[rawmodule->base_of_image] = prefix + basename; } @@ -892,7 +905,7 @@ ParseModuleStream(CrashedProcess* crashinfo, const MinidumpMemoryRange& range, } static void -AddDataToMapping(CrashedProcess* crashinfo, const std::string& data, +AddDataToMapping(CrashedProcess* crashinfo, const string& data, uintptr_t addr) { for (std::map::iterator iter = crashinfo->mappings.begin(); @@ -948,7 +961,7 @@ AugmentMappings(CrashedProcess* crashinfo, for (unsigned i = 0; i < crashinfo->threads.size(); ++i) { const CrashedProcess::Thread& thread = crashinfo->threads[i]; AddDataToMapping(crashinfo, - std::string((char *)thread.stack, thread.stack_length), + string((char *)thread.stack, thread.stack_length), thread.stack_addr); } @@ -956,7 +969,7 @@ AugmentMappings(CrashedProcess* crashinfo, // the beginning of the address space, as this area should always be // available. static const uintptr_t start_addr = 4096; - std::string data; + string data; struct r_debug debug = { 0 }; debug.r_version = crashinfo->debug.version; debug.r_brk = (ElfW(Addr))crashinfo->debug.brk; @@ -976,11 +989,11 @@ AugmentMappings(CrashedProcess* crashinfo, link_map.l_ld = (ElfW(Dyn)*)iter->ld; link_map.l_prev = prev; prev = (struct link_map*)(start_addr + data.size()); - std::string filename = full_file.GetAsciiMDString(iter->name); + string filename = full_file.GetAsciiMDString(iter->name); // Look up signature for this filename. If available, change filename // to point to GUID, instead. - std::map::const_iterator guid = + std::map::const_iterator guid = crashinfo->signatures.find((uintptr_t)iter->addr); if (guid != crashinfo->signatures.end()) { filename = guid->second; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/linux/symupload/sym_upload.cc b/toolkit/crashreporter/google-breakpad/src/tools/linux/symupload/sym_upload.cc index 2f9a73c39f8b..9eeb2d447e32 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/linux/symupload/sym_upload.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/linux/symupload/sym_upload.cc @@ -39,138 +39,13 @@ // cpu: the CPU that the module was built for // symbol_file: the contents of the breakpad-format symbol file -#include #include #include #include -#include -#include -#include -#include +#include "common/linux/symbol_upload.h" -#include "common/linux/http_upload.h" -#include "common/using_std_string.h" - -using google_breakpad::HTTPUpload; - -typedef struct { - string symbolsPath; - string uploadURLStr; - string proxy; - string proxy_user_pwd; - string version; - bool success; -} Options; - -static void TokenizeByChar(const string &source_string, - int c, std::vector *results) { - assert(results); - string::size_type cur_pos = 0, next_pos = 0; - while ((next_pos = source_string.find(c, cur_pos)) != string::npos) { - if (next_pos != cur_pos) - results->push_back(source_string.substr(cur_pos, next_pos - cur_pos)); - cur_pos = next_pos + 1; - } - if (cur_pos < source_string.size() && next_pos != cur_pos) - results->push_back(source_string.substr(cur_pos)); -} - -//============================================================================= -// Parse out the module line which have 5 parts. -// MODULE -static bool ModuleDataForSymbolFile(const string &file, - std::vector *module_parts) { - assert(module_parts); - const size_t kModulePartNumber = 5; - FILE* fp = fopen(file.c_str(), "r"); - if (fp) { - char buffer[1024]; - if (fgets(buffer, sizeof(buffer), fp)) { - string line(buffer); - string::size_type line_break_pos = line.find_first_of('\n'); - if (line_break_pos == string::npos) { - assert(0 && "The file is invalid!"); - fclose(fp); - return false; - } - line.resize(line_break_pos); - const char kDelimiter = ' '; - TokenizeByChar(line, kDelimiter, module_parts); - if (module_parts->size() != kModulePartNumber) - module_parts->clear(); - } - fclose(fp); - } - - return module_parts->size() == kModulePartNumber; -} - -//============================================================================= -static string CompactIdentifier(const string &uuid) { - std::vector components; - TokenizeByChar(uuid, '-', &components); - string result; - for (size_t i = 0; i < components.size(); ++i) - result += components[i]; - return result; -} - -//============================================================================= -static void Start(Options *options) { - std::map parameters; - options->success = false; - std::vector module_parts; - if (!ModuleDataForSymbolFile(options->symbolsPath, &module_parts)) { - fprintf(stderr, "Failed to parse symbol file!\n"); - return; - } - - string compacted_id = CompactIdentifier(module_parts[3]); - - // Add parameters - if (!options->version.empty()) - parameters["version"] = options->version; - - // MODULE - // 0 1 2 3 4 - parameters["os"] = module_parts[1]; - parameters["cpu"] = module_parts[2]; - parameters["debug_file"] = module_parts[4]; - parameters["code_file"] = module_parts[4]; - parameters["debug_identifier"] = compacted_id; - - std::map files; - files["symbol_file"] = options->symbolsPath; - - string response, error; - long response_code; - bool success = HTTPUpload::SendRequest(options->uploadURLStr, - parameters, - files, - options->proxy, - options->proxy_user_pwd, - "", - &response, - &response_code, - &error); - - if (!success) { - printf("Failed to send symbol file: %s\n", error.c_str()); - printf("Response code: %ld\n", response_code); - printf("Response:\n"); - printf("%s\n", response.c_str()); - } else if (response_code == 0) { - printf("Failed to send symbol file: No response code\n"); - } else if (response_code != 200) { - printf("Failed to send symbol file: Response code %ld\n", response_code); - printf("Response:\n"); - printf("%s\n", response.c_str()); - } else { - printf("Successfully sent the symbol file.\n"); - } - options->success = success; -} +using google_breakpad::sym_upload::Options; //============================================================================= static void @@ -232,6 +107,6 @@ SetupOptions(int argc, const char *argv[], Options *options) { int main(int argc, const char* argv[]) { Options options; SetupOptions(argc, argv, &options); - Start(&options); + google_breakpad::sym_upload::Start(&options); return options.success ? 0 : 1; } diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj index ee20b2dd219e..2e6bd9e102e9 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj @@ -36,6 +36,8 @@ 162F64FA161C591500CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F8161C591500CD68D5 /* arch_utilities.cc */; }; 162F6500161C5F2200CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F8161C591500CD68D5 /* arch_utilities.cc */; }; 4D72CAF513DFBAC2006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CAF413DFBAC2006CABE3 /* md5.cc */; }; + 8BCAAA4C1CE3A7980046090B /* elf_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8BCAAA4A1CE3A7980046090B /* elf_reader.cc */; }; + 8BCAAA4D1CE3B1260046090B /* elf_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8BCAAA4A1CE3A7980046090B /* elf_reader.cc */; }; B84A91F8116CF78F006C210E /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; }; B84A91FB116CF7AF006C210E /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE241166603300407530 /* module.cc */; }; B84A91FC116CF7AF006C210E /* stabs_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE3C11666C8900407530 /* stabs_to_module.cc */; }; @@ -280,6 +282,8 @@ 8B31023E11F0CF1C00FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; }; 8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; }; 8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; }; + 8BCAAA4A1CE3A7980046090B /* elf_reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = elf_reader.cc; path = ../../../common/dwarf/elf_reader.cc; sourceTree = ""; }; + 8BCAAA4B1CE3A7980046090B /* elf_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = elf_reader.h; path = ../../../common/dwarf/elf_reader.h; sourceTree = ""; }; 9BDF186D0B1BB43700F8391B /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = ""; }; 9BDF186E0B1BB43700F8391B /* dump_syms_tool.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = dump_syms_tool.cc; sourceTree = ""; }; 9BE650410B52F6D800611104 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; }; @@ -613,6 +617,8 @@ B88FAE1711665FE400407530 /* dwarf2diehandler.cc */, B88FAE1811665FE400407530 /* dwarf2diehandler.h */, B88FB0DB116CEC5800407530 /* dwarf2diehandler_unittest.cc */, + 8BCAAA4A1CE3A7980046090B /* elf_reader.cc */, + 8BCAAA4B1CE3A7980046090B /* elf_reader.h */, ); name = DWARF; sourceTree = ""; @@ -887,6 +893,8 @@ /* Begin PBXProject section */ 08FB7793FE84155DC02AAC07 /* Project object */ = { isa = PBXProject; + attributes = { + }; buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "dump_syms" */; compatibilityVersion = "Xcode 3.1"; developmentRegion = English; @@ -954,6 +962,7 @@ files = ( B88FAF38116A595400407530 /* dwarf2reader_cfi_unittest.cc in Sources */, B88FAF3F116A5A2E00407530 /* dwarf2reader.cc in Sources */, + 8BCAAA4D1CE3B1260046090B /* elf_reader.cc in Sources */, B88FAF40116A5A2E00407530 /* bytereader.cc in Sources */, B88FAF37116A595400407530 /* cfi_assembler.cc in Sources */, ); @@ -1071,6 +1080,7 @@ files = ( 162F64FA161C591500CD68D5 /* arch_utilities.cc in Sources */, B88FAE2C1166606200407530 /* macho_reader.cc in Sources */, + 8BCAAA4C1CE3A7980046090B /* elf_reader.cc in Sources */, B8C5B5171166534700D34F4E /* dwarf2reader.cc in Sources */, B8C5B5181166534700D34F4E /* bytereader.cc in Sources */, B8C5B5191166534700D34F4E /* macho_utilities.cc in Sources */, @@ -1225,7 +1235,11 @@ isa = XCBuildConfiguration; baseConfigurationReference = 8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */; buildSettings = { - HEADER_SEARCH_PATHS = ../../..; + HEADER_SEARCH_PATHS = ( + ../../.., + ../../../common/mac/include/, + ../../../third_party/musl/include/, + ); }; name = Debug; }; @@ -1233,7 +1247,11 @@ isa = XCBuildConfiguration; baseConfigurationReference = 8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */; buildSettings = { - HEADER_SEARCH_PATHS = ../../..; + HEADER_SEARCH_PATHS = ( + ../../.., + ../../../common/mac/include/, + ../../../third_party/musl/include/, + ); }; name = Release; }; @@ -1617,6 +1635,7 @@ isa = XCBuildConfiguration; buildSettings = { GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H; + GCC_VERSION = ""; PRODUCT_NAME = dump_syms; }; name = Debug; @@ -1625,6 +1644,7 @@ isa = XCBuildConfiguration; buildSettings = { GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H; + GCC_VERSION = ""; PRODUCT_NAME = dump_syms; }; name = Release; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc index 54f29226116d..6f68457b4c16 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc @@ -51,11 +51,13 @@ using std::vector; struct Options { Options() - : srcPath(), dsymPath(), arch(), cfi(true), handle_inter_cu_refs(true) {} + : srcPath(), dsymPath(), arch(), header_only(false), + cfi(true), handle_inter_cu_refs(true) {} string srcPath; string dsymPath; const NXArchInfo *arch; + bool header_only; bool cfi; bool handle_inter_cu_refs; }; @@ -151,6 +153,9 @@ static bool Start(const Options &options) { } } + if (options.header_only) + return dump_symbols.WriteSymbolFileHeader(std::cout); + // Read the primary file into a Breakpad Module. Module* module = NULL; if (!dump_symbols.ReadSymbolData(&module)) @@ -189,6 +194,7 @@ static void Usage(int argc, const char *argv[]) { fprintf(stderr, "Output a Breakpad symbol file from a Mach-o file.\n"); fprintf(stderr, "Usage: %s [-a ARCHITECTURE] [-c] [-g dSYM path] " "\n", argv[0]); + fprintf(stderr, "\t-i: Output module header information only.\n"); fprintf(stderr, "\t-a: Architecture type [default: native, or whatever is\n"); fprintf(stderr, "\t in the file, if it contains only one architecture]\n"); fprintf(stderr, "\t-g: Debug symbol file (dSYM) to dump in addition to the " @@ -204,8 +210,11 @@ static void SetupOptions(int argc, const char *argv[], Options *options) { extern int optind; signed char ch; - while ((ch = getopt(argc, (char * const *)argv, "a:g:chr?")) != -1) { + while ((ch = getopt(argc, (char * const *)argv, "ia:g:chr?")) != -1) { switch (ch) { + case 'i': + options->header_only = true; + break; case 'a': { const NXArchInfo *arch_info = google_breakpad::BreakpadGetArchInfoFromName(optarg); diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc index 4402bf4ea06d..d882bbe883b6 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc @@ -138,8 +138,12 @@ void DumpFile(const char *filename) { } printf("filename: %s\n", filename); size_t object_files_size; - const struct fat_arch *object_files - = fat_reader.object_files(&object_files_size); + const SuperFatArch* super_fat_object_files = + fat_reader.object_files(&object_files_size); + struct fat_arch *object_files; + if (!super_fat_object_files->ConvertToFatArch(object_files)) { + exit(1); + } printf(" object file count: %ld\n", object_files_size); for (size_t i = 0; i < object_files_size; i++) { const struct fat_arch &file = object_files[i]; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build index 65eda4522580..99ae82aa7ff0 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build @@ -11,6 +11,8 @@ HOST_SOURCES += [ HOST_CXXFLAGS += [ '-O2', '-g', + '-pthread', + '-stdlib=libc++', ] # Order matters here, but HOST_USE_LIBS must be sorted. diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/minidump_upload.m b/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/minidump_upload.m index 991a5de5ebc8..741ad765e5f2 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/minidump_upload.m +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/minidump_upload.m @@ -68,8 +68,8 @@ static void Start(Options *options) { encoding:NSUTF8StringEncoding]; NSLog(@"Send: %@", error ? [error description] : @"No Error"); - NSLog(@"Response: %d", [[ul response] statusCode]); - NSLog(@"Result: %d bytes\n%@", [data length], result); + NSLog(@"Response: %ld", (long)[[ul response] statusCode]); + NSLog(@"Result: %lu bytes\n%@", (unsigned long)[data length], result); [result release]; [ul release]; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m b/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m index fe4134581eee..a7cce7b00cc0 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m @@ -38,6 +38,8 @@ // cpu: the CPU that the module was built for (x86 or ppc) // symbol_file: the contents of the breakpad-format symbol file +#include +#include #include #include @@ -81,15 +83,6 @@ static NSArray *ModuleDataForSymbolFile(NSString *file) { return parts; } -//============================================================================= -static NSString *CompactIdentifier(NSString *uuid) { - NSMutableString *str = [NSMutableString stringWithString:uuid]; - [str replaceOccurrencesOfString:@"-" withString:@"" options:0 - range:NSMakeRange(0, [str length])]; - - return str; -} - //============================================================================= static void Start(Options *options) { NSURL *url = [NSURL URLWithString:options->uploadURLStr]; @@ -174,6 +167,25 @@ SetupOptions(int argc, const char *argv[], Options *options) { exit(1); } + int fd = open(argv[optind], O_RDONLY); + if (fd < 0) { + fprintf(stderr, "%s: %s: %s\n", argv[0], argv[optind], strerror(errno)); + exit(1); + } + + struct stat statbuf; + if (fstat(fd, &statbuf) < 0) { + fprintf(stderr, "%s: %s: %s\n", argv[0], argv[optind], strerror(errno)); + close(fd); + exit(1); + } + close(fd); + + if (!S_ISREG(statbuf.st_mode)) { + fprintf(stderr, "%s: %s: not a regular file\n", argv[0], argv[optind]); + exit(1); + } + options->symbolsPath = [NSString stringWithUTF8String:argv[optind]]; options->uploadURLStr = [NSString stringWithUTF8String:argv[optind + 1]]; } diff --git a/toolkit/crashreporter/nsExceptionHandler.cpp b/toolkit/crashreporter/nsExceptionHandler.cpp index 4786ba163c74..6ced8d8f8e75 100644 --- a/toolkit/crashreporter/nsExceptionHandler.cpp +++ b/toolkit/crashreporter/nsExceptionHandler.cpp @@ -108,6 +108,11 @@ using google_breakpad::ClientInfo; #ifdef XP_LINUX using google_breakpad::MinidumpDescriptor; #endif +#if defined(MOZ_WIDGET_ANDROID) +using google_breakpad::auto_wasteful_vector; +using google_breakpad::FileID; +using google_breakpad::PageAllocator; +#endif using namespace mozilla; using mozilla::dom::CrashReporterChild; using mozilla::dom::PCrashReporterChild; @@ -1708,10 +1713,12 @@ nsresult SetExceptionHandler(nsIFile* aXREDirectory, #if defined(MOZ_WIDGET_ANDROID) for (unsigned int i = 0; i < library_mappings.size(); i++) { - u_int8_t guid[sizeof(MDGUID)]; - google_breakpad::FileID::ElfFileIdentifierFromMappedFile((void const *)library_mappings[i].start_address, guid); + PageAllocator allocator; + auto_wasteful_vector guid(&allocator); + FileID::ElfFileIdentifierFromMappedFile( + (void const *)library_mappings[i].start_address, guid); gExceptionHandler->AddMappingInfo(library_mappings[i].name, - guid, + guid.data(), library_mappings[i].start_address, library_mappings[i].length, library_mappings[i].file_offset); @@ -4064,10 +4071,11 @@ void AddLibraryMapping(const char* library_name, library_mappings.push_back(info); } else { - u_int8_t guid[sizeof(MDGUID)]; - google_breakpad::FileID::ElfFileIdentifierFromMappedFile((void const *)start_address, guid); + PageAllocator allocator; + auto_wasteful_vector guid(&allocator); + FileID::ElfFileIdentifierFromMappedFile((void const *)start_address, guid); gExceptionHandler->AddMappingInfo(library_name, - guid, + guid.data(), start_address, mapping_length, file_offset); diff --git a/toolkit/crashreporter/test/moz.build b/toolkit/crashreporter/test/moz.build index ab93adeace47..058e6a71e06f 100644 --- a/toolkit/crashreporter/test/moz.build +++ b/toolkit/crashreporter/test/moz.build @@ -34,3 +34,7 @@ TEST_HARNESS_FILES.xpcshell.toolkit.crashreporter.test.unit_ipc += ['CrashTestUt include('/toolkit/crashreporter/crashreporter.mozbuild') NO_PGO = True + +# Temporary workaround for an issue in upstream breakpad +if CONFIG['_MSC_VER']: + CXXFLAGS += ['-wd4334'] diff --git a/toolkit/crashreporter/update-breakpad.sh b/toolkit/crashreporter/update-breakpad.sh index ff01e5d650d5..3b3079876d67 100755 --- a/toolkit/crashreporter/update-breakpad.sh +++ b/toolkit/crashreporter/update-breakpad.sh @@ -26,11 +26,13 @@ lss_rev=`python -c "import sys; execfile(sys.argv[1]); print deps['src/src/third # remove some extraneous bits rm -rf \ ${crashreporter_dir}/google-breakpad/docs/ \ + ${crashreporter_dir}/google-breakpad/scripts/ \ ${crashreporter_dir}/google-breakpad/src/third_party/protobuf \ ${crashreporter_dir}/google-breakpad/src/testing/ \ ${crashreporter_dir}/google-breakpad/src/tools/gyp/ \ ${crashreporter_dir}/google-breakpad/src/processor/testdata/ \ - ${crashreporter_dir}/google-breakpad/src/tools/windows/dump_syms/testdata/ + ${crashreporter_dir}/google-breakpad/src/tools/windows/dump_syms/testdata/ \ + ${crashreporter_dir}/.travis.yml # restore our Makefile.ins hg -R ${repo} st -n | grep "Makefile\.in$" | xargs hg revert --no-backup diff --git a/tools/profiler/core/shared-libraries-linux.cc b/tools/profiler/core/shared-libraries-linux.cc index e9740783acca..24437fb4e718 100644 --- a/tools/profiler/core/shared-libraries-linux.cc +++ b/tools/profiler/core/shared-libraries-linux.cc @@ -26,18 +26,12 @@ static std::string getId(const char *bin_name) using namespace google_breakpad; using namespace std; - uint8_t identifier[kMDGUIDSize]; - char id_str[37]; // magic number from file_id.h + PageAllocator allocator; + auto_wasteful_vector identifier(&allocator); FileID file_id(bin_name); if (file_id.ElfFileIdentifier(identifier)) { - FileID::ConvertIdentifierToString(identifier, id_str, ARRAY_SIZE(id_str)); - // ConvertIdentifierToString converts the identifier to a string with - // some dashes (don't ask me why), but we need it raw, so remove the dashes. - char *id_end = remove(id_str, id_str + strlen(id_str), '-'); - // Also add an extra "0" by the end. google-breakpad does it for - // consistency with PDB files so we need to do too. - return string(id_str, id_end) + '0'; + return FileID::ConvertIdentifierToUUIDString(identifier) + "0"; } return ""; From 33e0dd3abcba4f2f3acaa4ce63ea9418e56ffcec Mon Sep 17 00:00:00 2001 From: Terrence Cole Date: Wed, 21 Sep 2016 09:32:51 -0700 Subject: [PATCH 037/117] Bug 813683 - No need for Rekeyable Hashtable for C++ VMFunction* pointers; r=nbp --HG-- extra : rebase_source : 5c6ce02ad98aaeccbd8bdda37b0c86916bfb6b7a --- js/src/jit/JitCompartment.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/jit/JitCompartment.h b/js/src/jit/JitCompartment.h index 3e860f697952..a13fa7cc6c49 100644 --- a/js/src/jit/JitCompartment.h +++ b/js/src/jit/JitCompartment.h @@ -148,7 +148,7 @@ class JitRuntime void* baselineDebugModeOSRHandlerNoFrameRegPopAddr_; // Map VMFunction addresses to the JitCode of the wrapper. - typedef GCRekeyableHashMap VMWrapperMap; + using VMWrapperMap = HashMap; VMWrapperMap* functionWrappers_; // Buffer for OSR from baseline to Ion. To avoid holding on to this for From e03f58644eee9bafdd4647f18e3dd3a0f50cf009 Mon Sep 17 00:00:00 2001 From: Terrence Cole Date: Wed, 21 Sep 2016 09:33:07 -0700 Subject: [PATCH 038/117] Bug 1227750 - Expose black to gray cross compartment edges instead of resetting the GC; r=jonco --HG-- extra : rebase_source : 27ebe7f618787488c3a7f68b52e955c23d761f04 --- js/src/gc/GCRuntime.h | 9 ++++++-- js/src/gc/Marking.cpp | 2 +- js/src/jsgc.cpp | 50 +++++++++++++++++++++++++++++-------------- 3 files changed, 42 insertions(+), 19 deletions(-) diff --git a/js/src/gc/GCRuntime.h b/js/src/gc/GCRuntime.h index 767600cd23a7..c3fab5856202 100644 --- a/js/src/gc/GCRuntime.h +++ b/js/src/gc/GCRuntime.h @@ -29,6 +29,7 @@ class VerifyPreTracer; namespace gc { typedef Vector ZoneVector; +using BlackGrayEdgeVector = Vector; class AutoMaybeStartBackgroundAllocation; class MarkingValidator; @@ -792,7 +793,11 @@ class GCRuntime } JS::Zone* getCurrentZoneGroup() { return currentZoneGroup; } - void setFoundBlackGrayEdges() { foundBlackGrayEdges = true; } + void setFoundBlackGrayEdges(TenuredCell& target) { + AutoEnterOOMUnsafeRegion oomUnsafe; + if (!foundBlackGrayEdges.append(&target)) + oomUnsafe.crash("OOM|small: failed to insert into foundBlackGrayEdges"); + } uint64_t gcNumber() const { return number; } @@ -1168,7 +1173,7 @@ class GCRuntime bool releaseObservedTypes; /* Whether any black->gray edges were found during marking. */ - bool foundBlackGrayEdges; + BlackGrayEdgeVector foundBlackGrayEdges; /* Singly linekd list of zones to be swept in the background. */ ZoneList backgroundSweepZones; diff --git a/js/src/gc/Marking.cpp b/js/src/gc/Marking.cpp index bb3244a38200..9f8b61a834ab 100644 --- a/js/src/gc/Marking.cpp +++ b/js/src/gc/Marking.cpp @@ -296,7 +296,7 @@ ShouldMarkCrossCompartment(JSTracer* trc, JSObject* src, Cell* cell) */ if (tenured.isMarked(GRAY)) { MOZ_ASSERT(!zone->isCollecting()); - trc->runtime()->gc.setFoundBlackGrayEdges(); + trc->runtime()->gc.setFoundBlackGrayEdges(tenured); } return zone->isGCMarking(); } else { diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 5c1cc9daa497..5d432fae965c 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -830,7 +830,6 @@ GCRuntime::GCRuntime(JSRuntime* rt) : incrementalState(gc::State::NotActive), lastMarkSlice(false), sweepOnBackgroundThread(false), - foundBlackGrayEdges(false), blocksToFreeAfterSweeping(JSRuntime::TEMP_LIFO_ALLOC_PRIMARY_CHUNK_SIZE), blocksToFreeAfterMinorGC(JSRuntime::TEMP_LIFO_ALLOC_PRIMARY_CHUNK_SIZE), zoneGroupIndex(0), @@ -3905,8 +3904,6 @@ GCRuntime::beginMarkPhase(JS::gcreason::Reason reason, AutoLockForExclusiveAcces markCompartments(); - foundBlackGrayEdges = false; - return true; } @@ -5396,19 +5393,6 @@ GCRuntime::endSweepPhase(bool destroyingRuntime, AutoLockForExclusiveAccess& loc } } - /* - * If we found any black->gray edges during marking, we completely clear the - * mark bits of all uncollected zones, or if a reset has occured, zones that - * will no longer be collected. This is safe, although it may - * prevent the cycle collector from collecting some dead objects. - */ - if (foundBlackGrayEdges) { - for (ZonesIter zone(rt, WithAtoms); !zone.done(); zone.next()) { - if (!zone->isCollecting()) - zone->arenas.unmarkAll(); - } - } - { gcstats::AutoPhase ap(stats, gcstats::PHASE_DESTROY); @@ -6076,6 +6060,38 @@ class AutoScheduleZonesForGC } }; +/* + * An invariant of our GC/CC interaction is that there must not ever be any + * black to gray edges in the system. It is possible to violate this with + * simple compartmental GC. For example, in GC[n], we collect in both + * compartmentA and compartmentB, and mark both sides of the cross-compartment + * edge gray. Later in GC[n+1], we only collect compartmentA, but this time + * mark it black. Now we are violating the invariants and must fix it somehow. + * + * To prevent this situation, we explicitly detect the black->gray state when + * marking cross-compartment edges -- see ShouldMarkCrossCompartment -- adding + * each violating edges to foundBlackGrayEdges. After we leave the trace + * session for each GC slice, we "ExposeToActiveJS" on each of these edges + * (which we cannot do safely from the guts of the GC). + */ +class AutoExposeLiveCrossZoneEdges +{ + BlackGrayEdgeVector* edges; + + public: + explicit AutoExposeLiveCrossZoneEdges(BlackGrayEdgeVector* edgesPtr) : edges(edgesPtr) { + MOZ_ASSERT(edges->empty()); + } + ~AutoExposeLiveCrossZoneEdges() { + for (auto& target : *edges) { + MOZ_ASSERT(target); + MOZ_ASSERT(!target->zone()->isCollecting()); + UnmarkGrayCellRecursively(target, target->getTraceKind()); + } + edges->clear(); + } +}; + } /* anonymous namespace */ /* @@ -6095,6 +6111,8 @@ GCRuntime::gcCycle(bool nonincrementalByAPI, SliceBudget& budget, JS::gcreason:: gcstats::AutoGCSlice agc(stats, scanZonesBeforeGC(), invocationKind, budget, reason); + AutoExposeLiveCrossZoneEdges aelcze(&foundBlackGrayEdges); + evictNursery(reason); AutoTraceSession session(rt, JS::HeapState::MajorCollecting); From 8bee7f30a105bed29538f02f0d9f6fbdb9ebe36a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Wed, 21 Sep 2016 13:08:49 +0200 Subject: [PATCH 039/117] Bug 1302759 - Use CAN_DRAW_IN_TITLEBAR ifdef for customization-titlebar-visibility-button. r=gijs --HG-- extra : rebase_source : acb726134ff044a7a490a7061c18e492fae66de5 --- .../test/general/browser_parsable_css.js | 10 ---------- .../customizableui/customizeMode.inc.css | 18 +++++++++++------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/browser/base/content/test/general/browser_parsable_css.js b/browser/base/content/test/general/browser_parsable_css.js index 2dca2f9603e3..176d5fbf3f24 100644 --- a/browser/base/content/test/general/browser_parsable_css.js +++ b/browser/base/content/test/general/browser_parsable_css.js @@ -35,16 +35,6 @@ let whitelist = [ // Platform can be "linux", "macosx" or "win". If omitted, the exception applies to all platforms. let allowedImageReferences = [ - // Bug 1302759 - {file: "chrome://browser/skin/customizableui/customize-titleBar-toggle.png", - from: "chrome://browser/skin/browser.css", - platforms: ["linux"], - isFromDevTools: false}, - {file: "chrome://browser/skin/customizableui/customize-titleBar-toggle@2x.png", - from: "chrome://browser/skin/browser.css", - platforms: ["linux"], - isFromDevTools: false}, - // Bug 1302691 {file: "chrome://devtools/skin/images/dock-bottom-minimize@2x.png", from: "chrome://devtools/skin/toolbox.css", diff --git a/browser/themes/shared/customizableui/customizeMode.inc.css b/browser/themes/shared/customizableui/customizeMode.inc.css index ba5c88b9c846..d83df6b7a579 100644 --- a/browser/themes/shared/customizableui/customizeMode.inc.css +++ b/browser/themes/shared/customizableui/customizeMode.inc.css @@ -182,13 +182,10 @@ height: 24px; } -#customization-titlebar-visibility-button { - list-style-image: url("chrome://browser/skin/customizableui/customize-titleBar-toggle.png"); - -moz-image-region: rect(0, 24px, 24px, 0); -} - -#customization-lwtheme-button > .box-inherit > .box-inherit > .button-text, -#customization-titlebar-visibility-button > .button-box > .button-text { +%ifdef CAN_DRAW_IN_TITLEBAR +#customization-titlebar-visibility-button > .button-box > .button-text, +%endif +#customization-lwtheme-button > .box-inherit > .box-inherit > .button-text { /* Sadly, button.css thinks its margins are perfect for everyone. */ margin-inline-start: 6px !important; } @@ -200,6 +197,12 @@ background-size: contain; } +%ifdef CAN_DRAW_IN_TITLEBAR +#customization-titlebar-visibility-button { + list-style-image: url("chrome://browser/skin/customizableui/customize-titleBar-toggle.png"); + -moz-image-region: rect(0, 24px, 24px, 0); +} + #customization-titlebar-visibility-button > .button-box > .button-icon { vertical-align: middle; } @@ -218,6 +221,7 @@ -moz-image-region: rect(0, 96px, 48px, 48px); } } +%endif /* CAN_DRAW_IN_TITLEBAR */ #main-window[customize-entered] #customization-panel-container { background-image: url("chrome://browser/skin/customizableui/customizeMode-separatorHorizontal.png"), From 81ddd1d4b70b8118e793be4cd9970d58e29c2244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=A3o=20Gottwald?= Date: Wed, 21 Sep 2016 18:39:56 +0200 Subject: [PATCH 040/117] Bug 1302307 - Set margin on .blocked-permission-icon only when part of the identity block. r=jhofmann --- browser/themes/shared/notification-icons.inc.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser/themes/shared/notification-icons.inc.css b/browser/themes/shared/notification-icons.inc.css index bc8b3256b52c..1dbccd6ee31c 100644 --- a/browser/themes/shared/notification-icons.inc.css +++ b/browser/themes/shared/notification-icons.inc.css @@ -12,7 +12,7 @@ } .notification-anchor-icon, -.blocked-permission-icon { +#blocked-permissions-container > .blocked-permission-icon { width: 16px; height: 16px; margin-inline-start: 2px; From 1d4866a48f7cdc2a677ea0564eaeb32dd6f583c0 Mon Sep 17 00:00:00 2001 From: Andrew Osmond Date: Wed, 21 Sep 2016 12:55:26 -0400 Subject: [PATCH 041/117] Bug 1120279 - Always check if the next frame is available before advancing an animation. --- image/FrameAnimator.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/image/FrameAnimator.cpp b/image/FrameAnimator.cpp index bebba79c0845..c25caecd6cae 100644 --- a/image/FrameAnimator.cpp +++ b/image/FrameAnimator.cpp @@ -200,13 +200,11 @@ FrameAnimator::AdvanceFrame(AnimationState& aState, TimeStamp aTime) MOZ_ASSERT(nextFrameIndex < aState.KnownFrameCount()); RawAccessFrameRef nextFrame = GetRawFrame(nextFrameIndex); - // If we're done decoding, we know we've got everything we're going to get. - // If we aren't, we only display fully-downloaded frames; everything else - // gets delayed. - bool canDisplay = aState.mDoneDecoding || - (nextFrame && nextFrame->IsFinished()); - - if (!canDisplay) { + // We should always check to see if we have the next frame even if we have + // previously finished decoding. If we needed to redecode (e.g. due to a draw + // failure) we would have discarded all the old frames and may not yet have + // the new ones. + if (!nextFrame || !nextFrame->IsFinished()) { // Uh oh, the frame we want to show is currently being decoded (partial) // Wait until the next refresh driver tick and try again return ret; From e9fb49f8f51ab6b89a1784c690079f09ca5bde79 Mon Sep 17 00:00:00 2001 From: Hannes Verschore Date: Tue, 20 Sep 2016 14:48:52 +0200 Subject: [PATCH 042/117] Bug 1300546: IonMonkey: Make sure the registers of lhs and rhs don't overlap during ALU, r=bbouvier --- .../jit-test/tests/wasm/regress/bug1300546.js | 34 +++++++++++++++++++ js/src/jit/arm/Lowering-arm.cpp | 3 +- js/src/jit/x86/Lowering-x86.cpp | 3 +- 3 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 js/src/jit-test/tests/wasm/regress/bug1300546.js diff --git a/js/src/jit-test/tests/wasm/regress/bug1300546.js b/js/src/jit-test/tests/wasm/regress/bug1300546.js new file mode 100644 index 000000000000..6ef35dc136fb --- /dev/null +++ b/js/src/jit-test/tests/wasm/regress/bug1300546.js @@ -0,0 +1,34 @@ +load(libdir + "wasm.js"); + +setJitCompilerOption('wasm.test-mode', 1); + +try { + wasmEvalText(` + + (module + (type $type0 (func)) + (func $func0 + (nop) + (f64.load offset=59 align=1 (i32.const 0)) + (current_memory) + (current_memory) + (current_memory) + (current_memory) + (current_memory) + (current_memory) + (current_memory) + (current_memory) + (i64.rem_s (i64.const 17) (i64.xor (i64.const 17) (i64.xor (i64.const 17) (i64.xor (i64.xor (i64.const 17) (i64.const 17)) (i64.xor (i64.const 17) (i64.const 17)))))) + + (i64.rem_s + (i64.const 17) + (i64.xor + (i64.rem_s (i64.const 17) (i64.const 17)) + (i64.xor (i64.rem_s (i64.const 17) (i64.const 17)) (i64.xor (i64.const 17) (i64.const 17))))) + ) + (memory 1 1) + ) + + `)(createI64(41)); +} catch(e) { +} diff --git a/js/src/jit/arm/Lowering-arm.cpp b/js/src/jit/arm/Lowering-arm.cpp index f5b0ec0bb1fb..18efc9b1c393 100644 --- a/js/src/jit/arm/Lowering-arm.cpp +++ b/js/src/jit/arm/Lowering-arm.cpp @@ -203,8 +203,7 @@ LIRGeneratorARM::lowerForALUInt64(LInstructionHelpersetInt64Operand(0, useInt64RegisterAtStart(lhs)); - ins->setInt64Operand(INT64_PIECES, - lhs != rhs ? useInt64OrConstant(rhs) : useInt64OrConstantAtStart(rhs)); + ins->setInt64Operand(INT64_PIECES, useInt64OrConstant(rhs)); defineInt64ReuseInput(ins, mir, 0); } diff --git a/js/src/jit/x86/Lowering-x86.cpp b/js/src/jit/x86/Lowering-x86.cpp index e9e2a16fbfff..87265f20223b 100644 --- a/js/src/jit/x86/Lowering-x86.cpp +++ b/js/src/jit/x86/Lowering-x86.cpp @@ -209,8 +209,7 @@ LIRGeneratorX86::lowerForALUInt64(LInstructionHelpersetInt64Operand(0, useInt64RegisterAtStart(lhs)); - ins->setInt64Operand(INT64_PIECES, - lhs != rhs ? useInt64OrConstant(rhs) : useInt64OrConstantAtStart(rhs)); + ins->setInt64Operand(INT64_PIECES, useInt64OrConstant(rhs)); defineInt64ReuseInput(ins, mir, 0); } From 9b0e31e53248eab5a1d7a0655cec5d2590b6e21b Mon Sep 17 00:00:00 2001 From: h4writer Date: Tue, 20 Sep 2016 14:48:50 +0200 Subject: [PATCH 043/117] Bug 1302417: TraceLogging - Don't run the debug check when the item is an error, r=bbouvier --- js/src/builtin/TestingFunctions.cpp | 10 ++++++++++ .../jit-test/tests/tracelogger/bug1302417.js | 20 +++++++++++++++++++ js/src/vm/TraceLogging.cpp | 14 +++++++++++-- 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 js/src/jit-test/tests/tracelogger/bug1302417.js diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp index b2a15bd1d4ba..2d27214d4973 100644 --- a/js/src/builtin/TestingFunctions.cpp +++ b/js/src/builtin/TestingFunctions.cpp @@ -1396,6 +1396,16 @@ OOMTest(JSContext* cx, unsigned argc, Value* vp) cx->clearPendingException(); cx->runtime()->hadOutOfMemory = false; +#ifdef JS_TRACE_LOGGING + // Reset the TraceLogger state if enabled. + TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime()); + if (logger->enabled()) { + while (logger->enabled()) + logger->disable(); + logger->enable(cx); + } +#endif + allocation++; } while (handledOOM); diff --git a/js/src/jit-test/tests/tracelogger/bug1302417.js b/js/src/jit-test/tests/tracelogger/bug1302417.js new file mode 100644 index 000000000000..18819207650b --- /dev/null +++ b/js/src/jit-test/tests/tracelogger/bug1302417.js @@ -0,0 +1,20 @@ + +if (!('oomTest' in this)) + quit(); + +if (typeof new Debugger().setupTraceLoggerScriptCalls == "function") { + lfLogBuffer = ` + var du = new Debugger; + du.setupTraceLoggerScriptCalls(); + startTraceLogger(); + `; + loadFile(lfLogBuffer); + function loadFile(lfVarx) { + oomTest(function() { + m = parseModule(lfVarx); + m.declarationInstantiation(); + m.evaluation(); + }) + } +} + diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp index ffad8219973d..1fb13c1b7a3f 100644 --- a/js/src/vm/TraceLogging.cpp +++ b/js/src/vm/TraceLogging.cpp @@ -254,8 +254,10 @@ TraceLoggerThread::enable(JSContext* cx) bool TraceLoggerThread::disable(bool force, const char* error) { - if (failed) + if (failed) { + MOZ_ASSERT(enabled_ == 0); return false; + } if (enabled_ == 0) return true; @@ -535,7 +537,10 @@ TraceLoggerThread::stopEvent(uint32_t id) #ifdef DEBUG if (enabled_ > 0 && !graphStack.empty()) { uint32_t prev = graphStack.popCopy(); - if (id == TraceLogger_Engine) { + if (id == TraceLogger_Error || prev == TraceLogger_Error) { + // When encountering an Error id the stack will most likely not be correct anymore. + // Ignore this. + } else if (id == TraceLogger_Engine) { MOZ_ASSERT(prev == TraceLogger_IonMonkey || prev == TraceLogger_Baseline || prev == TraceLogger_Interpreter); } else if (id == TraceLogger_Scripts) { @@ -571,6 +576,11 @@ TraceLoggerThread::log(uint32_t id) if (enabled_ == 0) return; +#ifdef DEBUG + if (id == TraceLogger_Disable) + graphStack.clear(); +#endif + MOZ_ASSERT(traceLoggerState); // We request for 3 items to add, since if we don't have enough room From e5f367169ff5927ddc55d23c5ad3028deac387bf Mon Sep 17 00:00:00 2001 From: Hannes Verschore Date: Wed, 21 Sep 2016 19:26:05 +0200 Subject: [PATCH 044/117] Bug 1281156: TraceLogger: Enable caching of EventPayload for mainthread again, r=bbouvier,jonco --- js/public/GCHashTable.h | 2 +- js/src/jscntxtinlines.h | 7 +++++ js/src/vm/TraceLogging.cpp | 61 +++++++++++++++++++++++++++++++++----- js/src/vm/TraceLogging.h | 25 ++++++++++------ 4 files changed, 78 insertions(+), 17 deletions(-) diff --git a/js/public/GCHashTable.h b/js/public/GCHashTable.h index 687128743e31..d96a3c96f717 100644 --- a/js/public/GCHashTable.h +++ b/js/public/GCHashTable.h @@ -108,7 +108,7 @@ template > class GCRekeyableHashMap : public JS::GCHashMap { - using Base = JS::GCHashMap; + using Base = JS::GCHashMap; public: explicit GCRekeyableHashMap(AllocPolicy a = AllocPolicy()) : Base(a) {} diff --git a/js/src/jscntxtinlines.h b/js/src/jscntxtinlines.h index a3eb1d61eac9..98e3d299d753 100644 --- a/js/src/jscntxtinlines.h +++ b/js/src/jscntxtinlines.h @@ -446,6 +446,13 @@ js::ExclusiveContext::setCompartment(JSCompartment* comp, compartment_ = comp; zone_ = comp ? comp->zone() : nullptr; arenas_ = zone_ ? &zone_->arenas : nullptr; + +#ifdef JS_TRACE_LOGGING + if (isJSContext()) { + TraceLoggerThread* logger = TraceLoggerForMainThread(runtime_); + logger->updateZone(zone_); + } +#endif } inline JSScript* diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp index 1fb13c1b7a3f..2df167247861 100644 --- a/js/src/vm/TraceLogging.cpp +++ b/js/src/vm/TraceLogging.cpp @@ -111,6 +111,16 @@ js::DestroyTraceLoggerThreadState() } } +TraceLoggerThread::TraceLoggerThread() + : enabled_(0), + failed(false), + graph(), + currentZone_(nullptr), + nextTextId(TraceLogger_Last), + iteration_(0), + top(nullptr) +{ } + bool TraceLoggerThread::init() { @@ -130,6 +140,28 @@ TraceLoggerThread::init() return true; } +bool +TraceLoggerThread::WeakScriptMapSweepPolicy::needsSweep(HeapPtr* key, + TraceLoggerEventPayload** value) +{ + return JS::GCPolicy>::needsSweep(key); +} + +void +TraceLoggerThread::updateZone(Zone* zone) +{ + if (zone != currentZone_) { + currentZone_ = zone; + scriptMap.reset(); + + if (zone) { + scriptMap.emplace(zone, ScriptHashMap()); + if (!scriptMap->get().init()) + scriptMap.reset(); + } + } +} + void TraceLoggerThread::initGraph() { @@ -393,7 +425,7 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text) TraceLoggerEventPayload* TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* filename, - size_t lineno, size_t colno, const void* ptr) + size_t lineno, size_t colno, JSScript* script) { MOZ_ASSERT(type == TraceLogger_Scripts || type == TraceLogger_AnnotateScripts || type == TraceLogger_InlinedScripts); @@ -407,9 +439,9 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f if (!traceLoggerState->isTextIdEnabled(type)) return getOrCreateEventPayload(type); - PointerHashMap::AddPtr p; - if (ptr) { - p = pointerMap.lookupForAdd(ptr); + ScriptHashMap::AddPtr p; + if (scriptMap.isSome() && script) { + p = scriptMap->get().lookupForAdd(script); if (p) { MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check. return p->value(); @@ -452,8 +484,8 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f nextTextId++; - if (ptr) { - if (!pointerMap.add(p, ptr, payload)) + if (scriptMap.isSome() && script) { + if (!scriptMap->get().add(p, script, payload)) return nullptr; } @@ -464,7 +496,7 @@ TraceLoggerEventPayload* TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, JSScript* script) { return getOrCreateEventPayload(type, script->filename(), script->lineno(), script->column(), - nullptr); + script); } TraceLoggerEventPayload* @@ -609,6 +641,21 @@ TraceLoggerThread::log(uint32_t id) e.removeFront(); } + // Remove the item in the scriptMap for which the payloads + // have no uses anymore + if (scriptMap.isSome()) { + for (ScriptHashMap::Enum e(scriptMap->get()); !e.empty(); e.popFront()) { + if (e.front().value()->uses() != 0) + continue; + + TextIdHashMap::Ptr p = textIdPayloads.lookup(e.front().value()->textId()); + MOZ_ASSERT(p); + textIdPayloads.remove(p); + + e.removeFront(); + } + } + // Free all payloads that have no uses anymore. for (TextIdHashMap::Enum e(textIdPayloads); !e.empty(); e.popFront()) { if (e.front().value()->uses() == 0) { diff --git a/js/src/vm/TraceLogging.h b/js/src/vm/TraceLogging.h index b16412c80d56..f9c21f2acb39 100644 --- a/js/src/vm/TraceLogging.h +++ b/js/src/vm/TraceLogging.h @@ -8,9 +8,11 @@ #define TraceLogging_h #include "mozilla/GuardObjects.h" +#include "mozilla/Maybe.h" #include "jsalloc.h" +#include "gc/Barrier.h" #include "js/HashTable.h" #include "js/TypeDecls.h" #include "js/Vector.h" @@ -158,10 +160,19 @@ class TraceLoggerThread { #ifdef JS_TRACE_LOGGING private: + struct WeakScriptMapSweepPolicy { + static bool needsSweep(HeapPtr* key, TraceLoggerEventPayload** value); + }; typedef HashMap, SystemAllocPolicy> PointerHashMap; + typedef GCHashMap, + TraceLoggerEventPayload*, + MovableCellHasher>, + SystemAllocPolicy, + WeakScriptMapSweepPolicy> ScriptHashMap; + typedef JS::WeakCache WeakScriptHashMap; typedef HashMap, @@ -173,6 +184,8 @@ class TraceLoggerThread UniquePtr graph; PointerHashMap pointerMap; + mozilla::Maybe scriptMap; + Zone* currentZone_; TextIdHashMap textIdPayloads; uint32_t nextTextId; @@ -191,16 +204,10 @@ class TraceLoggerThread public: AutoTraceLog* top; - TraceLoggerThread() - : enabled_(0), - failed(false), - graph(), - nextTextId(TraceLogger_Last), - iteration_(0), - top(nullptr) - { } + TraceLoggerThread(); bool init(); + void updateZone(Zone* zone); ~TraceLoggerThread(); bool init(uint32_t loggerId); @@ -274,7 +281,7 @@ class TraceLoggerThread const JS::ReadOnlyCompileOptions& script); private: TraceLoggerEventPayload* getOrCreateEventPayload(TraceLoggerTextId type, const char* filename, - size_t lineno, size_t colno, const void* p); + size_t lineno, size_t colno, JSScript* script); public: // Log an event (no start/stop, only the timestamp is recorded). From 3202ad8d2fcb4b80796a2047b340502cc67251c4 Mon Sep 17 00:00:00 2001 From: Andrew Osmond Date: Wed, 21 Sep 2016 13:54:54 -0400 Subject: [PATCH 045/117] Bug 1007702 - Enable skia on nighly for unaccelerated windows. r=me --- modules/libpref/init/all.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index f5aabf4eb7b5..b2f2f48f6f44 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -767,7 +767,13 @@ pref("gfx.font_rendering.opentype_svg.enabled", true); // comma separated list of backends to use in order of preference // e.g., pref("gfx.canvas.azure.backends", "direct2d,skia,cairo"); pref("gfx.canvas.azure.backends", "direct2d1.1,skia,cairo"); + +#ifdef NIGHTLY_BUILD +pref("gfx.content.azure.backends", "direct2d1.1,skia,cairo"); +#else pref("gfx.content.azure.backends", "direct2d1.1,cairo"); +#endif + #else #ifdef XP_MACOSX pref("gfx.content.azure.backends", "skia"); From d06455b94877f893c954b41a52e0ef19a164291b Mon Sep 17 00:00:00 2001 From: Kris Maglione Date: Wed, 21 Sep 2016 14:17:24 +0100 Subject: [PATCH 046/117] Bug 1304331: Support setting the Content-Type header from WebRequest observers. r=mao MozReview-Commit-ID: 93joPUweJ2x --HG-- extra : rebase_source : bf6f9227dcc1bd4c1a4d1ebb7c2828b31fa31b98 --- toolkit/components/extensions/Extension.jsm | 2 ++ .../test/mochitest/test_ext_webrequest.html | 9 ++++++++ toolkit/modules/addons/WebRequest.jsm | 21 ++++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/toolkit/components/extensions/Extension.jsm b/toolkit/components/extensions/Extension.jsm index 6243980fa1cf..a25dc1bf6562 100644 --- a/toolkit/components/extensions/Extension.jsm +++ b/toolkit/components/extensions/Extension.jsm @@ -95,6 +95,8 @@ var { flushJarCache, } = ExtensionUtils; +XPCOMUtils.defineLazyGetter(this, "console", ExtensionUtils.getConsole); + const LOGGER_ID_BASE = "addons.webextension."; const UUID_MAP_PREF = "extensions.webextensions.uuids"; const LEAVE_STORAGE_PREF = "extensions.webextensions.keepStorageOnUninstall"; diff --git a/toolkit/components/extensions/test/mochitest/test_ext_webrequest.html b/toolkit/components/extensions/test/mochitest/test_ext_webrequest.html index 529a66848366..3b05c4f93913 100644 --- a/toolkit/components/extensions/test/mochitest/test_ext_webrequest.html +++ b/toolkit/components/extensions/test/mochitest/test_ext_webrequest.html @@ -151,6 +151,7 @@ function backgroundScript() { } let frameIDs = new Map(); + let skippedRequests = new Set(); let recorded = {requested: [], beforeSendHeaders: [], @@ -181,6 +182,7 @@ function backgroundScript() { }, modified: { "Server": "WebRequest", + "Content-Type": "text/html; charset=utf-8", }, deleted: [ "Connection", @@ -201,6 +203,7 @@ function backgroundScript() { if (headers.find(h => h.name === processedMark)) { // This may happen because of redirections or cache browser.test.log(`${phase}Headers in ${details.requestId} already processed`); + skippedRequests.add(details.requestId); return null; } headers.push({name: processedMark, value: "1"}); @@ -251,8 +254,14 @@ function backgroundScript() { } let modifiedAny = false; + browser.test.log(`HEADERS ${JSON.stringify(headers)}`); for (let header of headers.filter(h => h.name in modified)) { let {name, value} = header; + if (name.toLowerCase() === "content-type" && skippedRequests.has(details.requestId)) { + // Changes to Content-Type headers are not persisted in the cache. + continue; + } + browser.test.assertTrue(value === modified[name], `header "${name}: ${value}" matches modified value ("${modified[name]}")`); modifiedAny = true; } diff --git a/toolkit/modules/addons/WebRequest.jsm b/toolkit/modules/addons/WebRequest.jsm index 4b9bde926124..7bd2e8ecfa3f 100644 --- a/toolkit/modules/addons/WebRequest.jsm +++ b/toolkit/modules/addons/WebRequest.jsm @@ -371,6 +371,11 @@ HttpObserverManager = { let headers = []; let visitor = { visitHeader(name, value) { + try { + value = channel.getProperty(`webrequest-header-${name.toLowerCase()}`); + } catch (e) { + // This will throw if the property does not exist. + } headers.push({name, value}); }, @@ -379,6 +384,7 @@ HttpObserverManager = { }; try { + channel.QueryInterface(Ci.nsIPropertyBag); channel[method](visitor); } catch (e) { Cu.reportError(`webRequest Error: ${e} trying to perform ${method} in ${event}@${channel.name}`); @@ -613,7 +619,20 @@ HttpObserverManager = { if (opts.responseHeaders && result.responseHeaders) { this.replaceHeaders( result.responseHeaders, responseHeaderNames, - (name, value) => channel.setResponseHeader(name, value, false) + (name, value) => { + if (name.toLowerCase() === "content-type" && value) { + // The Content-Type header value can't be modified, so we + // set the channel's content type directly, instead, and + // record that we made the change for the sake of + // subsequent observers. + channel.contentType = value; + + channel.QueryInterface(Ci.nsIWritablePropertyBag); + channel.setProperty("webrequest-header-content-type", value); + } else { + channel.setResponseHeader(name, value, false); + } + } ); } } From b7621bb6a4e2caa18316147359b2023bed0127af Mon Sep 17 00:00:00 2001 From: Yura Zenevich Date: Wed, 21 Sep 2016 09:59:51 -0400 Subject: [PATCH 047/117] Bug 1206711 - remove unused ipc bits from DocAccessibleWrap::DoInitialUpdate. r=surkov MozReview-Commit-ID: GdUfAMN2kdD --- accessible/windows/msaa/DocAccessibleWrap.cpp | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/accessible/windows/msaa/DocAccessibleWrap.cpp b/accessible/windows/msaa/DocAccessibleWrap.cpp index 2e022b851e0d..172b5eff2a08 100644 --- a/accessible/windows/msaa/DocAccessibleWrap.cpp +++ b/accessible/windows/msaa/DocAccessibleWrap.cpp @@ -9,7 +9,6 @@ #include "Compatibility.h" #include "DocAccessibleChild.h" #include "nsWinUtils.h" -#include "mozilla/dom/TabChild.h" #include "Role.h" #include "RootAccessible.h" #include "sdnDocAccessible.h" @@ -135,18 +134,7 @@ DocAccessibleWrap::DoInitialUpdate() if (nsWinUtils::IsWindowEmulationStarted()) { // Create window for tab document. if (mDocFlags & eTabDocument) { - mozilla::dom::TabChild* tabChild = - mozilla::dom::TabChild::GetFrom(mDocumentNode->GetShell()); - a11y::RootAccessible* rootDocument = RootAccessible(); - - mozilla::WindowsHandle nativeData = 0; - if (tabChild) - tabChild->SendGetWidgetNativeData(&nativeData); - else - nativeData = reinterpret_cast( - rootDocument->GetNativeWindow()); - bool isActive = true; nsIntRect rect(CW_USEDEFAULT, CW_USEDEFAULT, 0, 0); if (Compatibility::IsDolphin()) { @@ -160,7 +148,7 @@ DocAccessibleWrap::DoInitialUpdate() docShell->GetIsActive(&isActive); } - HWND parentWnd = reinterpret_cast(nativeData); + HWND parentWnd = reinterpret_cast(rootDocument->GetNativeWindow()); mHWND = nsWinUtils::CreateNativeWindow(kClassNameTabContent, parentWnd, rect.x, rect.y, rect.width, rect.height, isActive); From e2abdb82f389a35d1e8b5b6269a129b802014696 Mon Sep 17 00:00:00 2001 From: Yura Zenevich Date: Wed, 21 Sep 2016 10:02:03 -0400 Subject: [PATCH 048/117] Bug 1206711 - store doc accessible in emulated HWND itself. r=surkov MozReview-Commit-ID: 6VVkzsg6su4 --- accessible/windows/msaa/DocAccessibleWrap.cpp | 7 ++++--- accessible/windows/msaa/nsWinUtils.cpp | 16 ++++++---------- accessible/windows/msaa/nsWinUtils.h | 10 +++++----- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/accessible/windows/msaa/DocAccessibleWrap.cpp b/accessible/windows/msaa/DocAccessibleWrap.cpp index 172b5eff2a08..6fb89816db58 100644 --- a/accessible/windows/msaa/DocAccessibleWrap.cpp +++ b/accessible/windows/msaa/DocAccessibleWrap.cpp @@ -104,8 +104,9 @@ DocAccessibleWrap::Shutdown() if (nsWinUtils::IsWindowEmulationStarted()) { // Destroy window created for root document. if (mDocFlags & eTabDocument) { - nsWinUtils::sHWNDCache->Remove(mHWND); - ::DestroyWindow(static_cast(mHWND)); + HWND hWnd = static_cast(mHWND); + ::RemovePropW(hWnd, kPropNameDocAcc); + ::DestroyWindow(hWnd); } mHWND = nullptr; @@ -153,7 +154,7 @@ DocAccessibleWrap::DoInitialUpdate() rect.x, rect.y, rect.width, rect.height, isActive); - nsWinUtils::sHWNDCache->Put(mHWND, this); + ::SetPropW(static_cast(mHWND), kPropNameDocAcc, (HANDLE)this); } else { DocAccessible* parentDocument = ParentDocument(); diff --git a/accessible/windows/msaa/nsWinUtils.cpp b/accessible/windows/msaa/nsWinUtils.cpp index 8692244ebb2c..b49cd0263842 100644 --- a/accessible/windows/msaa/nsWinUtils.cpp +++ b/accessible/windows/msaa/nsWinUtils.cpp @@ -35,7 +35,7 @@ const wchar_t* kPropNameTabContent = L"AccessibleTabWindow"; static LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); -nsRefPtrHashtable, DocAccessible>* nsWinUtils::sHWNDCache = nullptr; +bool nsWinUtils::sWindowEmulationStarted = false; already_AddRefed nsWinUtils::GetComputedStyleDeclaration(nsIContent* aContent) @@ -70,7 +70,7 @@ nsWinUtils::MaybeStartWindowEmulation() Compatibility::IsDolphin() || XRE_IsContentProcess()) { RegisterNativeWindow(kClassNameTabContent); - sHWNDCache = new nsRefPtrHashtable, DocAccessible>(2); + sWindowEmulationStarted = true; return true; } @@ -82,14 +82,10 @@ nsWinUtils::ShutdownWindowEmulation() { // Unregister window call that's used for document accessibles associated // with tabs. - if (IsWindowEmulationStarted()) + if (IsWindowEmulationStarted()) { ::UnregisterClassW(kClassNameTabContent, GetModuleHandle(nullptr)); -} - -bool -nsWinUtils::IsWindowEmulationStarted() -{ - return sHWNDCache != nullptr; + sWindowEmulationStarted = false; + } } void @@ -158,7 +154,7 @@ WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) int32_t objId = static_cast(lParam); if (objId == OBJID_CLIENT) { DocAccessible* document = - nsWinUtils::sHWNDCache->GetWeak(static_cast(hWnd)); + reinterpret_cast(::GetPropW(hWnd, kPropNameDocAcc)); if (document) { IAccessible* msaaAccessible = nullptr; document->GetNativeInterface((void**)&msaaAccessible); // does an addref diff --git a/accessible/windows/msaa/nsWinUtils.h b/accessible/windows/msaa/nsWinUtils.h index ac3a8b699e12..55089e722b3e 100644 --- a/accessible/windows/msaa/nsWinUtils.h +++ b/accessible/windows/msaa/nsWinUtils.h @@ -12,7 +12,6 @@ #include "nsIDOMCSSStyleDeclaration.h" #include "nsCOMPtr.h" -#include "nsRefPtrHashtable.h" class nsIContent; @@ -23,6 +22,7 @@ class DocAccessible; const LPCWSTR kClassNameRoot = L"MozillaUIWindowClass"; const LPCWSTR kClassNameTabContent = L"MozillaContentWindowClass"; +const LPCWSTR kPropNameDocAcc = L"MozDocAccessible"; class nsWinUtils { @@ -49,7 +49,7 @@ public: /** * Return true if window emulation is started. */ - static bool IsWindowEmulationStarted(); + static bool IsWindowEmulationStarted() { return sWindowEmulationStarted; } /** * Helper to register window class. @@ -73,11 +73,11 @@ public: */ static void HideNativeWindow(HWND aWnd); +private: /** - * Cache for HWNDs of windows created for document accessibles in windows - * emulation mode. + * Flag that indicates if window emulation is started. */ - static nsRefPtrHashtable, DocAccessible>* sHWNDCache; + static bool sWindowEmulationStarted; }; } // namespace a11y From a29eef42cd4b09b5b9f7d4905844b2aed5805dbb Mon Sep 17 00:00:00 2001 From: Michael Li Date: Wed, 21 Sep 2016 14:05:45 -0400 Subject: [PATCH 049/117] Bug 1303040 - implement shared header for two ProxyAccessible classes. r=tbsaunde MozReview-Commit-ID: 1cU71RljySc --- accessible/ipc/ProxyAccessibleBase.h | 21 ++ accessible/ipc/ProxyAccessibleShared.h | 272 ++++++++++++++++++++++++ accessible/ipc/moz.build | 1 + accessible/ipc/other/ProxyAccessible.h | 278 +------------------------ accessible/ipc/win/ProxyAccessible.h | 29 +-- 5 files changed, 296 insertions(+), 305 deletions(-) create mode 100644 accessible/ipc/ProxyAccessibleShared.h diff --git a/accessible/ipc/ProxyAccessibleBase.h b/accessible/ipc/ProxyAccessibleBase.h index 3191da1e4a9c..62d6287b68a4 100644 --- a/accessible/ipc/ProxyAccessibleBase.h +++ b/accessible/ipc/ProxyAccessibleBase.h @@ -132,6 +132,27 @@ public: bool IsDoc() const { return mIsDoc; } DocAccessibleParent* AsDoc() const { return IsDoc() ? mDoc : nullptr; } + // XXX checking mRole alone may not result in same behavior as Accessibles + // due to ARIA roles. See bug 1210477. + inline bool IsTable() const + { + return mRole == roles::TABLE || mRole == roles::MATHML_TABLE; + } + inline bool IsTableRow() const + { + return (mRole == roles::ROW || + mRole == roles::MATHML_TABLE_ROW || + mRole == roles::MATHML_LABELED_ROW); + } + inline bool IsTableCell() const + { + return (mRole == roles::CELL || + mRole == roles::COLUMNHEADER || + mRole == roles::ROWHEADER || + mRole == roles::GRID_CELL || + mRole == roles::MATHML_CELL); + } + protected: ProxyAccessibleBase(uint64_t aID, Derived* aParent, DocAccessibleParent* aDoc, role aRole, diff --git a/accessible/ipc/ProxyAccessibleShared.h b/accessible/ipc/ProxyAccessibleShared.h new file mode 100644 index 000000000000..05a319168f23 --- /dev/null +++ b/accessible/ipc/ProxyAccessibleShared.h @@ -0,0 +1,272 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef mozilla_a11y_ProxyAccessibleShared_h +#define mozilla_a11y_ProxyAccessibleShared_h + +/** + * These are function declarations shared between win/ProxyAccessible.h and + * other/ProxyAccessible.h. + */ + +/* + * Return the states for the proxied accessible. + */ +uint64_t State() const; + +/* + * Return the native states for the proxied accessible. + */ +uint64_t NativeState() const; + +/* + * Set aName to the name of the proxied accessible. + */ +void Name(nsString& aName) const; + +/* + * Set aValue to the value of the proxied accessible. + */ +void Value(nsString& aValue) const; + +/* + * Set aHelp to the help string of the proxied accessible. + */ +void Help(nsString& aHelp) const; + +/** + * Set aDesc to the description of the proxied accessible. + */ +void Description(nsString& aDesc) const; + +/** + * Get the set of attributes on the proxied accessible. + */ +void Attributes(nsTArray *aAttrs) const; + +/** + * Return set of targets of given relation type. + */ +nsTArray RelationByType(RelationType aType) const; + +/** + * Get all relations for this accessible. + */ +void Relations(nsTArray* aTypes, + nsTArray>* aTargetSets) const; + +bool IsSearchbox() const; + +nsIAtom* LandmarkRole() const; + +nsIAtom* ARIARoleAtom() const; + +int32_t GetLevelInternal(); +void ScrollTo(uint32_t aScrollType); +void ScrollToPoint(uint32_t aScrollType, int32_t aX, int32_t aY); + +int32_t CaretLineNumber(); +int32_t CaretOffset(); +void SetCaretOffset(int32_t aOffset); + +int32_t CharacterCount(); +int32_t SelectionCount(); + +/** + * Get the text between the given offsets. + */ +bool TextSubstring(int32_t aStartOffset, int32_t aEndOfset, + nsString& aText) const; + +void GetTextAfterOffset(int32_t aOffset, AccessibleTextBoundary aBoundaryType, + nsString& aText, int32_t* aStartOffset, + int32_t* aEndOffset); + +void GetTextAtOffset(int32_t aOffset, AccessibleTextBoundary aBoundaryType, + nsString& aText, int32_t* aStartOffset, + int32_t* aEndOffset); + +void GetTextBeforeOffset(int32_t aOffset, AccessibleTextBoundary aBoundaryType, + nsString& aText, int32_t* aStartOffset, + int32_t* aEndOffset); + +char16_t CharAt(int32_t aOffset); + +void TextAttributes(bool aIncludeDefAttrs, + const int32_t aOffset, + nsTArray* aAttributes, + int32_t* aStartOffset, + int32_t* aEndOffset); +void DefaultTextAttributes(nsTArray* aAttrs); + +nsIntRect TextBounds(int32_t aStartOffset, int32_t aEndOffset, + uint32_t aCoordType = nsIAccessibleCoordinateType::COORDTYPE_SCREEN_RELATIVE); + +nsIntRect CharBounds(int32_t aOffset, uint32_t aCoordType); + +int32_t OffsetAtPoint(int32_t aX, int32_t aY, uint32_t aCoordType); + +bool SelectionBoundsAt(int32_t aSelectionNum, + nsString& aData, + int32_t* aStartOffset, + int32_t* aEndOffset); + +bool SetSelectionBoundsAt(int32_t aSelectionNum, + int32_t aStartOffset, + int32_t aEndOffset); + +bool AddToSelection(int32_t aStartOffset, + int32_t aEndOffset); + +bool RemoveFromSelection(int32_t aSelectionNum); + +void ScrollSubstringTo(int32_t aStartOffset, int32_t aEndOffset, + uint32_t aScrollType); + +void ScrollSubstringToPoint(int32_t aStartOffset, + int32_t aEndOffset, + uint32_t aCoordinateType, + int32_t aX, int32_t aY); + +void Text(nsString* aText); + +void ReplaceText(const nsString& aText); + +bool InsertText(const nsString& aText, int32_t aPosition); + +bool CopyText(int32_t aStartPos, int32_t aEndPos); + +bool CutText(int32_t aStartPos, int32_t aEndPos); + +bool DeleteText(int32_t aStartPos, int32_t aEndPos); + +bool PasteText(int32_t aPosition); + +nsIntPoint ImagePosition(uint32_t aCoordType); + +nsIntSize ImageSize(); + +uint32_t StartOffset(bool* aOk); + +uint32_t EndOffset(bool* aOk); + +bool IsLinkValid(); + +uint32_t AnchorCount(bool* aOk); + +void AnchorURIAt(uint32_t aIndex, nsCString& aURI, bool* aOk); + +ProxyAccessible* AnchorAt(uint32_t aIndex); + +uint32_t LinkCount(); + +ProxyAccessible* LinkAt(const uint32_t& aIndex); + +int32_t LinkIndexOf(ProxyAccessible* aLink); + +int32_t LinkIndexAtOffset(uint32_t aOffset); + +ProxyAccessible* TableOfACell(); + +uint32_t ColIdx(); + +uint32_t RowIdx(); + +uint32_t ColExtent(); + +uint32_t RowExtent(); + +void ColHeaderCells(nsTArray* aCells); + +void RowHeaderCells(nsTArray* aCells); + +bool IsCellSelected(); + +ProxyAccessible* TableCaption(); +void TableSummary(nsString& aSummary); +uint32_t TableColumnCount(); +uint32_t TableRowCount(); +ProxyAccessible* TableCellAt(uint32_t aRow, uint32_t aCol); +int32_t TableCellIndexAt(uint32_t aRow, uint32_t aCol); +int32_t TableColumnIndexAt(uint32_t aCellIndex); +int32_t TableRowIndexAt(uint32_t aCellIndex); +void TableRowAndColumnIndicesAt(uint32_t aCellIndex, + int32_t* aRow, int32_t* aCol); +uint32_t TableColumnExtentAt(uint32_t aRow, uint32_t aCol); +uint32_t TableRowExtentAt(uint32_t aRow, uint32_t aCol); +void TableColumnDescription(uint32_t aCol, nsString& aDescription); +void TableRowDescription(uint32_t aRow, nsString& aDescription); +bool TableColumnSelected(uint32_t aCol); +bool TableRowSelected(uint32_t aRow); +bool TableCellSelected(uint32_t aRow, uint32_t aCol); +uint32_t TableSelectedCellCount(); +uint32_t TableSelectedColumnCount(); +uint32_t TableSelectedRowCount(); +void TableSelectedCells(nsTArray* aCellIDs); +void TableSelectedCellIndices(nsTArray* aCellIndices); +void TableSelectedColumnIndices(nsTArray* aColumnIndices); +void TableSelectedRowIndices(nsTArray* aRowIndices); +void TableSelectColumn(uint32_t aCol); +void TableSelectRow(uint32_t aRow); +void TableUnselectColumn(uint32_t aCol); +void TableUnselectRow(uint32_t aRow); +bool TableIsProbablyForLayout(); +ProxyAccessible* AtkTableColumnHeader(int32_t aCol); +ProxyAccessible* AtkTableRowHeader(int32_t aRow); + +void SelectedItems(nsTArray* aSelectedItems); +uint32_t SelectedItemCount(); +ProxyAccessible* GetSelectedItem(uint32_t aIndex); +bool IsItemSelected(uint32_t aIndex); +bool AddItemToSelection(uint32_t aIndex); +bool RemoveItemFromSelection(uint32_t aIndex); +bool SelectAll(); +bool UnselectAll(); + +void TakeSelection(); +void SetSelected(bool aSelect); + +bool DoAction(uint8_t aIndex); +uint8_t ActionCount(); +void ActionDescriptionAt(uint8_t aIndex, nsString& aDescription); +void ActionNameAt(uint8_t aIndex, nsString& aName); +KeyBinding AccessKey(); +KeyBinding KeyboardShortcut(); +void AtkKeyBinding(nsString& aBinding); + +double CurValue(); +bool SetCurValue(double aValue); +double MinValue(); +double MaxValue(); +double Step(); + +void TakeFocus(); +ProxyAccessible* FocusedChild(); +ProxyAccessible* ChildAtPoint(int32_t aX, int32_t aY, + Accessible::EWhichChildAtPoint aWhichChild); +nsIntRect Bounds(); + +void Language(nsString& aLocale); +void DocType(nsString& aType); +void Title(nsString& aTitle); +void URL(nsString& aURL); +void MimeType(nsString aMime); +void URLDocTypeMimeType(nsString& aURL, nsString& aDocType, + nsString& aMimeType); + +ProxyAccessible* AccessibleAtPoint(int32_t aX, int32_t aY, + bool aNeedsScreenCoords); + +void Extents(bool aNeedsScreenCoords, int32_t* aX, int32_t* aY, + int32_t* aWidth, int32_t* aHeight); + +/** + * Return the id of the dom node this accessible represents. Note this + * should probably only be used for testing. + */ +void DOMNodeID(nsString& aID); + +#endif diff --git a/accessible/ipc/moz.build b/accessible/ipc/moz.build index 9e447d220199..392ec9dc50ec 100644 --- a/accessible/ipc/moz.build +++ b/accessible/ipc/moz.build @@ -37,6 +37,7 @@ if CONFIG['ACCESSIBILITY']: 'DocAccessibleChildBase.h', 'DocAccessibleParent.h', 'ProxyAccessibleBase.h', + 'ProxyAccessibleShared.h', ] UNIFIED_SOURCES += [ diff --git a/accessible/ipc/other/ProxyAccessible.h b/accessible/ipc/other/ProxyAccessible.h index 73ba07a45f5e..25fd71fbf146 100644 --- a/accessible/ipc/other/ProxyAccessible.h +++ b/accessible/ipc/other/ProxyAccessible.h @@ -36,283 +36,7 @@ public: MOZ_COUNT_DTOR(ProxyAccessible); } - /* - * Return the states for the proxied accessible. - */ - uint64_t State() const; - - /* - * Return the native states for the proxied accessible. - */ - uint64_t NativeState() const; - - /* - * Set aName to the name of the proxied accessible. - */ - void Name(nsString& aName) const; - - /* - * Set aValue to the value of the proxied accessible. - */ - void Value(nsString& aValue) const; - - /* - * Set aHelp to the help string of the proxied accessible. - */ - void Help(nsString& aHelp) const; - - /** - * Set aDesc to the description of the proxied accessible. - */ - void Description(nsString& aDesc) const; - - /** - * Get the set of attributes on the proxied accessible. - */ - void Attributes(nsTArray *aAttrs) const; - - /** - * Return set of targets of given relation type. - */ - nsTArray RelationByType(RelationType aType) const; - - /** - * Get all relations for this accessible. - */ - void Relations(nsTArray* aTypes, - nsTArray>* aTargetSets) const; - - bool IsSearchbox() const; - - nsIAtom* LandmarkRole() const; - - nsIAtom* ARIARoleAtom() const; - - int32_t GetLevelInternal(); - void ScrollTo(uint32_t aScrollType); - void ScrollToPoint(uint32_t aScrollType, int32_t aX, int32_t aY); - - int32_t CaretLineNumber(); - int32_t CaretOffset(); - void SetCaretOffset(int32_t aOffset); - - int32_t CharacterCount(); - int32_t SelectionCount(); - - /** - * Get the text between the given offsets. - */ - bool TextSubstring(int32_t aStartOffset, int32_t aEndOfset, - nsString& aText) const; - - void GetTextAfterOffset(int32_t aOffset, AccessibleTextBoundary aBoundaryType, - nsString& aText, int32_t* aStartOffset, - int32_t* aEndOffset); - - void GetTextAtOffset(int32_t aOffset, AccessibleTextBoundary aBoundaryType, - nsString& aText, int32_t* aStartOffset, - int32_t* aEndOffset); - - void GetTextBeforeOffset(int32_t aOffset, AccessibleTextBoundary aBoundaryType, - nsString& aText, int32_t* aStartOffset, - int32_t* aEndOffset); - - char16_t CharAt(int32_t aOffset); - - void TextAttributes(bool aIncludeDefAttrs, - const int32_t aOffset, - nsTArray* aAttributes, - int32_t* aStartOffset, - int32_t* aEndOffset); - void DefaultTextAttributes(nsTArray* aAttrs); - - nsIntRect TextBounds(int32_t aStartOffset, int32_t aEndOffset, - uint32_t aCoordType = nsIAccessibleCoordinateType::COORDTYPE_SCREEN_RELATIVE); - - nsIntRect CharBounds(int32_t aOffset, uint32_t aCoordType); - - int32_t OffsetAtPoint(int32_t aX, int32_t aY, uint32_t aCoordType); - - bool SelectionBoundsAt(int32_t aSelectionNum, - nsString& aData, - int32_t* aStartOffset, - int32_t* aEndOffset); - - bool SetSelectionBoundsAt(int32_t aSelectionNum, - int32_t aStartOffset, - int32_t aEndOffset); - - bool AddToSelection(int32_t aStartOffset, - int32_t aEndOffset); - - bool RemoveFromSelection(int32_t aSelectionNum); - - void ScrollSubstringTo(int32_t aStartOffset, int32_t aEndOffset, - uint32_t aScrollType); - - void ScrollSubstringToPoint(int32_t aStartOffset, - int32_t aEndOffset, - uint32_t aCoordinateType, - int32_t aX, int32_t aY); - - void Text(nsString* aText); - - void ReplaceText(const nsString& aText); - - bool InsertText(const nsString& aText, int32_t aPosition); - - bool CopyText(int32_t aStartPos, int32_t aEndPos); - - bool CutText(int32_t aStartPos, int32_t aEndPos); - - bool DeleteText(int32_t aStartPos, int32_t aEndPos); - - bool PasteText(int32_t aPosition); - - nsIntPoint ImagePosition(uint32_t aCoordType); - - nsIntSize ImageSize(); - - uint32_t StartOffset(bool* aOk); - - uint32_t EndOffset(bool* aOk); - - bool IsLinkValid(); - - // XXX checking mRole alone may not result in same behavior as Accessibles - // due to ARIA roles. See bug 1210477. - inline bool IsTable() const - { - return mRole == roles::TABLE || mRole == roles::MATHML_TABLE; - } - inline bool IsTableRow() const - { - return (mRole == roles::ROW || - mRole == roles::MATHML_TABLE_ROW || - mRole == roles::MATHML_LABELED_ROW); - } - inline bool IsTableCell() const - { - return (mRole == roles::CELL || - mRole == roles::COLUMNHEADER || - mRole == roles::ROWHEADER || - mRole == roles::GRID_CELL || - mRole == roles::MATHML_CELL); - } - - uint32_t AnchorCount(bool* aOk); - - void AnchorURIAt(uint32_t aIndex, nsCString& aURI, bool* aOk); - - ProxyAccessible* AnchorAt(uint32_t aIndex); - - uint32_t LinkCount(); - - ProxyAccessible* LinkAt(const uint32_t& aIndex); - - int32_t LinkIndexOf(ProxyAccessible* aLink); - - int32_t LinkIndexAtOffset(uint32_t aOffset); - - ProxyAccessible* TableOfACell(); - - uint32_t ColIdx(); - - uint32_t RowIdx(); - - uint32_t ColExtent(); - - uint32_t RowExtent(); - - void ColHeaderCells(nsTArray* aCells); - - void RowHeaderCells(nsTArray* aCells); - - bool IsCellSelected(); - - ProxyAccessible* TableCaption(); - void TableSummary(nsString& aSummary); - uint32_t TableColumnCount(); - uint32_t TableRowCount(); - ProxyAccessible* TableCellAt(uint32_t aRow, uint32_t aCol); - int32_t TableCellIndexAt(uint32_t aRow, uint32_t aCol); - int32_t TableColumnIndexAt(uint32_t aCellIndex); - int32_t TableRowIndexAt(uint32_t aCellIndex); - void TableRowAndColumnIndicesAt(uint32_t aCellIndex, - int32_t* aRow, int32_t* aCol); - uint32_t TableColumnExtentAt(uint32_t aRow, uint32_t aCol); - uint32_t TableRowExtentAt(uint32_t aRow, uint32_t aCol); - void TableColumnDescription(uint32_t aCol, nsString& aDescription); - void TableRowDescription(uint32_t aRow, nsString& aDescription); - bool TableColumnSelected(uint32_t aCol); - bool TableRowSelected(uint32_t aRow); - bool TableCellSelected(uint32_t aRow, uint32_t aCol); - uint32_t TableSelectedCellCount(); - uint32_t TableSelectedColumnCount(); - uint32_t TableSelectedRowCount(); - void TableSelectedCells(nsTArray* aCellIDs); - void TableSelectedCellIndices(nsTArray* aCellIndices); - void TableSelectedColumnIndices(nsTArray* aColumnIndices); - void TableSelectedRowIndices(nsTArray* aRowIndices); - void TableSelectColumn(uint32_t aCol); - void TableSelectRow(uint32_t aRow); - void TableUnselectColumn(uint32_t aCol); - void TableUnselectRow(uint32_t aRow); - bool TableIsProbablyForLayout(); - ProxyAccessible* AtkTableColumnHeader(int32_t aCol); - ProxyAccessible* AtkTableRowHeader(int32_t aRow); - - void SelectedItems(nsTArray* aSelectedItems); - uint32_t SelectedItemCount(); - ProxyAccessible* GetSelectedItem(uint32_t aIndex); - bool IsItemSelected(uint32_t aIndex); - bool AddItemToSelection(uint32_t aIndex); - bool RemoveItemFromSelection(uint32_t aIndex); - bool SelectAll(); - bool UnselectAll(); - - void TakeSelection(); - void SetSelected(bool aSelect); - - bool DoAction(uint8_t aIndex); - uint8_t ActionCount(); - void ActionDescriptionAt(uint8_t aIndex, nsString& aDescription); - void ActionNameAt(uint8_t aIndex, nsString& aName); - KeyBinding AccessKey(); - KeyBinding KeyboardShortcut(); - void AtkKeyBinding(nsString& aBinding); - - double CurValue(); - bool SetCurValue(double aValue); - double MinValue(); - double MaxValue(); - double Step(); - - void TakeFocus(); - ProxyAccessible* FocusedChild(); - ProxyAccessible* ChildAtPoint(int32_t aX, int32_t aY, - Accessible::EWhichChildAtPoint aWhichChild); - nsIntRect Bounds(); - - void Language(nsString& aLocale); - void DocType(nsString& aType); - void Title(nsString& aTitle); - void URL(nsString& aURL); - void MimeType(nsString aMime); - void URLDocTypeMimeType(nsString& aURL, nsString& aDocType, - nsString& aMimeType); - - ProxyAccessible* AccessibleAtPoint(int32_t aX, int32_t aY, - bool aNeedsScreenCoords); - - void Extents(bool aNeedsScreenCoords, int32_t* aX, int32_t* aY, - int32_t* aWidth, int32_t* aHeight); - - /** - * Return the id of the dom node this accessible represents. Note this - * should probably only be used for testing. - */ - void DOMNodeID(nsString& aID); +#include "mozilla/a11y/ProxyAccessibleShared.h" protected: explicit ProxyAccessible(DocAccessibleParent* aThisAsDoc) diff --git a/accessible/ipc/win/ProxyAccessible.h b/accessible/ipc/win/ProxyAccessible.h index 7b1d17f12c59..a346a4b6863a 100644 --- a/accessible/ipc/win/ProxyAccessible.h +++ b/accessible/ipc/win/ProxyAccessible.h @@ -39,34 +39,7 @@ public: MOZ_COUNT_DTOR(ProxyAccessible); } - /* - * Return the states for the proxied accessible. - */ - uint64_t State() const; - - /* - * Set aName to the name of the proxied accessible. - */ - void Name(nsString& aName) const; - - /* - * Set aValue to the value of the proxied accessible. - */ - void Value(nsString& aValue) const; - - /** - * Set aDesc to the description of the proxied accessible. - */ - void Description(nsString& aDesc) const; - - /** - * Get the set of attributes on the proxied accessible. - */ - void Attributes(nsTArray *aAttrs) const; - - nsIntRect Bounds(); - - void Language(nsString& aLocale); +#include "mozilla/a11y/ProxyAccessibleShared.h" bool GetCOMInterface(void** aOutAccessible) const; From 3e59ef8ff4ad5b1f627d4718814eb43b70a79fbc Mon Sep 17 00:00:00 2001 From: Alexander Surkov Date: Wed, 21 Sep 2016 14:15:20 -0400 Subject: [PATCH 050/117] Bug 1280551 - Documents sometimes load with no child accessibles but all text merged into document, r=yzen --- accessible/base/TreeWalker.cpp | 4 +++ .../tests/mochitest/treeupdate/test_doc.html | 31 +++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/accessible/base/TreeWalker.cpp b/accessible/base/TreeWalker.cpp index 0f070e610dbe..8c04b5d6f740 100644 --- a/accessible/base/TreeWalker.cpp +++ b/accessible/base/TreeWalker.cpp @@ -81,6 +81,10 @@ TreeWalker::Seek(nsIContent* aChildNode) Reset(); + if (mAnchorNode == aChildNode) { + return true; + } + nsIContent* childNode = nullptr; nsINode* parentNode = aChildNode; do { diff --git a/accessible/tests/mochitest/treeupdate/test_doc.html b/accessible/tests/mochitest/treeupdate/test_doc.html index 254652c30c4f..05896e7b46fa 100644 --- a/accessible/tests/mochitest/treeupdate/test_doc.html +++ b/accessible/tests/mochitest/treeupdate/test_doc.html @@ -129,19 +129,38 @@ */ function replaceIFrameHTMLElm(aID) { - this.__proto__ = new rootContentReplaced(aID, "New Wave"); + this.eventSeq = [ + new invokerChecker(EVENT_SHOW, getDocChildNode, aID), + new invokerChecker(EVENT_REORDER, getDocNode, aID) + ]; this.invoke = function replaceIFrameHTMLElm_invoke() { var docNode = getDocNode(aID); var newHTMLNode = docNode.createElement("html"); - var newBodyNode = docNode.createElement("body"); - var newTextNode = docNode.createTextNode("New Wave"); - newBodyNode.appendChild(newTextNode); - newHTMLNode.appendChild(newBodyNode); + newHTMLNode.innerHTML = `

    New Wave

    Date: Wed, 21 Sep 2016 11:42:16 -0700 Subject: [PATCH 051/117] Backout revisions b80d560e0102 and fc593dd9a280 (bug 838954) a=backout --HG-- extra : source : 7008e3ee291ec274025d72ebd157eef7588da291 --- dom/base/nsContentUtils.cpp | 9 +++------ dom/base/nsContentUtils.h | 5 ----- dom/base/test/test_bug744830.html | 2 +- modules/libpref/init/all.js | 6 ------ testing/profiles/prefs_general.js | 1 - testing/web-platform/meta/MANIFEST.json | 4 ---- .../initial-linefeed-pre.html.ini | 8 ++++++++ 7 files changed, 12 insertions(+), 23 deletions(-) create mode 100644 testing/web-platform/meta/html/syntax/serializing-html-fragments/initial-linefeed-pre.html.ini diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index 2bc6244073c0..b4b8663e42c7 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -282,7 +282,6 @@ bool nsContentUtils::sEncodeDecodeURLHash = false; bool nsContentUtils::sGettersDecodeURLHash = false; bool nsContentUtils::sPrivacyResistFingerprinting = false; bool nsContentUtils::sSendPerformanceTimingNotifications = false; -bool nsContentUtils::sAppendLFInSerialization = false; bool nsContentUtils::sUseActivityCursor = false; uint32_t nsContentUtils::sHandlingInputTimeout = 1000; @@ -600,8 +599,6 @@ nsContentUtils::Init() "network.cookie.cookieBehavior", nsICookieService::BEHAVIOR_ACCEPT); - Preferences::AddBoolVarCache(&sAppendLFInSerialization, - "dom.html_fragment_serialisation.appendLF"); #if !(defined(DEBUG) || defined(MOZ_ENABLE_JS_DUMP)) Preferences::AddBoolVarCache(&sDOMWindowDumpEnabled, "browser.dom.window.dump.enabled"); @@ -9102,12 +9099,12 @@ StartElement(Element* aContent, StringBuilder& aBuilder) aBuilder.Append(">"); - + /* // Per HTML spec we should append one \n if the first child of // pre/textarea/listing is a textnode and starts with a \n. // But because browsers haven't traditionally had that behavior, // we're not changing our behavior either - yet. - if (nsContentUtils::AppendLFInSerialization() && aContent->IsHTMLElement()) { + if (aContent->IsHTMLElement()) { if (localName == nsGkAtoms::pre || localName == nsGkAtoms::textarea || localName == nsGkAtoms::listing) { nsIContent* fc = aContent->GetFirstChild(); @@ -9120,7 +9117,7 @@ StartElement(Element* aContent, StringBuilder& aBuilder) } } } - } + }*/ } static inline bool diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h index 2f7c32f7ec7e..8a55e6f9b8fd 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -1967,10 +1967,6 @@ public: static already_AddRefed PersistentLayerManagerForDocument(nsIDocument *aDoc); - /* static */ - static bool AppendLFInSerialization() - { return sAppendLFInSerialization; } - /** * Determine whether a content node is focused or not, * @@ -2824,7 +2820,6 @@ private: static bool sGettersDecodeURLHash; static bool sPrivacyResistFingerprinting; static bool sSendPerformanceTimingNotifications; - static bool sAppendLFInSerialization; static bool sUseActivityCursor; static uint32_t sCookiesLifetimePolicy; static uint32_t sCookiesBehavior; diff --git a/dom/base/test/test_bug744830.html b/dom/base/test/test_bug744830.html index d138df5d8267..4376b7447e95 100644 --- a/dom/base/test/test_bug744830.html +++ b/dom/base/test/test_bug744830.html @@ -26,7 +26,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=744830 t.appendChild(document.createElement("textarea")); t.firstChild.appendChild(document.createTextNode("\nhello")); // This is the old behavior. Spec requires something else. - is(t.innerHTML, "", + is(t.innerHTML, "", "No extra newlines should be inserted to the textarea!"); t.innerHTML = null; diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index b2f2f48f6f44..ee942c0fcc10 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -5564,9 +5564,3 @@ pref("media.block-autoplay-until-in-foreground", true); // Is the Servo-backed style system enabled? pref("layout.css.servo.enabled", true); #endif - -#ifdef NIGHTLY_BUILD -pref("dom.html_fragment_serialisation.appendLF", true); -#else -pref("dom.html_fragment_serialisation.appendLF", false); -#endif diff --git a/testing/profiles/prefs_general.js b/testing/profiles/prefs_general.js index e9f5cc4f101f..c82040a928f9 100644 --- a/testing/profiles/prefs_general.js +++ b/testing/profiles/prefs_general.js @@ -352,4 +352,3 @@ user_pref("webextensions.tests", true); user_pref("startup.homepage_welcome_url", "about:blank"); user_pref("startup.homepage_welcome_url.additional", ""); user_pref("browser.usedOnWindows10.introURL", ""); -user_pref("dom.html_fragment_serialisation.appendLF", true); diff --git a/testing/web-platform/meta/MANIFEST.json b/testing/web-platform/meta/MANIFEST.json index bf5e96d88c98..d20165894f32 100644 --- a/testing/web-platform/meta/MANIFEST.json +++ b/testing/web-platform/meta/MANIFEST.json @@ -15417,10 +15417,6 @@ "path": "domparsing/innerhtml-01.xhtml", "url": "/domparsing/innerhtml-01.xhtml" }, - { - "path": "domparsing/innerhtml-02.html", - "url": "/domparsing/innerhtml-02.html" - }, { "path": "domparsing/innerhtml-03.xhtml", "url": "/domparsing/innerhtml-03.xhtml" diff --git a/testing/web-platform/meta/html/syntax/serializing-html-fragments/initial-linefeed-pre.html.ini b/testing/web-platform/meta/html/syntax/serializing-html-fragments/initial-linefeed-pre.html.ini new file mode 100644 index 000000000000..56b03113d586 --- /dev/null +++ b/testing/web-platform/meta/html/syntax/serializing-html-fragments/initial-linefeed-pre.html.ini @@ -0,0 +1,8 @@ +[initial-linefeed-pre.html] + type: testharness + [outer div] + expected: FAIL + + [inner div] + expected: FAIL + From bb8ff6012c98e972bb0344edf8e548f9b7e43767 Mon Sep 17 00:00:00 2001 From: Chris Manchester Date: Wed, 21 Sep 2016 12:04:08 -0700 Subject: [PATCH 052/117] Bug 1262155 - Always pass defines when compiling SOBJS. r=ted This is relevant when attempting to build libffi with our build system (libffi expects its assembly sources to be pre-processed). MozReview-Commit-ID: J6mCUkYYjQh --- config/rules.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/rules.mk b/config/rules.mk index e1c9dc1e455f..9987a3871040 100644 --- a/config/rules.mk +++ b/config/rules.mk @@ -968,7 +968,7 @@ endif # MOZ_RUST $(SOBJS): $(REPORT_BUILD) - $(AS) -o $@ $(ASFLAGS) $($(notdir $<)_FLAGS) $(LOCAL_INCLUDES) -c $< + $(AS) -o $@ $(DEFINES) $(ASFLAGS) $($(notdir $<)_FLAGS) $(LOCAL_INCLUDES) -c $< $(CPPOBJS): $(REPORT_BUILD_VERBOSE) From 07b0b7c518ec91178e6b36313a8af70d79b13edd Mon Sep 17 00:00:00 2001 From: Chris Manchester Date: Wed, 21 Sep 2016 12:04:08 -0700 Subject: [PATCH 053/117] Bug 1262155 - Add some generic compiler-based conditions to moz.configure. r=ted MozReview-Commit-ID: FHlbDPp7Hni --- build/moz.configure/headers.configure | 3 --- build/moz.configure/toolchain.configure | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/build/moz.configure/headers.configure b/build/moz.configure/headers.configure index 6f369489954d..b91ceb756777 100644 --- a/build/moz.configure/headers.configure +++ b/build/moz.configure/headers.configure @@ -10,9 +10,6 @@ have_inttypes = check_header('inttypes.h') set_config('HAVE_INTTYPES_H', have_inttypes) -# Checks for headers relevant to non-windows systems. -non_msvc_compiler = depends(c_compiler)(lambda info: info.type != 'msvc') - building_linux = depends(target)(lambda target: target.kernel == 'Linux') have_malloc = check_header('malloc.h') diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure index 87bd50bef1c6..2e37f6056bb3 100644 --- a/build/moz.configure/toolchain.configure +++ b/build/moz.configure/toolchain.configure @@ -783,6 +783,10 @@ host_cxx_compiler = compiler('C++', host, c_compiler=host_c_compiler, other_compiler=cxx_compiler, other_c_compiler=c_compiler) +# Generic compiler-based conditions. +non_msvc_compiler = depends(c_compiler)(lambda info: info.type != 'msvc') +building_with_gcc = depends(c_compiler)(lambda info: info.type == 'gcc') + include('compile-checks.configure') @depends(have_64_bit, From 6736329d5eed47b222cd3ea88c855b0a26cdf0c1 Mon Sep 17 00:00:00 2001 From: Chris Manchester Date: Mon, 8 Aug 2016 16:58:54 -0700 Subject: [PATCH 054/117] Bug 1262155 - Use moz.build instead of libffi's build system. r=ted,glandium MozReview-Commit-ID: 3wobNk0HDU5 --- aclocal.m4 | 1 - build/autoconf/alloc.m4 | 2 - build/autoconf/ffi.m4 | 74 -------------------- build/moz.configure/ffi.configure | 41 +++++++++++ build/moz.configure/headers.configure | 2 + config/external/ffi/Makefile.in | 14 ++-- config/external/ffi/moz.build | 99 ++++++++++++++++++++++++--- config/external/ffi/subst_header.py | 25 +++++++ js/src/aclocal.m4 | 1 - js/src/moz.build | 6 +- js/src/old-configure.in | 1 - old-configure.in | 1 - 12 files changed, 167 insertions(+), 100 deletions(-) delete mode 100644 build/autoconf/ffi.m4 create mode 100644 config/external/ffi/subst_header.py diff --git a/aclocal.m4 b/aclocal.m4 index c938ad093d78..fe8419da2db2 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -24,7 +24,6 @@ builtin(include, build/autoconf/arch.m4)dnl builtin(include, build/autoconf/android.m4)dnl builtin(include, build/autoconf/zlib.m4)dnl builtin(include, build/autoconf/icu.m4)dnl -builtin(include, build/autoconf/ffi.m4)dnl builtin(include, build/autoconf/clang-plugin.m4)dnl builtin(include, build/autoconf/alloc.m4)dnl builtin(include, build/autoconf/ios.m4)dnl diff --git a/build/autoconf/alloc.m4 b/build/autoconf/alloc.m4 index 33e4a3f68a09..6a0772f58058 100644 --- a/build/autoconf/alloc.m4 +++ b/build/autoconf/alloc.m4 @@ -16,8 +16,6 @@ for file in $MALLOC_HEADERS; do fi done -MOZ_CHECK_HEADERS(alloca.h) - AC_CHECK_FUNCS(strndup posix_memalign memalign) AC_CHECK_FUNCS(malloc_usable_size) diff --git a/build/autoconf/ffi.m4 b/build/autoconf/ffi.m4 deleted file mode 100644 index 8e8cc38ee1c0..000000000000 --- a/build/autoconf/ffi.m4 +++ /dev/null @@ -1,74 +0,0 @@ -dnl This Source Code Form is subject to the terms of the Mozilla Public -dnl License, v. 2.0. If a copy of the MPL was not distributed with this -dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. - -AC_DEFUN([MOZ_SUBCONFIGURE_FFI], [ -if test "$MOZ_BUILD_APP" != js -o -n "$JS_STANDALONE"; then - - if test "$BUILD_CTYPES" -a -z "$MOZ_SYSTEM_FFI"; then - # Run the libffi 'configure' script. - ac_configure_args="--disable-shared --enable-static --disable-raw-api" - if test "$MOZ_DEBUG"; then - ac_configure_args="$ac_configure_args --enable-debug" - fi - if test "$DSO_PIC_CFLAGS"; then - ac_configure_args="$ac_configure_args --with-pic" - fi - for var in AS CC CXX CPP LD AR RANLIB STRIP; do - ac_configure_args="$ac_configure_args $var='`eval echo \\${${var}}`'" - done - old_cflags="$CFLAGS" - # The libffi sources (especially the ARM ones) are written expecting gas - # syntax, and clang's integrated assembler doesn't handle all of gas syntax. - if test -n "$CLANG_CC" -a "$CPU_ARCH" = arm; then - CFLAGS="-no-integrated-as $CFLAGS" - fi - ac_configure_args="$ac_configure_args --build=$build --host=$target" - if test "$CROSS_COMPILE"; then - ac_configure_args="$ac_configure_args \ - CFLAGS=\"$CFLAGS\" \ - CPPFLAGS=\"$CPPFLAGS\" \ - LDFLAGS=\"$LDFLAGS\"" - fi - CFLAGS="$old_cflags" - if test "$_MSC_VER"; then - # Use a wrapper script for cl and ml that looks more like gcc. - # autotools can't quite handle an MSVC build environment yet. - LDFLAGS= - CFLAGS= - ac_configure_args="$ac_configure_args LD=link CPP=\"$CC -nologo -EP\" \ - CXXCPP=\"$CXX -nologo -EP\" SHELL=sh.exe" - flags= - if test -z "$MOZ_NO_DEBUG_RTL" -a -n "$MOZ_DEBUG"; then - flags=" -DUSE_DEBUG_RTL" - fi - if test -n "$CLANG_CL"; then - flags="$flags -clang-cl" - fi - case "${target_cpu}" in - x86_64) - # Need target since MSYS tools into mozilla-build may be 32bit - ac_configure_args="$ac_configure_args \ - CC=\"$_topsrcdir/js/src/ctypes/libffi/msvcc.sh -m64$flags\" \ - CXX=\"$_topsrcdir/js/src/ctypes/libffi/msvcc.sh -m64$flags\"" - ;; - *) - ac_configure_args="$ac_configure_args \ - CC=\"$_topsrcdir/js/src/ctypes/libffi/msvcc.sh$flags\" \ - CXX=\"$_topsrcdir/js/src/ctypes/libffi/msvcc.sh$flags\"" - ;; - esac - fi - - # Use a separate cache file for libffi, since it does things differently - # from our configure. - old_config_files=$CONFIG_FILES - unset CONFIG_FILES - AC_OUTPUT_SUBDIRS(js/src/ctypes/libffi) - ac_configure_args="$_SUBDIR_CONFIG_ARGS" - CONFIG_FILES=$old_config_files - fi - -fi -]) - diff --git a/build/moz.configure/ffi.configure b/build/moz.configure/ffi.configure index a85ebea08bf2..d7fc365ff558 100644 --- a/build/moz.configure/ffi.configure +++ b/build/moz.configure/ffi.configure @@ -4,6 +4,14 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +@depends(target) +def force_system_ffi(target): + # Pre-emptively move to system ffi for non-tier one platforms. + if target.cpu not in ('x86', 'x86_64', 'arm'): + return True + +imply_option('--with-system-ffi', force_system_ffi, "target") + js_option('--with-system-ffi', help='Use system libffi (located with pkgconfig)') @@ -12,5 +20,38 @@ use_system_ffi = depends_if('--with-system-ffi')(lambda _: True) system_ffi = pkg_check_modules('MOZ_FFI', 'libffi > 3.0.9', when=use_system_ffi) +building_ffi = depends(system_ffi)(lambda v: not bool(v)) + set_config('MOZ_SYSTEM_FFI', system_ffi) add_old_configure_assignment('MOZ_SYSTEM_FFI', system_ffi) + +# Target selection, based on ffi/configure.ac. +@depends_when(target, when=building_ffi) +def ffi_target(target): + if target.cpu not in ('x86', 'x86_64', 'arm'): + die('Building libffi from the tree is not supported on this platform. ' + 'Use --with-system-ffi instead.') + + if target.os == 'WINNT': + target_dir = 'x86' + if target.cpu == 'x86_64': + target_name = 'X86_WIN64' + else: + target_name = 'X86_WIN32' + elif target.os == 'OSX': + target_dir = 'x86' + target_name = 'X86_DARWIN' + elif target.cpu == 'arm': + target_dir = 'arm' + target_name = 'ARM' + else: + target_dir = 'x86' + target_name = target.cpu.upper() + + return namespace( + name=target_name, + dir=target_dir + ) + +set_config('FFI_TARGET', delayed_getattr(ffi_target, 'name')) +set_config('FFI_TARGET_DIR', delayed_getattr(ffi_target, 'dir')) diff --git a/build/moz.configure/headers.configure b/build/moz.configure/headers.configure index b91ceb756777..ff33626d3803 100644 --- a/build/moz.configure/headers.configure +++ b/build/moz.configure/headers.configure @@ -14,6 +14,8 @@ building_linux = depends(target)(lambda target: target.kernel == 'Linux') have_malloc = check_header('malloc.h') +check_header('alloca.h') + add_old_configure_assignment('HAVE_MALLOC_H', have_malloc) check_headers( diff --git a/config/external/ffi/Makefile.in b/config/external/ffi/Makefile.in index c268c5f31d8a..717b5d8291e2 100644 --- a/config/external/ffi/Makefile.in +++ b/config/external/ffi/Makefile.in @@ -1,12 +1,12 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -ifndef MOZ_SYSTEM_FFI - -include $(topsrcdir)/config/config.mk - -$(STATIC_LIBS): - $(MAKE) -C $(DEPTH)/js/src/ctypes/libffi - +# libffi's assembly files want to be pre-processed, so we still use the libffi +# wrapper to combine the preprocessor and assembler stages. +# Bug 1299959 is on file to find a better way to do this in moz.build. +ifdef _MSC_VER +AS = $(topsrcdir)/js/src/ctypes/libffi/msvcc.sh endif diff --git a/config/external/ffi/moz.build b/config/external/ffi/moz.build index e5c2c3bb14a5..a0fed263e38f 100644 --- a/config/external/ffi/moz.build +++ b/config/external/ffi/moz.build @@ -4,15 +4,98 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -Library('ffi') - if CONFIG['MOZ_SYSTEM_FFI']: OS_LIBS += CONFIG['MOZ_FFI_LIBS'] else: - if CONFIG['_MSC_VER']: - prefix = 'lib' - else: - prefix = '' - USE_LIBS += [ - 'static:/js/src/ctypes/libffi/.libs/%sffi' % prefix, + FINAL_LIBRARY = 'js' + ALLOW_COMPILER_WARNINGS = True + NO_VISIBILITY_FLAGS = True + + CONFIGURE_DEFINE_FILES += [ + '../../../js/src/ctypes/libffi/fficonfig.h', + ] + GENERATED_FILES += [ + '../../../js/src/ctypes/libffi/include/ffi.h', + ] + ffi_h = GENERATED_FILES['../../../js/src/ctypes/libffi/include/ffi.h'] + ffi_h.script = 'subst_header.py' + ffi_h.inputs = ['../../../js/src/ctypes/libffi/include/ffi.h.in'] + + LOCAL_INCLUDES += [ + '!/js/src/ctypes/libffi', + '!/js/src/ctypes/libffi/include', + '/js/src/ctypes/libffi/include', + '/js/src/ctypes/libffi/src/%s' % CONFIG['FFI_TARGET_DIR'], + ] + + DEFINES.update({ + 'TARGET': CONFIG['FFI_TARGET'], + CONFIG['FFI_TARGET']: True, + 'FFI_NO_RAW_API': True, + 'HAVE_AS_ASCII_PSEUDO_OP': True, + 'HAVE_AS_STRING_PSEUDO_OP': True, + 'HAVE_AS_X86_64_UNWIND_SECTION_TYPE': True, + }) + + if CONFIG['MOZ_DEBUG']: + DEFINES['FFI_DEBUG'] = True + if not CONFIG['MOZ_NO_DEBUG_RTL']: + DEFINES['USE_DEBUG_RTL'] = True + SOURCES += [ + '/js/src/ctypes/libffi/src/debug.c', + ] + + if CONFIG['OS_TARGET'] not in ('WINNT', 'Darwin'): + DEFINES['HAVE_HIDDEN_VISIBILITY_ATTRIBUTE'] = True + + if CONFIG['INTEL_ARCHITECTURE']: + DEFINES['HAVE_AS_X86_PCREL'] = True + + # Don't bother setting EH_FRAME_FLAGS on Windows. + # Quoted defines confuse msvcc.sh, and the value isn't used there. + if CONFIG['OS_TARGET'] != 'WINNT': + if CONFIG['FFI_TARGET'] == 'ARM': + DEFINES['EH_FRAME_FLAGS'] = '"aw"' + else: + DEFINES['EH_FRAME_FLAGS'] = '"a"' + + if CONFIG['CLANG_CL']: + ASFLAGS += ['-clang-cl'] + + # Common source files. + SOURCES += [ + '/js/src/ctypes/libffi/src/closures.c', + '/js/src/ctypes/libffi/src/java_raw_api.c', + '/js/src/ctypes/libffi/src/prep_cif.c', + '/js/src/ctypes/libffi/src/raw_api.c', + '/js/src/ctypes/libffi/src/types.c', + ] + + # Per-platform sources and flags. + ffi_srcs = () + if CONFIG['FFI_TARGET'] == 'ARM': + ffi_srcs = ('sysv.S', 'ffi.c') + if CONFIG['CLANG_CXX']: + ASFLAGS += ['-no-integrated-as'] + elif CONFIG['FFI_TARGET'] == 'X86': + ffi_srcs = ('ffi.c', 'sysv.S', 'win32.S') + elif CONFIG['FFI_TARGET'] == 'X86_64': + ffi_srcs = ('ffi64.c', 'unix64.S', 'ffi.c', 'sysv.S') + elif CONFIG['FFI_TARGET'] == 'X86_WIN32': + ffi_srcs = ('ffi.c', 'win32.S') + elif CONFIG['FFI_TARGET'] == 'X86_WIN64': + ffi_srcs = ('ffi.c', 'win64.S') + ASFLAGS += ['-m64'] + elif CONFIG['FFI_TARGET'] == 'X86_DARWIN': + DEFINES['FFI_MMAP_EXEC_WRIT'] = True + if CONFIG['OS_TEST'] != 'x86_64': + ffi_srcs = ('ffi.c', 'darwin.S', 'ffi64.c', 'darwin64.S', + 'win32.S') + DEFINES['SYMBOL_UNDERSCORE'] = True + else: + ffi_srcs = ('ffi.c', 'darwin.S', 'ffi64.c', 'darwin64.S') + + SOURCES += [ + '/js/src/ctypes/libffi/src/%s/%s' % (CONFIG['FFI_TARGET_DIR'], s) + for s in sorted(ffi_srcs) ] diff --git a/config/external/ffi/subst_header.py b/config/external/ffi/subst_header.py new file mode 100644 index 000000000000..a138f9020040 --- /dev/null +++ b/config/external/ffi/subst_header.py @@ -0,0 +1,25 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Souce Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distibuted with this +# file, You can obtain one at http://mozilla.og/MPL/2.0/. + +import sys +import buildconfig +from mozbuild.preprocessor import Preprocessor + +def main(output, input_file): + pp = Preprocessor() + pp.context.update({ + 'FFI_EXEC_TRAMPOLINE_TABLE': '0', + 'HAVE_LONG_DOUBLE': '0', + 'TARGET': buildconfig.substs['FFI_TARGET'], + 'VERSION': '', + }) + pp.do_filter('substitution') + pp.setMarker(None) + pp.out = output + pp.do_include(input_file) + +if __name__ == '__main__': + main(*sys.agv[1:]) diff --git a/js/src/aclocal.m4 b/js/src/aclocal.m4 index 4f6b4f103bb7..627837a41247 100644 --- a/js/src/aclocal.m4 +++ b/js/src/aclocal.m4 @@ -23,7 +23,6 @@ builtin(include, ../../build/autoconf/arch.m4)dnl builtin(include, ../../build/autoconf/android.m4)dnl builtin(include, ../../build/autoconf/zlib.m4)dnl builtin(include, ../../build/autoconf/icu.m4)dnl -builtin(include, ../../build/autoconf/ffi.m4)dnl builtin(include, ../../build/autoconf/clang-plugin.m4)dnl builtin(include, ../../build/autoconf/alloc.m4)dnl builtin(include, ../../build/autoconf/jemalloc.m4)dnl diff --git a/js/src/moz.build b/js/src/moz.build index c2b44abe9f7e..b43acb83185c 100644 --- a/js/src/moz.build +++ b/js/src/moz.build @@ -594,6 +594,7 @@ if CONFIG['JS_HAS_CTYPES']: if not CONFIG['MOZ_SYSTEM_FFI']: LOCAL_INCLUDES += [ '!ctypes/libffi/include', + 'ctypes/libffi/src/%s' % CONFIG['FFI_TARGET_DIR'], ] if CONFIG['MOZ_VTUNE']: @@ -637,11 +638,6 @@ else: FORCE_STATIC_LIB = True STATIC_LIBRARY_NAME = 'js_static' -if CONFIG['JS_HAS_CTYPES']: - USE_LIBS += [ - 'ffi', - ] - if CONFIG['ENABLE_INTL_API']: if not CONFIG['MOZ_ICU_DATA_ARCHIVE']: USE_LIBS += [ diff --git a/js/src/old-configure.in b/js/src/old-configure.in index 6600bcdcffde..a046c4b15bba 100644 --- a/js/src/old-configure.in +++ b/js/src/old-configure.in @@ -2280,7 +2280,6 @@ AC_SUBST(JS_LIBRARY_NAME) AC_SUBST(JS_CONFIG_MOZ_JS_LIBS) AC_SUBST(JS_CONFIG_LIBS) -MOZ_SUBCONFIGURE_FFI() MOZ_SUBCONFIGURE_JEMALLOC() # Avoid using obsolete NSPR features diff --git a/old-configure.in b/old-configure.in index 004e432f4e98..611aa321fb79 100644 --- a/old-configure.in +++ b/old-configure.in @@ -6027,7 +6027,6 @@ AC_SUBST(NSS_DISABLE_LIBPKIX) MOZ_CREATE_CONFIG_STATUS() if test "$COMPILE_ENVIRONMENT"; then - MOZ_SUBCONFIGURE_FFI() MOZ_SUBCONFIGURE_JEMALLOC() fi From e99e517678b051b945cb44f32214218966ff5105 Mon Sep 17 00:00:00 2001 From: Jan Odvarko Date: Tue, 6 Sep 2016 19:02:23 +0200 Subject: [PATCH 055/117] Bug 1260552 - Implement Splitter React component; r=jlongster, pbro --- devtools/client/shared/components/moz.build | 1 + .../shared/components/splitter/draggable.js | 54 +++++ .../shared/components/splitter/moz.build | 11 + .../shared/components/splitter/split-box.css | 88 ++++++++ .../shared/components/splitter/split-box.js | 207 ++++++++++++++++++ 5 files changed, 361 insertions(+) create mode 100644 devtools/client/shared/components/splitter/draggable.js create mode 100644 devtools/client/shared/components/splitter/moz.build create mode 100644 devtools/client/shared/components/splitter/split-box.css create mode 100644 devtools/client/shared/components/splitter/split-box.js diff --git a/devtools/client/shared/components/moz.build b/devtools/client/shared/components/moz.build index 89b4ff32f1c2..fc573ef4bb48 100644 --- a/devtools/client/shared/components/moz.build +++ b/devtools/client/shared/components/moz.build @@ -6,6 +6,7 @@ DIRS += [ 'reps', + 'splitter', 'tabs', 'tree' ] diff --git a/devtools/client/shared/components/splitter/draggable.js b/devtools/client/shared/components/splitter/draggable.js new file mode 100644 index 000000000000..5581c8e7f9a7 --- /dev/null +++ b/devtools/client/shared/components/splitter/draggable.js @@ -0,0 +1,54 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const React = require("devtools/client/shared/vendor/react"); +const ReactDOM = require("devtools/client/shared/vendor/react-dom"); +const { DOM: dom, PropTypes } = React; + +const Draggable = React.createClass({ + displayName: "Draggable", + + propTypes: { + onMove: PropTypes.func.isRequired, + onStart: PropTypes.func, + onStop: PropTypes.func, + style: PropTypes.object, + className: PropTypes.string + }, + + startDragging(ev) { + ev.preventDefault(); + const doc = ReactDOM.findDOMNode(this).ownerDocument; + doc.addEventListener("mousemove", this.onMove); + doc.addEventListener("mouseup", this.onUp); + this.props.onStart && this.props.onStart(); + }, + + onMove(ev) { + ev.preventDefault(); + // Use screen coordinates so, moving mouse over iframes + // doesn't mangle (relative) coordinates. + this.props.onMove(ev.screenX, ev.screenY); + }, + + onUp(ev) { + ev.preventDefault(); + const doc = ReactDOM.findDOMNode(this).ownerDocument; + doc.removeEventListener("mousemove", this.onMove); + doc.removeEventListener("mouseup", this.onUp); + this.props.onStop && this.props.onStop(); + }, + + render() { + return dom.div({ + style: this.props.style, + className: this.props.className, + onMouseDown: this.startDragging + }); + } +}); + +module.exports = Draggable; diff --git a/devtools/client/shared/components/splitter/moz.build b/devtools/client/shared/components/splitter/moz.build new file mode 100644 index 000000000000..924732aeacb6 --- /dev/null +++ b/devtools/client/shared/components/splitter/moz.build @@ -0,0 +1,11 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +DevToolsModules( + 'draggable.js', + 'split-box.css', + 'split-box.js', +) diff --git a/devtools/client/shared/components/splitter/split-box.css b/devtools/client/shared/components/splitter/split-box.css new file mode 100644 index 000000000000..ea8fdaa6f9d4 --- /dev/null +++ b/devtools/client/shared/components/splitter/split-box.css @@ -0,0 +1,88 @@ +/* vim:set ts=2 sw=2 sts=2 et: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +.split-box { + display: flex; + flex: 1; + min-width: 0; + height: 100%; + width: 100%; +} + +.split-box.vert { + flex-direction: row; +} + +.split-box.horz { + flex-direction: column; +} + +.split-box > .uncontrolled { + display: flex; + flex: 1; + min-width: 0; + overflow: auto; +} + +.split-box > .controlled { + display: flex; + overflow: auto; +} + +.split-box > .splitter { + background-image: none; + border: 0; + border-style: solid; + border-color: transparent; + background-color: var(--theme-splitter-color); + background-clip: content-box; + position: relative; + + box-sizing: border-box; + + /* Positive z-index positions the splitter on top of its siblings and makes + it clickable on both sides. */ + z-index: 1; +} + +.split-box.vert > .splitter { + min-width: calc(var(--devtools-splitter-inline-start-width) + + var(--devtools-splitter-inline-end-width) + 1px); + + border-inline-start-width: var(--devtools-splitter-inline-start-width); + border-inline-end-width: var(--devtools-splitter-inline-end-width); + + margin-inline-start: calc(-1 * var(--devtools-splitter-inline-start-width) - 1px); + margin-inline-end: calc(-1 * var(--devtools-splitter-inline-end-width)); + + cursor: ew-resize; +} + +.split-box.horz > .splitter { + min-height: calc(var(--devtools-splitter-top-width) + + var(--devtools-splitter-bottom-width) + 1px); + + border-top-width: var(--devtools-splitter-top-width); + border-bottom-width: var(--devtools-splitter-bottom-width); + + margin-top: calc(-1 * var(--devtools-splitter-top-width) - 1px); + margin-bottom: calc(-1 * var(--devtools-splitter-bottom-width)); + + cursor: ns-resize; +} + +.split-box.disabled { + pointer-events: none; +} + +/** + * Make sure splitter panels are not processing any mouse + * events. This is good for performance during splitter + * bar dragging. + */ +.split-box.dragging > .controlled, +.split-box.dragging > .uncontrolled { + pointer-events: none; +} diff --git a/devtools/client/shared/components/splitter/split-box.js b/devtools/client/shared/components/splitter/split-box.js new file mode 100644 index 000000000000..1a2acdaabd33 --- /dev/null +++ b/devtools/client/shared/components/splitter/split-box.js @@ -0,0 +1,207 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +const React = require("devtools/client/shared/vendor/react"); +const ReactDOM = require("devtools/client/shared/vendor/react-dom"); +const Draggable = React.createFactory(require("devtools/client/shared/components/splitter/draggable")); +const { DOM: dom, PropTypes } = React; + +/** + * This component represents a Splitter. The splitter supports vertical + * as well as horizontal mode. + */ +const SplitBox = React.createClass({ + displayName: "SplitBox", + + propTypes: { + // Custom class name. You can use more names separated by a space. + className: PropTypes.string, + // Initial size of controlled panel. + initialSize: PropTypes.number, + // Left/top panel + startPanel: PropTypes.any, + // Min panel size. + minSize: PropTypes.number, + // Max panel size. + maxSize: PropTypes.number, + // Right/bottom panel + endPanel: PropTypes.any, + // True if the right/bottom panel should be controlled. + endPanelControl: PropTypes.bool, + // Size of the splitter handle bar. + splitterSize: PropTypes.number, + // True if the splitter bar is vertical (default is vertical). + vert: PropTypes.bool + }, + + getDefaultProps() { + return { + splitterSize: 5, + vert: true, + endPanelControl: false + }; + }, + + /** + * The state stores the current orientation (vertical or horizontal) + * and the current size (width/height). All these values can change + * during the component's life time. + */ + getInitialState() { + return { + vert: this.props.vert, + width: this.props.initialWidth || this.props.initialSize, + height: this.props.initialHeight || this.props.initialSize + }; + }, + + // Dragging Events + + /** + * Set 'resizing' cursor on entire document during splitter dragging. + * This avoids cursor-flickering that happens when the mouse leaves + * the splitter bar area (happens frequently). + */ + onStartMove() { + const splitBox = ReactDOM.findDOMNode(this); + const doc = splitBox.ownerDocument; + let defaultCursor = doc.documentElement.style.cursor; + doc.documentElement.style.cursor = (this.state.vert ? "ew-resize" : "ns-resize"); + + splitBox.classList.add("dragging"); + + this.setState({ + defaultCursor: defaultCursor + }); + }, + + onStopMove() { + const splitBox = ReactDOM.findDOMNode(this); + const doc = splitBox.ownerDocument; + doc.documentElement.style.cursor = this.state.defaultCursor; + + splitBox.classList.remove("dragging"); + }, + + /** + * Adjust size of the controlled panel. Depending on the current + * orientation we either remember the width or height of + * the splitter box. + */ + onMove(x, y) { + const node = ReactDOM.findDOMNode(this); + const doc = node.ownerDocument; + const win = doc.defaultView; + + let size; + let { endPanelControl } = this.props; + + if (this.state.vert) { + // Switch the control flag in case of RTL. Note that RTL + // has impact on vertical splitter only. + let dir = win.getComputedStyle(doc.documentElement).direction; + if (dir == "rtl") { + endPanelControl = !endPanelControl; + } + + let innerOffset = x - win.mozInnerScreenX; + size = endPanelControl ? + (node.offsetLeft + node.offsetWidth) - innerOffset : + innerOffset - node.offsetLeft; + + this.setState({ + width: size + }); + } else { + let innerOffset = y - win.mozInnerScreenY; + size = endPanelControl ? + (node.offsetTop + node.offsetHeight) - innerOffset : + innerOffset - node.offsetTop; + + this.setState({ + height: size + }); + } + }, + + // Rendering + + render() { + const vert = this.state.vert; + const { startPanel, endPanel, endPanelControl, minSize, + maxSize, splitterSize } = this.props; + + let style = Object.assign({}, this.props.style); + + // Calculate class names list. + let classNames = ["split-box"]; + classNames.push(vert ? "vert" : "horz"); + if (this.props.className) { + classNames = classNames.concat(this.props.className.split(" ")); + } + + let leftPanelStyle; + let rightPanelStyle; + + // Set proper size for panels depending on the current state. + if (vert) { + leftPanelStyle = { + maxWidth: endPanelControl ? null : maxSize, + minWidth: endPanelControl ? null : minSize, + width: endPanelControl ? null : this.state.width + }; + rightPanelStyle = { + maxWidth: endPanelControl ? maxSize : null, + minWidth: endPanelControl ? minSize : null, + width: endPanelControl ? this.state.width : null + }; + } else { + leftPanelStyle = { + maxHeight: endPanelControl ? null : maxSize, + minHeight: endPanelControl ? null : minSize, + height: endPanelControl ? null : this.state.height + }; + rightPanelStyle = { + maxHeight: endPanelControl ? maxSize : null, + minHeight: endPanelControl ? minSize : null, + height: endPanelControl ? this.state.height : null + }; + } + + // Calculate splitter size + let splitterStyle = { + flex: "0 0 " + splitterSize + "px" + }; + + return ( + dom.div({ + className: classNames.join(" "), + style: style }, + startPanel ? + dom.div({ + className: endPanelControl ? "uncontrolled" : "controlled", + style: leftPanelStyle}, + startPanel + ) : null, + Draggable({ + className: "splitter", + style: splitterStyle, + onStart: this.onStartMove, + onStop: this.onStopMove, + onMove: this.onMove + }), + endPanel ? + dom.div({ + className: endPanelControl ? "controlled" : "uncontrolled", + style: rightPanelStyle}, + endPanel + ) : null + ) + ); + } +}); + +module.exports = SplitBox; From 532453acb4a0a1b344b6ef9dfdc45e10dd74fd51 Mon Sep 17 00:00:00 2001 From: Jan Odvarko Date: Wed, 21 Sep 2016 08:26:02 +0200 Subject: [PATCH 056/117] Bug 1260552 - Replace xul:spliter by html:splitter; r=pbro --- .../browser_toolbox_textbox_context_menu.js | 8 +- .../browser_toolbox_window_reload_target.js | 1 + devtools/client/framework/test/shared-head.js | 9 + .../components/inspector-tab-panel.js | 18 +- devtools/client/inspector/inspector-panel.js | 158 ++++++++++++------ devtools/client/inspector/inspector.xul | 41 +++-- .../test/browser_rules_authored_color.js | 2 +- .../rules/test/browser_rules_colorUnit.js | 2 +- ..._rules_colorpicker-and-image-tooltip_01.js | 2 +- ..._rules_colorpicker-and-image-tooltip_02.js | 2 +- ...owser_rules_colorpicker-commit-on-ENTER.js | 2 +- ...owser_rules_cubicbezier-commit-on-ENTER.js | 2 +- ...browser_rules_cubicbezier-revert-on-ESC.js | 2 +- devtools/client/inspector/rules/test/head.js | 10 ++ ...rowser_inspector_breadcrumbs_visibility.js | 4 + .../test/browser_inspector_pane-toggle-02.js | 3 +- .../test/browser_inspector_pane-toggle-03.js | 2 +- .../test/browser_inspector_pane-toggle-04.js | 2 +- .../test/browser_inspector_pane-toggle-05.js | 3 +- ...er_inspector_search-filter_context-menu.js | 6 +- devtools/client/inspector/toolsidebar.js | 17 +- .../mochitest/test_tabs_accessibility.html | 6 +- devtools/client/themes/inspector.css | 56 ++++++- 23 files changed, 268 insertions(+), 90 deletions(-) diff --git a/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js b/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js index b3f88cf72ca0..1dd4fa36a818 100644 --- a/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js +++ b/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js @@ -9,8 +9,14 @@ add_task(function* () { let toolbox = yield openNewTabAndToolbox(URL, "inspector"); let textboxContextMenu = toolbox.textboxContextMenuPopup; + // Make sure the focus is predictable. + let inspector = toolbox.getPanel("inspector"); + inspector.searchBox.focus(); + ok(textboxContextMenu, "The textbox context menu is loaded in the toolbox"); + emptyClipboard(); + let cmdUndo = textboxContextMenu.querySelector("[command=cmd_undo]"); let cmdDelete = textboxContextMenu.querySelector("[command=cmd_delete]"); let cmdSelectAll = textboxContextMenu.querySelector("[command=cmd_selectAll]"); @@ -26,7 +32,7 @@ add_task(function* () { is(cmdUndo.getAttribute("disabled"), "true", "cmdUndo is disabled"); is(cmdDelete.getAttribute("disabled"), "true", "cmdDelete is disabled"); - is(cmdSelectAll.getAttribute("disabled"), "", "cmdSelectAll is enabled"); + is(cmdSelectAll.getAttribute("disabled"), "true", "cmdSelectAll is disabled"); is(cmdCut.getAttribute("disabled"), "true", "cmdCut is disabled"); is(cmdCopy.getAttribute("disabled"), "true", "cmdCopy is disabled"); is(cmdPaste.getAttribute("disabled"), "true", "cmdPaste is disabled"); diff --git a/devtools/client/framework/test/browser_toolbox_window_reload_target.js b/devtools/client/framework/test/browser_toolbox_window_reload_target.js index d0a450a3a3a1..ea9e2d600ff1 100644 --- a/devtools/client/framework/test/browser_toolbox_window_reload_target.js +++ b/devtools/client/framework/test/browser_toolbox_window_reload_target.js @@ -84,6 +84,7 @@ function testReload(shortcut, docked, toolID, callback) { description = docked + " devtools with tool " + toolID + ", shortcut #" + shortcut; info("Testing reload in " + description); + toolbox.win.focus(); synthesizeKeyShortcut(L10N.getStr(shortcut), toolbox.win); reloadsSent++; } diff --git a/devtools/client/framework/test/shared-head.js b/devtools/client/framework/test/shared-head.js index b404500cf069..d5f740e3f88b 100644 --- a/devtools/client/framework/test/shared-head.js +++ b/devtools/client/framework/test/shared-head.js @@ -559,3 +559,12 @@ function stopRecordingTelemetryLogs(Telemetry) { delete Telemetry.prototype._oldlogKeyed; delete Telemetry.prototype.telemetryInfo; } + +/** + * Clean the OS clipboard content. + */ +function emptyClipboard() { + let clipboard = Cc["@mozilla.org/widget/clipboard;1"] + .getService(SpecialPowers.Ci.nsIClipboard); + clipboard.emptyClipboard(1); +} diff --git a/devtools/client/inspector/components/inspector-tab-panel.js b/devtools/client/inspector/components/inspector-tab-panel.js index 4ea3d8ef7db9..68db7781eb4f 100644 --- a/devtools/client/inspector/components/inspector-tab-panel.js +++ b/devtools/client/inspector/components/inspector-tab-panel.js @@ -12,19 +12,31 @@ const { DOM, createClass, PropTypes } = require("devtools/client/shared/vendor/r const { div } = DOM; /** - * Side panel for the Inspector panel. - * This side panel is using an existing DOM node as a content. + * Helper panel component that is using an existing DOM node + * as the content. It's used by Sidebar as well as SplitBox + * components. */ var InspectorTabPanel = createClass({ displayName: "InspectorTabPanel", propTypes: { + // ID of the node that should be rendered as the content. + id: PropTypes.string.isRequired, + // Optional prefix for panel IDs. + idPrefix: PropTypes.string, + // Optional mount callback onMount: PropTypes.func, }, + getDefaultProps: function () { + return { + idPrefix: "", + }; + }, + componentDidMount: function () { let doc = this.refs.content.ownerDocument; - let panel = doc.getElementById("sidebar-panel-" + this.props.id); + let panel = doc.getElementById(this.props.idPrefix + this.props.id); // Append existing DOM node into panel's content. this.refs.content.appendChild(panel); diff --git a/devtools/client/inspector/inspector-panel.js b/devtools/client/inspector/inspector-panel.js index f8f35580405f..1b2811230148 100644 --- a/devtools/client/inspector/inspector-panel.js +++ b/devtools/client/inspector/inspector-panel.js @@ -35,6 +35,14 @@ const {LocalizationHelper} = require("devtools/shared/l10n"); const INSPECTOR_L10N = new LocalizationHelper("devtools/locale/inspector.properties"); const TOOLBOX_L10N = new LocalizationHelper("devtools/locale/toolbox.properties"); +// Sidebar dimensions +const INITIAL_SIDEBAR_SIZE = 350; +const MIN_SIDEBAR_SIZE = 50; + +// If the toolbox width is smaller than given amount of pixels, +// the sidebar automatically switches from 'landscape' to 'portrait' mode. +const PORTRAIT_MODE_WIDTH = 700; + /** * Represents an open instance of the Inspector for a tab. * The inspector controls the breadcrumbs, the markup view, and the sidebar @@ -94,6 +102,9 @@ function InspectorPanel(iframeWindow, toolbox) { this.onDetached = this.onDetached.bind(this); this.onPaneToggleButtonClicked = this.onPaneToggleButtonClicked.bind(this); this._onMarkupFrameLoad = this._onMarkupFrameLoad.bind(this); + this.onPanelWindowResize = this.onPanelWindowResize.bind(this); + this.onSidebarShown = this.onSidebarShown.bind(this); + this.onSidebarHidden = this.onSidebarHidden.bind(this); this._target.on("will-navigate", this._onBeforeNavigate); this._detectingActorFeatures = this._detectActorFeatures(); @@ -400,6 +411,98 @@ InspectorPanel.prototype = { return this._toolbox.browserRequire; }, + get InspectorTabPanel() { + if (!this._InspectorTabPanel) { + this._InspectorTabPanel = + this.React.createFactory(this.browserRequire( + "devtools/client/inspector/components/inspector-tab-panel")); + } + return this._InspectorTabPanel; + }, + + /** + * Build Splitter located between the main and side area of + * the Inspector panel. + */ + setupSplitter: function () { + let SplitBox = this.React.createFactory(this.browserRequire( + "devtools/client/shared/components/splitter/split-box")); + + this.panelWin.addEventListener("resize", this.onPanelWindowResize, true); + + let splitter = SplitBox({ + className: "inspector-sidebar-splitter", + initialWidth: INITIAL_SIDEBAR_SIZE, + initialHeight: INITIAL_SIDEBAR_SIZE, + minSize: MIN_SIDEBAR_SIZE, + splitterSize: 1, + endPanelControl: true, + startPanel: this.InspectorTabPanel({ + id: "inspector-main-content" + }), + endPanel: this.InspectorTabPanel({ + id: "inspector-sidebar-container" + }) + }); + + this._splitter = this.ReactDOM.render(splitter, + this.panelDoc.getElementById("inspector-splitter-box")); + + // Persist splitter state in preferences. + this.sidebar.on("show", this.onSidebarShown); + this.sidebar.on("hide", this.onSidebarHidden); + this.sidebar.on("destroy", this.onSidebarHidden); + }, + + /** + * Splitter clean up. + */ + teardownSplitter: function () { + this.panelWin.removeEventListener("resize", this.onPanelWindowResize, true); + + this.sidebar.off("show", this.onSidebarShown); + this.sidebar.off("hide", this.onSidebarHidden); + this.sidebar.off("destroy", this.onSidebarHidden); + }, + + /** + * If Toolbox width is less than 600 px, the splitter changes its mode + * to `horizontal` to support portrait view. + */ + onPanelWindowResize: function () { + let box = this.panelDoc.getElementById("inspector-splitter-box"); + this._splitter.setState({ + vert: (box.clientWidth > PORTRAIT_MODE_WIDTH) + }); + }, + + onSidebarShown: function () { + let width; + let height; + + // Initialize splitter size from preferences. + try { + width = Services.prefs.getIntPref("devtools.toolsidebar-width.inspector"); + height = Services.prefs.getIntPref("devtools.toolsidebar-height.inspector"); + } catch (e) { + // Set width and height of the splitter. Only one + // value is really useful at a time depending on the current + // orientation (vertical/horizontal). + // Having both is supported by the splitter component. + width = INITIAL_SIDEBAR_SIZE; + height = INITIAL_SIDEBAR_SIZE; + } + + this._splitter.setState({width, height}); + }, + + onSidebarHidden: function () { + // Store the current splitter size to preferences. + let state = this._splitter.state; + Services.prefs.setIntPref("devtools.toolsidebar-width.inspector", state.width); + Services.prefs.setIntPref("devtools.toolsidebar-height.inspector", state.height); + }, + /** * Build the sidebar. */ @@ -455,56 +558,13 @@ InspectorPanel.prototype = { this.sidebar.toggleTab(true, "fontinspector"); } - this.setupSidebarSize(); + // Setup the splitter before the sidebar is displayed so, + // we don't miss any events. + this.setupSplitter(); this.sidebar.show(defaultTab); }, - /** - * Sidebar size is currently driven by vbox.inspector-sidebar-container - * element, which is located at the left/bottom side of the side bar splitter. - * Its size is changed by the splitter and stored into preferences. - * As soon as bug 1260552 is fixed and new HTML based splitter in place - * the size can be driven by div.inspector-sidebar element. This element - * represents the ToolSidebar and so, the entire logic related to size - * persistence can be done inside the ToolSidebar. - */ - setupSidebarSize: function () { - let sidePaneContainer = this.panelDoc.querySelector( - "#inspector-sidebar-container"); - - this.sidebar.on("show", () => { - try { - sidePaneContainer.width = Services.prefs.getIntPref( - "devtools.toolsidebar-width.inspector"); - sidePaneContainer.height = Services.prefs.getIntPref( - "devtools.toolsidebar-height.inspector"); - } catch (e) { - // The default width is the min-width set in CSS - // for #inspector-sidebar-container - // Set width and height of the sidebar container. Only one - // value is really useful at a time depending on the current - // toolbox orientation and having both doesn't break anything. - sidePaneContainer.width = 450; - sidePaneContainer.height = 450; - } - }); - - this.sidebar.on("hide", () => { - Services.prefs.setIntPref("devtools.toolsidebar-width.inspector", - sidePaneContainer.width); - Services.prefs.setIntPref("devtools.toolsidebar-height.inspector", - sidePaneContainer.height); - }); - - this.sidebar.on("destroy", () => { - Services.prefs.setIntPref("devtools.toolsidebar-width.inspector", - sidePaneContainer.width); - Services.prefs.setIntPref("devtools.toolsidebar-height.inspector", - sidePaneContainer.height); - }); - }, - setupToolbar: function () { this.teardownToolbar(); @@ -798,6 +858,9 @@ InspectorPanel.prototype = { this.sidebar.off("select", this._setDefaultSidebar); let sidebarDestroyer = this.sidebar.destroy(); + + this.teardownSplitter(); + this.sidebar = null; this.teardownToolbar(); @@ -1251,7 +1314,8 @@ InspectorPanel.prototype = { * state and tooltip. */ onPaneToggleButtonClicked: function (e) { - let sidePaneContainer = this.panelDoc.querySelector("#inspector-sidebar-container"); + let sidePaneContainer = this.panelDoc.querySelector( + "#inspector-splitter-box .controlled"); let isVisible = !this._sidebarToggle.state.collapsed; // Make sure the sidebar has width and height attributes before collapsing diff --git a/devtools/client/inspector/inspector.xul b/devtools/client/inspector/inspector.xul index f0ebb4f61294..ecfa2aa374d3 100644 --- a/devtools/client/inspector/inspector.xul +++ b/devtools/client/inspector/inspector.xul @@ -16,6 +16,7 @@ + %inspectorDTD; @@ -30,8 +31,10 @@ + + @@ -226,4 +229,5 @@ - + + diff --git a/devtools/client/inspector/moz.build b/devtools/client/inspector/moz.build index 8d2e22b00fbc..dad750369bc9 100644 --- a/devtools/client/inspector/moz.build +++ b/devtools/client/inspector/moz.build @@ -16,6 +16,7 @@ DevToolsModules( 'inspector-commands.js', 'inspector-panel.js', 'inspector-search.js', + 'inspector.xhtml', 'toolsidebar.js', ) diff --git a/devtools/client/jar.mn b/devtools/client/jar.mn index 8f19f276b26b..963a593424bc 100644 --- a/devtools/client/jar.mn +++ b/devtools/client/jar.mn @@ -118,7 +118,7 @@ devtools.jar: content/framework/dev-edition-promo/dev-edition-promo.xul (framework/dev-edition-promo/dev-edition-promo.xul) * content/framework/dev-edition-promo/dev-edition-promo.css (framework/dev-edition-promo/dev-edition-promo.css) content/framework/dev-edition-promo/dev-edition-logo.png (framework/dev-edition-promo/dev-edition-logo.png) - content/inspector/inspector.xul (inspector/inspector.xul) + content/inspector/inspector.xhtml (inspector/inspector.xhtml) content/framework/connect/connect.xhtml (framework/connect/connect.xhtml) content/framework/connect/connect.css (framework/connect/connect.css) content/framework/connect/connect.js (framework/connect/connect.js) diff --git a/devtools/client/themes/inspector.css b/devtools/client/themes/inspector.css index 37752253a303..9bbe5ea8dcc8 100644 --- a/devtools/client/themes/inspector.css +++ b/devtools/client/themes/inspector.css @@ -191,6 +191,10 @@ window { /* Markup Box */ +iframe { + border: 0; +} + #markup-box { width: 100%; flex: 1 1 auto; From f11090bde3120588785f942bb9e7e444e9e26213 Mon Sep 17 00:00:00 2001 From: Jan Odvarko Date: Tue, 20 Sep 2016 17:24:47 +0200 Subject: [PATCH 060/117] Bug 1262443 - Fix tests; r=pbro --- .../browser_animation_spacebar_toggles_node_animations.js | 2 ++ .../test/browser_toolbox_textbox_context_menu.js | 8 ++++++-- .../test/browser_computed_search-filter_context-menu.js | 8 ++++++-- .../rules/test/browser_rules_add-property-cancel_01.js | 3 ++- .../rules/test/browser_rules_add-property-cancel_02.js | 2 +- .../rules/test/browser_rules_add-property-cancel_03.js | 2 +- .../test/browser_rules_search-filter_context-menu.js | 8 ++++++-- .../rules/test/browser_rules_user-agent-styles.js | 2 +- devtools/client/inspector/rules/test/head.js | 4 +++- .../test/browser_inspector_search-filter_context-menu.js | 8 ++++++-- 10 files changed, 34 insertions(+), 13 deletions(-) diff --git a/devtools/client/animationinspector/test/browser_animation_spacebar_toggles_node_animations.js b/devtools/client/animationinspector/test/browser_animation_spacebar_toggles_node_animations.js index d407070e0176..422e09821ac2 100644 --- a/devtools/client/animationinspector/test/browser_animation_spacebar_toggles_node_animations.js +++ b/devtools/client/animationinspector/test/browser_animation_spacebar_toggles_node_animations.js @@ -11,6 +11,8 @@ // is selected, animations will be displayed in the timeline, so the timeline // play/resume button will be displayed add_task(function* () { + requestLongerTimeout(2); + yield addTab(URL_ROOT + "doc_simple_animation.html"); let {panel, window} = yield openAnimationInspector(); let {playTimelineButtonEl} = panel; diff --git a/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js b/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js index ecc90fbff7a2..86adffcb09d0 100644 --- a/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js +++ b/devtools/client/framework/test/browser_toolbox_textbox_context_menu.js @@ -35,8 +35,12 @@ add_task(function* () { is(cmdUndo.getAttribute("disabled"), "true", "cmdUndo is disabled"); is(cmdDelete.getAttribute("disabled"), "true", "cmdDelete is disabled"); is(cmdSelectAll.getAttribute("disabled"), "true", "cmdSelectAll is disabled"); - is(cmdCut.getAttribute("disabled"), "true", "cmdCut is disabled"); - is(cmdCopy.getAttribute("disabled"), "true", "cmdCopy is disabled"); + + // Cut/Copy items are enabled in context menu even if there + // is no selection. See also Bug 1303033 + is(cmdCut.getAttribute("disabled"), "", "cmdCut is enabled"); + is(cmdCopy.getAttribute("disabled"), "", "cmdCopy is enabled"); + if (isWindows()) { // emptyClipboard only works on Windows (666254), assert paste only for this OS. is(cmdPaste.getAttribute("disabled"), "true", "cmdPaste is disabled"); diff --git a/devtools/client/inspector/computed/test/browser_computed_search-filter_context-menu.js b/devtools/client/inspector/computed/test/browser_computed_search-filter_context-menu.js index 2ea9530fa2c6..2a63fc8c1bda 100644 --- a/devtools/client/inspector/computed/test/browser_computed_search-filter_context-menu.js +++ b/devtools/client/inspector/computed/test/browser_computed_search-filter_context-menu.js @@ -44,8 +44,12 @@ add_task(function* () { is(cmdUndo.getAttribute("disabled"), "true", "cmdUndo is disabled"); is(cmdDelete.getAttribute("disabled"), "true", "cmdDelete is disabled"); is(cmdSelectAll.getAttribute("disabled"), "true", "cmdSelectAll is disabled"); - is(cmdCut.getAttribute("disabled"), "true", "cmdCut is disabled"); - is(cmdCopy.getAttribute("disabled"), "true", "cmdCopy is disabled"); + + // Cut/Copy items are enabled in context menu even if there + // is no selection. See also Bug 1303033 + is(cmdCut.getAttribute("disabled"), "", "cmdCut is enabled"); + is(cmdCopy.getAttribute("disabled"), "", "cmdCopy is enabled"); + if (isWindows()) { // emptyClipboard only works on Windows (666254), assert paste only for this OS. is(cmdPaste.getAttribute("disabled"), "true", "cmdPaste is disabled"); diff --git a/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_01.js b/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_01.js index c6ceab4fe5da..78b3a4c9149f 100644 --- a/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_01.js +++ b/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_01.js @@ -38,6 +38,7 @@ add_task(function* () { "Should have cancelled creating a new text property."); ok(!elementRuleEditor.propertyList.hasChildNodes(), "Should not have any properties."); - is(view.styleDocument.activeElement, view.styleDocument.documentElement, + + is(view.styleDocument.activeElement, view.styleDocument.body, "Correct element has focus"); }); diff --git a/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_02.js b/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_02.js index 58d22d07cea2..7f4d1564cd61 100644 --- a/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_02.js +++ b/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_02.js @@ -23,7 +23,7 @@ add_task(function* () { info("Test creating a new property and escaping"); yield addProperty(view, 1, "color", "red", "VK_ESCAPE", false); - is(view.styleDocument.documentElement, view.styleDocument.activeElement, + is(view.styleDocument.activeElement, view.styleDocument.body, "Correct element has focus"); let elementRuleEditor = getRuleViewRuleEditor(view, 1); diff --git a/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_03.js b/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_03.js index 9cb9dc2759f7..4f8b42009ff0 100644 --- a/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_03.js +++ b/devtools/client/inspector/rules/test/browser_rules_add-property-cancel_03.js @@ -38,6 +38,6 @@ add_task(function* () { is(elementRuleEditor.rule.textProps.length, 1, "Should have canceled creating a new text property."); - is(view.styleDocument.documentElement, view.styleDocument.activeElement, + is(view.styleDocument.activeElement, view.styleDocument.body, "Correct element has focus"); }); diff --git a/devtools/client/inspector/rules/test/browser_rules_search-filter_context-menu.js b/devtools/client/inspector/rules/test/browser_rules_search-filter_context-menu.js index 7e5c092b69cc..fdfd0147ccac 100644 --- a/devtools/client/inspector/rules/test/browser_rules_search-filter_context-menu.js +++ b/devtools/client/inspector/rules/test/browser_rules_search-filter_context-menu.js @@ -43,8 +43,12 @@ add_task(function* () { is(cmdUndo.getAttribute("disabled"), "true", "cmdUndo is disabled"); is(cmdDelete.getAttribute("disabled"), "true", "cmdDelete is disabled"); is(cmdSelectAll.getAttribute("disabled"), "true", "cmdSelectAll is disabled"); - is(cmdCut.getAttribute("disabled"), "true", "cmdCut is disabled"); - is(cmdCopy.getAttribute("disabled"), "true", "cmdCopy is disabled"); + + // Cut/Copy items are enabled in context menu even if there + // is no selection. See also Bug 1303033 + is(cmdCut.getAttribute("disabled"), "", "cmdCut is enabled"); + is(cmdCopy.getAttribute("disabled"), "", "cmdCopy is enabled"); + if (isWindows()) { // emptyClipboard only works on Windows (666254), assert paste only for this OS. is(cmdPaste.getAttribute("disabled"), "true", "cmdPaste is disabled"); diff --git a/devtools/client/inspector/rules/test/browser_rules_user-agent-styles.js b/devtools/client/inspector/rules/test/browser_rules_user-agent-styles.js index 9a3d4f658b8e..6852e3c03491 100644 --- a/devtools/client/inspector/rules/test/browser_rules_user-agent-styles.js +++ b/devtools/client/inspector/rules/test/browser_rules_user-agent-styles.js @@ -58,7 +58,7 @@ const TEST_DATA = [ ]; add_task(function* () { - requestLongerTimeout(2); + requestLongerTimeout(4); info("Starting the test with the pref set to true before toolbox is opened"); yield setUserAgentStylesPref(true); diff --git a/devtools/client/inspector/rules/test/head.js b/devtools/client/inspector/rules/test/head.js index b076712f7256..f881d3a577c3 100644 --- a/devtools/client/inspector/rules/test/head.js +++ b/devtools/client/inspector/rules/test/head.js @@ -634,7 +634,9 @@ var togglePropStatus = Task.async(function* (view, textProp) { */ var focusNewRuleViewProperty = Task.async(function* (ruleEditor) { info("Clicking on a close ruleEditor brace to start editing a new property"); - ruleEditor.closeBrace.scrollIntoView(); + + // Use bottom alignment to avoid scrolling out of the parent element area. + ruleEditor.closeBrace.scrollIntoView(false); let editor = yield focusEditableField(ruleEditor.ruleView, ruleEditor.closeBrace); diff --git a/devtools/client/inspector/test/browser_inspector_search-filter_context-menu.js b/devtools/client/inspector/test/browser_inspector_search-filter_context-menu.js index 8861603700a6..5321593a58db 100644 --- a/devtools/client/inspector/test/browser_inspector_search-filter_context-menu.js +++ b/devtools/client/inspector/test/browser_inspector_search-filter_context-menu.js @@ -41,8 +41,12 @@ add_task(function* () { is(cmdUndo.getAttribute("disabled"), "true", "cmdUndo is disabled"); is(cmdDelete.getAttribute("disabled"), "true", "cmdDelete is disabled"); is(cmdSelectAll.getAttribute("disabled"), "true", "cmdSelectAll is disabled"); - is(cmdCut.getAttribute("disabled"), "true", "cmdCut is disabled"); - is(cmdCopy.getAttribute("disabled"), "true", "cmdCopy is disabled"); + + // Cut/Copy items are enabled in context menu even if there + // is no selection. See also Bug 1303033 + is(cmdCut.getAttribute("disabled"), "", "cmdCut is enabled"); + is(cmdCopy.getAttribute("disabled"), "", "cmdCopy is enabled"); + if (isWindows()) { // emptyClipboard only works on Windows (666254), assert paste only for this OS. is(cmdPaste.getAttribute("disabled"), "true", "cmdPaste is disabled"); From 00866fea33ff614e65257e7e3f88edf2ccb47dde Mon Sep 17 00:00:00 2001 From: Matthew Wein Date: Tue, 13 Sep 2016 11:13:40 -0700 Subject: [PATCH 061/117] Bug 1300807 - Switch to using a uuid for the PageAction ID. r=kmag MozReview-Commit-ID: 4jlz9gdUuQd --HG-- extra : transplant_source : %7B%96%12%EB%DF%FCvgv%25%15%EA1Z%E9%5BN%0FM%99 --- .../components/extensions/ext-pageAction.js | 2 +- .../extensions/test/mochitest/head.js | 8 +++--- .../test/mochitest/test_ext_pageAction.html | 28 +++++++++++++------ .../mochitest/test_ext_pageAction_popup.html | 27 ++++++++++-------- 4 files changed, 40 insertions(+), 25 deletions(-) diff --git a/mobile/android/components/extensions/ext-pageAction.js b/mobile/android/components/extensions/ext-pageAction.js index 88d5bb9b439b..4e134ebbaf87 100644 --- a/mobile/android/components/extensions/ext-pageAction.js +++ b/mobile/android/components/extensions/ext-pageAction.js @@ -32,7 +32,7 @@ function PageAction(options, extension) { this.options = { title: options.default_title || extension.name, - id: extension.id, + id: `{${extension.uuid}}`, clickCallback: () => { if (this.popupUrl) { let win = Services.wm.getMostRecentWindow("navigator:browser"); diff --git a/mobile/android/components/extensions/test/mochitest/head.js b/mobile/android/components/extensions/test/mochitest/head.js index 3d618d3ed148..be9683682f1c 100644 --- a/mobile/android/components/extensions/test/mochitest/head.js +++ b/mobile/android/components/extensions/test/mochitest/head.js @@ -6,10 +6,10 @@ const {classes: Cc, interfaces: Ci, utils: Cu} = Components; Cu.import("resource://gre/modules/PageActions.jsm"); -function isPageActionShown(extensionId) { - return PageActions.isShown(extensionId); +function isPageActionShown(uuid) { + return PageActions.isShown(uuid); } -function clickPageAction(extensionId) { - PageActions.synthesizeClick(extensionId); +function clickPageAction(uuid) { + PageActions.synthesizeClick(uuid); } diff --git a/mobile/android/components/extensions/test/mochitest/test_ext_pageAction.html b/mobile/android/components/extensions/test/mochitest/test_ext_pageAction.html index 4acb041ceeb6..b13c551bdc56 100644 --- a/mobile/android/components/extensions/test/mochitest/test_ext_pageAction.html +++ b/mobile/android/components/extensions/test/mochitest/test_ext_pageAction.html @@ -41,10 +41,15 @@ function background() { browser.test.sendMessage("page-action-clicked"); }); - browser.test.sendMessage("ready"); + let extensionInfo = { + // Extract the assigned uuid from the background page url. + uuid: `{${window.location.hostname}}`, + }; + + browser.test.sendMessage("ready", extensionInfo); } -add_task(function* test_contentscript() { +add_task(function* test_pageAction() { let extension = ExtensionTestUtils.loadExtension({ background, manifest: { @@ -55,6 +60,11 @@ add_task(function* test_contentscript() { "18": "extension.png", }, }, + "applications": { + "gecko": { + "id": "foo@bar.com", + }, + }, }, files: { "extension.png": IMAGE_ARRAYBUFFER, @@ -62,26 +72,26 @@ add_task(function* test_contentscript() { }); yield extension.startup(); - yield extension.awaitMessage("ready"); + let {uuid} = yield extension.awaitMessage("ready"); extension.sendMessage("pageAction-show"); yield extension.awaitMessage("page-action-shown"); - ok(isPageActionShown(extension.id), "The PageAction should be shown"); + ok(isPageActionShown(uuid), "The PageAction should be shown"); extension.sendMessage("pageAction-hide"); yield extension.awaitMessage("page-action-hidden"); - ok(!isPageActionShown(extension.id), "The PageAction should be hidden"); + ok(!isPageActionShown(uuid), "The PageAction should be hidden"); extension.sendMessage("pageAction-show"); yield extension.awaitMessage("page-action-shown"); - ok(isPageActionShown(extension.id), "The PageAction should be shown"); + ok(isPageActionShown(uuid), "The PageAction should be shown"); - clickPageAction(extension.id); + clickPageAction(uuid); yield extension.awaitMessage("page-action-clicked"); - ok(isPageActionShown(extension.id), "The PageAction should still be shown after being clicked"); + ok(isPageActionShown(uuid), "The PageAction should still be shown after being clicked"); yield extension.unload(); - ok(!isPageActionShown(extension.id), "The PageAction should be removed after unload"); + ok(!isPageActionShown(uuid), "The PageAction should be removed after unload"); }); diff --git a/mobile/android/components/extensions/test/mochitest/test_ext_pageAction_popup.html b/mobile/android/components/extensions/test/mochitest/test_ext_pageAction_popup.html index e0b6036bc9fb..89edc7c298e8 100644 --- a/mobile/android/components/extensions/test/mochitest/test_ext_pageAction_popup.html +++ b/mobile/android/components/extensions/test/mochitest/test_ext_pageAction_popup.html @@ -54,7 +54,12 @@ add_task(function* test_contentscript() { browser.test.sendMessage("page-action-onClicked-fired"); }); - browser.test.sendMessage("ready"); + let extensionInfo = { + // Extract the assigned uuid from the background page url. + uuid: `{${window.location.hostname}}`, + }; + + browser.test.sendMessage("ready", extensionInfo); } function popupScript() { @@ -107,7 +112,7 @@ add_task(function* test_contentscript() { }); }; - function* testPopup(name) { + function* testPopup(name, uuid) { // We don't need to set the popup when testing default_popup. if (name != "default.html") { extension.sendMessage("page-action-set-popup", {name}); @@ -124,7 +129,7 @@ add_task(function* test_contentscript() { extension.sendMessage("page-action-enable-onClicked-listener"); yield extension.awaitMessage("page-action-onClicked-listener-enabled"); - clickPageAction(extension.id); + clickPageAction(uuid); yield extension.awaitMessage("page-action-onClicked-fired"); extension.sendMessage("page-action-disable-onClicked-listener"); @@ -132,7 +137,7 @@ add_task(function* test_contentscript() { } else { ok(url.includes(name), "Calling pageAction.getPopup should return the correct popup URL when the popup is set."); - clickPageAction(extension.id); + clickPageAction(uuid); let location = yield extension.awaitMessage("page-action-from-popup"); ok(location.includes(name), "The popup with the correct URL should be shown."); @@ -144,19 +149,19 @@ add_task(function* test_contentscript() { } yield extension.startup(); - yield extension.awaitMessage("ready"); + let {uuid} = yield extension.awaitMessage("ready"); extension.sendMessage("page-action-show"); yield extension.awaitMessage("page-action-shown"); - ok(isPageActionShown(extension.id), "The PageAction should be shown."); + ok(isPageActionShown(uuid), "The PageAction should be shown."); - yield testPopup("default.html"); - yield testPopup("a.html"); - yield testPopup(""); - yield testPopup("b.html"); + yield testPopup("default.html", uuid); + yield testPopup("a.html", uuid); + yield testPopup("", uuid); + yield testPopup("b.html", uuid); yield extension.unload(); - ok(!isPageActionShown(extension.id), "The PageAction should be removed after unload."); + ok(!isPageActionShown(uuid), "The PageAction should be removed after unload."); }); From afa895be17d853c65c14261aa2658d8a3f21796b Mon Sep 17 00:00:00 2001 From: James Cheng Date: Mon, 19 Sep 2016 15:47:55 +0800 Subject: [PATCH 062/117] Bug 1297556 - Add telemetry to know how many crashes happens in decoding process. r=bsmedberg, r=jolin MozReview-Commit-ID: 52hhddXOvL3 --HG-- extra : transplant_source : C%B8D%F2%DF%20%91wV%CC%D8b%5D%97%80%9E%93%92FR --- .../base/java/org/mozilla/gecko/media/RemoteManager.java | 6 ++++++ toolkit/components/telemetry/Histograms.json | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/media/RemoteManager.java b/mobile/android/base/java/org/mozilla/gecko/media/RemoteManager.java index 8af22ea7fa21..3236c814d112 100644 --- a/mobile/android/base/java/org/mozilla/gecko/media/RemoteManager.java +++ b/mobile/android/base/java/org/mozilla/gecko/media/RemoteManager.java @@ -5,6 +5,7 @@ package org.mozilla.gecko.media; import org.mozilla.gecko.GeckoAppShell; +import org.mozilla.gecko.Telemetry; import android.content.ComponentName; import android.content.Context; @@ -139,9 +140,14 @@ public final class RemoteManager implements IBinder.DeathRecipient { } } + private static final String MEDIA_DECODING_PROCESS_CRASH = "MEDIA_DECODING_PROCESS_CRASH"; + private void reportDecodingProcessCrash() { + Telemetry.addToHistogram(MEDIA_DECODING_PROCESS_CRASH, 1); + } @Override public void binderDied() { Log.e(LOGTAG, "remote codec is dead"); + reportDecodingProcessCrash(); handleRemoteDeath(); } diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json index 9dc410c04633..c37e9f9ebdbf 100644 --- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -6238,7 +6238,14 @@ "kind": "boolean", "description": "Reports whether a decoder for an HTTP Live Streaming media type was created when requested.", "bug_numbers": [1262659] - + }, + "MEDIA_DECODING_PROCESS_CRASH": { + "alert_emails": ["bwu@mozilla.com", "jolin@mozilla.com", "jacheng@mozilla.com"], + "expires_in_version": "57", + "kind": "count", + "bug_numbers": [1297556, 1257777], + "description": "Records a value each time Fennec remote decoding process crashes unexpected while decoding media content.", + "releaseChannelCollection": "opt-out" }, "VIDEO_MFT_OUTPUT_NULL_SAMPLES": { "alert_emails": ["cpearce@mozilla.com"], From 583f0bb2fb972823462a532232cac6065508acfa Mon Sep 17 00:00:00 2001 From: Alexandre Poirot Date: Wed, 21 Sep 2016 02:48:48 -0700 Subject: [PATCH 063/117] Bug 1300036 - Reenable browser_dbg_pretty-print-11.js now that it is no longer intermittent. r=ejpbruel MozReview-Commit-ID: K1MWKnpetX4 --- devtools/client/debugger/test/mochitest/browser2.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devtools/client/debugger/test/mochitest/browser2.ini b/devtools/client/debugger/test/mochitest/browser2.ini index 58cf30c08d89..53a0e3ca274a 100644 --- a/devtools/client/debugger/test/mochitest/browser2.ini +++ b/devtools/client/debugger/test/mochitest/browser2.ini @@ -207,7 +207,7 @@ skip-if = e10s && debug [browser_dbg_pretty-print-10.js] skip-if = e10s && debug [browser_dbg_pretty-print-11.js] -skip-if = e10s && debug || true +skip-if = e10s && debug [browser_dbg_pretty-print-12.js] skip-if = e10s && debug [browser_dbg_pretty-print-13.js] From 8913fa495674b642bd77bf5e79e428671431a8d8 Mon Sep 17 00:00:00 2001 From: Alexandre Poirot Date: Wed, 21 Sep 2016 02:48:49 -0700 Subject: [PATCH 064/117] Bug 1274106 - Allow displaying items with the same name/url/title in about:debugging. r=jdescottes MozReview-Commit-ID: 60tENnw1GyW --- devtools/client/aboutdebugging/components/target-list.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/devtools/client/aboutdebugging/components/target-list.js b/devtools/client/aboutdebugging/components/target-list.js index 2568a417aa25..b52bde588323 100644 --- a/devtools/client/aboutdebugging/components/target-list.js +++ b/devtools/client/aboutdebugging/components/target-list.js @@ -24,8 +24,7 @@ module.exports = createClass({ targets = targets.sort(LocaleCompare); } targets = targets.map(target => { - let key = target.name || target.url || target.title; - return targetClass({ client, key, target, debugDisabled }); + return targetClass({ client, target, debugDisabled }); }); let content = ""; From 48ae3f1a796ace997e20d82463c9c5852cc66068 Mon Sep 17 00:00:00 2001 From: Julian Descottes Date: Mon, 12 Sep 2016 16:51:40 +0200 Subject: [PATCH 065/117] Bug 1297113 - Fix eslint errors in toolbox.js;r=ochameau MozReview-Commit-ID: 3q53J5L1bOk --HG-- extra : rebase_source : 9a453e8484092df3eb52ff350e3289b339e8c6c7 --- .eslintignore | 1 + devtools/client/framework/toolbox.js | 71 ++++++++++++++++------------ 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/.eslintignore b/.eslintignore index db3ebf0f518d..383202193b1e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -80,6 +80,7 @@ devtools/client/debugger/** devtools/client/eyedropper/** devtools/client/framework/** !devtools/client/framework/selection.js +!devtools/client/framework/toolbox.js devtools/client/jsonview/lib/** devtools/client/memory/** devtools/client/netmonitor/test/** diff --git a/devtools/client/framework/toolbox.js b/devtools/client/framework/toolbox.js index 3b32312b4cdb..3e4d322e58a7 100644 --- a/devtools/client/framework/toolbox.js +++ b/devtools/client/framework/toolbox.js @@ -14,7 +14,7 @@ const SCREENSIZE_HISTOGRAM = "DEVTOOLS_SCREEN_RESOLUTION_ENUMERATED_PER_USER"; const HTML_NS = "http://www.w3.org/1999/xhtml"; const { SourceMapService } = require("./source-map-service"); -var {Cc, Ci, Cu} = require("chrome"); +var {Ci, Cu} = require("chrome"); var promise = require("promise"); var defer = require("devtools/shared/defer"); var Services = require("Services"); @@ -235,8 +235,8 @@ Toolbox.prototype = { if (panel) { deferred.resolve(panel); } else { - this.on(id + "-ready", (e, panel) => { - deferred.resolve(panel); + this.on(id + "-ready", (e, initializedPanel) => { + deferred.resolve(initializedPanel); }); } @@ -406,7 +406,7 @@ Toolbox.prototype = { this.textboxContextMenuPopup.addEventListener("popupshowing", this._updateTextboxMenuItems, true); - var shortcuts = new KeyShortcuts({ + let shortcuts = new KeyShortcuts({ window: this.doc.defaultView }); this._buildDockButtons(); @@ -502,7 +502,8 @@ Toolbox.prototype = { this._telemetry.logOncePerBrowserVersion(OS_HISTOGRAM, system.getOSCPU()); this._telemetry.logOncePerBrowserVersion(OS_IS_64_BITS, Services.appinfo.is64Bit ? 1 : 0); - this._telemetry.logOncePerBrowserVersion(SCREENSIZE_HISTOGRAM, system.getScreenDimensions()); + this._telemetry.logOncePerBrowserVersion(SCREENSIZE_HISTOGRAM, + system.getScreenDimensions()); this._telemetry.log(HOST_HISTOGRAM, this._getTelemetryHostId()); }, @@ -976,16 +977,16 @@ Toolbox.prototype = { this._requisition = requisition; const spec = CommandUtils.getCommandbarSpec("devtools.toolbox.toolbarSpec"); - return CommandUtils.createButtons(spec, this.target, this.doc, - requisition).then(buttons => { - let container = this.doc.getElementById("toolbox-buttons"); - buttons.forEach(button=> { - if (button) { - container.appendChild(button); - } - }); - this.setToolboxButtonsVisibility(); - }); + return CommandUtils.createButtons(spec, this.target, this.doc, requisition) + .then(buttons => { + let container = this.doc.getElementById("toolbox-buttons"); + buttons.forEach(button => { + if (button) { + container.appendChild(button); + } + }); + this.setToolboxButtonsVisibility(); + }); }); }, @@ -996,7 +997,8 @@ Toolbox.prototype = { _buildPickerButton: function () { this._pickerButton = this.doc.createElementNS(HTML_NS, "button"); this._pickerButton.id = "command-button-pick"; - this._pickerButton.className = "command-button command-button-invertable devtools-button"; + this._pickerButton.className = + "command-button command-button-invertable devtools-button"; this._pickerButton.setAttribute("title", L10N.getStr("pickButton.tooltip")); this._pickerButton.setAttribute("hidden", "true"); @@ -1082,7 +1084,9 @@ Toolbox.prototype = { let on = true; try { on = Services.prefs.getBoolPref(visibilityswitch); - } catch (ex) { } + } catch (ex) { + // Do nothing. + } on = on && isTargetSupported(this.target); @@ -1226,8 +1230,8 @@ Toolbox.prototype = { if (panel) { deferred.resolve(panel); } else { - this.once(id + "-ready", panel => { - deferred.resolve(panel); + this.once(id + "-ready", initializedPanel => { + deferred.resolve(initializedPanel); }); } return deferred.promise; @@ -1598,7 +1602,7 @@ Toolbox.prototype = { // Returns an instance of the preference actor get _preferenceFront() { return this.target.root.then(rootForm => { - return new getPreferenceFront(this.target.client, rootForm); + return getPreferenceFront(this.target.client, rootForm); }); }, @@ -1950,9 +1954,9 @@ Toolbox.prototype = { if (!this._initInspector) { this._initInspector = Task.spawn(function* () { this._inspector = InspectorFront(this._target.client, this._target.form); - this._walker = yield this._inspector.getWalker( - {showAllAnonymousContent: Services.prefs.getBoolPref("devtools.inspector.showAllAnonymousContent")} - ); + let pref = "devtools.inspector.showAllAnonymousContent"; + let showAllAnonymousContent = Services.prefs.getBoolPref(pref); + this._walker = yield this._inspector.getWalker({ showAllAnonymousContent }); this._selection = new Selection(this._walker); if (this.highlighterUtils.isRemoteHighlightable()) { @@ -1976,7 +1980,7 @@ Toolbox.prototype = { return this._destroyingInspector; } - return this._destroyingInspector = Task.spawn(function* () { + this._destroyingInspector = Task.spawn(function* () { if (!this._inspector) { return; } @@ -1988,7 +1992,9 @@ Toolbox.prototype = { if (this._walker && !this.walker.traits.autoReleased) { try { yield this._walker.release(); - } catch (e) {} + } catch (e) { + // Do nothing; + } } yield this.highlighterUtils.stopPicker(); @@ -2018,6 +2024,7 @@ Toolbox.prototype = { this._selection = null; this._walker = null; }.bind(this)); + return this._destroyingInspector; }, /** @@ -2233,7 +2240,7 @@ Toolbox.prototype = { // If target does not have profiler actor (addons), do not // even register the shared performance connection. if (!this.target.hasActor("profiler")) { - return; + return promise.resolve(); } if (this._performanceFrontConnection) { @@ -2272,10 +2279,11 @@ Toolbox.prototype = { }), /** - * Called when any event comes from the PerformanceFront. If the performance tool is already - * loaded when the first event comes in, immediately unbind this handler, as this is - * only used to queue up observed recordings before the performance tool can handle them, - * which will only occur when `console.profile()` recordings are started before the tool loads. + * Called when any event comes from the PerformanceFront. If the performance tool is + * already loaded when the first event comes in, immediately unbind this handler, as + * this is only used to queue up observed recordings before the performance tool can + * handle them, which will only occur when `console.profile()` recordings are started + * before the tool loads. */ _onPerformanceFrontEvent: Task.async(function* (eventName, recording) { if (this.getPanel("performance")) { @@ -2283,7 +2291,8 @@ Toolbox.prototype = { return; } - let recordings = this._performanceQueuedRecordings = this._performanceQueuedRecordings || []; + this._performanceQueuedRecordings = this._performanceQueuedRecordings || []; + let recordings = this._performanceQueuedRecordings; // Before any console recordings, we'll get a `console-profile-start` event // warning us that a recording will come later (via `recording-started`), so From 616e332d056de70c0422ee1b4c42def3e03a56e6 Mon Sep 17 00:00:00 2001 From: Julian Descottes Date: Wed, 14 Sep 2016 16:03:05 +0200 Subject: [PATCH 066/117] Bug 1297113 - Remove unused debugger shortcut keys;r=jlongster MozReview-Commit-ID: 4V0zTqTtSts --HG-- extra : rebase_source : 1de811200d2b90d13f4c98d9c94f212e861d8b45 --- devtools/client/debugger/debugger.xul | 16 ---------------- devtools/client/debugger/panel.js | 4 +--- devtools/client/locales/en-US/debugger.dtd | 4 ---- 3 files changed, 1 insertion(+), 23 deletions(-) diff --git a/devtools/client/debugger/debugger.xul b/devtools/client/debugger/debugger.xul index 79ff4eeb3a78..19c1534f13e5 100644 --- a/devtools/client/debugger/debugger.xul +++ b/devtools/client/debugger/debugger.xul @@ -189,32 +189,16 @@ - - - - - - - - - - + + + data-localization="placeholder=inspectorSearchHTML.label3"/> + role="group" data-localization="aria-label=inspector.breadcrumbs.label" tabindex="0" /> @@ -80,19 +73,20 @@ - + + data-localization="placeholder=inspector.filterStyles.placeholder"/> - - + + - + + data-localization="placeholder=inspector.filterStyles.placeholder"/> - - &browserStylesLabel; + + - + - &layoutViewTitle; + - &margin.tooltip; - - &border.tooltip; - - &padding.tooltip; - - + + + + + + + @@ -161,13 +157,16 @@ - + + + - + @@ -181,22 +180,21 @@ - + - + - + - &showAllFontsUsed; + @@ -210,13 +208,15 @@ - &system; - &remote; + + - &usedAs; "" + + "" + diff --git a/devtools/client/locales/en-US/boxmodel.properties b/devtools/client/locales/en-US/boxmodel.properties new file mode 100644 index 000000000000..cea31ff05778 --- /dev/null +++ b/devtools/client/locales/en-US/boxmodel.properties @@ -0,0 +1,37 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# LOCALIZATION NOTE : FILE This file contains the Layout View strings. +# The Layout View is a panel displayed in the computed view tab of the Inspector sidebar. + +# LOCALIZATION NOTE : FILE The correct localization of this file might be to +# keep it in English, or another language commonly spoken among web developers. +# You want to make that choice consistent across the developer tools. +# A good criteria is the language in which you'd find the best +# documentation on web development on the web. + +# LOCALIZATION NOTE (boxmodel.title) This is the title of the box model panel and is +# displayed as a label. +boxmodel.title=Box Model + +# LOCALIZATION NOTE (boxmodel.margin) This refers to the margin in the box model and +# might be displayed as a label or as a tooltip. +boxmodel.margin=margin + +# LOCALIZATION NOTE (boxmodel.border) This refers to the border in the box model and +# might be displayed as a label or as a tooltip. +boxmodel.border=border + +# LOCALIZATION NOTE (boxmodel.padding) This refers to the padding in the box model and +# might be displayed as a label or as a tooltip. +boxmodel.padding=padding + +# LOCALIZATION NOTE (boxmodel.content) This refers to the content in the box model and +# might be displayed as a label or as a tooltip. +boxmodel.content=content + +# LOCALIZATION NOTE: (boxmodel.geometryButton.tooltip) This label is displayed as a +# tooltip that appears when hovering over the button that allows users to edit the +# position of an element in the page. +boxmodel.geometryButton.tooltip=Edit position diff --git a/devtools/client/locales/en-US/font-inspector.dtd b/devtools/client/locales/en-US/font-inspector.dtd deleted file mode 100644 index 342a9098ef5b..000000000000 --- a/devtools/client/locales/en-US/font-inspector.dtd +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - diff --git a/devtools/client/locales/en-US/font-inspector.properties b/devtools/client/locales/en-US/font-inspector.properties new file mode 100644 index 000000000000..6b1f3bafa631 --- /dev/null +++ b/devtools/client/locales/en-US/font-inspector.properties @@ -0,0 +1,29 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +# LOCALIZATION NOTE This file contains the Font Inspector strings. +# The Font Inspector is a panel accessible in the Inspector sidebar. + +# LOCALIZATION NOTE (fontinspector.seeAll) This is the label of a link that will show all +# the fonts used in the page, instead of the ones related to the inspected element. +fontinspector.seeAll=Show all fonts used + +# LOCALIZATION NOTE (fontinspector.seeAll.tooltip) see fontinspector.seeAll. +fontinspector.seeAll.tooltip=See all the fonts used in the page + +# LOCALIZATION NOTE (fontinspector.usedAs) This label introduces the name used to refer to +# the font in a stylesheet. +fontinspector.usedAs=Used as: + +# LOCALIZATION NOTE (fontinspector.system) This label indicates that the font is a local +# system font. +fontinspector.system=system + +# LOCALIZATION NOTE (fontinspector.remote) This label indicates that the font is a remote +# font. +fontinspector.remote=remote + +# LOCALIZATION NOTE (previewHint): +# This is the label shown as the placeholder in font inspector preview text box. +fontinspector.previewText=Preview Text diff --git a/devtools/client/locales/en-US/inspector.dtd b/devtools/client/locales/en-US/inspector.dtd deleted file mode 100644 index ba0c1abb20dd..000000000000 --- a/devtools/client/locales/en-US/inspector.dtd +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/devtools/client/locales/en-US/inspector.properties b/devtools/client/locales/en-US/inspector.properties index 0495c413d867..be1590e1e998 100644 --- a/devtools/client/locales/en-US/inspector.properties +++ b/devtools/client/locales/en-US/inspector.properties @@ -313,12 +313,39 @@ inspector.sidebar.ruleViewTitle=Rules # used in the page. inspector.sidebar.computedViewTitle=Computed -# LOCALIZATION NOTE (inspector.sidebar.layoutViewTitle): -# This is the title shown in a tab in the side panel of the Inspector panel -# that corresponds to the tool displaying box model of the selected element. -inspector.sidebar.layoutViewTitle=Box Model - # LOCALIZATION NOTE (inspector.sidebar.animationInspectorTitle): # This is the title shown in a tab in the side panel of the Inspector panel # that corresponds to the tool displaying animations defined in the page. inspector.sidebar.animationInspectorTitle=Animations + +# LOCALIZATION NOTE (inspector.eyedropper.label): A string displayed as the tooltip of +# a button in the inspector which toggles the Eyedropper tool +inspector.eyedropper.label=Grab a color from the page + +# LOCALIZATION NOTE (inspector.breadcrumbs.label): A string visible only to a screen reader and +# is used to label (using aria-label attribute) a container for inspector breadcrumbs +inspector.breadcrumbs.label=Breadcrumbs + +# LOCALIZATION NOTE (inspector.browserStyles.label): This is the label for the checkbox +# that specifies whether the styles that are not from the user's stylesheet should be +# displayed or not. +inspector.browserStyles.label=Browser styles + +# LOCALIZATION NOTE (inspector.filterStyles.placeholder): This is the placeholder that +# goes in the search box when no search term has been entered. +inspector.filterStyles.placeholder=Filter Styles + +# LOCALIZATION NOTE (inspector.addRule.tooltip): This is the tooltip shown when +# hovering the `Add new rule` button in the rules view toolbar. This should +# match ruleView.contextmenu.addNewRule in styleinspector.properties +inspector.addRule.tooltip=Add new rule + +# LOCALIZATION NOTE (inspector.togglePseudo.tooltip): This is the tooltip +# shown when hovering over the `Toggle Pseudo Class Panel` button in the +# rule view toolbar. +inspector.togglePseudo.tooltip=Toggle pseudo-classes + +# LOCALIZATION NOTE (inspector.noProperties): In the case where there are no CSS +# properties to display e.g. due to search criteria this message is +# displayed. +inspector.noProperties=No CSS properties found. diff --git a/devtools/client/locales/en-US/layoutview.dtd b/devtools/client/locales/en-US/layoutview.dtd deleted file mode 100644 index 50dfcde34f59..000000000000 --- a/devtools/client/locales/en-US/layoutview.dtd +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/devtools/client/locales/en-US/styleinspector.dtd b/devtools/client/locales/en-US/styleinspector.dtd deleted file mode 100644 index 57fb1ac229f6..000000000000 --- a/devtools/client/locales/en-US/styleinspector.dtd +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/devtools/client/themes/computed.css b/devtools/client/themes/computed.css index 40e24c282fc6..9f4d5f183684 100644 --- a/devtools/client/themes/computed.css +++ b/devtools/client/themes/computed.css @@ -28,6 +28,7 @@ #computedview-toolbar { display: flex; + align-items: center; } #browser-style-checkbox { @@ -36,15 +37,11 @@ an extra space after. */ margin-inline-start: 5px; margin-inline-end: 5px; + } #browser-style-checkbox-label { margin-right: 5px; - - /* Vertically center the 'Browser styles' checkbox in the - Computed panel with its label. */ - display: flex; - align-items: center; } #propertyContainer { diff --git a/devtools/shared/locales/en-US/styleinspector.properties b/devtools/shared/locales/en-US/styleinspector.properties index b56f36437512..c1c9d53590f5 100644 --- a/devtools/shared/locales/en-US/styleinspector.properties +++ b/devtools/shared/locales/en-US/styleinspector.properties @@ -53,12 +53,6 @@ rule.pseudoElement=Pseudo-elements # pseudo element header rule.selectedElement=This Element -# LOCALIZATION NOTE (helpLinkTitle): For each style property -# the user can hover it and get a help link button which allows one to -# quickly jump to the documentation from the Mozilla Developer Network site. -# This is the link title shown in the hover tooltip. -helpLinkTitle=Read the documentation for this property - # LOCALIZATION NOTE (rule.warning.title): When an invalid property value is # entered into the rule view a warning icon is displayed. This text is used for # the title attribute of the warning icon. @@ -142,7 +136,7 @@ styleinspector.contextmenu.showMdnDocs.accessKey=D # LOCALIZATION NOTE (styleinspector.contextmenu.addNewRule): Text displayed in the # rule view context menu for adding a new rule to the element. -# This should match addRuleButton.tooltip in styleinspector.dtd +# This should match inspector.addRule.tooltip in inspector.properties styleinspector.contextmenu.addNewRule=Add New Rule # LOCALIZATION NOTE (styleinspector.contextmenu.addRule.accessKey): Access key for From 2586246e94b05dd4fb92e25f8a4240f169bbaf8f Mon Sep 17 00:00:00 2001 From: "Ruturaj K. Vartak" Date: Wed, 21 Sep 2016 02:10:00 -0400 Subject: [PATCH 075/117] Bug 1301929 - Copying ellipisis-cropped cell should copy the full text. r=miker --- devtools/client/shared/widgets/TableWidget.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/devtools/client/shared/widgets/TableWidget.js b/devtools/client/shared/widgets/TableWidget.js index 8d6518ae0735..5dacd1b6758c 100644 --- a/devtools/client/shared/widgets/TableWidget.js +++ b/devtools/client/shared/widgets/TableWidget.js @@ -37,10 +37,6 @@ Object.defineProperty(this, "EVENTS", { writable: false }); -// Maximum number of character visible in any cell in the table. This is to -// avoid making the cell take up all the space in a row. -const MAX_VISIBLE_STRING_SIZE = 100; - /** * A table widget with various features like resizble/toggleable columns, * sorting, keyboard navigation etc. @@ -1510,11 +1506,6 @@ Cell.prototype = { value = span; } - if (!(value instanceof Node) && - value.length > MAX_VISIBLE_STRING_SIZE) { - value = value .substr(0, MAX_VISIBLE_STRING_SIZE) + "\u2026"; - } - if (value instanceof Node) { this.label.removeAttribute("value"); From 9b850a3a730eeb78d25697f2c7df6b13060b7d26 Mon Sep 17 00:00:00 2001 From: Pascal Chevrel Date: Thu, 15 Sep 2016 10:15:35 +0200 Subject: [PATCH 076/117] Bug 1283076 - Change default bookmarks for Nightly. r=dolske - no change on default bookmarks for non-nightly builds - replace firefox bookmarks by this list for Nightly: - Link to the Firefox Nightly blog (https://blog.nightly.mozilla.org/) - Link to Bugzilla https://bugzilla.mozilla.org/ - Link to MDN https://developer.mozilla.org/ - Link to Nightly Tester Tools addon https://addons.mozilla.org/en-US/firefox/addon/nightly-tester-tools/ - Link to about:crashes - Link to Nightly IRC channel on irc.mozilla.org via mibbit - Link to Planet Mozilla https://planet.mozilla.org/ The default bookmark in the bookmark toolbar which was a tour of Firefox feature is now a link to mozilla.org/contribute This patch also: - removes all rdf id references in links which are unused - moves all the data-uri icons to replacement variables to avoid multiple copy-pastes and make the code easier to read - removes the invalid mention that the file was automatically generated, it is not the case - updates the meta charset line for a shorter one using HTML5 syntax - uses lowercase html - some of the links have keywords or tags defined --- browser/locales/en-US/profile/bookmarks.inc | 32 +++++++++ .../locales/generic/profile/bookmarks.html.in | 66 +++++++++++++------ 2 files changed, 77 insertions(+), 21 deletions(-) diff --git a/browser/locales/en-US/profile/bookmarks.inc b/browser/locales/en-US/profile/bookmarks.inc index 1b0cdb4ac3fb..3ef47799a2a1 100644 --- a/browser/locales/en-US/profile/bookmarks.inc +++ b/browser/locales/en-US/profile/bookmarks.inc @@ -37,4 +37,36 @@ # link title for https://www.mozilla.org/en-US/about/ #define firefox_about About Us +# LOCALIZATION NOTE (nightly_heading): +# Firefox Nightly links folder name +#define nightly_heading Firefox Nightly Resources + +# LOCALIZATION NOTE (nightly_blog): +# Nightly builds only, link title for https://blog.nightly.mozilla.org/ +#define nightly_blog Firefox Nightly blog + +# LOCALIZATION NOTE (bugzilla): +# Nightly builds only, link title for https://bugzilla.mozilla.org/ +#define bugzilla Mozilla Bug Tracker + +# LOCALIZATION NOTE (mdn): +# Nightly builds only, link title for https://developer.mozilla.org/ +#define mdn Mozilla Developer Network + +# LOCALIZATION NOTE (nightly_tester_tools): +# Nightly builds only, link title for https://addons.mozilla.org/en-US/firefox/addon/nightly-tester-tools/ +#define nightly_tester_tools Nightly Tester Tools + +# LOCALIZATION NOTE (crashes): +# Nightly builds only, link title for about:crashes +#define crashes All your crashes + +# LOCALIZATION NOTE (irc): +# Nightly builds only, link title for ircs://irc.mozilla.org/nightly +#define irc Discuss Nightly on IRC + +# LOCALIZATION NOTE (planet): +# Nightly builds only, link title for https://planet.mozilla.org/ +#define planet Planet Mozilla + #unfilter emptyLines diff --git a/browser/locales/generic/profile/bookmarks.html.in b/browser/locales/generic/profile/bookmarks.html.in index cba600e8167c..3231864b0213 100644 --- a/browser/locales/generic/profile/bookmarks.html.in +++ b/browser/locales/generic/profile/bookmarks.html.in @@ -4,29 +4,53 @@ #if AB_CD == ja_jp_mac #define AB_CD ja #endif + +#define mozilla_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gwMDAsTBZbkNwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABNElEQVQ4y8WSsU0DURBE3yyWIaAJaqAAN4DPSL6AlIACKIEOyJEgRsIgOOkiInJqgAKowNg7BHdn7MOksNl+zZ//dvbDf5cAiklp22BdVtXdeTEpDYDB9m1VzU6OJuVp2NdEQCaI96fH2YHG4+mDduKYNMYINTcjcGbXzQVDEAphG0k48zUsajIbnAiMIXThpW8EICE0RAK4dvoKg9NIcTiQ589otyHOZLnwqK5nLwBFUZ4igc3iM0d1ff8CMC6mZ6Ihiaqq3gi1aUAnArD00SW1fq5OLBg0ymYmSZsR2/t4e/rGyCLW0sbp3oq+yTYqVgytQWui2FS7XYF7GFprY921T4CNQt8zr47dNzCkIX7y/jBtH+v+RGMQrc828W8pApnZbmEVQp/Ae7BlOy2ttib81/UFc+WRWEbjckIAAAAASUVORK5CYII= + +#define nightly_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA01JREFUeNpkk01oXFUUx//vzp33ZiaTzkwnyUwmsbbNRpp0GhuVKiVgQIUiLmoX7lyIG10I6qIUrG6KGyuYZbMwiATqxipSMVhQYwWhiwSJwUxKkzbz8ZJ5H/M+7/vunUIE7Vnc1f3/zjn/c46wsCbjIOI4Rlfew+Zf6/h9+RYYYzj70hymZp7GULUCSin+H8IBwLYsfLOwiOfffndK1c2LmhO84jl+2e5ZCTN6Xer0fpp5dmq+frxy5zGAY9n49IOLuHDls8uqE3y07YV0ywwQGA6oZsJRFRT0FnK2Hpw8PTl/7tXZDw8ApF/29YUvufjqxxqLPrnLQBUiQRUI4EcQHQ+EgwbjENl8Pv3H9W/f//m7W9cOAKkXzr+J4pm5umy6S/uEkiAEOlzscWHG5jTbhcsrDJiHsN1CIScJTlc5JaSlldEna9uk8fcGHNO6tOMGqfssQjNFoHOxyAXU9xF5HiRXw2AqhuUEsLs6giCkjbXG549a+O3mMhQneLnthOh0NBiaAdozkTEdpC0Hnm2hKAKR3ESJRigNFZBHCF2zn+p7SMIwRM9kRcI/D5g2xAcd1PQeMtw8xkGuafIRGRgZKfHfCbKlIu5t3IVASYYDDtMzL85il2fLuh6qIkFkWtjrARY3zjENJLwCKgqwOjLcnW30Qh/HnpmGYTJhT1bSdPL0NBpr+6rbs8qhIiPivQtRhDDJQuCViI4BxdJRrx/jBopob25BDmIMnzgZjFTK+2R4tAo4+q8iM9Ba3wBTuxirHELeM5AxFO6FCsnSsHNnFfL9XUiFIo7ypNmB9D3eQkT665nS5Xm72Q5r3KCo04be2MIRKULOUlEkPnJpAbn8AI7XJyEUy/CBhIrJlUdT6D/rP3x1u1yQFjP5bFIbH4HdbHG2j/GJMfiqzneCwVI0oFrD8OgTiKLgl5Ubi0v/uYV3ZqcrE2ff+Do2/LlUxAi/HKQZH9eegupzpxDztL4gIfTU9d3VG+ev/nh7s6/797wiz1K3VpYuDU3MvFWunXg9ly2WTNVNDZaPgIU08V3NMNXVZfmfP68lvt187Br78d5r52hoKaUkiWspQqqHx4+OCQLhFu3KAXNbCYQWzR5SBCr5X3x/M+lrHgowAMP2wWqd+FzxAAAAAElFTkSuQmCC + +#define firefox_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAz5JREFUeNpcU0toXFUY/s49596588ikySSmM8rk0UkJEirVTVEjYk1NUdRFFgouXZQI2k2hUCjdiYIuCi4Kuig0DbqQYgU3Yi0iFRuRCBMwaZvMZDTNY95z3/fM8b8jldpzOeeee/i/737n+/+f4ZExf730rkiaZ9NJMx/nmk5HypMqqLr+ZuD4F67N5ZYejmfRsnvhyKsLhSs3zP70SubgYKHSdFENu+gXAprQIGnvBi5ez0m1b6u7M399+PTx+UvtCKtFi2F6195qXK2byir88esy5ksfYND5DhuhRCtUKBNB0Q7w5Z8ee2GgWdjOn250fn5v5j8F5dOHlZD0kWRgAwp3hrKY0S9BJWKIcQ5PShhNG4+1bHx+IocT+RXcrRSDMfFNRvvt3Oyp/icIrRhUl9hoO4kt3F55Bxf3LkLV20jWOohbDjzXxyc/lMH0cRSyCd1xq+dFhu986t7T0CUwIzB8EkW3O5ibhj44ib7NJhiBKRoB/aS4ZWHjbxtjGQYP7nGRTjim1SaQqYiAVAREpHG8vzWJn+6PQ6CF0HPR7nQQczpYeEWHyWMUkwU8MSECGwgJxAWp9xWKNzkuH3oet+JDlIE9Momedh1G4CN0bfhVG9nsS0BQQthJx0V7j3elq7ihqV5ezQTwZmodP9ZGkU/bOPr4Nr53xtDYsaD7Dg4nNqFaH5OCYSSdGhf7daNmuv6wEKqXk/yExKGBHSznFsH6FFpKQ/JAA0ulUejWLt44lkHXsqDaX6C6Nl4Rnq8vK8s/KThDMlJhkI91YOO+iR3XwEelCdTCBLSgijNzd6DLNfhlHfZ6FtWiWBQpq/V2LdSrrNPljBQkoOjuCiPxAMutOIbkPqYSEqeequGZaTLzdhZhS0PlnlB9bvhtr5CuHj3y2Qj8hVQ/kEopxONEEsO/0yATDYXYAdWrE69JEElXq7Hyk0tro+xBU1yZmr4xrIcvptIRCZlJJAYBmRGRkD08aivA7VDvWPqt564Xn41w/AHB1/u7l1/uGxGU8mNcgodUNDIq0JDeLnpzc1uo1Qr76rWbqyf/142PjsXJqdkmN2YDnQ9oGkJNU+t57q7qUv4y9/t64+HYfwQYAN7OczrzUDvGAAAAAElFTkSuQmCC + +#define bugzilla_icon data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnYCL7J0pY9wwETY9kYEM9AAAAAEBAYAhVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1bjTOS1Vb/wAA2/8JEqT/Q0g8kQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnMqoiJtJ/0haST/NEkp/yQnW/8AAPD8AAHY/RsgP/JZUI+GKitih4ObUEAAAAAAAAAAAAAAAAAAAAAAKnouwip5Lv9ooW//a6Jz/y9GIv8JBXb/AADO/gEBvf8AAK7/FRJp/z9BfP8iLGj1AAAAAAAAAAAAAAAAL4YzwiB0I/+UwJ3/bK+C/02eZ/9CTjz/DBa1/wABxf8BAOj/AACp/w8Oc/sJCv//EhCN9AAAAAAAAAAANJA6iC2MMv93tYL/TZ5U/3mzjP9NoWr/NEss/wYIU/8CBOn/ARCX/wwNqP0TD6X/Cgyex5qacDAAAAAAAAAAADKUN/ZirWj/d76R/0SgXf9Ln1P/eLSM/1mda/8rOkb/CQiD/wMQvf8UEnT/MTAt4P//MwUhZyN8AAAAAAAAAAAznDf5UqlZ/228jP9NqnD/Qp9c/0yiVP+Dv5b/VaVw/0VxXf9PZXD/S3pQ/y54Nf8jcCf/I2wn/wAAAAA0ozjIM6E4/zOeOP+Uz6z/XLR+/06scv9BoV3/TqZX/4XBmP9XqHP/hr6Z/yp+Lf8leSr1JXUqbQAAAAA3rTz7Nqo7/zWmOqM3oz7rUK1W/43Mpf9etYD/T61z/0KjXf9Rqln/msup/46/lf8pgy7/JFg6sAAAAAAAAAAAOK8+8jqvOiMAAAAAAAAAADSlOv85pT//kM6o/2K5hP9Ysnv/YLJ2/ziXPv8piS3/V6Ri/yZQQ9wAAAAAAAAAAAAAAAAAAAAAAAAAADetP0E2qzz/OKg98UWsS/+e1K3/pNe4/4XDjv8ojy3/T7df/5fIqv8sjTH/K4kw/yqFLv8AAAAAAAAAAAAAAAA4sT3xN7A8+QAAAAA4qz3yNag6/zSlOf80oTn/csJ+/6/jwv9fjHj/MmRMdQAAAAAAAAAAAAAAAAAAAAAAAAAAOrdA/zm0QHQAAAAAAAAAADasO/k2qTvuRX5lpjqGT/gznDr/O3FXigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADq9QiMAAAAAAAAAAAAAAAA4sj7/Nq09s0uOaSI1qTplM6U68wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOrc//zu0P0EAAAAAOK4+UjWsPPgAAAAAAAAAAAAAAAAAAAAA/48AAP8HAAD4AQAA8AAAAOAAAADAAQAAwAMAAMAAAACAAwAAAAMAAHADAADwAAAA5AcAAO4HAAD+bwAA/u8AAA== + +#define mdn_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAACYklEQVQ4y3WSTYjNYRTGf+f9/+/NuDN3GKMxt1mYpKR8RT6zEk1iyUo2IysSNspCxEIZRSN07YiUJSWkaUIZizELMzIZlO9h3MzXvf/341jcmTGa69RZvKfnPOc5z3mhQlRd651Ry17tqQQl5uR9ONHC3EtdiPPxWKZ24bhJvQV0OlBHhiV7pTs3WpUdEmeLrnWJAhhOtJA5/3RjqZg8Lrnwy4bQT/DvTb73Qt3N9ymATNvTU15Mvx8vfvTWDrmgT0y+dzuAZM527lM0Xx6jFKvnEKIYvIIqVeMFRCfEiDBWMw9UQUBUT8fBWvmrU9HEUpUWDq2cT23a0P6kQEqEwTFLQCBJpm9mYrV+6lW0ngNr62jb0kw6KvMeXJohZYSLzz9xvOMDJG6aPUKMtZPDObq+iXPbmoG/ooJC0QVaVy2g5AI3Bkq8/jYCkQEBo9ah1hESS1N1Gu9DxXNFRji0oYm+/Stoaa4tK0kcRq1HE4fxHqOKEf4bk16ubphd9iKxGKxFrcOWLB1vvuOCzmg0Irig1MxKMfBznPbOd2DLCmJNHKgSIdzr/kjXhwKbFtVPNQ+NJiw7+YDh0YTFuVr6CwLpaNJDjCYOtR61DldyHL7975c9dqeH4ZESscC7r79BFBI7kY5YrZsCC8qL/kFyR+6yY0UjS3M1PHz5ich71IOIQGSn0cskwdTeryTyfV9+jGzOP3rTQAiIHUNQEBkCeUbkcqguB2JEMGqt4sJlg8lGIsv0+p5dON8YaVgn3veJ85/F61YNtn5uXf3OCF0TQVacP0PiXMVzpfbemlnbna+I/QPSFTsRLd+hHAAAAABJRU5ErkJggg== + +#define addon_icon data:image/vndmicrosofticon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKoSURBVDiNjZNLaJRnFIaf75vvy2UGTWr8NYkxl0IFUYkNXSSZQNWFWlxIEVy1FLLo0i4adddVXRnS4kJwYxci2GaRTWlSFGKFGRXNmFBF62VMO4TENBdjMv9k5p//Oy4SLzgqHs7yPc95eTlHiQjvqniPbVYRzuBoR+FQDEvId4neIPNCY945DayNVff/8NUvn9XXNJMv5hhKnTvYP3ymHmj/IMBSbmHjjP8fycxv+MEzGqtatUI1vK7R7wM4J32XUv3Li/l5imGBkbtXlsMw/PF1jXozg3iP3aM0Z8XRBFDr1fl7Og9EnTguXx30p/6fjAIozb/i6C4BdB2z6QOfH27ZUFNL0QUELs/tycs4J2zdGEerCADTM1P8df3PxyUZiKPF8zyGHpwGFLC6QCCRuYA4QQQ6mw4hjhYT77GN2qiBWFnV5sXc0xMAgfKx5foVYKURB2vLPbxoM8auODE6ws/fH+77dHtjhxp5OHzywpWf/IIsRk25Rq0CRFY4UVNNndkmqZFRf3YuWaYUS0aE3RP5MXX3/iCOgu3Y1WYfL90sdSDgxRoYTY5mZ2anjwC/AqEBdM4tMJ4dwYs1YiOGSBkYrVHqlQNxoC34OV8BdxK9gQ+guo7bwdYdrXu92nU6nR7Pzc/PSXxfazTj30IpRaWpIqbX4UQoBDkWJlRwLzVeLBTyGs2UcUX5duzvsfPqNpvDovQhnBIdELGaWFk1hclYmLx2fxmFbNm5qXJNvdi2DQ1WAsO1P/5petshyf6v25gJ0nxUUUeiP531s/kvAcor7MDOL2pjz3JzVKpqUoMTpb8QsSqdeTT98fomjyDv8LP5aKI3uAgQP2orCkGAVRVMZxbQhnQJIAzkm3s3Js6GSfkEQEd4+bpa8+TW71P1ANqoB65I93OA2DgV+Z+omgAAAABJRU5ErkJggg== - - - -@bookmarks_title@ -

    @bookmarks_heading@

    + +@bookmarks_title@ +

    @bookmarks_heading@

    -

    -

    @bookmarks_toolbarfolder@

    -
    @bookmarks_toolbarfolder_description@ -

    -

    @getting_started@ -

    -

    @firefox_heading@

    -

    -

    @firefox_help@ -
    @firefox_customize@ -
    @firefox_community@ -
    @firefox_about@ -

    -

    +

    +

    @bookmarks_toolbarfolder@

    +
    @bookmarks_toolbarfolder_description@ +#ifndef NIGHTLY_BUILD +
    +

    @getting_started@
    +
    +

    @firefox_heading@

    +

    +

    @firefox_help@ +
    @firefox_customize@ +
    @firefox_community@ +
    @firefox_about@ +
    +#else +
    +

    @firefox_community@ +
    +

    @nightly_heading@

    +

    +

    @nightly_blog@ +
    @bugzilla@ +
    @mdn@ +
    @nightly_tester_tools@ +
    @crashes@ +
    @irc@ +
    @planet@ +
    +#endif +
    From aa2131cd407ba6a6b0db9e5096c02b3a4ae40e09 Mon Sep 17 00:00:00 2001 From: Chris Manchester Date: Thu, 15 Sep 2016 12:11:11 -0700 Subject: [PATCH 077/117] Bug 1302909 - Set STDC_HEADERS everywhere instead of relying on AC_HEADER_STDC. r=glandium MozReview-Commit-ID: DXvcX1i9vuo --- build/autoconf/toolchain.m4 | 6 ++++-- build/moz.configure/headers.configure | 3 +++ js/src/old-configure.in | 2 -- old-configure.in | 2 -- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/build/autoconf/toolchain.m4 b/build/autoconf/toolchain.m4 index c8503e5d63f5..cdb86a671622 100644 --- a/build/autoconf/toolchain.m4 +++ b/build/autoconf/toolchain.m4 @@ -2,13 +2,15 @@ dnl This Source Code Form is subject to the terms of the Mozilla Public dnl License, v. 2.0. If a copy of the MPL was not distributed with this dnl file, You can obtain one at http://mozilla.org/MPL/2.0/. -dnl Several autoconf functions AC_REQUIRE AC_PROG_CPP/AC_PROG_CXXCPP, -dnl meaning they are called even when we don't call them explicitly. +dnl Several autoconf functions AC_REQUIRE AC_PROG_CPP/AC_PROG_CXXCPP +dnl or AC_HEADER_STDC, meaning they are called even when we don't call +dnl them explicitly. dnl However, theses checks are not necessary and python configure sets dnl the corresponding variables already, so just skip those tests dnl entirely. define([AC_PROG_CPP],[]) define([AC_PROG_CXXCPP],[]) +define([AC_HEADER_STDC], []) AC_DEFUN([MOZ_TOOL_VARIABLES], [ diff --git a/build/moz.configure/headers.configure b/build/moz.configure/headers.configure index ff33626d3803..52ffa2f89e30 100644 --- a/build/moz.configure/headers.configure +++ b/build/moz.configure/headers.configure @@ -8,6 +8,9 @@ check_header('stdint.h') have_inttypes = check_header('inttypes.h') +# Assume we have ansi C header files available. +set_define('STDC_HEADERS', True) + set_config('HAVE_INTTYPES_H', have_inttypes) building_linux = depends(target)(lambda target: target.kernel == 'Linux') diff --git a/js/src/old-configure.in b/js/src/old-configure.in index a046c4b15bba..cbc38b9d002d 100644 --- a/js/src/old-configure.in +++ b/js/src/old-configure.in @@ -856,7 +856,6 @@ case "$target" in RCFLAGS="-nologo" fi AC_DEFINE(HAVE__MSIZE) - AC_DEFINE(STDC_HEADERS) AC_DEFINE(WIN32_LEAN_AND_MEAN) BIN_SUFFIX='.exe' MOZ_USER_DIR="Mozilla" @@ -979,7 +978,6 @@ fi if test -z "$SKIP_COMPILER_CHECKS"; then dnl Checks for typedefs, structures, and compiler characteristics. dnl ======================================================== -AC_HEADER_STDC AC_C_CONST AC_TYPE_MODE_T AC_TYPE_OFF_T diff --git a/old-configure.in b/old-configure.in index 611aa321fb79..08e2a4c0e966 100644 --- a/old-configure.in +++ b/old-configure.in @@ -1222,7 +1222,6 @@ case "$target" in dnl allow AVX2 code from VS2012 HAVE_X86_AVX2=1 fi - AC_DEFINE(STDC_HEADERS) AC_DEFINE(WIN32_LEAN_AND_MEAN) dnl See http://support.microsoft.com/kb/143208 to use STL AC_DEFINE(NOMINMAX) @@ -1345,7 +1344,6 @@ fi # COMPILE_ENVIRONMENT if test -z "$SKIP_COMPILER_CHECKS"; then dnl Checks for typedefs, structures, and compiler characteristics. dnl ======================================================== -AC_HEADER_STDC AC_C_CONST AC_TYPE_MODE_T AC_TYPE_OFF_T From 2e88ad8701b4f02706422677be6ca1387f27fe55 Mon Sep 17 00:00:00 2001 From: John Dai Date: Tue, 20 Sep 2016 23:26:00 -0400 Subject: [PATCH 078/117] Bug 1275832 - Implement custom element name validation for custom elements. r=wchen --HG-- extra : rebase_source : e3c3adef09a3b5ae6f8ecb508ef782a9b39998c0 --- dom/base/nsContentUtils.cpp | 60 +++++++++++++++---- .../custom-element-registry/define.html.ini | 15 ----- .../meta/html/semantics/interfaces.html.ini | 10 ---- 3 files changed, 50 insertions(+), 35 deletions(-) diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index b4b8663e42c7..d9eb07336f00 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -2823,16 +2823,56 @@ nsContentUtils::NewURIWithDocumentCharset(nsIURI** aResult, bool nsContentUtils::IsCustomElementName(nsIAtom* aName) { - // The custom element name identifies a custom element and is a sequence of - // alphanumeric ASCII characters that must match the NCName production and - // contain a U+002D HYPHEN-MINUS character. We check for the HYPHEN-MINUS - // first, since that will typically not be present, which will allow us to - // return before doing the more expensive (and generally passing) CheckQName - // check. - nsDependentAtomString str(aName); - const char16_t* colon; - if (str.FindChar('-') == -1 || - NS_FAILED(nsContentUtils::CheckQName(str, false, &colon)) || colon) { + // A valid custom element name is a sequence of characters name which + // must match the PotentialCustomElementName production: + // PotentialCustomElementName ::= [a-z] (PCENChar)* '-' (PCENChar)* + const char16_t* name = aName->GetUTF16String(); + uint32_t len = aName->GetLength(); + bool hasDash = false; + + if (!len || name[0] < 'a' || name[0] > 'z') { + return false; + } + + uint32_t i = 1; + while (i < len) { + if (NS_IS_HIGH_SURROGATE(name[i]) && i + 1 < len && + NS_IS_LOW_SURROGATE(name[i + 1])) { + // Merged two 16-bit surrogate pairs into code point. + char32_t code = SURROGATE_TO_UCS4(name[i], name[i + 1]); + + if (code < 0x10000 || code > 0xEFFFF) { + return false; + } + + i += 2; + } else { + if (name[i] == '-') { + hasDash = true; + } + + if (name[i] != '-' && name[i] != '.' && + name[i] != '_' && name[i] != 0xB7 && + (name[i] < '0' || name[i] > '9') && + (name[i] < 'a' || name[i] > 'z') && + (name[i] < 0xC0 || name[i] > 0xD6) && + (name[i] < 0xF8 || name[i] > 0x37D) && + (name[i] < 0x37F || name[i] > 0x1FFF) && + (name[i] < 0x200C || name[i] > 0x200D) && + (name[i] < 0x203F || name[i] > 0x2040) && + (name[i] < 0x2070 || name[i] > 0x218F) && + (name[i] < 0x2C00 || name[i] > 0x2FEF) && + (name[i] < 0x3001 || name[i] > 0xD7FF) && + (name[i] < 0xF900 || name[i] > 0xFDCF) && + (name[i] < 0xFDF0 || name[i] > 0xFFFD)) { + return false; + } + + i++; + } + } + + if (!hasDash) { return false; } diff --git a/testing/web-platform/meta/custom-elements/custom-element-registry/define.html.ini b/testing/web-platform/meta/custom-elements/custom-element-registry/define.html.ini index 215f1fb6e608..122abccd31aa 100644 --- a/testing/web-platform/meta/custom-elements/custom-element-registry/define.html.ini +++ b/testing/web-platform/meta/custom-elements/custom-element-registry/define.html.ini @@ -21,21 +21,6 @@ [If constructor is Option, should throw a TypeError] expected: FAIL - [Element names: defining an element named a-𠀋 should succeed] - expected: FAIL - - [Element names: defining an element named A- should throw a SyntaxError] - expected: FAIL - - [Element names: defining an element named a-A should throw a SyntaxError] - expected: FAIL - - [Element names: defining an element named a-Z should throw a SyntaxError] - expected: FAIL - - [Element names: defining an element named A-a should throw a SyntaxError] - expected: FAIL - [If the constructor is already defined, should throw a NotSupportedError] expected: FAIL diff --git a/testing/web-platform/meta/html/semantics/interfaces.html.ini b/testing/web-platform/meta/html/semantics/interfaces.html.ini index 2c57d0bca81b..fce1bc1dd4eb 100644 --- a/testing/web-platform/meta/html/semantics/interfaces.html.ini +++ b/testing/web-platform/meta/html/semantics/interfaces.html.ini @@ -31,9 +31,6 @@ [Interfaces for DIALOG] expected: FAIL - [Interfaces for foo-BAR] - expected: FAIL - [Interfaces for slot] expected: FAIL @@ -42,10 +39,3 @@ [Interfaces for Ã¥-bar] expected: FAIL - - [Interfaces for å-bar] - expected: FAIL - - [Interfaces for Å-BAR] - expected: FAIL - From 82f42fed531453d6dd4a591b3137194d58498cf1 Mon Sep 17 00:00:00 2001 From: arn197 Date: Wed, 21 Sep 2016 02:48:00 -0400 Subject: [PATCH 079/117] Bug 1304310 - Remove else after return statement in ConvertScalar. r=arai --HG-- extra : rebase_source : 0d00b356dd2a57b45a8c94ed618127dd02df768e --- js/src/builtin/TypedObject.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/js/src/builtin/TypedObject.h b/js/src/builtin/TypedObject.h index e9a3fd63c218..3383f4e0cf66 100644 --- a/js/src/builtin/TypedObject.h +++ b/js/src/builtin/TypedObject.h @@ -103,15 +103,14 @@ namespace js { template static T ConvertScalar(double d) { - if (TypeIsFloatingPoint()) { + if (TypeIsFloatingPoint()) return T(d); - } else if (TypeIsUnsigned()) { + if (TypeIsUnsigned()) { uint32_t n = JS::ToUint32(d); return T(n); - } else { - int32_t n = JS::ToInt32(d); - return T(n); } + int32_t n = JS::ToInt32(d); + return T(n); } namespace type { From 5a280d4e6cf5838694587383497f8828b6827137 Mon Sep 17 00:00:00 2001 From: Andy McKay Date: Wed, 21 Sep 2016 15:04:00 -0400 Subject: [PATCH 080/117] Bug 1258565 - Add documentation about addon malware telemetry. r=bsmedberg --HG-- extra : rebase_source : 995089d3a3ea6bf1fc641f43092473f6781922b3 --- .../docs/data/addons-malware-ping.rst | 42 +++++++++++++++++++ .../components/telemetry/docs/data/index.rst | 1 + 2 files changed, 43 insertions(+) create mode 100644 toolkit/components/telemetry/docs/data/addons-malware-ping.rst diff --git a/toolkit/components/telemetry/docs/data/addons-malware-ping.rst b/toolkit/components/telemetry/docs/data/addons-malware-ping.rst new file mode 100644 index 000000000000..18502d748975 --- /dev/null +++ b/toolkit/components/telemetry/docs/data/addons-malware-ping.rst @@ -0,0 +1,42 @@ + +Add-ons malware ping +==================== + +This ping is generated by an add-on created by Mozilla and shipped to users on older versions of Firefox (44-46). The ping contains information about the profile that might have been altered by a third party malicious add-on. + +Structure: + +.. code-block:: js + + { + type: "malware-addon-states", + ... + clientId: , + environment: { ... }, + // Common ping data. + payload: { + // True if the blocklist was disabled at startup time. + blocklistDisabled: , + // True if the malicious add-on exists and is enabled. False if it + // exists and is disabled or null if the add-on was not found. + mainAddonActive: , + // A value of the malicious add-on block list state, or null if the + // add-on was not found. + mainAddonBlocked: , + // True if a malicious user.js file was found in the profile. + foundUserJS: , + // If a malicious secmodd.db file was found the extension ID that the // file contained.. + secmoddAddon: , . + // A list of IDs for extensions which were hidden by malicious CSS. + hiddenAddons: [ + , + ... + ], + // A mapping of installed add-on IDs with known malicious + // update URL patterns to their exact update URLs. + updateURLs: { + : , + ... + } + } + } diff --git a/toolkit/components/telemetry/docs/data/index.rst b/toolkit/components/telemetry/docs/data/index.rst index d97b168de758..a0467e9a124f 100644 --- a/toolkit/components/telemetry/docs/data/index.rst +++ b/toolkit/components/telemetry/docs/data/index.rst @@ -13,5 +13,6 @@ Data documentation deletion-ping crash-ping *-ping + addons-malware-ping The `mozilla-pipeline-schemas repository `_ contains schemas for some of the pings. From dc74845a1d35da5185840d74c367ea5a39a76c74 Mon Sep 17 00:00:00 2001 From: Vinayak Agarwal Date: Wed, 21 Sep 2016 10:58:46 +0530 Subject: [PATCH 081/117] Bug 1304167 - Remove unnecessary "else" after return in JS_GetArrayBufferViewType. r=arai --HG-- extra : rebase_source : b0e36554cdb3f733810f4cfd8479343968faae1a --- js/src/vm/TypedArrayObject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/src/vm/TypedArrayObject.cpp b/js/src/vm/TypedArrayObject.cpp index d3725e9d4cbb..4fc379a7bbe4 100644 --- a/js/src/vm/TypedArrayObject.cpp +++ b/js/src/vm/TypedArrayObject.cpp @@ -2949,7 +2949,7 @@ JS_GetArrayBufferViewType(JSObject* obj) if (obj->is()) return obj->as().type(); - else if (obj->is()) + if (obj->is()) return Scalar::MaxTypedArrayViewType; MOZ_CRASH("invalid ArrayBufferView type"); } From 2f144c36e0484bb6ffa702889416094b0c388556 Mon Sep 17 00:00:00 2001 From: Tom Schuster Date: Wed, 21 Sep 2016 11:53:00 -0400 Subject: [PATCH 082/117] Bug 1299593 - Disable Array.prototype.values outside Nightly. r=jorendorff, r=smaug --HG-- extra : rebase_source : 976a15181c0d263b62094a1524b8a27cf7c1fc4d --- js/src/jsarray.cpp | 2 ++ js/src/tests/ecma_6/Array/values.js | 20 ++++++++++--------- js/xpconnect/tests/chrome/test_xrayToJS.xul | 5 ++++- .../dom/lists/DOMTokenList-iteration.html | 4 +++- .../tests/dom/nodes/Node-childNodes.html | 4 +++- 5 files changed, 23 insertions(+), 12 deletions(-) diff --git a/js/src/jsarray.cpp b/js/src/jsarray.cpp index 99b86af2a1f8..6e6f19fd59d7 100644 --- a/js/src/jsarray.cpp +++ b/js/src/jsarray.cpp @@ -3136,7 +3136,9 @@ static const JSFunctionSpec array_methods[] = { JS_SELF_HOSTED_SYM_FN(iterator, "ArrayValues", 0,0), JS_SELF_HOSTED_FN("entries", "ArrayEntries", 0,0), JS_SELF_HOSTED_FN("keys", "ArrayKeys", 0,0), +#ifdef NIGHTLY_BUILD JS_SELF_HOSTED_FN("values", "ArrayValues", 0,0), +#endif /* ES7 additions */ JS_SELF_HOSTED_FN("includes", "ArrayIncludes", 2,0), diff --git a/js/src/tests/ecma_6/Array/values.js b/js/src/tests/ecma_6/Array/values.js index 52a0b63c6c99..902a668123b8 100644 --- a/js/src/tests/ecma_6/Array/values.js +++ b/js/src/tests/ecma_6/Array/values.js @@ -1,18 +1,20 @@ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/licenses/publicdomain/ */ -assertEq(Array.prototype.values, Array.prototype[Symbol.iterator]); -assertEq(Array.prototype.values.name, "values"); -assertEq(Array.prototype.values.length, 0); +if (Array.prototype.values) { + assertEq(Array.prototype.values, Array.prototype[Symbol.iterator]); + assertEq(Array.prototype.values.name, "values"); + assertEq(Array.prototype.values.length, 0); -function valuesUnscopeable() { - var values = "foo"; - with ([1, 2, 3]) { - assertEq(indexOf, Array.prototype.indexOf); - assertEq(values, "foo"); + function valuesUnscopeable() { + var values = "foo"; + with ([1, 2, 3]) { + assertEq(indexOf, Array.prototype.indexOf); + assertEq(values, "foo"); + } } + valuesUnscopeable(); } -valuesUnscopeable(); if (typeof reportCompare === 'function') reportCompare(0, 0); diff --git a/js/xpconnect/tests/chrome/test_xrayToJS.xul b/js/xpconnect/tests/chrome/test_xrayToJS.xul index efab4257069d..c6e85d578979 100644 --- a/js/xpconnect/tests/chrome/test_xrayToJS.xul +++ b/js/xpconnect/tests/chrome/test_xrayToJS.xul @@ -196,7 +196,10 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=933681 "pop", "shift", "unshift", "splice", "concat", "slice", "lastIndexOf", "indexOf", "includes", "forEach", "map", "reduce", "reduceRight", "filter", "some", "every", "find", "findIndex", "copyWithin", "fill", Symbol.iterator, Symbol.unscopables, "entries", "keys", - "values", "constructor"]; + "constructor"]; + if (isNightlyBuild) { + gPrototypeProperties['Array'].push("values"); + } gConstructorProperties['Array'] = constructorProps(["join", "reverse", "sort", "push", "pop", "shift", "unshift", "splice", "concat", "slice", "isArray", diff --git a/testing/web-platform/tests/dom/lists/DOMTokenList-iteration.html b/testing/web-platform/tests/dom/lists/DOMTokenList-iteration.html index 1911f7bb32a6..321bbe00da4f 100644 --- a/testing/web-platform/tests/dom/lists/DOMTokenList-iteration.html +++ b/testing/web-platform/tests/dom/lists/DOMTokenList-iteration.html @@ -41,7 +41,9 @@ assert_equals(list[Symbol.iterator], Array.prototype[Symbol.iterator]); assert_equals(list.keys, Array.prototype.keys); - assert_equals(list.values, Array.prototype.values); + if (Array.prototype.values) { + assert_equals(list.values, Array.prototype.values); + } assert_equals(list.entries, Array.prototype.entries); assert_equals(list.forEach, Array.prototype.forEach); }); diff --git a/testing/web-platform/tests/dom/nodes/Node-childNodes.html b/testing/web-platform/tests/dom/nodes/Node-childNodes.html index 8bd1f250e472..f7586fa74a9a 100644 --- a/testing/web-platform/tests/dom/nodes/Node-childNodes.html +++ b/testing/web-platform/tests/dom/nodes/Node-childNodes.html @@ -90,7 +90,9 @@ test(function() { assert_equals(list[Symbol.iterator], Array.prototype[Symbol.iterator]); assert_equals(list.keys, Array.prototype.keys); - assert_equals(list.values, Array.prototype.values); + if (Array.prototype.values) { + assert_equals(list.values, Array.prototype.values); + } assert_equals(list.entries, Array.prototype.entries); assert_equals(list.forEach, Array.prototype.forEach); }, "Iterator behavior of Node.childNodes"); From 8f48ecccca7e59278311f4dc05018eab0e9d1376 Mon Sep 17 00:00:00 2001 From: Bas Schouten Date: Thu, 15 Sep 2016 13:53:12 +0200 Subject: [PATCH 083/117] Bug 1296665: gfxBlur should attempt to create a box shadow for the correct type of DrawTarget. r=mchang MozReview-Commit-ID: 5J3GwKya83w --- gfx/thebes/gfxBlur.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gfx/thebes/gfxBlur.cpp b/gfx/thebes/gfxBlur.cpp index 5399eb4c881e..d5878e1619ce 100644 --- a/gfx/thebes/gfxBlur.cpp +++ b/gfx/thebes/gfxBlur.cpp @@ -491,12 +491,11 @@ CreateBlurMask(const IntSize& aMinSize, } static already_AddRefed -CreateBoxShadow(SourceSurface* aBlurMask, const Color& aShadowColor) +CreateBoxShadow(DrawTarget& aDestDT, SourceSurface* aBlurMask, const Color& aShadowColor) { IntSize blurredSize = aBlurMask->GetSize(); - gfxPlatform* platform = gfxPlatform::GetPlatform(); RefPtr boxShadowDT = - platform->CreateOffscreenContentDrawTarget(blurredSize, SurfaceFormat::B8G8R8A8); + Factory::CreateDrawTarget(aDestDT.GetBackendType(), blurredSize, SurfaceFormat::B8G8R8A8); if (!boxShadowDT) { return nullptr; @@ -553,7 +552,7 @@ GetBlur(gfxContext* aDestinationCtx, return nullptr; } - RefPtr boxShadow = CreateBoxShadow(blurMask, aShadowColor); + RefPtr boxShadow = CreateBoxShadow(destDT, blurMask, aShadowColor); if (!boxShadow) { return nullptr; } @@ -913,7 +912,7 @@ gfxAlphaBoxBlur::GetInsetBlur(const mozilla::gfx::Rect aOuterRect, } // Fill in with the color we actually wanted - RefPtr minInsetBlur = CreateBoxShadow(minMask, aShadowColor); + RefPtr minInsetBlur = CreateBoxShadow(*aDestDrawTarget, minMask, aShadowColor); if (!minInsetBlur) { return nullptr; } From 30efc51d90081ade312eda475375e040759df610 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Wed, 21 Sep 2016 12:39:07 -0700 Subject: [PATCH 084/117] Backed out changeset c7f7f5bee4a7 (bug 1007702) for windows web-reftest failures a=backout CLOSED TREE --HG-- extra : rebase_source : d429ed95b603e01cf34633c79d59fc994cee1400 --- modules/libpref/init/all.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index ee942c0fcc10..bd339c85e538 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -767,13 +767,7 @@ pref("gfx.font_rendering.opentype_svg.enabled", true); // comma separated list of backends to use in order of preference // e.g., pref("gfx.canvas.azure.backends", "direct2d,skia,cairo"); pref("gfx.canvas.azure.backends", "direct2d1.1,skia,cairo"); - -#ifdef NIGHTLY_BUILD -pref("gfx.content.azure.backends", "direct2d1.1,skia,cairo"); -#else pref("gfx.content.azure.backends", "direct2d1.1,cairo"); -#endif - #else #ifdef XP_MACOSX pref("gfx.content.azure.backends", "skia"); From 4fec8fe947ae7285416b1c69bf10ecbb5e8356ce Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Wed, 21 Sep 2016 12:44:31 -0700 Subject: [PATCH 085/117] Backed out changeset 7e898928c51b (bug 838954) for lint failures a=backout CLOSED TREE --- dom/base/nsContentUtils.cpp | 9 ++++++--- dom/base/nsContentUtils.h | 5 +++++ dom/base/test/test_bug744830.html | 2 +- modules/libpref/init/all.js | 6 ++++++ testing/profiles/prefs_general.js | 1 + testing/web-platform/meta/MANIFEST.json | 4 ++++ .../initial-linefeed-pre.html.ini | 8 -------- 7 files changed, 23 insertions(+), 12 deletions(-) delete mode 100644 testing/web-platform/meta/html/syntax/serializing-html-fragments/initial-linefeed-pre.html.ini diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp index d9eb07336f00..37842acafa66 100644 --- a/dom/base/nsContentUtils.cpp +++ b/dom/base/nsContentUtils.cpp @@ -282,6 +282,7 @@ bool nsContentUtils::sEncodeDecodeURLHash = false; bool nsContentUtils::sGettersDecodeURLHash = false; bool nsContentUtils::sPrivacyResistFingerprinting = false; bool nsContentUtils::sSendPerformanceTimingNotifications = false; +bool nsContentUtils::sAppendLFInSerialization = false; bool nsContentUtils::sUseActivityCursor = false; uint32_t nsContentUtils::sHandlingInputTimeout = 1000; @@ -599,6 +600,8 @@ nsContentUtils::Init() "network.cookie.cookieBehavior", nsICookieService::BEHAVIOR_ACCEPT); + Preferences::AddBoolVarCache(&sAppendLFInSerialization, + "dom.html_fragment_serialisation.appendLF"); #if !(defined(DEBUG) || defined(MOZ_ENABLE_JS_DUMP)) Preferences::AddBoolVarCache(&sDOMWindowDumpEnabled, "browser.dom.window.dump.enabled"); @@ -9139,12 +9142,12 @@ StartElement(Element* aContent, StringBuilder& aBuilder) aBuilder.Append(">"); - /* + // Per HTML spec we should append one \n if the first child of // pre/textarea/listing is a textnode and starts with a \n. // But because browsers haven't traditionally had that behavior, // we're not changing our behavior either - yet. - if (aContent->IsHTMLElement()) { + if (nsContentUtils::AppendLFInSerialization() && aContent->IsHTMLElement()) { if (localName == nsGkAtoms::pre || localName == nsGkAtoms::textarea || localName == nsGkAtoms::listing) { nsIContent* fc = aContent->GetFirstChild(); @@ -9157,7 +9160,7 @@ StartElement(Element* aContent, StringBuilder& aBuilder) } } } - }*/ + } } static inline bool diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h index 8a55e6f9b8fd..2f7c32f7ec7e 100644 --- a/dom/base/nsContentUtils.h +++ b/dom/base/nsContentUtils.h @@ -1967,6 +1967,10 @@ public: static already_AddRefed PersistentLayerManagerForDocument(nsIDocument *aDoc); + /* static */ + static bool AppendLFInSerialization() + { return sAppendLFInSerialization; } + /** * Determine whether a content node is focused or not, * @@ -2820,6 +2824,7 @@ private: static bool sGettersDecodeURLHash; static bool sPrivacyResistFingerprinting; static bool sSendPerformanceTimingNotifications; + static bool sAppendLFInSerialization; static bool sUseActivityCursor; static uint32_t sCookiesLifetimePolicy; static uint32_t sCookiesBehavior; diff --git a/dom/base/test/test_bug744830.html b/dom/base/test/test_bug744830.html index 4376b7447e95..d138df5d8267 100644 --- a/dom/base/test/test_bug744830.html +++ b/dom/base/test/test_bug744830.html @@ -26,7 +26,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=744830 t.appendChild(document.createElement("textarea")); t.firstChild.appendChild(document.createTextNode("\nhello")); // This is the old behavior. Spec requires something else. - is(t.innerHTML, "", + is(t.innerHTML, "", "No extra newlines should be inserted to the textarea!"); t.innerHTML = null; diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index bd339c85e538..f5aabf4eb7b5 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -5558,3 +5558,9 @@ pref("media.block-autoplay-until-in-foreground", true); // Is the Servo-backed style system enabled? pref("layout.css.servo.enabled", true); #endif + +#ifdef NIGHTLY_BUILD +pref("dom.html_fragment_serialisation.appendLF", true); +#else +pref("dom.html_fragment_serialisation.appendLF", false); +#endif diff --git a/testing/profiles/prefs_general.js b/testing/profiles/prefs_general.js index c82040a928f9..e9f5cc4f101f 100644 --- a/testing/profiles/prefs_general.js +++ b/testing/profiles/prefs_general.js @@ -352,3 +352,4 @@ user_pref("webextensions.tests", true); user_pref("startup.homepage_welcome_url", "about:blank"); user_pref("startup.homepage_welcome_url.additional", ""); user_pref("browser.usedOnWindows10.introURL", ""); +user_pref("dom.html_fragment_serialisation.appendLF", true); diff --git a/testing/web-platform/meta/MANIFEST.json b/testing/web-platform/meta/MANIFEST.json index d20165894f32..bf5e96d88c98 100644 --- a/testing/web-platform/meta/MANIFEST.json +++ b/testing/web-platform/meta/MANIFEST.json @@ -15417,6 +15417,10 @@ "path": "domparsing/innerhtml-01.xhtml", "url": "/domparsing/innerhtml-01.xhtml" }, + { + "path": "domparsing/innerhtml-02.html", + "url": "/domparsing/innerhtml-02.html" + }, { "path": "domparsing/innerhtml-03.xhtml", "url": "/domparsing/innerhtml-03.xhtml" diff --git a/testing/web-platform/meta/html/syntax/serializing-html-fragments/initial-linefeed-pre.html.ini b/testing/web-platform/meta/html/syntax/serializing-html-fragments/initial-linefeed-pre.html.ini deleted file mode 100644 index 56b03113d586..000000000000 --- a/testing/web-platform/meta/html/syntax/serializing-html-fragments/initial-linefeed-pre.html.ini +++ /dev/null @@ -1,8 +0,0 @@ -[initial-linefeed-pre.html] - type: testharness - [outer div] - expected: FAIL - - [inner div] - expected: FAIL - From b9ee856ebaa16cc1e545eb1b5aa8ed8b11a23323 Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Wed, 21 Sep 2016 13:26:24 -0700 Subject: [PATCH 086/117] Backed out changeset ae50c61cb134 (bug 1264367) for breaking crash stacks on at least Android and Linux --- testing/tools/fileid/linux_fileid.cpp | 44 +- .../crashreporter/google-breakpad/.gitignore | 2 - toolkit/crashreporter/google-breakpad/DEPS | 20 +- .../crashreporter/google-breakpad/GIT-INFO | 2 +- .../crashreporter/google-breakpad/Makefile.am | 683 +- .../crashreporter/google-breakpad/Makefile.in | 8365 ++--------------- .../google-breakpad/README.ANDROID | 2 +- .../crashreporter/google-breakpad/README.md | 91 +- .../crashreporter/google-breakpad/aclocal.m4 | 60 - .../android/google_breakpad/Android.mk | 3 - .../android/sample_app/jni/Application.mk | 1 - .../google-breakpad/autotools/compile | 2 +- .../google-breakpad/autotools/config.guess | 27 +- .../google-breakpad/autotools/config.sub | 25 +- .../google-breakpad/autotools/depcomp | 2 +- .../google-breakpad/autotools/install-sh | 354 +- .../google-breakpad/autotools/missing | 2 +- .../google-breakpad/autotools/test-driver | 15 +- .../google-breakpad/codereview.settings | 7 +- .../crashreporter/google-breakpad/configure | 1186 +-- .../google-breakpad/configure.ac | 45 - .../src/breakpad_googletest_includes.h | 4 +- .../src/client/ios/Breakpad.mm | 2 +- .../crash_generation_server.cc | 3 - .../linux/dump_writer_common/thread_info.cc | 6 - .../dump_writer_common/ucontext_reader.cc | 6 - .../client/linux/handler/exception_handler.cc | 2 +- .../handler/exception_handler_unittest.cc | 27 +- .../linux/handler/microdump_extra_info.h | 6 +- .../microdump_writer/microdump_writer.cc | 184 +- .../minidump_writer/linux_core_dumper.cc | 5 +- .../linux/minidump_writer/linux_core_dumper.h | 4 +- .../linux_core_dumper_unittest.cc | 10 - .../linux/minidump_writer/linux_dumper.cc | 244 +- .../linux/minidump_writer/linux_dumper.h | 25 +- .../linux_ptrace_dumper_unittest.cc | 33 +- .../linux/minidump_writer/minidump_writer.cc | 141 +- .../minidump_writer_unittest.cc | 89 +- .../mac/Breakpad.xcodeproj/project.pbxproj | 2 + .../src/client/mac/handler/dynamic_images.cc | 8 +- .../client/mac/handler/minidump_generator.cc | 50 +- .../src/client/minidump_file_writer.cc | 72 +- .../windows/handler/exception_handler.cc | 10 +- .../src/common/android/include/sys/procfs.h | 4 +- .../src/common/android/include/sys/user.h | 12 +- .../google-breakpad/src/common/common.gyp | 7 - .../src/common/dwarf/bytereader-inl.h | 29 +- .../src/common/dwarf/bytereader.cc | 11 +- .../src/common/dwarf/bytereader.h | 31 +- .../src/common/dwarf/bytereader_unittest.cc | 50 +- .../src/common/dwarf/dwarf2diehandler.cc | 3 +- .../src/common/dwarf/dwarf2diehandler.h | 6 +- .../common/dwarf/dwarf2diehandler_unittest.cc | 11 +- .../src/common/dwarf/dwarf2enums.h | 29 +- .../src/common/dwarf/dwarf2reader.cc | 532 +- .../src/common/dwarf/dwarf2reader.h | 438 +- .../common/dwarf/dwarf2reader_cfi_unittest.cc | 48 +- .../common/dwarf/dwarf2reader_die_unittest.cc | 13 +- .../src/common/dwarf/elf_reader.cc | 1273 --- .../src/common/dwarf/elf_reader.h | 166 - .../src/common/dwarf/moz.build | 6 - .../google-breakpad/src/common/dwarf/types.h | 8 +- .../src/common/dwarf_cu_to_module.cc | 8 +- .../src/common/dwarf_cu_to_module.h | 6 +- .../src/common/dwarf_cu_to_module_unittest.cc | 12 +- .../src/common/linux/dump_symbols.cc | 215 +- .../src/common/linux/dump_symbols.h | 6 - .../src/common/linux/dump_symbols_unittest.cc | 76 +- .../src/common/linux/elfutils.h | 8 - .../src/common/linux/file_id.cc | 79 +- .../src/common/linux/file_id.h | 35 +- .../src/common/linux/file_id_unittest.cc | 195 +- .../src/common/linux/http_upload.cc | 15 +- .../src/common/linux/http_upload.h | 3 - .../src/common/linux/ignore_ret.h | 2 +- .../src/common/linux/libcurl_wrapper.h | 2 +- .../src/common/linux/memory_mapped_file.cc | 11 + .../src/common/linux/symbol_upload.cc | 155 - .../src/common/linux/symbol_upload.h | 59 - .../src/common/linux/synth_elf.cc | 4 +- .../src/common/linux/synth_elf.h | 2 - .../src/common/mac/Breakpad.xcconfig | 12 +- .../src/common/mac/HTTPMultipartUpload.m | 69 +- .../src/common/mac/dump_syms.cc | 138 +- .../src/common/mac/dump_syms.h | 9 - .../src/common/mac/macho_reader.cc | 6 +- .../google-breakpad/src/common/mac/moz.build | 1 - .../src/common/mac/testing/GTMSenTestCase.m | 72 + .../google-breakpad/src/common/memory.h | 59 +- .../src/common/memory_unittest.cc | 27 - .../google-breakpad/src/common/module.cc | 8 +- .../google-breakpad/src/common/module.h | 5 +- .../src/common/module_unittest.cc | 11 - .../google-breakpad/src/common/moz.build | 4 - .../src/common/stdio_wrapper.h | 43 - .../src/common/windows/omap.cc | 2 +- .../google-breakpad/src/config.h.in | 3 - .../google_breakpad/common/breakpad_types.h | 6 - .../common/minidump_cpu_mips.h | 16 - .../common/minidump_exception_win32.h | 3 - .../google_breakpad/common/minidump_format.h | 89 +- .../google_breakpad/common/minidump_size.h | 6 - .../google_breakpad/processor/call_stack.h | 12 +- .../google_breakpad/processor/code_module.h | 9 +- .../google_breakpad/processor/code_modules.h | 13 - .../src/google_breakpad/processor/microdump.h | 6 - .../src/google_breakpad/processor/minidump.h | 43 +- .../google_breakpad/processor/process_state.h | 11 +- .../google_breakpad/processor/system_info.h | 10 +- .../src/processor/basic_code_module.h | 33 +- .../src/processor/basic_code_modules.cc | 63 +- .../src/processor/basic_code_modules.h | 18 +- .../processor/basic_source_line_resolver.cc | 19 +- .../basic_source_line_resolver_unittest.cc | 4 +- .../src/processor/call_stack.cc | 1 - .../src/processor/disassembler_x86.cc | 1 + .../src/processor/dump_context.cc | 14 +- .../src/processor/exploitability_linux.cc | 65 +- .../src/processor/exploitability_linux.h | 7 - .../src/processor/exploitability_unittest.cc | 58 +- .../fast_source_line_resolver_unittest.cc | 4 +- .../google-breakpad/src/processor/logging.cc | 6 +- .../src/processor/microdump.cc | 84 +- .../processor/microdump_processor_unittest.cc | 88 +- .../google-breakpad/src/processor/minidump.cc | 285 +- .../src/processor/minidump_processor.cc | 50 +- .../processor/minidump_processor_unittest.cc | 1 - .../src/processor/minidump_unittest.cc | 297 +- .../src/processor/proc_maps_linux.cc | 7 +- .../src/processor/proc_maps_linux_unittest.cc | 3 +- .../src/processor/processor.gyp | 7 +- .../src/processor/range_map-inl.h | 130 +- .../google-breakpad/src/processor/range_map.h | 67 +- .../range_map_shrink_down_unittest.cc | 355 - .../src/processor/range_map_unittest.cc | 13 +- .../src/processor/stackwalk_common.cc | 33 +- .../src/processor/stackwalker.cc | 1 - .../src/processor/stackwalker_amd64.cc | 51 +- .../src/processor/stackwalker_amd64.h | 8 - .../processor/stackwalker_amd64_unittest.cc | 335 +- .../src/processor/stackwalker_mips.cc | 426 +- .../processor/stackwalker_mips_unittest.cc | 10 - .../processor/stackwalker_unittest_utils.h | 23 +- .../src/processor/static_map_unittest.cc | 2 +- .../src/processor/symbolic_constants_win.cc | 9 +- .../src/third_party/libdisasm/libdis.h | 4 + .../src/third_party/libdisasm/libdisasm.gyp | 3 - .../src/third_party/libdisasm/x86_disasm.c | 6 +- .../third_party/lss/linux_syscall_support.h | 606 +- .../src/third_party/musl/COPYRIGHT | 163 - .../src/third_party/musl/README | 23 - .../src/third_party/musl/README.breakpad | 3 - .../src/third_party/musl/VERSION | 1 - .../src/third_party/musl/include/elf.h | 2827 ------ .../src/tools/linux/dump_syms/dump_syms.cc | 41 +- .../tools/linux/md2core/minidump-2-core.cc | 51 +- .../src/tools/linux/symupload/sym_upload.cc | 131 +- .../dump_syms.xcodeproj/project.pbxproj | 24 +- .../src/tools/mac/dump_syms/dump_syms_tool.cc | 13 +- .../src/tools/mac/dump_syms/macho_dump.cc | 8 +- .../src/tools/mac/dump_syms/moz.build | 2 - .../src/tools/mac/symupload/minidump_upload.m | 4 +- .../src/tools/mac/symupload/symupload.m | 30 +- toolkit/crashreporter/nsExceptionHandler.cpp | 20 +- toolkit/crashreporter/test/moz.build | 4 - toolkit/crashreporter/update-breakpad.sh | 4 +- tools/profiler/core/shared-libraries-linux.cc | 12 +- 167 files changed, 3027 insertions(+), 19665 deletions(-) delete mode 100644 toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.cc delete mode 100644 toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.h delete mode 100644 toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.cc delete mode 100644 toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.h delete mode 100644 toolkit/crashreporter/google-breakpad/src/common/stdio_wrapper.h delete mode 100644 toolkit/crashreporter/google-breakpad/src/processor/range_map_shrink_down_unittest.cc delete mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/COPYRIGHT delete mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/README delete mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/README.breakpad delete mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/VERSION delete mode 100644 toolkit/crashreporter/google-breakpad/src/third_party/musl/include/elf.h diff --git a/testing/tools/fileid/linux_fileid.cpp b/testing/tools/fileid/linux_fileid.cpp index de1ecbd1c06c..9f9d515363c0 100644 --- a/testing/tools/fileid/linux_fileid.cpp +++ b/testing/tools/fileid/linux_fileid.cpp @@ -3,39 +3,49 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include -#include #include "common/linux/file_id.h" -#include "common/memory.h" -using std::string; +//TODO: move this somewhere common, this is copied from dump_symbols.cc +// Format the Elf file identifier in IDENTIFIER as a UUID with the +// dashes removed. +void FormatIdentifier(unsigned char identifier[google_breakpad::kMDGUIDSize], + char result_guid[40]) { + char identifier_str[40]; + google_breakpad::FileID::ConvertIdentifierToString( + identifier, + identifier_str, + sizeof(identifier_str)); + int bufpos = 0; + for (int i = 0; identifier_str[i] != '\0'; ++i) + if (identifier_str[i] != '-') + result_guid[bufpos++] = identifier_str[i]; + // Add an extra "0" by the end. PDB files on Windows have an 'age' + // number appended to the end of the file identifier; this isn't + // really used or necessary on other platforms, but let's preserve + // the pattern. + result_guid[bufpos++] = '0'; + // And null terminate. + result_guid[bufpos] = '\0'; +} -using google_breakpad::auto_wasteful_vector; -using google_breakpad::FileID; -using google_breakpad::PageAllocator; int main(int argc, char** argv) { - if (argc != 2) { fprintf(stderr, "usage: fileid \n"); return 1; } - PageAllocator allocator; - auto_wasteful_vector identifier(&allocator); - FileID file_id(argv[1]); + unsigned char identifier[google_breakpad::kMDGUIDSize]; + google_breakpad::FileID file_id(argv[1]); if (!file_id.ElfFileIdentifier(identifier)) { fprintf(stderr, "%s: unable to generate file identifier\n", argv[1]); return 1; } - - string result_guid = FileID::ConvertIdentifierToUUIDString(identifier); - - // Add an extra "0" at the end. PDB files on Windows have an 'age' - // number appended to the end of the file identifier; this isn't - // really used or necessary on other platforms, but be consistent. - printf("%s0\n", result_guid.c_str()); + char result_guid[40]; + FormatIdentifier(identifier, result_guid); + printf("%s\n", result_guid); return 0; } diff --git a/toolkit/crashreporter/google-breakpad/.gitignore b/toolkit/crashreporter/google-breakpad/.gitignore index 17874aa046ec..eaac5da89f15 100644 --- a/toolkit/crashreporter/google-breakpad/.gitignore +++ b/toolkit/crashreporter/google-breakpad/.gitignore @@ -31,7 +31,6 @@ # Ignore common compiled artifacts. *~ -*.dwo *.o lib*.a /breakpad.pc @@ -46,7 +45,6 @@ lib*.a /src/tools/linux/md2core/minidump-2-core /src/tools/linux/symupload/minidump_upload /src/tools/linux/symupload/sym_upload -/src/tools/mac/dump_syms/dump_syms # Ignore autotools generated artifacts. .deps diff --git a/toolkit/crashreporter/google-breakpad/DEPS b/toolkit/crashreporter/google-breakpad/DEPS index 2de510a5edc3..1bc31a8a528f 100644 --- a/toolkit/crashreporter/google-breakpad/DEPS +++ b/toolkit/crashreporter/google-breakpad/DEPS @@ -35,31 +35,23 @@ deps = { # Logging code. "src/src/third_party/glog": - "https://github.com/google/glog.git" + - "@v0.3.4", + "http://google-glog.googlecode.com/svn/trunk@97", # Testing libraries and utilities. - "src/src/testing": - "https://github.com/google/googlemock.git" + - "@release-1.7.0", - "src/src/testing/gtest": - "https://github.com/google/googletest.git" + - "@release-1.7.0", + "src/src/testing": "http://googlemock.googlecode.com/svn/trunk@408", + "src/src/testing/gtest": "http://googletest.googlecode.com/svn/trunk@615", # Protobuf. "src/src/third_party/protobuf/protobuf": - "https://github.com/google/protobuf.git" + - "@cb6dd4ef5f82e41e06179dcd57d3b1d9246ad6ac", + "http://protobuf.googlecode.com/svn/trunk@407", # GYP project generator. - "src/src/tools/gyp": - "https://chromium.googlesource.com/external/gyp/" + - "@e8ab0833a42691cd2184bd4c45d779e43821d3e0", + "src/src/tools/gyp": "http://gyp.googlecode.com/svn/trunk@1886", # Linux syscall support. "src/src/third_party/lss": "https://chromium.googlesource.com/linux-syscall-support/" + - "@3f6478ac95edf86cd3da300c2c0d34a438f5dbeb", + "@9292030109847793f7a6689adac1ddafb412fe14" } hooks = [ diff --git a/toolkit/crashreporter/google-breakpad/GIT-INFO b/toolkit/crashreporter/google-breakpad/GIT-INFO index fe3520a2c669..1b8f92b42f29 100644 --- a/toolkit/crashreporter/google-breakpad/GIT-INFO +++ b/toolkit/crashreporter/google-breakpad/GIT-INFO @@ -1 +1 @@ -704f41ec901c419f8c321742114b415e6f5ceacc +c53ed143108948eb7e2d7ee77dc8c0d92050ce7c diff --git a/toolkit/crashreporter/google-breakpad/Makefile.am b/toolkit/crashreporter/google-breakpad/Makefile.am index 5a67dc9a95db..42386bee6739 100644 --- a/toolkit/crashreporter/google-breakpad/Makefile.am +++ b/toolkit/crashreporter/google-breakpad/Makefile.am @@ -83,9 +83,6 @@ if LINUX_HOST includeclhdir = $(includedir)/$(PACKAGE)/client/linux/handler includeclh_HEADERS = $(top_srcdir)/src/client/linux/handler/*.h -includecldwcdir = $(includedir)/$(PACKAGE)/client/linux/dump_writer_common -includecldwc_HEADERS = $(top_srcdir)/src/client/linux/dump_writer_common/*.h - includeclmdir = $(includedir)/$(PACKAGE)/client/linux/minidump_writer includeclm_HEADERS = $(top_srcdir)/src/client/linux/minidump_writer/*.h @@ -112,41 +109,11 @@ includep_HEADERS = $(top_srcdir)/src/processor/*.h pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = -## Common test logic -if SYSTEM_TEST_LIBS -TEST_CFLAGS = $(GTEST_CFLAGS) $(GMOCK_CFLAGS) -TEST_LIBS = $(GTEST_LIBS) -lgtest_main $(GMOCK_LIBS) -TEST_DEPS = -else -TEST_CFLAGS = \ - -I$(top_srcdir)/src/testing/include \ - -I$(top_srcdir)/src/testing/gtest/include \ - -I$(top_srcdir)/src/testing/gtest \ - -I$(top_srcdir)/src/testing -TEST_LIBS = src/testing/libtesting.a -TEST_DEPS = $(TEST_LIBS) -endif - ## Libraries -check_LIBRARIES = noinst_LIBRARIES = lib_LIBRARIES = bin_PROGRAMS = check_PROGRAMS = -EXTRA_PROGRAMS = -CLEANFILES = - -check_LIBRARIES += src/testing/libtesting.a - -if !SYSTEM_TEST_LIBS -src_testing_libtesting_a_SOURCES = \ - src/breakpad_googletest_includes.h \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc -src_testing_libtesting_a_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) -endif if !DISABLE_PROCESSOR lib_LIBRARIES += src/libbreakpad.a @@ -164,33 +131,19 @@ src_client_linux_libbreakpad_client_a_SOURCES = \ src/client/linux/dump_writer_common/thread_info.cc \ src/client/linux/dump_writer_common/ucontext_reader.cc \ src/client/linux/handler/exception_handler.cc \ - src/client/linux/handler/exception_handler.h \ src/client/linux/handler/minidump_descriptor.cc \ - src/client/linux/handler/minidump_descriptor.h \ src/client/linux/log/log.cc \ - src/client/linux/log/log.h \ src/client/linux/microdump_writer/microdump_writer.cc \ - src/client/linux/microdump_writer/microdump_writer.h \ - src/client/linux/minidump_writer/linux_core_dumper.cc \ src/client/linux/minidump_writer/linux_dumper.cc \ src/client/linux/minidump_writer/linux_ptrace_dumper.cc \ src/client/linux/minidump_writer/minidump_writer.cc \ - src/client/minidump_file_writer-inl.h \ src/client/minidump_file_writer.cc \ - src/client/minidump_file_writer.h \ src/common/convert_UTF.c \ - src/common/convert_UTF.h \ src/common/md5.cc \ - src/common/md5.h \ src/common/string_conversion.cc \ - src/common/string_conversion.h \ - src/common/linux/elf_core_dump.cc \ src/common/linux/elfutils.cc \ - src/common/linux/elfutils.h \ src/common/linux/file_id.cc \ - src/common/linux/file_id.h \ src/common/linux/guid_creator.cc \ - src/common/linux/guid_creator.h \ src/common/linux/linux_libc_support.cc \ src/common/linux/memory_mapped_file.cc \ src/common/linux/safe_readlink.cc @@ -317,6 +270,8 @@ src_libbreakpad_a_SOURCES = \ src/processor/tokenize.cc \ src/processor/tokenize.h +src_libbreakpad_a_LIBADD = src/third_party/libdisasm/libdisasm.a + src_third_party_libdisasm_libdisasm_a_SOURCES = \ src/third_party/libdisasm/ia32_implicit.c \ src/third_party/libdisasm/ia32_implicit.h \ @@ -353,9 +308,7 @@ bin_PROGRAMS += \ endif !DISABLE_PROCESSOR if LINUX_HOST -EXTRA_PROGRAMS += \ - src/client/linux/linux_dumper_unittest_helper -CLEANFILES += \ +bin_PROGRAMS += \ src/client/linux/linux_dumper_unittest_helper if !DISABLE_TOOLS @@ -364,11 +317,8 @@ bin_PROGRAMS += \ src/tools/linux/dump_syms/dump_syms \ src/tools/linux/md2core/minidump-2-core \ src/tools/linux/symupload/minidump_upload \ - src/tools/linux/symupload/sym_upload -if X86_HOST -bin_PROGRAMS += \ - src/tools/mac/dump_syms/dump_syms_mac -endif + src/tools/linux/symupload/sym_upload \ + src/tools/mac/dump_syms/dump_syms endif endif LINUX_HOST @@ -395,22 +345,18 @@ check_PROGRAMS += \ src/processor/pathname_stripper_unittest \ src/processor/postfix_evaluator_unittest \ src/processor/proc_maps_linux_unittest \ - src/processor/range_map_shrink_down_unittest \ src/processor/range_map_unittest \ src/processor/stackwalker_amd64_unittest \ src/processor/stackwalker_arm_unittest \ src/processor/stackwalker_arm64_unittest \ src/processor/stackwalker_address_list_unittest \ src/processor/stackwalker_mips_unittest \ - src/processor/stackwalker_mips64_unittest \ src/processor/stackwalker_x86_unittest \ src/processor/synth_minidump_unittest endif if LINUX_HOST -EXTRA_PROGRAMS += \ - src/client/linux/linux_client_unittest_shlib -CLEANFILES += \ +EXTRA_PROGRAMS = \ src/client/linux/linux_client_unittest_shlib check_PROGRAMS += \ @@ -419,11 +365,8 @@ check_PROGRAMS += \ if !DISABLE_TOOLS check_PROGRAMS += \ src/common/dumper_unittest \ + src/common/mac/macho_reader_unittest \ src/tools/linux/md2core/minidump_2_core_unittest -if X86_HOST -check_PROGRAMS += \ - src/common/mac/macho_reader_unittest -endif endif endif LINUX_HOST @@ -470,7 +413,6 @@ src_client_linux_linux_dumper_unittest_helper_CXXFLAGS=$(PTHREAD_CFLAGS) endif src_client_linux_linux_client_unittest_shlib_SOURCES = \ - $(src_testing_libtesting_a_SOURCES) \ src/client/linux/handler/exception_handler_unittest.cc \ src/client/linux/minidump_writer/directory_reader_unittest.cc \ src/client/linux/minidump_writer/cpu_set_unittest.cc \ @@ -483,12 +425,12 @@ src_client_linux_linux_client_unittest_shlib_SOURCES = \ src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \ src/common/linux/elf_core_dump.cc \ src/common/linux/linux_libc_support_unittest.cc \ - src/common/linux/tests/auto_testfile.h \ src/common/linux/tests/crash_generator.cc \ src/common/memory_unittest.cc \ - src/common/tests/auto_tempdir.h \ src/common/tests/file_utils.cc \ - src/common/tests/file_utils.h \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc \ src/processor/basic_code_modules.cc \ src/processor/dump_context.cc \ src/processor/dump_object.cc \ @@ -506,7 +448,11 @@ src_client_linux_linux_client_unittest_shlib_SOURCES += \ endif src_client_linux_linux_client_unittest_shlib_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_client_linux_linux_client_unittest_shlib_LDFLAGS = \ -shared \ -Wl,-h,linux_client_unittest_shlib @@ -531,7 +477,6 @@ src_client_linux_linux_client_unittest_shlib_LDADD = \ src/common/linux/memory_mapped_file.o \ src/common/linux/safe_readlink.o \ src/common/string_conversion.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) if ANDROID_HOST src_client_linux_linux_client_unittest_shlib_SOURCES += \ @@ -543,29 +488,27 @@ endif src_client_linux_linux_client_unittest_shlib_DEPENDENCIES = \ src/client/linux/linux_dumper_unittest_helper \ src/client/linux/libbreakpad_client.a \ - $(TEST_DEPS) \ src/libbreakpad.a src_client_linux_linux_client_unittest_SOURCES = -# The extra-long build id is for a test in minidump_writer_unittest.cc. src_client_linux_linux_client_unittest_LDFLAGS = \ - -Wl,-rpath,'$$ORIGIN' \ - -Wl,--build-id=0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + -Wl,-rpath,'$$ORIGIN' if ANDROID_HOST src_client_linux_linux_client_unittest_LDFLAGS += \ -llog endif src_client_linux_linux_client_unittest_LDADD = \ - src/client/linux/linux_client_unittest_shlib \ - $(TEST_LIBS) + src/client/linux/linux_client_unittest_shlib src_client_linux_linux_client_unittest_DEPENDENCIES = \ src/client/linux/linux_client_unittest_shlib if !DISABLE_TOOLS src_tools_linux_core2md_core2md_SOURCES = \ - src/tools/linux/core2md/core2md.cc + src/tools/linux/core2md/core2md.cc \ + src/client/linux/minidump_writer/linux_core_dumper.cc \ + src/common/linux/elf_core_dump.cc src_tools_linux_core2md_core2md_LDADD = \ src/client/linux/libbreakpad_client.a @@ -581,12 +524,9 @@ src_tools_linux_dump_syms_dump_syms_SOURCES = \ src/common/dwarf/bytereader.cc \ src/common/dwarf/dwarf2diehandler.cc \ src/common/dwarf/dwarf2reader.cc \ - src/common/dwarf/elf_reader.cc \ src/common/linux/crc32.cc \ src/common/linux/dump_symbols.cc \ - src/common/linux/dump_symbols.h \ src/common/linux/elf_symbols_to_module.cc \ - src/common/linux/elf_symbols_to_module.h \ src/common/linux/elfutils.cc \ src/common/linux/file_id.cc \ src/common/linux/linux_libc_support.cc \ @@ -596,8 +536,7 @@ src_tools_linux_dump_syms_dump_syms_SOURCES = \ src_tools_linux_md2core_minidump_2_core_SOURCES = \ src/common/linux/memory_mapped_file.cc \ - src/tools/linux/md2core/minidump-2-core.cc \ - src/tools/linux/md2core/minidump_memory_range.h + src/tools/linux/md2core/minidump-2-core.cc src_tools_linux_symupload_minidump_upload_SOURCES = \ src/common/linux/http_upload.cc \ @@ -606,13 +545,10 @@ src_tools_linux_symupload_minidump_upload_LDADD = -ldl src_tools_linux_symupload_sym_upload_SOURCES = \ src/common/linux/http_upload.cc \ - src/common/linux/http_upload.h \ - src/common/linux/symbol_upload.cc \ - src/common/linux/symbol_upload.h \ src/tools/linux/symupload/sym_upload.cc src_tools_linux_symupload_sym_upload_LDADD = -ldl -src_tools_mac_dump_syms_dump_syms_mac_SOURCES = \ +src_tools_mac_dump_syms_dump_syms_SOURCES = \ src/common/dwarf_cfi_to_module.cc \ src/common/dwarf_cu_to_module.cc \ src/common/dwarf_line_to_module.cc \ @@ -624,22 +560,15 @@ src_tools_mac_dump_syms_dump_syms_mac_SOURCES = \ src/common/dwarf/bytereader.cc \ src/common/dwarf/dwarf2diehandler.cc \ src/common/dwarf/dwarf2reader.cc \ - src/common/dwarf/elf_reader.cc \ src/common/mac/arch_utilities.cc \ src/common/mac/dump_syms.cc \ - src/common/mac/dump_syms.h \ src/common/mac/file_id.cc \ - src/common/mac/file_id.h \ src/common/mac/macho_id.cc \ - src/common/mac/macho_id.h \ src/common/mac/macho_reader.cc \ - src/common/mac/macho_reader.h \ src/common/mac/macho_utilities.cc \ - src/common/mac/macho_utilities.h \ src/common/mac/macho_walker.cc \ - src/common/mac/macho_walker.h \ src/tools/mac/dump_syms/dump_syms_tool.cc -src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS= \ +src_tools_mac_dump_syms_dump_syms_CXXFLAGS= \ -I$(top_srcdir)/src/third_party/mac_headers \ -DHAVE_MACH_O_NLIST_H @@ -661,20 +590,13 @@ src_common_dumper_unittest_SOURCES = \ src/common/stabs_to_module_unittest.cc \ src/common/test_assembler.cc \ src/common/dwarf/bytereader.cc \ - src/common/dwarf/bytereader.h \ - src/common/dwarf/bytereader-inl.h \ src/common/dwarf/bytereader_unittest.cc \ src/common/dwarf/cfi_assembler.cc \ - src/common/dwarf/cfi_assembler.h \ src/common/dwarf/dwarf2diehandler.cc \ src/common/dwarf/dwarf2diehandler_unittest.cc \ src/common/dwarf/dwarf2reader.cc \ - src/common/dwarf/dwarf2reader.h \ - src/common/dwarf/elf_reader.cc \ - src/common/dwarf/elf_reader.h \ src/common/dwarf/dwarf2reader_cfi_unittest.cc \ src/common/dwarf/dwarf2reader_die_unittest.cc \ - src/common/dwarf/dwarf2reader_test_common.h \ src/common/linux/crc32.cc \ src/common/linux/dump_symbols.cc \ src/common/linux/dump_symbols_unittest.cc \ @@ -693,15 +615,18 @@ src_common_dumper_unittest_SOURCES = \ src/common/linux/synth_elf.cc \ src/common/linux/synth_elf_unittest.cc \ src/common/linux/tests/crash_generator.cc \ - src/common/linux/tests/crash_generator.h \ - src/common/testdata/func-line-pairing.h \ - src/common/tests/file_utils.cc + src/common/tests/file_utils.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_common_dumper_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing \ $(PTHREAD_CFLAGS) -src_common_dumper_unittest_LDADD = \ - $(TEST_LIBS) \ - $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) +src_common_dumper_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_common_mac_macho_reader_unittest_SOURCES = \ src/common/dwarf_cfi_to_module.cc \ @@ -717,7 +642,6 @@ src_common_mac_macho_reader_unittest_SOURCES = \ src/common/dwarf/cfi_assembler.cc \ src/common/dwarf/dwarf2diehandler.cc \ src/common/dwarf/dwarf2reader.cc \ - src/common/dwarf/elf_reader.cc \ src/common/mac/arch_utilities.cc \ src/common/mac/file_id.cc \ src/common/mac/macho_id.cc \ @@ -725,23 +649,34 @@ src_common_mac_macho_reader_unittest_SOURCES = \ src/common/mac/macho_reader_unittest.cc \ src/common/mac/macho_utilities.cc \ src/common/mac/macho_walker.cc \ - src/common/tests/file_utils.cc + src/common/tests/file_utils.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_common_mac_macho_reader_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing \ -I$(top_srcdir)/src/third_party/mac_headers \ -DHAVE_MACH_O_NLIST_H \ $(PTHREAD_CFLAGS) -src_common_mac_macho_reader_unittest_LDADD = \ - $(TEST_LIBS) \ - $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) +src_common_mac_macho_reader_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) endif src_tools_linux_md2core_minidump_2_core_unittest_SOURCES = \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc \ src/tools/linux/md2core/minidump_memory_range_unittest.cc src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_tools_linux_md2core_minidump_2_core_unittest_LDADD = \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) endif LINUX_HOST @@ -754,9 +689,15 @@ src_processor_address_map_unittest_LDADD = \ src/processor/pathname_stripper.o src_processor_basic_source_line_resolver_unittest_SOURCES = \ - src/processor/basic_source_line_resolver_unittest.cc + src/processor/basic_source_line_resolver_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_basic_source_line_resolver_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_basic_source_line_resolver_unittest_LDADD = \ src/processor/basic_source_line_resolver.o \ src/processor/cfi_frame_info.o \ @@ -764,19 +705,24 @@ src_processor_basic_source_line_resolver_unittest_LDADD = \ src/processor/logging.o \ src/processor/source_line_resolver_base.o \ src/processor/tokenize.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_cfi_frame_info_unittest_SOURCES = \ - src/processor/cfi_frame_info_unittest.cc + src/processor/cfi_frame_info_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_cfi_frame_info_unittest_LDADD = \ src/processor/cfi_frame_info.o \ src/processor/logging.o \ src/processor/pathname_stripper.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_cfi_frame_info_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_contained_range_map_unittest_SOURCES = \ src/processor/contained_range_map_unittest.cc @@ -785,9 +731,16 @@ src_processor_contained_range_map_unittest_LDADD = \ src/processor/pathname_stripper.o src_processor_exploitability_unittest_SOURCES = \ - src/processor/exploitability_unittest.cc + src/processor/exploitability_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_exploitability_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_exploitability_unittest_LDADD = \ src/processor/minidump_processor.o \ src/processor/process_state.o \ @@ -822,23 +775,34 @@ src_processor_exploitability_unittest_LDADD = \ src/processor/symbolic_constants_win.o \ src/processor/tokenize.o \ src/third_party/libdisasm/libdisasm.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_disassembler_x86_unittest_SOURCES = \ - src/processor/disassembler_x86_unittest.cc + src/processor/disassembler_x86_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_disassembler_x86_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_disassembler_x86_unittest_LDADD = \ src/processor/disassembler_x86.o \ src/third_party/libdisasm/libdisasm.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_fast_source_line_resolver_unittest_SOURCES = \ - src/processor/fast_source_line_resolver_unittest.cc + src/processor/fast_source_line_resolver_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_fast_source_line_resolver_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_fast_source_line_resolver_unittest_LDADD = \ src/processor/fast_source_line_resolver.o \ src/processor/basic_source_line_resolver.o \ @@ -849,23 +813,33 @@ src_processor_fast_source_line_resolver_unittest_LDADD = \ src/processor/logging.o \ src/processor/source_line_resolver_base.o \ src/processor/tokenize.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_map_serializers_unittest_SOURCES = \ - src/processor/map_serializers_unittest.cc + src/processor/map_serializers_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_map_serializers_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_map_serializers_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_microdump_processor_unittest_SOURCES = \ - src/processor/microdump_processor_unittest.cc + src/processor/microdump_processor_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_microdump_processor_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_microdump_processor_unittest_LDADD = \ src/processor/basic_code_modules.o \ src/processor/basic_source_line_resolver.o \ @@ -892,13 +866,18 @@ src_processor_microdump_processor_unittest_LDADD = \ src/processor/stackwalker_sparc.o \ src/processor/stackwalker_x86.o \ src/processor/tokenize.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_minidump_processor_unittest_SOURCES = \ - src/processor/minidump_processor_unittest.cc + src/processor/minidump_processor_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_minidump_processor_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_minidump_processor_unittest_LDADD = \ src/processor/basic_code_modules.o \ src/processor/basic_source_line_resolver.o \ @@ -932,15 +911,21 @@ src_processor_minidump_processor_unittest_LDADD = \ src/processor/symbolic_constants_win.o \ src/processor/tokenize.o \ src/third_party/libdisasm/libdisasm.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_minidump_unittest_SOURCES = \ src/common/test_assembler.cc \ src/processor/minidump_unittest.cc \ - src/processor/synth_minidump.cc + src/processor/synth_minidump.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_minidump_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_minidump_unittest_LDADD = \ src/processor/basic_code_modules.o \ src/processor/dump_context.o \ @@ -949,59 +934,84 @@ src_processor_minidump_unittest_LDADD = \ src/processor/minidump.o \ src/processor/pathname_stripper.o \ src/processor/proc_maps_linux.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_proc_maps_linux_unittest_SOURCES = \ src/processor/proc_maps_linux.cc \ - src/processor/proc_maps_linux_unittest.cc + src/processor/proc_maps_linux_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_proc_maps_linux_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_proc_maps_linux_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ src/third_party/libdisasm/libdisasm.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_static_address_map_unittest_SOURCES = \ - src/processor/static_address_map_unittest.cc + src/processor/static_address_map_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_static_address_map_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_static_address_map_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_static_contained_range_map_unittest_SOURCES = \ - src/processor/static_contained_range_map_unittest.cc + src/processor/static_contained_range_map_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_static_contained_range_map_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_static_contained_range_map_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_static_map_unittest_SOURCES = \ - src/processor/static_map_unittest.cc + src/processor/static_map_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_static_map_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_static_map_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_static_range_map_unittest_SOURCES = \ - src/processor/static_range_map_unittest.cc + src/processor/static_range_map_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc src_processor_static_range_map_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_static_range_map_unittest_LDADD = \ src/processor/logging.o \ src/processor/pathname_stripper.o \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_pathname_stripper_unittest_SOURCES = \ @@ -1017,16 +1027,6 @@ src_processor_postfix_evaluator_unittest_LDADD = \ src/processor/pathname_stripper.o \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) -src_processor_range_map_shrink_down_unittest_SOURCES = \ - src/processor/range_map_shrink_down_unittest.cc -src_processor_range_map_shrink_down_unittest_LDADD = \ - src/processor/logging.o \ - src/processor/pathname_stripper.o \ - $(TEST_LIBS) \ - $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) -src_processor_range_map_shrink_down_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) - src_processor_range_map_unittest_SOURCES = \ src/processor/range_map_unittest.cc src_processor_range_map_unittest_LDADD = \ @@ -1066,95 +1066,131 @@ src_processor_stackwalker_selftest_LDADD = \ src_processor_stackwalker_amd64_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_amd64_unittest.cc + src/processor/stackwalker_amd64_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_stackwalker_amd64_unittest_LDADD = \ src/libbreakpad.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_amd64_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_stackwalker_arm_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_arm_unittest.cc + src/processor/stackwalker_arm_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_stackwalker_arm_unittest_LDADD = \ src/libbreakpad.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_arm_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_stackwalker_arm64_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_arm64_unittest.cc + src/processor/stackwalker_arm64_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_stackwalker_arm64_unittest_LDADD = \ src/libbreakpad.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_arm64_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_stackwalker_address_list_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_address_list_unittest.cc + src/processor/stackwalker_address_list_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_stackwalker_address_list_unittest_LDADD = \ src/libbreakpad.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_address_list_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_stackwalker_mips_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_mips_unittest.cc + src/processor/stackwalker_mips_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_stackwalker_mips_unittest_LDADD = \ src/libbreakpad.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_mips_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) - -src_processor_stackwalker_mips64_unittest_SOURCES = \ - src/common/test_assembler.cc \ - src/processor/stackwalker_mips64_unittest.cc -src_processor_stackwalker_mips64_unittest_LDADD = \ - src/libbreakpad.a \ - $(TEST_LIBS) \ - $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) -src_processor_stackwalker_mips64_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_stackwalker_x86_unittest_SOURCES = \ src/common/test_assembler.cc \ - src/processor/stackwalker_x86_unittest.cc + src/processor/stackwalker_x86_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_processor_stackwalker_x86_unittest_LDADD = \ src/libbreakpad.a \ - $(TEST_LIBS) \ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_processor_stackwalker_x86_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing src_processor_synth_minidump_unittest_SOURCES = \ src/common/test_assembler.cc \ src/common/test_assembler.h \ src/processor/synth_minidump_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc \ src/processor/synth_minidump.cc \ src/processor/synth_minidump.h src_processor_synth_minidump_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) -src_processor_synth_minidump_unittest_LDADD = \ - $(TEST_LIBS) \ - $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing +src_processor_synth_minidump_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) src_common_test_assembler_unittest_SOURCES = \ src/common/test_assembler.cc \ src/common/test_assembler.h \ - src/common/test_assembler_unittest.cc + src/common/test_assembler_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/gtest/src/gtest_main.cc \ + src/testing/src/gmock-all.cc src_common_test_assembler_unittest_CPPFLAGS = \ - $(AM_CPPFLAGS) $(TEST_CFLAGS) -src_common_test_assembler_unittest_LDADD = \ - $(TEST_LIBS) \ - $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing +src_common_test_assembler_unittest_LDADD = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) ## Non-installables noinst_PROGRAMS = @@ -1251,32 +1287,33 @@ endif !DISABLE_PROCESSOR ## sed -e s/'^\(.*\)$'/'\t\1 \\'/ EXTRA_DIST = \ $(SCRIPTS) \ - src/client/linux/data/linux-gate-amd.sym \ - src/client/linux/data/linux-gate-intel.sym \ - src/client/mac/handler/breakpad_nlist_64.cc \ - src/client/mac/handler/breakpad_nlist_64.h \ + src/processor/stackwalk_selftest_sol.s \ + src/client/linux/handler/Makefile \ + src/client/linux/handler/exception_handler.cc \ + src/client/linux/handler/exception_handler.h \ + src/client/linux/handler/minidump_descriptor.cc \ + src/client/linux/handler/minidump_descriptor.h \ + src/client/linux/handler/exception_handler_test.cc \ + src/client/linux/handler/linux_thread.cc \ + src/client/linux/handler/linux_thread.h \ + src/client/linux/handler/linux_thread_test.cc \ + src/client/linux/handler/minidump_generator.cc \ + src/client/linux/handler/minidump_generator.h \ + src/client/linux/handler/minidump_test.cc \ src/client/mac/handler/dynamic_images.cc \ src/client/mac/handler/dynamic_images.h \ src/client/mac/handler/exception_handler.cc \ src/client/mac/handler/exception_handler.h \ - src/client/mac/handler/mach_vm_compat.h \ + src/client/mac/handler/exception_handler_test.cc \ src/client/mac/handler/minidump_generator.cc \ src/client/mac/handler/minidump_generator.h \ + src/client/mac/handler/minidump_generator_test.cc \ src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj \ - src/client/mac/handler/minidump_tests32-Info.plist \ - src/client/mac/handler/minidump_tests64-Info.plist \ - src/client/mac/handler/obj-cTestCases-Info.plist \ src/client/mac/handler/protected_memory_allocator.cc \ src/client/mac/handler/protected_memory_allocator.h \ - src/client/mac/handler/ucontext_compat.h \ - src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym \ - src/client/mac/tests/BreakpadFramework_Test.mm \ - src/client/mac/tests/crash_generation_server_test.cc \ - src/client/mac/tests/exception_handler_test.cc \ - src/client/mac/tests/minidump_generator_test.cc \ - src/client/mac/tests/minidump_generator_test_helper.cc \ - src/client/mac/tests/spawn_child_process.h \ - src/client/mac/tests/testlogging.h \ + src/client/minidump_file_writer-inl.h \ + src/client/minidump_file_writer.cc \ + src/client/minidump_file_writer.h \ src/client/minidump_file_writer_unittest.cc \ src/client/solaris/handler/Makefile \ src/client/solaris/handler/exception_handler.cc \ @@ -1287,24 +1324,44 @@ EXTRA_DIST = \ src/client/solaris/handler/minidump_test.cc \ src/client/solaris/handler/solaris_lwp.cc \ src/client/solaris/handler/solaris_lwp.h \ - src/client/windows/breakpad_client.gyp \ + src/client/windows/breakpad_client.sln \ src/client/windows/handler/exception_handler.cc \ src/client/windows/handler/exception_handler.h \ - src/client/windows/handler/exception_handler.gyp \ + src/client/windows/handler/exception_handler.vcproj \ src/client/windows/sender/crash_report_sender.cc \ src/client/windows/sender/crash_report_sender.h \ - src/client/windows/sender/crash_report_sender.gyp \ - src/common/dwarf/dwarf2diehandler.h \ - src/common/dwarf/dwarf2enums.h \ - src/common/dwarf/line_state_machine.h \ - src/common/dwarf/types.h \ - src/common/mac/arch_utilities.h \ - src/common/mac/byteswap.h \ + src/client/windows/sender/crash_report_sender.vcproj \ + src/common/convert_UTF.c \ + src/common/convert_UTF.h \ + src/common/linux/crc32.cc \ + src/common/linux/dump_symbols.cc \ + src/common/linux/dump_symbols.h \ + src/common/linux/elf_symbols_to_module.cc \ + src/common/linux/elf_symbols_to_module.h \ + src/common/linux/elfutils.cc \ + src/common/linux/elfutils.h \ + src/common/linux/file_id.cc \ + src/common/linux/file_id.h \ + src/common/linux/guid_creator.cc \ + src/common/linux/guid_creator.h \ + src/common/linux/http_upload.cc \ + src/common/linux/http_upload.h \ src/common/mac/HTTPMultipartUpload.h \ src/common/mac/HTTPMultipartUpload.m \ + src/common/mac/dump_syms.h \ + src/common/mac/dump_syms.cc \ + src/common/mac/file_id.cc \ + src/common/mac/file_id.h \ + src/common/mac/macho_id.cc \ + src/common/mac/macho_id.h \ + src/common/mac/macho_utilities.cc \ + src/common/mac/macho_utilities.h \ + src/common/mac/macho_walker.cc \ + src/common/mac/macho_walker.h \ src/common/mac/string_utilities.cc \ src/common/mac/string_utilities.h \ - src/common/mac/super_fat_arch.h \ + src/common/md5.cc \ + src/common/md5.h \ src/common/scoped_ptr.h \ src/common/solaris/dump_symbols.cc \ src/common/solaris/dump_symbols.h \ @@ -1313,6 +1370,8 @@ EXTRA_DIST = \ src/common/solaris/guid_creator.cc \ src/common/solaris/guid_creator.h \ src/common/solaris/message_output.h \ + src/common/string_conversion.cc \ + src/common/string_conversion.h \ src/common/windows/guid_string.cc \ src/common/windows/guid_string.h \ src/common/windows/http_upload.cc \ @@ -1321,158 +1380,22 @@ EXTRA_DIST = \ src/common/windows/pdb_source_line_writer.h \ src/common/windows/string_utils-inl.h \ src/common/windows/string_utils.cc \ - src/processor/stackwalk_common.cc \ - src/processor/stackwalk_common.h \ - src/processor/stackwalker_selftest_sol.s \ - src/processor/testdata/ascii_read_av_block_write.dmp \ - src/processor/testdata/ascii_read_av_clobber_write.dmp \ - src/processor/testdata/ascii_read_av_conditional.dmp \ - src/processor/testdata/ascii_read_av.dmp \ - src/processor/testdata/ascii_read_av_then_jmp.dmp \ - src/processor/testdata/ascii_read_av_xchg_write.dmp \ - src/processor/testdata/ascii_write_av_arg_to_call.dmp \ - src/processor/testdata/ascii_write_av.dmp \ - src/processor/testdata/exec_av_on_stack.dmp \ - src/processor/testdata/linux_divide_by_zero.dmp \ - src/processor/testdata/linux_executable_heap.dmp \ - src/processor/testdata/linux_executable_stack.dmp \ - src/processor/testdata/linux_inside_module_exe_region1.dmp \ - src/processor/testdata/linux_inside_module_exe_region2.dmp \ - src/processor/testdata/linux_jmp_to_0.dmp \ - src/processor/testdata/linux_jmp_to_module_not_exe_region.dmp \ - src/processor/testdata/linux_null_dereference.dmp \ - src/processor/testdata/linux_null_read_av.dmp \ - src/processor/testdata/linux_outside_module.dmp \ - src/processor/testdata/linux_overflow.dmp \ - src/processor/testdata/linux_raise_sigabrt.dmp \ - src/processor/testdata/linux_stack_pointer_in_module.dmp \ - src/processor/testdata/linux_stack_pointer_in_stack.dmp \ - src/processor/testdata/linux_stacksmash.dmp \ - src/processor/testdata/linux_write_to_nonwritable_module.dmp \ - src/processor/testdata/linux_write_to_nonwritable_region_math.dmp \ - src/processor/testdata/linux_write_to_outside_module.dmp \ - src/processor/testdata/linux_write_to_outside_module_via_math.dmp \ - src/processor/testdata/linux_write_to_under_4k.dmp \ - src/processor/testdata/microdump-arm64.dmp \ - src/processor/testdata/microdump-arm.dmp \ - src/processor/testdata/microdump-mips32.dmp \ - src/processor/testdata/microdump-mips64.dmp \ - src/processor/testdata/microdump-multiple.dmp \ - src/processor/testdata/microdump.stackwalk-arm64.out \ - src/processor/testdata/microdump.stackwalk-arm.out \ - src/processor/testdata/microdump.stackwalk.machine_readable-arm64.out \ - src/processor/testdata/microdump.stackwalk.machine_readable-arm.out \ - src/processor/testdata/microdump-x86.dmp \ src/processor/testdata/minidump2.dmp \ src/processor/testdata/minidump2.dump.out \ src/processor/testdata/minidump2.stackwalk.machine_readable.out \ src/processor/testdata/minidump2.stackwalk.out \ - src/processor/testdata/module0.out \ src/processor/testdata/module1.out \ src/processor/testdata/module2.out \ src/processor/testdata/module3_bad.out \ src/processor/testdata/module4_bad.out \ - src/processor/testdata/null_read_av.dmp \ - src/processor/testdata/null_write_av.dmp \ - src/processor/testdata/read_av_clobber_write.dmp \ - src/processor/testdata/read_av_conditional.dmp \ - src/processor/testdata/read_av_non_null.dmp \ - src/processor/testdata/stack_exhaustion.dmp \ - src/processor/testdata/write_av_non_null.dmp \ src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \ - src/processor/testdata/symbols/ld-2.13.so/C32AD7E235EA6112E02A5B9D6219C4850/ld-2.13.so.sym \ - src/processor/testdata/symbols/libc-2.13.so/F4F8DFCD5A5FB5A7CE64717E9E6AE3890/libc-2.13.so.sym \ - src/processor/testdata/symbols/libgcc_s.so.1/18B180F90887D8F8B5C35D185444AF4C0/libgcc_s.so.1.sym \ - src/processor/testdata/symbols/microdump/breakpad_unittests/D6D1FEC9A15DE7F38A236898871A2E770/breakpad_unittests.sym \ - src/processor/testdata/symbols/microdump/breakpad_unittests/DA7778FB66018A4E9B4110ED06E730D00/breakpad_unittests.sym \ - src/processor/testdata/symbols/microdump/crash_example/6E72E2F1A5F59AB3D51356FDFE394D490/crash_example.sym \ - src/processor/testdata/symbols/microdump/crash_example/8F36148CC4647A8116CAF2A25F591F570/crash_example.sym \ - src/processor/testdata/symbols/null_read_av/7B7D1968FF0D47AE4366E9C3A7E1B6750/null_read_av.sym \ - src/processor/testdata/symbols/overflow/B0E1FC01EF48E39CAF5C881D2DF0C3840/overflow.sym \ src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym \ src/processor/testdata/test_app.cc \ - src/testing/gtest/include/gtest/gtest.h \ - src/testing/gtest/include/gtest/gtest-death-test.h \ - src/testing/gtest/include/gtest/gtest-message.h \ - src/testing/gtest/include/gtest/gtest-param-test.h \ - src/testing/gtest/include/gtest/gtest-printers.h \ - src/testing/gtest/include/gtest/gtest-spi.h \ - src/testing/gtest/include/gtest/gtest-test-part.h \ - src/testing/gtest/include/gtest/gtest-typed-test.h \ - src/testing/gtest/include/gtest/gtest_pred_impl.h \ - src/testing/gtest/include/gtest/gtest_prod.h \ - src/testing/gtest/include/gtest/internal/gtest-death-test-internal.h \ - src/testing/gtest/include/gtest/internal/gtest-filepath.h \ - src/testing/gtest/include/gtest/internal/gtest-internal.h \ - src/testing/gtest/include/gtest/internal/gtest-linked_ptr.h \ - src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h \ - src/testing/gtest/include/gtest/internal/gtest-param-util.h \ - src/testing/gtest/include/gtest/internal/gtest-port.h \ - src/testing/gtest/include/gtest/internal/gtest-string.h \ - src/testing/gtest/include/gtest/internal/gtest-tuple.h \ - src/testing/gtest/include/gtest/internal/gtest-type-util.h \ - src/testing/gtest/src/gtest.cc \ - src/testing/gtest/src/gtest-death-test.cc \ - src/testing/gtest/src/gtest-filepath.cc \ - src/testing/gtest/src/gtest-internal-inl.h \ - src/testing/gtest/src/gtest-port.cc \ - src/testing/gtest/src/gtest-printers.cc \ - src/testing/gtest/src/gtest-test-part.cc \ - src/testing/gtest/src/gtest-typed-test.cc \ - src/testing/include/gmock/gmock.h \ - src/testing/include/gmock/gmock-actions.h \ - src/testing/include/gmock/gmock-cardinalities.h \ - src/testing/include/gmock/gmock-generated-actions.h \ - src/testing/include/gmock/gmock-generated-function-mockers.h \ - src/testing/include/gmock/gmock-generated-matchers.h \ - src/testing/include/gmock/gmock-generated-nice-strict.h \ - src/testing/include/gmock/gmock-matchers.h \ - src/testing/include/gmock/gmock-more-actions.h \ - src/testing/include/gmock/gmock-more-matchers.h \ - src/testing/include/gmock/gmock-spec-builders.h \ - src/testing/include/gmock/internal/gmock-generated-internal-utils.h \ - src/testing/include/gmock/internal/gmock-internal-utils.h \ - src/testing/include/gmock/internal/gmock-port.h \ - src/testing/src/gmock.cc \ - src/testing/src/gmock-cardinalities.cc \ - src/testing/src/gmock-internal-utils.cc \ - src/testing/src/gmock-matchers.cc \ - src/testing/src/gmock-spec-builders.cc \ - src/testing/src/gmock_main.cc \ - src/third_party/curl/COPYING \ - src/third_party/curl/curlbuild.h \ - src/third_party/curl/curl.h \ - src/third_party/curl/curlrules.h \ - src/third_party/curl/curlver.h \ - src/third_party/curl/easy.h \ - src/third_party/curl/mprintf.h \ - src/third_party/curl/multi.h \ - src/third_party/curl/stdcheaders.h \ - src/third_party/curl/typecheck-gcc.h \ - src/third_party/curl/types.h \ - src/third_party/mac_headers/architecture/byte_order.h \ - src/third_party/mac_headers/i386/_types.h \ - src/third_party/mac_headers/mach/boolean.h \ - src/third_party/mac_headers/mach/i386/boolean.h \ - src/third_party/mac_headers/mach/i386/vm_param.h \ - src/third_party/mac_headers/mach/i386/vm_types.h \ - src/third_party/mac_headers/mach/machine/boolean.h \ - src/third_party/mac_headers/mach/machine.h \ - src/third_party/mac_headers/mach/machine/thread_state.h \ - src/third_party/mac_headers/mach/machine/thread_status.h \ - src/third_party/mac_headers/mach/machine/vm_types.h \ - src/third_party/mac_headers/mach-o/arch.h \ - src/third_party/mac_headers/mach-o/fat.h \ - src/third_party/mac_headers/mach-o/loader.h \ - src/third_party/mac_headers/mach-o/nlist.h \ - src/third_party/mac_headers/mach/thread_status.h \ - src/third_party/mac_headers/mach/vm_prot.h \ - src/third_party/mac_headers/README \ - src/third_party/musl/README \ - src/third_party/musl/COPYRIGHT \ - src/third_party/musl/README.breakpad \ - src/third_party/musl/VERSION \ - src/third_party/musl/include/elf.h \ + src/tools/linux/dump_syms/Makefile \ + src/tools/linux/dump_syms/dump_syms.cc \ + src/tools/linux/symupload/Makefile \ + src/tools/linux/symupload/minidump_upload.cc \ + src/tools/linux/symupload/sym_upload.cc \ src/tools/mac/crash_report/crash_report.mm \ src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj \ src/tools/mac/crash_report/on_demand_symbol_supplier.h \ @@ -1491,20 +1414,12 @@ EXTRA_DIST = \ src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym \ src/tools/windows/converter/ms_symbol_server_converter.cc \ src/tools/windows/converter/ms_symbol_server_converter.h \ - src/tools/windows/converter/ms_symbol_server_converter.gyp \ + src/tools/windows/converter/ms_symbol_server_converter.vcproj \ src/tools/windows/dump_syms/dump_syms.cc \ - src/tools/windows/dump_syms/dump_syms.gyp \ + src/tools/windows/dump_syms/dump_syms.vcproj \ src/tools/windows/dump_syms/run_regtest.sh \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym \ - src/tools/windows/dump_syms/testdata/dump_syms_regtest64.sym \ - src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym \ - src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym \ - src/tools/windows/dump_syms/testdata/omap_stretched.sym \ - src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym \ src/tools/windows/symupload/symupload.cc \ - src/tools/windows/symupload/symupload.gyp - -mostlyclean-local: - -find src -name '*.dwo' -exec rm -f {} + + src/tools/windows/symupload/symupload.vcproj diff --git a/toolkit/crashreporter/google-breakpad/Makefile.in b/toolkit/crashreporter/google-breakpad/Makefile.in index 06a112d50f34..b3fa7c7351e4 100644 --- a/toolkit/crashreporter/google-breakpad/Makefile.in +++ b/toolkit/crashreporter/google-breakpad/Makefile.in @@ -1,8 +1,8 @@ -# Makefile.in generated by automake 1.15 from Makefile.am. +# Makefile.in generated by automake 1.10 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2014 Free Software Foundation, Inc. - +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -14,7 +14,7 @@ @SET_MAKE@ -# Copyright (c) 2011, Google Inc. +# Copyright (c) 2006, Google Inc. # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -46,67 +46,10 @@ - VPATH = @srcdir@ -am__is_gnu_make = { \ - if test -z '$(MAKELEVEL)'; then \ - false; \ - elif test -n '$(MAKE_HOST)'; then \ - true; \ - elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ - true; \ - else \ - false; \ - fi; \ -} -am__make_running_with_option = \ - case $${target_option-} in \ - ?) ;; \ - *) echo "am__make_running_with_option: internal error: invalid" \ - "target option '$${target_option-}' specified" >&2; \ - exit 1;; \ - esac; \ - has_opt=no; \ - sane_makeflags=$$MAKEFLAGS; \ - if $(am__is_gnu_make); then \ - sane_makeflags=$$MFLAGS; \ - else \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - bs=\\; \ - sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ - | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ - esac; \ - fi; \ - skip_next=no; \ - strip_trailopt () \ - { \ - flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ - }; \ - for flg in $$sane_makeflags; do \ - test $$skip_next = yes && { skip_next=no; continue; }; \ - case $$flg in \ - *=*|--*) continue;; \ - -*I) strip_trailopt 'I'; skip_next=yes;; \ - -*I?*) strip_trailopt 'I';; \ - -*O) strip_trailopt 'O'; skip_next=yes;; \ - -*O?*) strip_trailopt 'O';; \ - -*l) strip_trailopt 'l'; skip_next=yes;; \ - -*l?*) strip_trailopt 'l';; \ - -[dEDm]) skip_next=yes;; \ - -[JT]) skip_next=yes;; \ - esac; \ - case $$flg in \ - *$$target_option*) has_opt=yes; break;; \ - esac; \ - done; \ - test $$has_opt = yes -am__make_dryrun = (target_option=n; $(am__make_running_with_option)) -am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c @@ -121,1811 +64,242 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ - -# This allows using fixed NDK headers when building for Android. -# This is only necessary for building the unit tests until GTest is upgraded -# to a future version. -@ANDROID_HOST_TRUE@am__append_1 = \ -@ANDROID_HOST_TRUE@ -I$(top_srcdir)/src/common/android/include \ -@ANDROID_HOST_TRUE@ -I$(top_srcdir)/src/common/android/testing/include - -# These are good warnings to be treated as errors -@GCC_TRUE@am__append_2 = \ -@GCC_TRUE@ -Werror=missing-braces \ -@GCC_TRUE@ -Werror=non-virtual-dtor \ -@GCC_TRUE@ -Werror=overloaded-virtual \ -@GCC_TRUE@ -Werror=reorder \ -@GCC_TRUE@ -Werror=sign-compare \ -@GCC_TRUE@ -Werror=unused-variable \ -@GCC_TRUE@ -Werror=vla - - -# Build as PIC on Linux, for linux_client_unittest_shlib -@LINUX_HOST_TRUE@am__append_3 = -fPIC -@LINUX_HOST_TRUE@am__append_4 = -fPIC -bin_PROGRAMS = $(am__EXEEXT_2) $(am__EXEEXT_3) $(am__EXEEXT_4) -check_PROGRAMS = $(am__EXEEXT_5) $(am__EXEEXT_6) $(am__EXEEXT_7) \ - $(am__EXEEXT_8) $(am__EXEEXT_9) -EXTRA_PROGRAMS = $(am__EXEEXT_1) -@DISABLE_PROCESSOR_FALSE@am__append_5 = src/libbreakpad.a -@DISABLE_PROCESSOR_FALSE@am__append_6 = breakpad.pc -@DISABLE_PROCESSOR_FALSE@am__append_7 = src/third_party/libdisasm/libdisasm.a -@LINUX_HOST_TRUE@am__append_8 = src/client/linux/libbreakpad_client.a -@LINUX_HOST_TRUE@am__append_9 = breakpad-client.pc -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_10 = \ -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ src/common/android/breakpad_getcontext.S - -@DISABLE_PROCESSOR_FALSE@am__append_11 = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_stackwalk \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_dump \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk - -@LINUX_HOST_TRUE@am__append_12 = src/client/linux/linux_dumper_unittest_helper \ -@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib -@LINUX_HOST_TRUE@am__append_13 = src/client/linux/linux_dumper_unittest_helper \ -@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__append_14 = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/core2md/core2md \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/dump_syms/dump_syms \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump-2-core \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/minidump_upload \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/sym_upload - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@am__append_15 = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@ src/tools/mac/dump_syms/dump_syms_mac - -@DISABLE_PROCESSOR_FALSE@am__append_16 = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/address_map_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_shrink_down_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips64_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86_unittest \ -@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump_unittest - -@LINUX_HOST_TRUE@am__append_17 = \ -@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__append_18 = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dumper_unittest \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump_2_core_unittest - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@am__append_19 = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@ src/common/mac/macho_reader_unittest - -@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@am__append_20 = \ -@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@ src/processor/stackwalker_selftest - -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_21 = \ -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ src/common/android/breakpad_getcontext.S - -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_22 = \ -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ src/common/android/breakpad_getcontext_unittest.cc - -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_23 = \ -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ -llog -lm - -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__append_24 = \ -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@ -llog +bin_PROGRAMS = src/processor/minidump_dump$(EXEEXT) \ + src/processor/minidump_stackwalk$(EXEEXT) +check_PROGRAMS = src/processor/address_map_unittest$(EXEEXT) \ + src/processor/basic_source_line_resolver_unittest$(EXEEXT) \ + src/processor/contained_range_map_unittest$(EXEEXT) \ + src/processor/minidump_processor_unittest$(EXEEXT) \ + src/processor/pathname_stripper_unittest$(EXEEXT) \ + src/processor/postfix_evaluator_unittest$(EXEEXT) \ + src/processor/range_map_unittest$(EXEEXT) $(am__EXEEXT_1) +@SELFTEST_TRUE@am__append_1 = \ +@SELFTEST_TRUE@ src/processor/stackwalker_selftest noinst_PROGRAMS = subdir = . +DIST_COMMON = README $(am__configure_deps) $(dist_doc_DATA) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(top_srcdir)/configure $(top_srcdir)/src/config.h.in AUTHORS \ + COPYING ChangeLog INSTALL NEWS autotools/config.guess \ + autotools/config.sub autotools/depcomp autotools/install-sh \ + autotools/ltmain.sh autotools/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/ax_pthread.m4 \ - $(top_srcdir)/m4/ax_cxx_compile_stdcxx.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) -DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ - $(am__configure_deps) $(dist_doc_DATA) $(includec_HEADERS) \ - $(am__includecl_HEADERS_DIST) $(am__includeclc_HEADERS_DIST) \ - $(am__includecldwc_HEADERS_DIST) \ - $(am__includeclh_HEADERS_DIST) $(am__includeclm_HEADERS_DIST) \ - $(includegbc_HEADERS) $(am__includelss_HEADERS_DIST) \ - $(includep_HEADERS) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/src/config.h -CONFIG_CLEAN_FILES = breakpad.pc breakpad-client.pc -CONFIG_CLEAN_VPATH_FILES = +CONFIG_CLEAN_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \ - "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" \ - "$(DESTDIR)$(includecdir)" "$(DESTDIR)$(includecldir)" \ - "$(DESTDIR)$(includeclcdir)" "$(DESTDIR)$(includecldwcdir)" \ - "$(DESTDIR)$(includeclhdir)" "$(DESTDIR)$(includeclmdir)" \ - "$(DESTDIR)$(includegbcdir)" "$(DESTDIR)$(includelssdir)" \ - "$(DESTDIR)$(includepdir)" -LIBRARIES = $(lib_LIBRARIES) $(noinst_LIBRARIES) -ARFLAGS = cru -AM_V_AR = $(am__v_AR_@AM_V@) -am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) -am__v_AR_0 = @echo " AR " $@; -am__v_AR_1 = -src_client_linux_libbreakpad_client_a_AR = $(AR) $(ARFLAGS) -src_client_linux_libbreakpad_client_a_LIBADD = -am__src_client_linux_libbreakpad_client_a_SOURCES_DIST = \ - src/client/linux/crash_generation/crash_generation_client.cc \ - src/client/linux/crash_generation/crash_generation_server.cc \ - src/client/linux/dump_writer_common/thread_info.cc \ - src/client/linux/dump_writer_common/ucontext_reader.cc \ - src/client/linux/handler/exception_handler.cc \ - src/client/linux/handler/exception_handler.h \ - src/client/linux/handler/minidump_descriptor.cc \ - src/client/linux/handler/minidump_descriptor.h \ - src/client/linux/log/log.cc src/client/linux/log/log.h \ - src/client/linux/microdump_writer/microdump_writer.cc \ - src/client/linux/microdump_writer/microdump_writer.h \ - src/client/linux/minidump_writer/linux_core_dumper.cc \ - src/client/linux/minidump_writer/linux_dumper.cc \ - src/client/linux/minidump_writer/linux_ptrace_dumper.cc \ - src/client/linux/minidump_writer/minidump_writer.cc \ - src/client/minidump_file_writer-inl.h \ - src/client/minidump_file_writer.cc \ - src/client/minidump_file_writer.h src/common/convert_UTF.c \ - src/common/convert_UTF.h src/common/md5.cc src/common/md5.h \ - src/common/string_conversion.cc src/common/string_conversion.h \ - src/common/linux/elf_core_dump.cc src/common/linux/elfutils.cc \ - src/common/linux/elfutils.h src/common/linux/file_id.cc \ - src/common/linux/file_id.h src/common/linux/guid_creator.cc \ - src/common/linux/guid_creator.h \ - src/common/linux/linux_libc_support.cc \ - src/common/linux/memory_mapped_file.cc \ - src/common/linux/safe_readlink.cc \ - src/common/android/breakpad_getcontext.S + "$(DESTDIR)$(docdir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +src_libbreakpad_la_LIBADD = am__dirstamp = $(am__leading_dot)dirstamp -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_1 = src/common/android/breakpad_getcontext.$(OBJEXT) -@LINUX_HOST_TRUE@am_src_client_linux_libbreakpad_client_a_OBJECTS = src/client/linux/crash_generation/crash_generation_client.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/crash_generation/crash_generation_server.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/thread_info.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/ucontext_reader.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/handler/minidump_descriptor.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/log/log.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_core_dumper.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_dumper.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_ptrace_dumper.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/minidump_file_writer.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/convert_UTF.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/md5.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/string_conversion.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/elfutils.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/file_id.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/guid_creator.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.$(OBJEXT) \ -@LINUX_HOST_TRUE@ $(am__objects_1) -src_client_linux_libbreakpad_client_a_OBJECTS = \ - $(am_src_client_linux_libbreakpad_client_a_OBJECTS) -src_libbreakpad_a_AR = $(AR) $(ARFLAGS) -src_libbreakpad_a_LIBADD = -am__src_libbreakpad_a_SOURCES_DIST = \ - src/google_breakpad/common/breakpad_types.h \ - src/google_breakpad/common/minidump_format.h \ - src/google_breakpad/common/minidump_size.h \ - src/google_breakpad/processor/basic_source_line_resolver.h \ - src/google_breakpad/processor/call_stack.h \ - src/google_breakpad/processor/code_module.h \ - src/google_breakpad/processor/code_modules.h \ - src/google_breakpad/processor/dump_context.h \ - src/google_breakpad/processor/dump_object.h \ - src/google_breakpad/processor/exploitability.h \ - src/google_breakpad/processor/fast_source_line_resolver.h \ - src/google_breakpad/processor/memory_region.h \ - src/google_breakpad/processor/microdump.h \ - src/google_breakpad/processor/microdump_processor.h \ - src/google_breakpad/processor/minidump.h \ - src/google_breakpad/processor/minidump_processor.h \ - src/google_breakpad/processor/process_result.h \ - src/google_breakpad/processor/process_state.h \ - src/google_breakpad/processor/proc_maps_linux.h \ - src/google_breakpad/processor/source_line_resolver_base.h \ - src/google_breakpad/processor/source_line_resolver_interface.h \ - src/google_breakpad/processor/stack_frame.h \ - src/google_breakpad/processor/stack_frame_cpu.h \ - src/google_breakpad/processor/stack_frame_symbolizer.h \ - src/google_breakpad/processor/stackwalker.h \ - src/google_breakpad/processor/symbol_supplier.h \ - src/google_breakpad/processor/system_info.h \ - src/processor/address_map-inl.h src/processor/address_map.h \ - src/processor/basic_code_module.h \ - src/processor/basic_code_modules.cc \ - src/processor/basic_code_modules.h \ - src/processor/basic_source_line_resolver_types.h \ - src/processor/basic_source_line_resolver.cc \ - src/processor/call_stack.cc src/processor/cfi_frame_info.cc \ - src/processor/cfi_frame_info.h \ - src/processor/contained_range_map-inl.h \ - src/processor/contained_range_map.h \ - src/processor/disassembler_x86.h \ - src/processor/disassembler_x86.cc \ - src/processor/dump_context.cc src/processor/dump_object.cc \ - src/processor/exploitability.cc \ - src/processor/exploitability_linux.h \ - src/processor/exploitability_linux.cc \ - src/processor/exploitability_win.h \ - src/processor/exploitability_win.cc \ - src/processor/fast_source_line_resolver_types.h \ - src/processor/fast_source_line_resolver.cc \ - src/processor/linked_ptr.h src/processor/logging.h \ - src/processor/logging.cc src/processor/map_serializers-inl.h \ - src/processor/map_serializers.h src/processor/microdump.cc \ - src/processor/microdump_processor.cc src/processor/minidump.cc \ - src/processor/minidump_processor.cc \ - src/processor/module_comparer.cc \ - src/processor/module_comparer.h src/processor/module_factory.h \ - src/processor/module_serializer.cc \ - src/processor/module_serializer.h \ - src/processor/pathname_stripper.cc \ - src/processor/pathname_stripper.h \ - src/processor/postfix_evaluator-inl.h \ - src/processor/postfix_evaluator.h \ - src/processor/process_state.cc \ - src/processor/proc_maps_linux.cc src/processor/range_map-inl.h \ - src/processor/range_map.h \ - src/processor/simple_serializer-inl.h \ - src/processor/simple_serializer.h \ - src/processor/simple_symbol_supplier.cc \ - src/processor/simple_symbol_supplier.h \ - src/processor/windows_frame_info.h \ - src/processor/source_line_resolver_base_types.h \ - src/processor/source_line_resolver_base.cc \ - src/processor/stack_frame_cpu.cc \ - src/processor/stack_frame_symbolizer.cc \ - src/processor/stackwalker.cc \ - src/processor/stackwalker_amd64.cc \ - src/processor/stackwalker_amd64.h \ - src/processor/stackwalker_arm.cc \ - src/processor/stackwalker_arm.h \ - src/processor/stackwalker_arm64.cc \ - src/processor/stackwalker_arm64.h \ - src/processor/stackwalker_address_list.cc \ - src/processor/stackwalker_address_list.h \ - src/processor/stackwalker_mips.cc \ - src/processor/stackwalker_mips.h \ - src/processor/stackwalker_ppc.cc \ - src/processor/stackwalker_ppc.h \ - src/processor/stackwalker_ppc64.cc \ - src/processor/stackwalker_ppc64.h \ - src/processor/stackwalker_sparc.cc \ - src/processor/stackwalker_sparc.h \ - src/processor/stackwalker_x86.cc \ - src/processor/stackwalker_x86.h \ - src/processor/static_address_map-inl.h \ - src/processor/static_address_map.h \ - src/processor/static_contained_range_map-inl.h \ - src/processor/static_contained_range_map.h \ - src/processor/static_map_iterator-inl.h \ - src/processor/static_map_iterator.h \ - src/processor/static_map-inl.h src/processor/static_map.h \ - src/processor/static_range_map-inl.h \ - src/processor/static_range_map.h \ - src/processor/symbolic_constants_win.cc \ - src/processor/symbolic_constants_win.h \ - src/processor/tokenize.cc src/processor/tokenize.h -@DISABLE_PROCESSOR_FALSE@am_src_libbreakpad_a_OBJECTS = src/processor/basic_code_modules.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.$(OBJEXT) -src_libbreakpad_a_OBJECTS = $(am_src_libbreakpad_a_OBJECTS) -src_testing_libtesting_a_AR = $(AR) $(ARFLAGS) -src_testing_libtesting_a_LIBADD = -am__src_testing_libtesting_a_SOURCES_DIST = \ - src/breakpad_googletest_includes.h \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc -@SYSTEM_TEST_LIBS_FALSE@am_src_testing_libtesting_a_OBJECTS = src/testing/gtest/src/src_testing_libtesting_a-gtest-all.$(OBJEXT) \ -@SYSTEM_TEST_LIBS_FALSE@ src/testing/gtest/src/src_testing_libtesting_a-gtest_main.$(OBJEXT) \ -@SYSTEM_TEST_LIBS_FALSE@ src/testing/src/src_testing_libtesting_a-gmock-all.$(OBJEXT) -src_testing_libtesting_a_OBJECTS = \ - $(am_src_testing_libtesting_a_OBJECTS) -src_third_party_libdisasm_libdisasm_a_AR = $(AR) $(ARFLAGS) -src_third_party_libdisasm_libdisasm_a_LIBADD = -am__src_third_party_libdisasm_libdisasm_a_SOURCES_DIST = \ - src/third_party/libdisasm/ia32_implicit.c \ - src/third_party/libdisasm/ia32_implicit.h \ - src/third_party/libdisasm/ia32_insn.c \ - src/third_party/libdisasm/ia32_insn.h \ - src/third_party/libdisasm/ia32_invariant.c \ - src/third_party/libdisasm/ia32_invariant.h \ - src/third_party/libdisasm/ia32_modrm.c \ - src/third_party/libdisasm/ia32_modrm.h \ - src/third_party/libdisasm/ia32_opcode_tables.c \ - src/third_party/libdisasm/ia32_opcode_tables.h \ - src/third_party/libdisasm/ia32_operand.c \ - src/third_party/libdisasm/ia32_operand.h \ - src/third_party/libdisasm/ia32_reg.c \ - src/third_party/libdisasm/ia32_reg.h \ - src/third_party/libdisasm/ia32_settings.c \ - src/third_party/libdisasm/ia32_settings.h \ - src/third_party/libdisasm/libdis.h \ - src/third_party/libdisasm/qword.h \ - src/third_party/libdisasm/x86_disasm.c \ - src/third_party/libdisasm/x86_format.c \ - src/third_party/libdisasm/x86_imm.c \ - src/third_party/libdisasm/x86_imm.h \ - src/third_party/libdisasm/x86_insn.c \ - src/third_party/libdisasm/x86_misc.c \ - src/third_party/libdisasm/x86_operand_list.c \ - src/third_party/libdisasm/x86_operand_list.h -@DISABLE_PROCESSOR_FALSE@am_src_third_party_libdisasm_libdisasm_a_OBJECTS = src/third_party/libdisasm/ia32_implicit.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_insn.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_invariant.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_modrm.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_opcode_tables.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_operand.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_reg.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_settings.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_disasm.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_format.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_imm.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_insn.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_misc.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_operand_list.$(OBJEXT) -src_third_party_libdisasm_libdisasm_a_OBJECTS = \ - $(am_src_third_party_libdisasm_libdisasm_a_OBJECTS) -@LINUX_HOST_TRUE@am__EXEEXT_1 = src/client/linux/linux_dumper_unittest_helper$(EXEEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib$(EXEEXT) -@DISABLE_PROCESSOR_FALSE@am__EXEEXT_2 = src/processor/microdump_stackwalk$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_dump$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk$(EXEEXT) -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__EXEEXT_3 = src/tools/linux/core2md/core2md$(EXEEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/dump_syms/dump_syms$(EXEEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump-2-core$(EXEEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/minidump_upload$(EXEEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/sym_upload$(EXEEXT) -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@am__EXEEXT_4 = src/tools/mac/dump_syms/dump_syms_mac$(EXEEXT) -@DISABLE_PROCESSOR_FALSE@am__EXEEXT_5 = src/common/test_assembler_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/address_map_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_shrink_down_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips64_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86_unittest$(EXEEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump_unittest$(EXEEXT) -@LINUX_HOST_TRUE@am__EXEEXT_6 = src/client/linux/linux_client_unittest$(EXEEXT) -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am__EXEEXT_7 = src/common/dumper_unittest$(EXEEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT) -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@@X86_HOST_TRUE@am__EXEEXT_8 = src/common/mac/macho_reader_unittest$(EXEEXT) -@DISABLE_PROCESSOR_FALSE@@SELFTEST_TRUE@am__EXEEXT_9 = src/processor/stackwalker_selftest$(EXEEXT) +am_src_libbreakpad_la_OBJECTS = src/processor/basic_code_modules.lo \ + src/processor/basic_source_line_resolver.lo \ + src/processor/call_stack.lo src/processor/logging.lo \ + src/processor/minidump.lo src/processor/minidump_processor.lo \ + src/processor/pathname_stripper.lo \ + src/processor/process_state.lo \ + src/processor/simple_symbol_supplier.lo \ + src/processor/stackwalker.lo \ + src/processor/stackwalker_amd64.lo \ + src/processor/stackwalker_ppc.lo \ + src/processor/stackwalker_sparc.lo \ + src/processor/stackwalker_x86.lo +src_libbreakpad_la_OBJECTS = $(am_src_libbreakpad_la_OBJECTS) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +@SELFTEST_TRUE@am__EXEEXT_1 = \ +@SELFTEST_TRUE@ src/processor/stackwalker_selftest$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) -am_src_client_linux_linux_client_unittest_OBJECTS = -src_client_linux_linux_client_unittest_OBJECTS = \ - $(am_src_client_linux_linux_client_unittest_OBJECTS) -am__DEPENDENCIES_1 = -@SYSTEM_TEST_LIBS_FALSE@am__DEPENDENCIES_2 = src/testing/libtesting.a -@SYSTEM_TEST_LIBS_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) \ -@SYSTEM_TEST_LIBS_TRUE@ $(am__DEPENDENCIES_1) -src_client_linux_linux_client_unittest_LINK = $(CCLD) $(AM_CFLAGS) \ - $(CFLAGS) $(src_client_linux_linux_client_unittest_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__src_client_linux_linux_client_unittest_shlib_SOURCES_DIST = \ - src/breakpad_googletest_includes.h \ - src/testing/gtest/src/gtest-all.cc \ - src/testing/gtest/src/gtest_main.cc \ - src/testing/src/gmock-all.cc \ - src/client/linux/handler/exception_handler_unittest.cc \ - src/client/linux/minidump_writer/directory_reader_unittest.cc \ - src/client/linux/minidump_writer/cpu_set_unittest.cc \ - src/client/linux/minidump_writer/line_reader_unittest.cc \ - src/client/linux/minidump_writer/linux_core_dumper.cc \ - src/client/linux/minidump_writer/linux_core_dumper_unittest.cc \ - src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc \ - src/client/linux/minidump_writer/minidump_writer_unittest.cc \ - src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc \ - src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \ - src/common/linux/elf_core_dump.cc \ - src/common/linux/linux_libc_support_unittest.cc \ - src/common/linux/tests/auto_testfile.h \ - src/common/linux/tests/crash_generator.cc \ - src/common/memory_unittest.cc src/common/tests/auto_tempdir.h \ - src/common/tests/file_utils.cc src/common/tests/file_utils.h \ - src/processor/basic_code_modules.cc \ - src/processor/dump_context.cc src/processor/dump_object.cc \ - src/processor/logging.cc src/processor/minidump.cc \ - src/processor/pathname_stripper.cc \ - src/processor/proc_maps_linux.cc \ - src/common/android/breakpad_getcontext.S \ - src/client/linux/microdump_writer/microdump_writer_unittest.cc \ - src/common/android/breakpad_getcontext_unittest.cc -@SYSTEM_TEST_LIBS_FALSE@am__objects_2 = src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.$(OBJEXT) \ -@SYSTEM_TEST_LIBS_FALSE@ src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.$(OBJEXT) \ -@SYSTEM_TEST_LIBS_FALSE@ src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.$(OBJEXT) -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_3 = src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.$(OBJEXT) -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@am__objects_4 = src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.$(OBJEXT) -@LINUX_HOST_TRUE@am_src_client_linux_linux_client_unittest_shlib_OBJECTS = \ -@LINUX_HOST_TRUE@ $(am__objects_2) \ -@LINUX_HOST_TRUE@ src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-logging.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-minidump.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.$(OBJEXT) \ -@LINUX_HOST_TRUE@ src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.$(OBJEXT) \ -@LINUX_HOST_TRUE@ $(am__objects_3) \ -@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.$(OBJEXT) \ -@LINUX_HOST_TRUE@ $(am__objects_4) -src_client_linux_linux_client_unittest_shlib_OBJECTS = \ - $(am_src_client_linux_linux_client_unittest_shlib_OBJECTS) -src_client_linux_linux_client_unittest_shlib_LINK = $(CXXLD) \ - $(AM_CXXFLAGS) $(CXXFLAGS) \ - $(src_client_linux_linux_client_unittest_shlib_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__src_client_linux_linux_dumper_unittest_helper_SOURCES_DIST = src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc -@LINUX_HOST_TRUE@am_src_client_linux_linux_dumper_unittest_helper_OBJECTS = src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.$(OBJEXT) -src_client_linux_linux_dumper_unittest_helper_OBJECTS = \ - $(am_src_client_linux_linux_dumper_unittest_helper_OBJECTS) -src_client_linux_linux_dumper_unittest_helper_LDADD = $(LDADD) -src_client_linux_linux_dumper_unittest_helper_LINK = $(CXXLD) \ - $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) \ - $(CXXFLAGS) \ - $(src_client_linux_linux_dumper_unittest_helper_LDFLAGS) \ - $(LDFLAGS) -o $@ -am__src_common_dumper_unittest_SOURCES_DIST = \ - src/common/byte_cursor_unittest.cc \ - src/common/dwarf_cfi_to_module.cc \ - src/common/dwarf_cfi_to_module_unittest.cc \ - src/common/dwarf_cu_to_module.cc \ - src/common/dwarf_cu_to_module_unittest.cc \ - src/common/dwarf_line_to_module.cc \ - src/common/dwarf_line_to_module_unittest.cc \ - src/common/language.cc src/common/memory_range_unittest.cc \ - src/common/module.cc src/common/module_unittest.cc \ - src/common/stabs_reader.cc src/common/stabs_reader_unittest.cc \ - src/common/stabs_to_module.cc \ - src/common/stabs_to_module_unittest.cc \ - src/common/test_assembler.cc src/common/dwarf/bytereader.cc \ - src/common/dwarf/bytereader.h \ - src/common/dwarf/bytereader-inl.h \ - src/common/dwarf/bytereader_unittest.cc \ - src/common/dwarf/cfi_assembler.cc \ - src/common/dwarf/cfi_assembler.h \ - src/common/dwarf/dwarf2diehandler.cc \ - src/common/dwarf/dwarf2diehandler_unittest.cc \ - src/common/dwarf/dwarf2reader.cc \ - src/common/dwarf/dwarf2reader.h src/common/dwarf/elf_reader.cc \ - src/common/dwarf/elf_reader.h \ - src/common/dwarf/dwarf2reader_cfi_unittest.cc \ - src/common/dwarf/dwarf2reader_die_unittest.cc \ - src/common/dwarf/dwarf2reader_test_common.h \ - src/common/linux/crc32.cc src/common/linux/dump_symbols.cc \ - src/common/linux/dump_symbols_unittest.cc \ - src/common/linux/elf_core_dump.cc \ - src/common/linux/elf_core_dump_unittest.cc \ - src/common/linux/elf_symbols_to_module.cc \ - src/common/linux/elf_symbols_to_module_unittest.cc \ - src/common/linux/elfutils.cc src/common/linux/file_id.cc \ - src/common/linux/file_id_unittest.cc \ - src/common/linux/linux_libc_support.cc \ - src/common/linux/memory_mapped_file.cc \ - src/common/linux/memory_mapped_file_unittest.cc \ - src/common/linux/safe_readlink.cc \ - src/common/linux/safe_readlink_unittest.cc \ - src/common/linux/synth_elf.cc \ - src/common/linux/synth_elf_unittest.cc \ - src/common/linux/tests/crash_generator.cc \ - src/common/linux/tests/crash_generator.h \ - src/common/testdata/func-line-pairing.h \ - src/common/tests/file_utils.cc -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_common_dumper_unittest_OBJECTS = src/common/src_common_dumper_unittest-byte_cursor_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_cfi_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_cu_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_line_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-language.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-memory_range_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-module_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-stabs_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-stabs_reader_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-stabs_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-stabs_to_module_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_dumper_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-bytereader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-cfi_assembler.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-elf_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-crc32.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-dump_symbols.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elf_core_dump.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-elfutils.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-file_id.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-file_id_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-linux_libc_support.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-memory_mapped_file.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-safe_readlink.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-synth_elf.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/src_common_dumper_unittest-synth_elf_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/tests/src_common_dumper_unittest-crash_generator.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/tests/src_common_dumper_unittest-file_utils.$(OBJEXT) -src_common_dumper_unittest_OBJECTS = \ - $(am_src_common_dumper_unittest_OBJECTS) -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_DEPENDENCIES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_2) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) -am__src_common_mac_macho_reader_unittest_SOURCES_DIST = \ - src/common/dwarf_cfi_to_module.cc \ - src/common/dwarf_cu_to_module.cc \ - src/common/dwarf_line_to_module.cc src/common/language.cc \ - src/common/md5.cc src/common/module.cc \ - src/common/stabs_reader.cc src/common/stabs_to_module.cc \ - src/common/test_assembler.cc src/common/dwarf/bytereader.cc \ - src/common/dwarf/cfi_assembler.cc \ - src/common/dwarf/dwarf2diehandler.cc \ - src/common/dwarf/dwarf2reader.cc \ - src/common/dwarf/elf_reader.cc \ - src/common/mac/arch_utilities.cc src/common/mac/file_id.cc \ - src/common/mac/macho_id.cc src/common/mac/macho_reader.cc \ - src/common/mac/macho_reader_unittest.cc \ - src/common/mac/macho_utilities.cc \ - src/common/mac/macho_walker.cc src/common/tests/file_utils.cc -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_common_mac_macho_reader_unittest_OBJECTS = src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-language.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-md5.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-stabs_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-stabs_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_common_mac_macho_reader_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-file_id.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_id.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/tests/src_common_mac_macho_reader_unittest-file_utils.$(OBJEXT) -src_common_mac_macho_reader_unittest_OBJECTS = \ - $(am_src_common_mac_macho_reader_unittest_OBJECTS) -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_mac_macho_reader_unittest_DEPENDENCIES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_2) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) -am__src_common_test_assembler_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc src/common/test_assembler.h \ - src/common/test_assembler_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_common_test_assembler_unittest_OBJECTS = src/common/src_common_test_assembler_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/common/src_common_test_assembler_unittest-test_assembler_unittest.$(OBJEXT) -src_common_test_assembler_unittest_OBJECTS = \ - $(am_src_common_test_assembler_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_address_map_unittest_SOURCES_DIST = \ - src/processor/address_map_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_address_map_unittest_OBJECTS = src/processor/address_map_unittest.$(OBJEXT) +am_src_processor_address_map_unittest_OBJECTS = \ + src/processor/address_map_unittest.$(OBJEXT) src_processor_address_map_unittest_OBJECTS = \ $(am_src_processor_address_map_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o -am__src_processor_basic_source_line_resolver_unittest_SOURCES_DIST = \ - src/processor/basic_source_line_resolver_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_basic_source_line_resolver_unittest_OBJECTS = src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.$(OBJEXT) +src_processor_address_map_unittest_DEPENDENCIES = \ + src/processor/logging.lo src/processor/pathname_stripper.lo +am_src_processor_basic_source_line_resolver_unittest_OBJECTS = \ + src/processor/basic_source_line_resolver_unittest.$(OBJEXT) src_processor_basic_source_line_resolver_unittest_OBJECTS = $(am_src_processor_basic_source_line_resolver_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_DEPENDENCIES = src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_cfi_frame_info_unittest_SOURCES_DIST = \ - src/processor/cfi_frame_info_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_cfi_frame_info_unittest_OBJECTS = src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.$(OBJEXT) -src_processor_cfi_frame_info_unittest_OBJECTS = \ - $(am_src_processor_cfi_frame_info_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_contained_range_map_unittest_SOURCES_DIST = \ - src/processor/contained_range_map_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_contained_range_map_unittest_OBJECTS = src/processor/contained_range_map_unittest.$(OBJEXT) +src_processor_basic_source_line_resolver_unittest_DEPENDENCIES = \ + src/processor/basic_source_line_resolver.lo \ + src/processor/pathname_stripper.lo src/processor/logging.lo +am_src_processor_contained_range_map_unittest_OBJECTS = \ + src/processor/contained_range_map_unittest.$(OBJEXT) src_processor_contained_range_map_unittest_OBJECTS = \ $(am_src_processor_contained_range_map_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o -am__src_processor_disassembler_x86_unittest_SOURCES_DIST = \ - src/processor/disassembler_x86_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_disassembler_x86_unittest_OBJECTS = src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.$(OBJEXT) -src_processor_disassembler_x86_unittest_OBJECTS = \ - $(am_src_processor_disassembler_x86_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_exploitability_unittest_SOURCES_DIST = \ - src/processor/exploitability_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_exploitability_unittest_OBJECTS = src/processor/src_processor_exploitability_unittest-exploitability_unittest.$(OBJEXT) -src_processor_exploitability_unittest_OBJECTS = \ - $(am_src_processor_exploitability_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_fast_source_line_resolver_unittest_SOURCES_DIST = \ - src/processor/fast_source_line_resolver_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_fast_source_line_resolver_unittest_OBJECTS = src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.$(OBJEXT) -src_processor_fast_source_line_resolver_unittest_OBJECTS = $(am_src_processor_fast_source_line_resolver_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_DEPENDENCIES = src/processor/fast_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_map_serializers_unittest_SOURCES_DIST = \ - src/processor/map_serializers_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_map_serializers_unittest_OBJECTS = src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.$(OBJEXT) -src_processor_map_serializers_unittest_OBJECTS = \ - $(am_src_processor_map_serializers_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_microdump_processor_unittest_SOURCES_DIST = \ - src/processor/microdump_processor_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_microdump_processor_unittest_OBJECTS = src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.$(OBJEXT) -src_processor_microdump_processor_unittest_OBJECTS = \ - $(am_src_processor_microdump_processor_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_microdump_stackwalk_SOURCES_DIST = \ - src/processor/microdump_stackwalk.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_microdump_stackwalk_OBJECTS = src/processor/microdump_stackwalk.$(OBJEXT) -src_processor_microdump_stackwalk_OBJECTS = \ - $(am_src_processor_microdump_stackwalk_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalk_common.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a -am__src_processor_minidump_dump_SOURCES_DIST = \ - src/processor/minidump_dump.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_dump_OBJECTS = src/processor/minidump_dump.$(OBJEXT) +src_processor_contained_range_map_unittest_DEPENDENCIES = \ + src/processor/logging.lo src/processor/pathname_stripper.lo +am_src_processor_minidump_dump_OBJECTS = \ + src/processor/minidump_dump.$(OBJEXT) src_processor_minidump_dump_OBJECTS = \ $(am_src_processor_minidump_dump_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o -am__src_processor_minidump_processor_unittest_SOURCES_DIST = \ - src/processor/minidump_processor_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_processor_unittest_OBJECTS = src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT) +src_processor_minidump_dump_DEPENDENCIES = \ + src/processor/basic_code_modules.lo src/processor/logging.lo \ + src/processor/minidump.lo src/processor/pathname_stripper.lo +am_src_processor_minidump_processor_unittest_OBJECTS = src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT) \ + src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJEXT) \ + src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT) src_processor_minidump_processor_unittest_OBJECTS = \ $(am_src_processor_minidump_processor_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_minidump_stackwalk_SOURCES_DIST = \ - src/processor/minidump_stackwalk.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_stackwalk_OBJECTS = src/processor/minidump_stackwalk.$(OBJEXT) +src_processor_minidump_processor_unittest_DEPENDENCIES = \ + src/processor/basic_code_modules.lo \ + src/processor/basic_source_line_resolver.lo \ + src/processor/call_stack.lo src/processor/logging.lo \ + src/processor/minidump_processor.lo src/processor/minidump.lo \ + src/processor/pathname_stripper.lo \ + src/processor/process_state.lo src/processor/stackwalker.lo \ + src/processor/stackwalker_amd64.lo \ + src/processor/stackwalker_ppc.lo \ + src/processor/stackwalker_sparc.lo \ + src/processor/stackwalker_x86.lo +am_src_processor_minidump_stackwalk_OBJECTS = \ + src/processor/minidump_stackwalk.$(OBJEXT) src_processor_minidump_stackwalk_OBJECTS = \ $(am_src_processor_minidump_stackwalk_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalk_common.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a -am__src_processor_minidump_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc \ - src/processor/minidump_unittest.cc \ - src/processor/synth_minidump.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_minidump_unittest_OBJECTS = src/common/src_processor_minidump_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_minidump_unittest-minidump_unittest.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_minidump_unittest-synth_minidump.$(OBJEXT) -src_processor_minidump_unittest_OBJECTS = \ - $(am_src_processor_minidump_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_pathname_stripper_unittest_SOURCES_DIST = \ - src/processor/pathname_stripper_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_pathname_stripper_unittest_OBJECTS = src/processor/pathname_stripper_unittest.$(OBJEXT) +src_processor_minidump_stackwalk_DEPENDENCIES = \ + src/processor/basic_code_modules.lo \ + src/processor/basic_source_line_resolver.lo \ + src/processor/call_stack.lo src/processor/logging.lo \ + src/processor/minidump.lo src/processor/minidump_processor.lo \ + src/processor/pathname_stripper.lo \ + src/processor/process_state.lo \ + src/processor/simple_symbol_supplier.lo \ + src/processor/stackwalker.lo \ + src/processor/stackwalker_amd64.lo \ + src/processor/stackwalker_ppc.lo \ + src/processor/stackwalker_sparc.lo \ + src/processor/stackwalker_x86.lo +am_src_processor_pathname_stripper_unittest_OBJECTS = \ + src/processor/pathname_stripper_unittest.$(OBJEXT) src_processor_pathname_stripper_unittest_OBJECTS = \ $(am_src_processor_pathname_stripper_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_postfix_evaluator_unittest_SOURCES_DIST = \ - src/processor/postfix_evaluator_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_postfix_evaluator_unittest_OBJECTS = src/processor/postfix_evaluator_unittest.$(OBJEXT) +src_processor_pathname_stripper_unittest_DEPENDENCIES = \ + src/processor/pathname_stripper.lo +am_src_processor_postfix_evaluator_unittest_OBJECTS = \ + src/processor/postfix_evaluator_unittest.$(OBJEXT) src_processor_postfix_evaluator_unittest_OBJECTS = \ $(am_src_processor_postfix_evaluator_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_proc_maps_linux_unittest_SOURCES_DIST = \ - src/processor/proc_maps_linux.cc \ - src/processor/proc_maps_linux_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_proc_maps_linux_unittest_OBJECTS = src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.$(OBJEXT) -src_processor_proc_maps_linux_unittest_OBJECTS = \ - $(am_src_processor_proc_maps_linux_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_proc_maps_linux_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_range_map_shrink_down_unittest_SOURCES_DIST = \ - src/processor/range_map_shrink_down_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_range_map_shrink_down_unittest_OBJECTS = src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.$(OBJEXT) -src_processor_range_map_shrink_down_unittest_OBJECTS = \ - $(am_src_processor_range_map_shrink_down_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_range_map_shrink_down_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_range_map_unittest_SOURCES_DIST = \ - src/processor/range_map_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_range_map_unittest_OBJECTS = src/processor/range_map_unittest.$(OBJEXT) +src_processor_postfix_evaluator_unittest_DEPENDENCIES = \ + src/processor/logging.lo src/processor/pathname_stripper.lo +am_src_processor_range_map_unittest_OBJECTS = \ + src/processor/range_map_unittest.$(OBJEXT) src_processor_range_map_unittest_OBJECTS = \ $(am_src_processor_range_map_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_stackwalker_address_list_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc \ - src/processor/stackwalker_address_list_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_address_list_unittest_OBJECTS = src/common/src_processor_stackwalker_address_list_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.$(OBJEXT) -src_processor_stackwalker_address_list_unittest_OBJECTS = \ - $(am_src_processor_stackwalker_address_list_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_stackwalker_amd64_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc \ - src/processor/stackwalker_amd64_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_amd64_unittest_OBJECTS = src/common/src_processor_stackwalker_amd64_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.$(OBJEXT) -src_processor_stackwalker_amd64_unittest_OBJECTS = \ - $(am_src_processor_stackwalker_amd64_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_stackwalker_arm64_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc \ - src/processor/stackwalker_arm64_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_arm64_unittest_OBJECTS = src/common/src_processor_stackwalker_arm64_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.$(OBJEXT) -src_processor_stackwalker_arm64_unittest_OBJECTS = \ - $(am_src_processor_stackwalker_arm64_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_stackwalker_arm_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc \ - src/processor/stackwalker_arm_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_arm_unittest_OBJECTS = src/common/src_processor_stackwalker_arm_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.$(OBJEXT) -src_processor_stackwalker_arm_unittest_OBJECTS = \ - $(am_src_processor_stackwalker_arm_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_stackwalker_mips64_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc \ - src/processor/stackwalker_mips64_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_mips64_unittest_OBJECTS = src/common/src_processor_stackwalker_mips64_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.$(OBJEXT) -src_processor_stackwalker_mips64_unittest_OBJECTS = \ - $(am_src_processor_stackwalker_mips64_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips64_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_stackwalker_mips_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc \ - src/processor/stackwalker_mips_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_mips_unittest_OBJECTS = src/common/src_processor_stackwalker_mips_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.$(OBJEXT) -src_processor_stackwalker_mips_unittest_OBJECTS = \ - $(am_src_processor_stackwalker_mips_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_stackwalker_selftest_SOURCES_DIST = \ - src/processor/stackwalker_selftest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_selftest_OBJECTS = src/processor/stackwalker_selftest.$(OBJEXT) +src_processor_range_map_unittest_DEPENDENCIES = \ + src/processor/logging.lo src/processor/pathname_stripper.lo +am_src_processor_stackwalker_selftest_OBJECTS = \ + src/processor/stackwalker_selftest.$(OBJEXT) src_processor_stackwalker_selftest_OBJECTS = \ $(am_src_processor_stackwalker_selftest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_stackwalker_x86_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc \ - src/processor/stackwalker_x86_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_stackwalker_x86_unittest_OBJECTS = src/common/src_processor_stackwalker_x86_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.$(OBJEXT) -src_processor_stackwalker_x86_unittest_OBJECTS = \ - $(am_src_processor_stackwalker_x86_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_static_address_map_unittest_SOURCES_DIST = \ - src/processor/static_address_map_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_static_address_map_unittest_OBJECTS = src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.$(OBJEXT) -src_processor_static_address_map_unittest_OBJECTS = \ - $(am_src_processor_static_address_map_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_static_contained_range_map_unittest_SOURCES_DIST = \ - src/processor/static_contained_range_map_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_static_contained_range_map_unittest_OBJECTS = src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.$(OBJEXT) -src_processor_static_contained_range_map_unittest_OBJECTS = $(am_src_processor_static_contained_range_map_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_static_map_unittest_SOURCES_DIST = \ - src/processor/static_map_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_static_map_unittest_OBJECTS = src/processor/src_processor_static_map_unittest-static_map_unittest.$(OBJEXT) -src_processor_static_map_unittest_OBJECTS = \ - $(am_src_processor_static_map_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_static_range_map_unittest_SOURCES_DIST = \ - src/processor/static_range_map_unittest.cc -@DISABLE_PROCESSOR_FALSE@am_src_processor_static_range_map_unittest_OBJECTS = src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT) -src_processor_static_range_map_unittest_OBJECTS = \ - $(am_src_processor_static_range_map_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_processor_synth_minidump_unittest_SOURCES_DIST = \ - src/common/test_assembler.cc src/common/test_assembler.h \ - src/processor/synth_minidump_unittest.cc \ - src/processor/synth_minidump.cc src/processor/synth_minidump.h -@DISABLE_PROCESSOR_FALSE@am_src_processor_synth_minidump_unittest_OBJECTS = src/common/src_processor_synth_minidump_unittest-test_assembler.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.$(OBJEXT) \ -@DISABLE_PROCESSOR_FALSE@ src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT) -src_processor_synth_minidump_unittest_OBJECTS = \ - $(am_src_processor_synth_minidump_unittest_OBJECTS) -@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_DEPENDENCIES = \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_2) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \ -@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) -am__src_tools_linux_core2md_core2md_SOURCES_DIST = \ - src/tools/linux/core2md/core2md.cc -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_core2md_core2md_OBJECTS = src/tools/linux/core2md/core2md.$(OBJEXT) -src_tools_linux_core2md_core2md_OBJECTS = \ - $(am_src_tools_linux_core2md_core2md_OBJECTS) -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_DEPENDENCIES = src/client/linux/libbreakpad_client.a -am__src_tools_linux_dump_syms_dump_syms_SOURCES_DIST = \ - src/common/dwarf_cfi_to_module.cc \ - src/common/dwarf_cu_to_module.cc \ - src/common/dwarf_line_to_module.cc src/common/language.cc \ - src/common/module.cc src/common/stabs_reader.cc \ - src/common/stabs_to_module.cc src/common/dwarf/bytereader.cc \ - src/common/dwarf/dwarf2diehandler.cc \ - src/common/dwarf/dwarf2reader.cc \ - src/common/dwarf/elf_reader.cc src/common/linux/crc32.cc \ - src/common/linux/dump_symbols.cc \ - src/common/linux/dump_symbols.h \ - src/common/linux/elf_symbols_to_module.cc \ - src/common/linux/elf_symbols_to_module.h \ - src/common/linux/elfutils.cc src/common/linux/file_id.cc \ - src/common/linux/linux_libc_support.cc \ - src/common/linux/memory_mapped_file.cc \ - src/common/linux/safe_readlink.cc \ - src/tools/linux/dump_syms/dump_syms.cc -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_dump_syms_dump_syms_OBJECTS = src/common/dwarf_cfi_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/crc32.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elfutils.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/file_id.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/dump_syms/dump_syms.$(OBJEXT) -src_tools_linux_dump_syms_dump_syms_OBJECTS = \ - $(am_src_tools_linux_dump_syms_dump_syms_OBJECTS) -src_tools_linux_dump_syms_dump_syms_LDADD = $(LDADD) -am__src_tools_linux_md2core_minidump_2_core_SOURCES_DIST = \ - src/common/linux/memory_mapped_file.cc \ - src/tools/linux/md2core/minidump-2-core.cc \ - src/tools/linux/md2core/minidump_memory_range.h -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_md2core_minidump_2_core_OBJECTS = src/common/linux/memory_mapped_file.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump-2-core.$(OBJEXT) -src_tools_linux_md2core_minidump_2_core_OBJECTS = \ - $(am_src_tools_linux_md2core_minidump_2_core_OBJECTS) -src_tools_linux_md2core_minidump_2_core_LDADD = $(LDADD) -am__src_tools_linux_md2core_minidump_2_core_unittest_SOURCES_DIST = \ - src/tools/linux/md2core/minidump_memory_range_unittest.cc -@LINUX_HOST_TRUE@am_src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS = src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.$(OBJEXT) -src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS = $(am_src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) -@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES = \ -@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ -@LINUX_HOST_TRUE@ $(am__DEPENDENCIES_1) -am__src_tools_linux_symupload_minidump_upload_SOURCES_DIST = \ - src/common/linux/http_upload.cc \ - src/tools/linux/symupload/minidump_upload.cc -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_symupload_minidump_upload_OBJECTS = src/common/linux/http_upload.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/minidump_upload.$(OBJEXT) -src_tools_linux_symupload_minidump_upload_OBJECTS = \ - $(am_src_tools_linux_symupload_minidump_upload_OBJECTS) -src_tools_linux_symupload_minidump_upload_DEPENDENCIES = -am__src_tools_linux_symupload_sym_upload_SOURCES_DIST = \ - src/common/linux/http_upload.cc src/common/linux/http_upload.h \ - src/common/linux/symbol_upload.cc \ - src/common/linux/symbol_upload.h \ - src/tools/linux/symupload/sym_upload.cc -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_linux_symupload_sym_upload_OBJECTS = src/common/linux/http_upload.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/symbol_upload.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/sym_upload.$(OBJEXT) -src_tools_linux_symupload_sym_upload_OBJECTS = \ - $(am_src_tools_linux_symupload_sym_upload_OBJECTS) -src_tools_linux_symupload_sym_upload_DEPENDENCIES = -am__src_tools_mac_dump_syms_dump_syms_mac_SOURCES_DIST = \ - src/common/dwarf_cfi_to_module.cc \ - src/common/dwarf_cu_to_module.cc \ - src/common/dwarf_line_to_module.cc src/common/language.cc \ - src/common/md5.cc src/common/module.cc \ - src/common/stabs_reader.cc src/common/stabs_to_module.cc \ - src/common/dwarf/bytereader.cc \ - src/common/dwarf/dwarf2diehandler.cc \ - src/common/dwarf/dwarf2reader.cc \ - src/common/dwarf/elf_reader.cc \ - src/common/mac/arch_utilities.cc src/common/mac/dump_syms.cc \ - src/common/mac/dump_syms.h src/common/mac/file_id.cc \ - src/common/mac/file_id.h src/common/mac/macho_id.cc \ - src/common/mac/macho_id.h src/common/mac/macho_reader.cc \ - src/common/mac/macho_reader.h \ - src/common/mac/macho_utilities.cc \ - src/common/mac/macho_utilities.h \ - src/common/mac/macho_walker.cc src/common/mac/macho_walker.h \ - src/tools/mac/dump_syms/dump_syms_tool.cc -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@am_src_tools_mac_dump_syms_dump_syms_mac_OBJECTS = src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-language.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.$(OBJEXT) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.$(OBJEXT) -src_tools_mac_dump_syms_dump_syms_mac_OBJECTS = \ - $(am_src_tools_mac_dump_syms_dump_syms_mac_OBJECTS) -src_tools_mac_dump_syms_dump_syms_mac_LDADD = $(LDADD) -src_tools_mac_dump_syms_dump_syms_mac_LINK = $(CXXLD) \ - $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) \ - $(AM_LDFLAGS) $(LDFLAGS) -o $@ +src_processor_stackwalker_selftest_DEPENDENCIES = \ + src/processor/basic_code_modules.lo \ + src/processor/basic_source_line_resolver.lo \ + src/processor/call_stack.lo src/processor/logging.lo \ + src/processor/minidump.lo src/processor/pathname_stripper.lo \ + src/processor/stackwalker.lo \ + src/processor/stackwalker_amd64.lo \ + src/processor/stackwalker_ppc.lo \ + src/processor/stackwalker_sparc.lo \ + src/processor/stackwalker_x86.lo SCRIPTS = $(noinst_SCRIPTS) -AM_V_P = $(am__v_P_@AM_V@) -am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) -am__v_P_0 = false -am__v_P_1 = : -AM_V_GEN = $(am__v_GEN_@AM_V@) -am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -am__v_GEN_0 = @echo " GEN " $@; -am__v_GEN_1 = -AM_V_at = $(am__v_at_@AM_V@) -am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -am__v_at_0 = @ -am__v_at_1 = -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src +DEFAULT_INCLUDES = -I. -I$(top_builddir)/src@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp am__depfiles_maybe = depfiles -am__mv = mv -f -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = -CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) -am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) -am__v_CPPAS_0 = @echo " CPPAS " $@; -am__v_CPPAS_1 = -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_@AM_V@) -am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -am__v_CC_0 = @echo " CC " $@; -am__v_CC_1 = -CCLD = $(CC) -LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_@AM_V@) -am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -am__v_CCLD_0 = @echo " CCLD " $@; -am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_@AM_V@) -am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) -am__v_CXX_0 = @echo " CXX " $@; -am__v_CXX_1 = +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) -CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ - -o $@ -AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) -am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) -am__v_CXXLD_0 = @echo " CXXLD " $@; -am__v_CXXLD_1 = -SOURCES = $(src_client_linux_libbreakpad_client_a_SOURCES) \ - $(src_libbreakpad_a_SOURCES) \ - $(src_testing_libtesting_a_SOURCES) \ - $(src_third_party_libdisasm_libdisasm_a_SOURCES) \ - $(src_client_linux_linux_client_unittest_SOURCES) \ - $(src_client_linux_linux_client_unittest_shlib_SOURCES) \ - $(src_client_linux_linux_dumper_unittest_helper_SOURCES) \ - $(src_common_dumper_unittest_SOURCES) \ - $(src_common_mac_macho_reader_unittest_SOURCES) \ - $(src_common_test_assembler_unittest_SOURCES) \ +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(src_libbreakpad_la_SOURCES) \ $(src_processor_address_map_unittest_SOURCES) \ $(src_processor_basic_source_line_resolver_unittest_SOURCES) \ - $(src_processor_cfi_frame_info_unittest_SOURCES) \ $(src_processor_contained_range_map_unittest_SOURCES) \ - $(src_processor_disassembler_x86_unittest_SOURCES) \ - $(src_processor_exploitability_unittest_SOURCES) \ - $(src_processor_fast_source_line_resolver_unittest_SOURCES) \ - $(src_processor_map_serializers_unittest_SOURCES) \ - $(src_processor_microdump_processor_unittest_SOURCES) \ - $(src_processor_microdump_stackwalk_SOURCES) \ $(src_processor_minidump_dump_SOURCES) \ $(src_processor_minidump_processor_unittest_SOURCES) \ $(src_processor_minidump_stackwalk_SOURCES) \ - $(src_processor_minidump_unittest_SOURCES) \ $(src_processor_pathname_stripper_unittest_SOURCES) \ $(src_processor_postfix_evaluator_unittest_SOURCES) \ - $(src_processor_proc_maps_linux_unittest_SOURCES) \ - $(src_processor_range_map_shrink_down_unittest_SOURCES) \ $(src_processor_range_map_unittest_SOURCES) \ - $(src_processor_stackwalker_address_list_unittest_SOURCES) \ - $(src_processor_stackwalker_amd64_unittest_SOURCES) \ - $(src_processor_stackwalker_arm64_unittest_SOURCES) \ - $(src_processor_stackwalker_arm_unittest_SOURCES) \ - $(src_processor_stackwalker_mips64_unittest_SOURCES) \ - $(src_processor_stackwalker_mips_unittest_SOURCES) \ - $(src_processor_stackwalker_selftest_SOURCES) \ - $(src_processor_stackwalker_x86_unittest_SOURCES) \ - $(src_processor_static_address_map_unittest_SOURCES) \ - $(src_processor_static_contained_range_map_unittest_SOURCES) \ - $(src_processor_static_map_unittest_SOURCES) \ - $(src_processor_static_range_map_unittest_SOURCES) \ - $(src_processor_synth_minidump_unittest_SOURCES) \ - $(src_tools_linux_core2md_core2md_SOURCES) \ - $(src_tools_linux_dump_syms_dump_syms_SOURCES) \ - $(src_tools_linux_md2core_minidump_2_core_SOURCES) \ - $(src_tools_linux_md2core_minidump_2_core_unittest_SOURCES) \ - $(src_tools_linux_symupload_minidump_upload_SOURCES) \ - $(src_tools_linux_symupload_sym_upload_SOURCES) \ - $(src_tools_mac_dump_syms_dump_syms_mac_SOURCES) -DIST_SOURCES = \ - $(am__src_client_linux_libbreakpad_client_a_SOURCES_DIST) \ - $(am__src_libbreakpad_a_SOURCES_DIST) \ - $(am__src_testing_libtesting_a_SOURCES_DIST) \ - $(am__src_third_party_libdisasm_libdisasm_a_SOURCES_DIST) \ - $(src_client_linux_linux_client_unittest_SOURCES) \ - $(am__src_client_linux_linux_client_unittest_shlib_SOURCES_DIST) \ - $(am__src_client_linux_linux_dumper_unittest_helper_SOURCES_DIST) \ - $(am__src_common_dumper_unittest_SOURCES_DIST) \ - $(am__src_common_mac_macho_reader_unittest_SOURCES_DIST) \ - $(am__src_common_test_assembler_unittest_SOURCES_DIST) \ - $(am__src_processor_address_map_unittest_SOURCES_DIST) \ - $(am__src_processor_basic_source_line_resolver_unittest_SOURCES_DIST) \ - $(am__src_processor_cfi_frame_info_unittest_SOURCES_DIST) \ - $(am__src_processor_contained_range_map_unittest_SOURCES_DIST) \ - $(am__src_processor_disassembler_x86_unittest_SOURCES_DIST) \ - $(am__src_processor_exploitability_unittest_SOURCES_DIST) \ - $(am__src_processor_fast_source_line_resolver_unittest_SOURCES_DIST) \ - $(am__src_processor_map_serializers_unittest_SOURCES_DIST) \ - $(am__src_processor_microdump_processor_unittest_SOURCES_DIST) \ - $(am__src_processor_microdump_stackwalk_SOURCES_DIST) \ - $(am__src_processor_minidump_dump_SOURCES_DIST) \ - $(am__src_processor_minidump_processor_unittest_SOURCES_DIST) \ - $(am__src_processor_minidump_stackwalk_SOURCES_DIST) \ - $(am__src_processor_minidump_unittest_SOURCES_DIST) \ - $(am__src_processor_pathname_stripper_unittest_SOURCES_DIST) \ - $(am__src_processor_postfix_evaluator_unittest_SOURCES_DIST) \ - $(am__src_processor_proc_maps_linux_unittest_SOURCES_DIST) \ - $(am__src_processor_range_map_shrink_down_unittest_SOURCES_DIST) \ - $(am__src_processor_range_map_unittest_SOURCES_DIST) \ - $(am__src_processor_stackwalker_address_list_unittest_SOURCES_DIST) \ - $(am__src_processor_stackwalker_amd64_unittest_SOURCES_DIST) \ - $(am__src_processor_stackwalker_arm64_unittest_SOURCES_DIST) \ - $(am__src_processor_stackwalker_arm_unittest_SOURCES_DIST) \ - $(am__src_processor_stackwalker_mips64_unittest_SOURCES_DIST) \ - $(am__src_processor_stackwalker_mips_unittest_SOURCES_DIST) \ - $(am__src_processor_stackwalker_selftest_SOURCES_DIST) \ - $(am__src_processor_stackwalker_x86_unittest_SOURCES_DIST) \ - $(am__src_processor_static_address_map_unittest_SOURCES_DIST) \ - $(am__src_processor_static_contained_range_map_unittest_SOURCES_DIST) \ - $(am__src_processor_static_map_unittest_SOURCES_DIST) \ - $(am__src_processor_static_range_map_unittest_SOURCES_DIST) \ - $(am__src_processor_synth_minidump_unittest_SOURCES_DIST) \ - $(am__src_tools_linux_core2md_core2md_SOURCES_DIST) \ - $(am__src_tools_linux_dump_syms_dump_syms_SOURCES_DIST) \ - $(am__src_tools_linux_md2core_minidump_2_core_SOURCES_DIST) \ - $(am__src_tools_linux_md2core_minidump_2_core_unittest_SOURCES_DIST) \ - $(am__src_tools_linux_symupload_minidump_upload_SOURCES_DIST) \ - $(am__src_tools_linux_symupload_sym_upload_SOURCES_DIST) \ - $(am__src_tools_mac_dump_syms_dump_syms_mac_SOURCES_DIST) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DATA = $(dist_doc_DATA) $(pkgconfig_DATA) -am__includecl_HEADERS_DIST = $(top_srcdir)/src/common/linux/*.h -am__includeclc_HEADERS_DIST = \ - $(top_srcdir)/src/client/linux/crash_generation/*.h -am__includecldwc_HEADERS_DIST = \ - $(top_srcdir)/src/client/linux/dump_writer_common/*.h -am__includeclh_HEADERS_DIST = \ - $(top_srcdir)/src/client/linux/handler/*.h -am__includeclm_HEADERS_DIST = \ - $(top_srcdir)/src/client/linux/minidump_writer/*.h -am__includelss_HEADERS_DIST = $(top_srcdir)/src/third_party/lss/*.h -HEADERS = $(includec_HEADERS) $(includecl_HEADERS) \ - $(includeclc_HEADERS) $(includecldwc_HEADERS) \ - $(includeclh_HEADERS) $(includeclm_HEADERS) \ - $(includegbc_HEADERS) $(includelss_HEADERS) \ - $(includep_HEADERS) -am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) -# Read a list of newline-separated strings from the standard input, -# and print each of them once, without duplicates. Input order is -# *not* preserved. -am__uniquify_input = $(AWK) '\ - BEGIN { nonempty = 0; } \ - { items[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in items) print i; }; } \ -' -# Make sure the list of sources is unique. This is necessary because, -# e.g., the same source file might be shared among _SOURCES variables -# for different programs/libraries. -am__define_uniq_tagged_files = \ - list='$(am__tagged_files)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | $(am__uniquify_input)` + $(src_processor_stackwalker_selftest_SOURCES) +DIST_SOURCES = $(src_libbreakpad_la_SOURCES) \ + $(src_processor_address_map_unittest_SOURCES) \ + $(src_processor_basic_source_line_resolver_unittest_SOURCES) \ + $(src_processor_contained_range_map_unittest_SOURCES) \ + $(src_processor_minidump_dump_SOURCES) \ + $(src_processor_minidump_processor_unittest_SOURCES) \ + $(src_processor_minidump_stackwalk_SOURCES) \ + $(src_processor_pathname_stripper_unittest_SOURCES) \ + $(src_processor_postfix_evaluator_unittest_SOURCES) \ + $(src_processor_range_map_unittest_SOURCES) \ + $(src_processor_stackwalker_selftest_SOURCES) +dist_docDATA_INSTALL = $(INSTALL_DATA) +DATA = $(dist_doc_DATA) ETAGS = etags CTAGS = ctags -CSCOPE = cscope -AM_RECURSIVE_TARGETS = cscope check recheck -am__tty_colors_dummy = \ - mgn= red= grn= lgn= blu= brg= std=; \ - am__color_tests=no -am__tty_colors = { \ - $(am__tty_colors_dummy); \ - if test "X$(AM_COLOR_TESTS)" = Xno; then \ - am__color_tests=no; \ - elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ - am__color_tests=yes; \ - elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ - am__color_tests=yes; \ - fi; \ - if test $$am__color_tests = yes; then \ - red=''; \ - grn=''; \ - lgn=''; \ - blu=''; \ - mgn=''; \ - brg=''; \ - std=''; \ - fi; \ -} -am__recheck_rx = ^[ ]*:recheck:[ ]* -am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* -am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* -# A command that, given a newline-separated list of test names on the -# standard input, print the name of the tests that are to be re-run -# upon "make recheck". -am__list_recheck_tests = $(AWK) '{ \ - recheck = 1; \ - while ((rc = (getline line < ($$0 ".trs"))) != 0) \ - { \ - if (rc < 0) \ - { \ - if ((getline line2 < ($$0 ".log")) < 0) \ - recheck = 0; \ - break; \ - } \ - else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ - { \ - recheck = 0; \ - break; \ - } \ - else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ - { \ - break; \ - } \ - }; \ - if (recheck) \ - print $$0; \ - close ($$0 ".trs"); \ - close ($$0 ".log"); \ -}' -# A command that, given a newline-separated list of test names on the -# standard input, create the global log from their .trs and .log files. -am__create_global_log = $(AWK) ' \ -function fatal(msg) \ -{ \ - print "fatal: making $@: " msg | "cat >&2"; \ - exit 1; \ -} \ -function rst_section(header) \ -{ \ - print header; \ - len = length(header); \ - for (i = 1; i <= len; i = i + 1) \ - printf "="; \ - printf "\n\n"; \ -} \ -{ \ - copy_in_global_log = 1; \ - global_test_result = "RUN"; \ - while ((rc = (getline line < ($$0 ".trs"))) != 0) \ - { \ - if (rc < 0) \ - fatal("failed to read from " $$0 ".trs"); \ - if (line ~ /$(am__global_test_result_rx)/) \ - { \ - sub("$(am__global_test_result_rx)", "", line); \ - sub("[ ]*$$", "", line); \ - global_test_result = line; \ - } \ - else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ - copy_in_global_log = 0; \ - }; \ - if (copy_in_global_log) \ - { \ - rst_section(global_test_result ": " $$0); \ - while ((rc = (getline line < ($$0 ".log"))) != 0) \ - { \ - if (rc < 0) \ - fatal("failed to read from " $$0 ".log"); \ - print line; \ - }; \ - printf "\n"; \ - }; \ - close ($$0 ".trs"); \ - close ($$0 ".log"); \ -}' -# Restructured Text title. -am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } -# Solaris 10 'make', and several other traditional 'make' implementations, -# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it -# by disabling -e (using the XSI extension "set +e") if it's set. -am__sh_e_setup = case $$- in *e*) set +e;; esac -# Default flags passed to test drivers. -am__common_driver_flags = \ - --color-tests "$$am__color_tests" \ - --enable-hard-errors "$$am__enable_hard_errors" \ - --expect-failure "$$am__expect_failure" -# To be inserted before the command running the test. Creates the -# directory for the log if needed. Stores in $dir the directory -# containing $f, in $tst the test, in $log the log. Executes the -# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and -# passes TESTS_ENVIRONMENT. Set up options for the wrapper that -# will run the test scripts (or their associated LOG_COMPILER, if -# thy have one). -am__check_pre = \ -$(am__sh_e_setup); \ -$(am__vpath_adj_setup) $(am__vpath_adj) \ -$(am__tty_colors); \ -srcdir=$(srcdir); export srcdir; \ -case "$@" in \ - */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ - *) am__odir=.;; \ -esac; \ -test "x$$am__odir" = x"." || test -d "$$am__odir" \ - || $(MKDIR_P) "$$am__odir" || exit $$?; \ -if test -f "./$$f"; then dir=./; \ -elif test -f "$$f"; then dir=; \ -else dir="$(srcdir)/"; fi; \ -tst=$$dir$$f; log='$@'; \ -if test -n '$(DISABLE_HARD_ERRORS)'; then \ - am__enable_hard_errors=no; \ -else \ - am__enable_hard_errors=yes; \ -fi; \ -case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ - am__expect_failure=yes;; \ - *) \ - am__expect_failure=no;; \ -esac; \ -$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) -# A shell command to get the names of the tests scripts with any registered -# extension removed (i.e., equivalently, the names of the test logs, with -# the '.log' extension removed). The result is saved in the shell variable -# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, -# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", -# since that might cause problem with VPATH rewrites for suffix-less tests. -# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. -am__set_TESTS_bases = \ - bases='$(TEST_LOGS)'; \ - bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ - bases=`echo $$bases` -RECHECK_LOGS = $(TEST_LOGS) -TEST_SUITE_LOG = test-suite.log -TEST_EXTENSIONS = @EXEEXT@ .test -LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) -am__set_b = \ - case '$@' in \ - */*) \ - case '$*' in \ - */*) b='$*';; \ - *) b=`echo '$@' | sed 's/\.log$$//'`; \ - esac;; \ - *) \ - b='$*';; \ - esac -am__test_logs1 = $(TESTS:=.log) -am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) -TEST_LOGS = $(am__test_logs2:.test.log=.log) -TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/autotools/test-driver -TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ - $(TEST_LOG_FLAGS) -am__DIST_COMMON = $(srcdir)/Makefile.in \ - $(srcdir)/breakpad-client.pc.in $(srcdir)/breakpad.pc.in \ - $(top_srcdir)/autotools/ar-lib $(top_srcdir)/autotools/compile \ - $(top_srcdir)/autotools/config.guess \ - $(top_srcdir)/autotools/config.sub \ - $(top_srcdir)/autotools/depcomp \ - $(top_srcdir)/autotools/install-sh \ - $(top_srcdir)/autotools/missing \ - $(top_srcdir)/autotools/test-driver \ - $(top_srcdir)/src/config.h.in AUTHORS ChangeLog INSTALL NEWS \ - autotools/ar-lib autotools/compile autotools/config.guess \ - autotools/config.sub autotools/depcomp autotools/install-sh \ - autotools/ltmain.sh autotools/missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__post_remove_distdir = $(am__remove_distdir) + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best -DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ -CCAS = @CCAS@ -CCASDEPMODE = @CCASDEPMODE@ -CCASFLAGS = @CCASFLAGS@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ +CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ +ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ -GMOCK_CFLAGS = @GMOCK_CFLAGS@ -GMOCK_CONFIG = @GMOCK_CONFIG@ -GMOCK_LIBS = @GMOCK_LIBS@ +F77 = @F77@ +FFLAGS = @FFLAGS@ GREP = @GREP@ -GTEST_CFLAGS = @GTEST_CFLAGS@ -GTEST_CONFIG = @GTEST_CONFIG@ -GTEST_LIBS = @GTEST_LIBS@ -HAVE_CXX11 = @HAVE_CXX11@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ @@ -1934,23 +308,23 @@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBTOOL_DEPS = @LIBTOOL_DEPS@ +LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ +NMEDIT = @NMEDIT@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ +SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -1959,15 +333,14 @@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ -ax_pthread_config = @ax_pthread_config@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ @@ -2005,1118 +378,220 @@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # This allows #includes to be relative to src/ AM_CPPFLAGS = -I$(top_srcdir)/src -AM_CFLAGS = $(am__append_3) -AM_CXXFLAGS = $(am__append_1) $(am__append_2) $(am__append_4) - -# Specify include paths for ac macros -ACLOCAL_AMFLAGS = -I m4 - -# License file is called LICENSE not COPYING -AUTOMAKE_OPTIONS = foreign dist_doc_DATA = \ AUTHORS \ + COPYING \ ChangeLog \ INSTALL \ - LICENSE \ NEWS \ - README.md + README -@LINUX_HOST_TRUE@includeclhdir = $(includedir)/$(PACKAGE)/client/linux/handler -@LINUX_HOST_TRUE@includeclh_HEADERS = $(top_srcdir)/src/client/linux/handler/*.h -@LINUX_HOST_TRUE@includecldwcdir = $(includedir)/$(PACKAGE)/client/linux/dump_writer_common -@LINUX_HOST_TRUE@includecldwc_HEADERS = $(top_srcdir)/src/client/linux/dump_writer_common/*.h -@LINUX_HOST_TRUE@includeclmdir = $(includedir)/$(PACKAGE)/client/linux/minidump_writer -@LINUX_HOST_TRUE@includeclm_HEADERS = $(top_srcdir)/src/client/linux/minidump_writer/*.h -@LINUX_HOST_TRUE@includeclcdir = $(includedir)/$(PACKAGE)/client/linux/crash_generation -@LINUX_HOST_TRUE@includeclc_HEADERS = $(top_srcdir)/src/client/linux/crash_generation/*.h -@LINUX_HOST_TRUE@includelssdir = $(includedir)/$(PACKAGE)/third_party/lss -@LINUX_HOST_TRUE@includelss_HEADERS = $(top_srcdir)/src/third_party/lss/*.h -@LINUX_HOST_TRUE@includecldir = $(includedir)/$(PACKAGE)/common/linux -@LINUX_HOST_TRUE@includecl_HEADERS = $(top_srcdir)/src/common/linux/*.h -includegbcdir = $(includedir)/$(PACKAGE)/google_breakpad/common -includegbc_HEADERS = $(top_srcdir)/src/google_breakpad/common/*.h -includecdir = $(includedir)/$(PACKAGE)/common -includec_HEADERS = $(top_srcdir)/src/common/*.h -includepdir = $(includedir)/$(PACKAGE)/processor -includep_HEADERS = $(top_srcdir)/src/processor/*.h -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = $(am__append_6) $(am__append_9) -@SYSTEM_TEST_LIBS_FALSE@TEST_CFLAGS = \ -@SYSTEM_TEST_LIBS_FALSE@ -I$(top_srcdir)/src/testing/include \ -@SYSTEM_TEST_LIBS_FALSE@ -I$(top_srcdir)/src/testing/gtest/include \ -@SYSTEM_TEST_LIBS_FALSE@ -I$(top_srcdir)/src/testing/gtest \ -@SYSTEM_TEST_LIBS_FALSE@ -I$(top_srcdir)/src/testing +lib_LTLIBRARIES = src/libbreakpad.la +src_libbreakpad_la_SOURCES = \ + src/google_breakpad/common/breakpad_types.h \ + src/google_breakpad/common/minidump_format.h \ + src/google_breakpad/common/minidump_size.h \ + src/google_breakpad/processor/basic_source_line_resolver.h \ + src/google_breakpad/processor/call_stack.h \ + src/google_breakpad/processor/code_module.h \ + src/google_breakpad/processor/code_modules.h \ + src/google_breakpad/processor/memory_region.h \ + src/google_breakpad/processor/minidump.h \ + src/google_breakpad/processor/minidump_processor.h \ + src/google_breakpad/processor/process_state.h \ + src/google_breakpad/processor/source_line_resolver_interface.h \ + src/google_breakpad/processor/stack_frame.h \ + src/google_breakpad/processor/stack_frame_cpu.h \ + src/google_breakpad/processor/stackwalker.h \ + src/google_breakpad/processor/symbol_supplier.h \ + src/google_breakpad/processor/system_info.h \ + src/processor/address_map-inl.h \ + src/processor/address_map.h \ + src/processor/basic_code_module.h \ + src/processor/basic_code_modules.cc \ + src/processor/basic_code_modules.h \ + src/processor/basic_source_line_resolver.cc \ + src/processor/call_stack.cc \ + src/processor/contained_range_map-inl.h \ + src/processor/contained_range_map.h \ + src/processor/linked_ptr.h \ + src/processor/logging.h \ + src/processor/logging.cc \ + src/processor/minidump.cc \ + src/processor/minidump_processor.cc \ + src/processor/pathname_stripper.cc \ + src/processor/pathname_stripper.h \ + src/processor/postfix_evaluator-inl.h \ + src/processor/postfix_evaluator.h \ + src/processor/process_state.cc \ + src/processor/range_map-inl.h \ + src/processor/range_map.h \ + src/processor/scoped_ptr.h \ + src/processor/simple_symbol_supplier.cc \ + src/processor/simple_symbol_supplier.h \ + src/processor/stack_frame_info.h \ + src/processor/stackwalker.cc \ + src/processor/stackwalker_amd64.cc \ + src/processor/stackwalker_amd64.h \ + src/processor/stackwalker_ppc.cc \ + src/processor/stackwalker_ppc.h \ + src/processor/stackwalker_sparc.cc \ + src/processor/stackwalker_sparc.h \ + src/processor/stackwalker_x86.cc \ + src/processor/stackwalker_x86.h -@SYSTEM_TEST_LIBS_TRUE@TEST_CFLAGS = $(GTEST_CFLAGS) $(GMOCK_CFLAGS) -@SYSTEM_TEST_LIBS_FALSE@TEST_LIBS = src/testing/libtesting.a -@SYSTEM_TEST_LIBS_TRUE@TEST_LIBS = $(GTEST_LIBS) -lgtest_main $(GMOCK_LIBS) -@SYSTEM_TEST_LIBS_FALSE@TEST_DEPS = $(TEST_LIBS) -@SYSTEM_TEST_LIBS_TRUE@TEST_DEPS = -check_LIBRARIES = src/testing/libtesting.a -noinst_LIBRARIES = $(am__append_7) -lib_LIBRARIES = $(am__append_5) $(am__append_8) -CLEANFILES = $(am__append_13) -@SYSTEM_TEST_LIBS_FALSE@src_testing_libtesting_a_SOURCES = \ -@SYSTEM_TEST_LIBS_FALSE@ src/breakpad_googletest_includes.h \ -@SYSTEM_TEST_LIBS_FALSE@ src/testing/gtest/src/gtest-all.cc \ -@SYSTEM_TEST_LIBS_FALSE@ src/testing/gtest/src/gtest_main.cc \ -@SYSTEM_TEST_LIBS_FALSE@ src/testing/src/gmock-all.cc - -@SYSTEM_TEST_LIBS_FALSE@src_testing_libtesting_a_CPPFLAGS = \ -@SYSTEM_TEST_LIBS_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@LINUX_HOST_TRUE@src_client_linux_libbreakpad_client_a_SOURCES = src/client/linux/crash_generation/crash_generation_client.cc \ -@LINUX_HOST_TRUE@ src/client/linux/crash_generation/crash_generation_server.cc \ -@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/thread_info.cc \ -@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/ucontext_reader.cc \ -@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler.cc \ -@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler.h \ -@LINUX_HOST_TRUE@ src/client/linux/handler/minidump_descriptor.cc \ -@LINUX_HOST_TRUE@ src/client/linux/handler/minidump_descriptor.h \ -@LINUX_HOST_TRUE@ src/client/linux/log/log.cc \ -@LINUX_HOST_TRUE@ src/client/linux/log/log.h \ -@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer.cc \ -@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer.h \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_core_dumper.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_dumper.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_ptrace_dumper.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer.cc \ -@LINUX_HOST_TRUE@ src/client/minidump_file_writer-inl.h \ -@LINUX_HOST_TRUE@ src/client/minidump_file_writer.cc \ -@LINUX_HOST_TRUE@ src/client/minidump_file_writer.h \ -@LINUX_HOST_TRUE@ src/common/convert_UTF.c \ -@LINUX_HOST_TRUE@ src/common/convert_UTF.h src/common/md5.cc \ -@LINUX_HOST_TRUE@ src/common/md5.h \ -@LINUX_HOST_TRUE@ src/common/string_conversion.cc \ -@LINUX_HOST_TRUE@ src/common/string_conversion.h \ -@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump.cc \ -@LINUX_HOST_TRUE@ src/common/linux/elfutils.cc \ -@LINUX_HOST_TRUE@ src/common/linux/elfutils.h \ -@LINUX_HOST_TRUE@ src/common/linux/file_id.cc \ -@LINUX_HOST_TRUE@ src/common/linux/file_id.h \ -@LINUX_HOST_TRUE@ src/common/linux/guid_creator.cc \ -@LINUX_HOST_TRUE@ src/common/linux/guid_creator.h \ -@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.cc \ -@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.cc \ -@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.cc \ -@LINUX_HOST_TRUE@ $(am__append_10) -@DISABLE_PROCESSOR_FALSE@src_libbreakpad_a_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/common/breakpad_types.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/common/minidump_format.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/common/minidump_size.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/basic_source_line_resolver.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/call_stack.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/code_module.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/code_modules.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/dump_context.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/dump_object.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/exploitability.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/fast_source_line_resolver.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/memory_region.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/microdump.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/microdump_processor.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/minidump.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/minidump_processor.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/process_result.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/process_state.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/proc_maps_linux.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/source_line_resolver_base.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/source_line_resolver_interface.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame_cpu.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stack_frame_symbolizer.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/stackwalker.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/symbol_supplier.h \ -@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/system_info.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/address_map-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/address_map.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_module.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver_types.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_types.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/linked_ptr.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_factory.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/range_map-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/range_map.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_serializer-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_serializer.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/windows_frame_info.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base_types.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_iterator-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_iterator.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_map-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_map.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map-inl.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.h - -@DISABLE_PROCESSOR_FALSE@src_third_party_libdisasm_libdisasm_a_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_implicit.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_implicit.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_insn.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_insn.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_invariant.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_invariant.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_modrm.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_modrm.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_opcode_tables.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_opcode_tables.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_operand.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_operand.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_reg.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_reg.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_settings.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/ia32_settings.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdis.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/qword.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_disasm.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_format.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_imm.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_imm.h \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_insn.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_misc.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_operand_list.c \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/x86_operand_list.h - -@DISABLE_PROCESSOR_FALSE@check_SCRIPTS = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_stackwalk_test \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_stackwalk_machine_readable_test \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_dump_test \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk_test \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk_machine_readable_test +check_SCRIPTS = \ + src/processor/minidump_dump_test \ + src/processor/minidump_stackwalk_test \ + src/processor/minidump_stackwalk_machine_readable_test TESTS = $(check_PROGRAMS) $(check_SCRIPTS) -# The default Autotools test driver script. -@ANDROID_HOST_FALSE@LOG_DRIVER = $(top_srcdir)/autotools/test-driver - -# Since Autotools 1.2, tests are run through a special "test driver" script. -# Unfortunately, it's not possible anymore to specify an alternative shell to -# run them on connected devices, so use a slightly modified version of the -# driver for Android. -@ANDROID_HOST_TRUE@LOG_DRIVER = $(top_srcdir)/android/test-driver -@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_SOURCES = \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc - -@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_LDFLAGS = $(PTHREAD_CFLAGS) -@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CC = $(PTHREAD_CC) -@ANDROID_HOST_FALSE@@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CXXFLAGS = $(PTHREAD_CFLAGS) -# On Android PTHREAD_CFLAGS is empty, and adding src/common/android/include -# to the include path is necessary to build this program. -@ANDROID_HOST_TRUE@@LINUX_HOST_TRUE@src_client_linux_linux_dumper_unittest_helper_CXXFLAGS = $(AM_CXXFLAGS) -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_SOURCES = \ -@LINUX_HOST_TRUE@ $(src_testing_libtesting_a_SOURCES) \ -@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler_unittest.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/directory_reader_unittest.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/cpu_set_unittest.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/line_reader_unittest.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_core_dumper.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_core_dumper_unittest.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer_unittest.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc \ -@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump.cc \ -@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support_unittest.cc \ -@LINUX_HOST_TRUE@ src/common/linux/tests/auto_testfile.h \ -@LINUX_HOST_TRUE@ src/common/linux/tests/crash_generator.cc \ -@LINUX_HOST_TRUE@ src/common/memory_unittest.cc \ -@LINUX_HOST_TRUE@ src/common/tests/auto_tempdir.h \ -@LINUX_HOST_TRUE@ src/common/tests/file_utils.cc \ -@LINUX_HOST_TRUE@ src/common/tests/file_utils.h \ -@LINUX_HOST_TRUE@ src/processor/basic_code_modules.cc \ -@LINUX_HOST_TRUE@ src/processor/dump_context.cc \ -@LINUX_HOST_TRUE@ src/processor/dump_object.cc \ -@LINUX_HOST_TRUE@ src/processor/logging.cc \ -@LINUX_HOST_TRUE@ src/processor/minidump.cc \ -@LINUX_HOST_TRUE@ src/processor/pathname_stripper.cc \ -@LINUX_HOST_TRUE@ src/processor/proc_maps_linux.cc \ -@LINUX_HOST_TRUE@ $(am__append_21) \ -@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer_unittest.cc \ -@LINUX_HOST_TRUE@ $(am__append_22) -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_CPPFLAGS = \ -@LINUX_HOST_TRUE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_LDFLAGS = \ -@LINUX_HOST_TRUE@ -shared -Wl,-h,linux_client_unittest_shlib \ -@LINUX_HOST_TRUE@ $(am__append_23) -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_LDADD = \ -@LINUX_HOST_TRUE@ src/client/linux/crash_generation/crash_generation_client.o \ -@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/thread_info.o \ -@LINUX_HOST_TRUE@ src/client/linux/dump_writer_common/ucontext_reader.o \ -@LINUX_HOST_TRUE@ src/client/linux/handler/exception_handler.o \ -@LINUX_HOST_TRUE@ src/client/linux/handler/minidump_descriptor.o \ -@LINUX_HOST_TRUE@ src/client/linux/log/log.o \ -@LINUX_HOST_TRUE@ src/client/linux/microdump_writer/microdump_writer.o \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_dumper.o \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/linux_ptrace_dumper.o \ -@LINUX_HOST_TRUE@ src/client/linux/minidump_writer/minidump_writer.o \ -@LINUX_HOST_TRUE@ src/client/minidump_file_writer.o \ -@LINUX_HOST_TRUE@ src/common/convert_UTF.o \ -@LINUX_HOST_TRUE@ src/common/md5.o \ -@LINUX_HOST_TRUE@ src/common/linux/elfutils.o \ -@LINUX_HOST_TRUE@ src/common/linux/file_id.o \ -@LINUX_HOST_TRUE@ src/common/linux/guid_creator.o \ -@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.o \ -@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.o \ -@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.o \ -@LINUX_HOST_TRUE@ src/common/string_conversion.o \ -@LINUX_HOST_TRUE@ $(TEST_LIBS) \ -@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_shlib_DEPENDENCIES = \ -@LINUX_HOST_TRUE@ src/client/linux/linux_dumper_unittest_helper \ -@LINUX_HOST_TRUE@ src/client/linux/libbreakpad_client.a \ -@LINUX_HOST_TRUE@ $(TEST_DEPS) \ -@LINUX_HOST_TRUE@ src/libbreakpad.a - -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_SOURCES = -# The extra-long build id is for a test in minidump_writer_unittest.cc. -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_LDFLAGS = \ -@LINUX_HOST_TRUE@ -Wl,-rpath,'$$ORIGIN' \ -@LINUX_HOST_TRUE@ -Wl,--build-id=0x000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f \ -@LINUX_HOST_TRUE@ $(am__append_24) -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_LDADD = \ -@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib \ -@LINUX_HOST_TRUE@ $(TEST_LIBS) - -@LINUX_HOST_TRUE@src_client_linux_linux_client_unittest_DEPENDENCIES = \ -@LINUX_HOST_TRUE@ src/client/linux/linux_client_unittest_shlib - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_SOURCES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/core2md/core2md.cc - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_core2md_core2md_LDADD = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/client/linux/libbreakpad_client.a - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_dump_syms_dump_syms_SOURCES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/crc32.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elfutils.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/file_id.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/dump_syms/dump_syms.cc - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_SOURCES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump-2-core.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump_memory_range.h - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_minidump_upload_SOURCES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/http_upload.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/minidump_upload.cc - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_minidump_upload_LDADD = -ldl -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_sym_upload_SOURCES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/http_upload.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/http_upload.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/symbol_upload.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/symbol_upload.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/linux/symupload/sym_upload.cc - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_linux_symupload_sym_upload_LDADD = -ldl -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_mac_dump_syms_dump_syms_mac_SOURCES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/md5.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/arch_utilities.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/dump_syms.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/dump_syms.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/file_id.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/file_id.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_id.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_id.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_reader.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_utilities.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_utilities.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_walker.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_walker.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/tools/mac/dump_syms/dump_syms_tool.cc - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ -I$(top_srcdir)/src/third_party/mac_headers \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ -DHAVE_MACH_O_NLIST_H - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_SOURCES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/byte_cursor_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/memory_range_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/test_assembler.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader-inl.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/cfi_assembler.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/cfi_assembler.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader_cfi_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader_die_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader_test_common.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/crc32.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/dump_symbols_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_core_dump_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elf_symbols_to_module_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/elfutils.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/file_id.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/file_id_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/linux_libc_support.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/memory_mapped_file_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/safe_readlink.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/safe_readlink_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/synth_elf.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/synth_elf_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/tests/crash_generator.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/linux/tests/crash_generator.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/testdata/func-line-pairing.h \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/tests/file_utils.cc - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_CPPFLAGS = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_dumper_unittest_LDADD = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(TEST_LIBS) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_mac_macho_reader_unittest_SOURCES = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cfi_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_cu_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf_line_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/language.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/md5.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/stabs_to_module.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/test_assembler.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/bytereader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/cfi_assembler.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2diehandler.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/dwarf2reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/dwarf/elf_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/arch_utilities.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/file_id.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_id.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_reader.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_reader_unittest.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_utilities.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/mac/macho_walker.cc \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ src/common/tests/file_utils.cc - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_mac_macho_reader_unittest_CPPFLAGS = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ -I$(top_srcdir)/src/third_party/mac_headers \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ -DHAVE_MACH_O_NLIST_H \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) - -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@src_common_mac_macho_reader_unittest_LDADD = \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(TEST_LIBS) \ -@DISABLE_TOOLS_FALSE@@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_SOURCES = \ -@LINUX_HOST_TRUE@ src/tools/linux/md2core/minidump_memory_range_unittest.cc - -@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS = \ -@LINUX_HOST_TRUE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@LINUX_HOST_TRUE@src_tools_linux_md2core_minidump_2_core_unittest_LDADD = \ -@LINUX_HOST_TRUE@ $(TEST_LIBS) \ -@LINUX_HOST_TRUE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/address_map_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_address_map_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o - -@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_basic_source_line_resolver_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_cfi_frame_info_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/contained_range_map_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_contained_range_map_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o - -@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_exploitability_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_disassembler_x86_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_fast_source_line_resolver_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/module_serializer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_map_serializers_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_unittest.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_proc_maps_linux_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_proc_maps_linux_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_proc_maps_linux_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_static_address_map_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_contained_range_map_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_static_contained_range_map_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_map_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_static_map_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/static_range_map_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_static_range_map_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_pathname_stripper_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/postfix_evaluator_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_postfix_evaluator_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_range_map_shrink_down_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_shrink_down_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_range_map_shrink_down_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_range_map_shrink_down_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/range_map_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_range_map_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_selftest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_selftest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_amd64_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_arm64_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_address_list_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips64_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips64_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips64_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_mips64_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/libbreakpad.a \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_processor_stackwalker_x86_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.h \ -@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump_unittest.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump.cc \ -@DISABLE_PROCESSOR_FALSE@ src/processor/synth_minidump.h - -@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_processor_synth_minidump_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.cc \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler.h \ -@DISABLE_PROCESSOR_FALSE@ src/common/test_assembler_unittest.cc - -@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_CPPFLAGS = \ -@DISABLE_PROCESSOR_FALSE@ $(AM_CPPFLAGS) $(TEST_CFLAGS) - -@DISABLE_PROCESSOR_FALSE@src_common_test_assembler_unittest_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ $(TEST_LIBS) \ -@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS) - -@DISABLE_PROCESSOR_FALSE@noinst_SCRIPTS = $(check_SCRIPTS) -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_dump.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_dump_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o - -@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_stackwalk.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_microdump_stackwalk_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalk_common.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_SOURCES = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_stackwalk.cc - -@DISABLE_PROCESSOR_FALSE@src_processor_minidump_stackwalk_LDADD = \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/disassembler_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/proc_maps_linux.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_cpu.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalk_common.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/symbolic_constants_win.o \ -@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \ -@DISABLE_PROCESSOR_FALSE@ src/third_party/libdisasm/libdisasm.a +TESTS_ENVIRONMENT = +src_processor_address_map_unittest_SOURCES = \ + src/processor/address_map_unittest.cc + +src_processor_address_map_unittest_LDADD = \ + src/processor/logging.lo \ + src/processor/pathname_stripper.lo + +src_processor_basic_source_line_resolver_unittest_SOURCES = \ + src/processor/basic_source_line_resolver_unittest.cc + +src_processor_basic_source_line_resolver_unittest_LDADD = \ + src/processor/basic_source_line_resolver.lo \ + src/processor/pathname_stripper.lo \ + src/processor/logging.lo + +src_processor_contained_range_map_unittest_SOURCES = \ + src/processor/contained_range_map_unittest.cc + +src_processor_contained_range_map_unittest_LDADD = \ + src/processor/logging.lo \ + src/processor/pathname_stripper.lo + +src_processor_minidump_processor_unittest_SOURCES = \ + src/processor/minidump_processor_unittest.cc \ + src/testing/gtest/src/gtest-all.cc \ + src/testing/src/gmock-all.cc + +src_processor_minidump_processor_unittest_CPPFLAGS = \ + -I$(top_srcdir)/src/testing/include \ + -I$(top_srcdir)/src/testing/gtest/include \ + -I$(top_srcdir)/src/testing/gtest \ + -I$(top_srcdir)/src/testing + +src_processor_minidump_processor_unittest_LDADD = \ + src/processor/basic_code_modules.lo \ + src/processor/basic_source_line_resolver.lo \ + src/processor/call_stack.lo \ + src/processor/logging.lo \ + src/processor/minidump_processor.lo \ + src/processor/minidump.lo \ + src/processor/pathname_stripper.lo \ + src/processor/process_state.lo \ + src/processor/stackwalker.lo \ + src/processor/stackwalker_amd64.lo \ + src/processor/stackwalker_ppc.lo \ + src/processor/stackwalker_sparc.lo \ + src/processor/stackwalker_x86.lo + +src_processor_pathname_stripper_unittest_SOURCES = \ + src/processor/pathname_stripper_unittest.cc + +src_processor_pathname_stripper_unittest_LDADD = \ + src/processor/pathname_stripper.lo + +src_processor_postfix_evaluator_unittest_SOURCES = \ + src/processor/postfix_evaluator_unittest.cc + +src_processor_postfix_evaluator_unittest_LDADD = \ + src/processor/logging.lo \ + src/processor/pathname_stripper.lo + +src_processor_range_map_unittest_SOURCES = \ + src/processor/range_map_unittest.cc + +src_processor_range_map_unittest_LDADD = \ + src/processor/logging.lo \ + src/processor/pathname_stripper.lo + +src_processor_stackwalker_selftest_SOURCES = \ + src/processor/stackwalker_selftest.cc + +src_processor_stackwalker_selftest_LDADD = \ + src/processor/basic_code_modules.lo \ + src/processor/basic_source_line_resolver.lo \ + src/processor/call_stack.lo \ + src/processor/logging.lo \ + src/processor/minidump.lo \ + src/processor/pathname_stripper.lo \ + src/processor/stackwalker.lo \ + src/processor/stackwalker_amd64.lo \ + src/processor/stackwalker_ppc.lo \ + src/processor/stackwalker_sparc.lo \ + src/processor/stackwalker_x86.lo + +noinst_SCRIPTS = $(check_SCRIPTS) +src_processor_minidump_dump_SOURCES = \ + src/processor/minidump_dump.cc + +src_processor_minidump_dump_LDADD = \ + src/processor/basic_code_modules.lo \ + src/processor/logging.lo \ + src/processor/minidump.lo \ + src/processor/pathname_stripper.lo + +src_processor_minidump_stackwalk_SOURCES = \ + src/processor/minidump_stackwalk.cc + +src_processor_minidump_stackwalk_LDADD = \ + src/processor/basic_code_modules.lo \ + src/processor/basic_source_line_resolver.lo \ + src/processor/call_stack.lo \ + src/processor/logging.lo \ + src/processor/minidump.lo \ + src/processor/minidump_processor.lo \ + src/processor/pathname_stripper.lo \ + src/processor/process_state.lo \ + src/processor/simple_symbol_supplier.lo \ + src/processor/stackwalker.lo \ + src/processor/stackwalker_amd64.lo \ + src/processor/stackwalker_ppc.lo \ + src/processor/stackwalker_sparc.lo \ + src/processor/stackwalker_x86.lo EXTRA_DIST = \ $(SCRIPTS) \ - src/client/linux/data/linux-gate-amd.sym \ - src/client/linux/data/linux-gate-intel.sym \ - src/client/mac/handler/breakpad_nlist_64.cc \ - src/client/mac/handler/breakpad_nlist_64.h \ + src/processor/stackwalk_selftest_sol.s \ + src/client/linux/handler/Makefile \ + src/client/linux/handler/exception_handler.cc \ + src/client/linux/handler/exception_handler.h \ + src/client/linux/handler/exception_handler_test.cc \ + src/client/linux/handler/linux_thread.cc \ + src/client/linux/handler/linux_thread.h \ + src/client/linux/handler/linux_thread_test.cc \ + src/client/linux/handler/minidump_generator.cc \ + src/client/linux/handler/minidump_generator.h \ + src/client/linux/handler/minidump_test.cc \ src/client/mac/handler/dynamic_images.cc \ src/client/mac/handler/dynamic_images.h \ src/client/mac/handler/exception_handler.cc \ src/client/mac/handler/exception_handler.h \ - src/client/mac/handler/mach_vm_compat.h \ + src/client/mac/handler/exception_handler_test.cc \ src/client/mac/handler/minidump_generator.cc \ src/client/mac/handler/minidump_generator.h \ + src/client/mac/handler/minidump_generator_test.cc \ src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj \ - src/client/mac/handler/minidump_tests32-Info.plist \ - src/client/mac/handler/minidump_tests64-Info.plist \ - src/client/mac/handler/obj-cTestCases-Info.plist \ src/client/mac/handler/protected_memory_allocator.cc \ src/client/mac/handler/protected_memory_allocator.h \ - src/client/mac/handler/ucontext_compat.h \ - src/client/mac/handler/testcases/testdata/dump_syms_i386_breakpad.sym \ - src/client/mac/tests/BreakpadFramework_Test.mm \ - src/client/mac/tests/crash_generation_server_test.cc \ - src/client/mac/tests/exception_handler_test.cc \ - src/client/mac/tests/minidump_generator_test.cc \ - src/client/mac/tests/minidump_generator_test_helper.cc \ - src/client/mac/tests/spawn_child_process.h \ - src/client/mac/tests/testlogging.h \ + src/client/minidump_file_writer-inl.h \ + src/client/minidump_file_writer.cc \ + src/client/minidump_file_writer.h \ src/client/minidump_file_writer_unittest.cc \ src/client/solaris/handler/Makefile \ src/client/solaris/handler/exception_handler.cc \ @@ -3127,25 +602,39 @@ EXTRA_DIST = \ src/client/solaris/handler/minidump_test.cc \ src/client/solaris/handler/solaris_lwp.cc \ src/client/solaris/handler/solaris_lwp.h \ - src/client/windows/breakpad_client.gyp \ + src/client/windows/breakpad_client.sln \ src/client/windows/handler/exception_handler.cc \ src/client/windows/handler/exception_handler.h \ - src/client/windows/handler/exception_handler.gyp \ + src/client/windows/handler/exception_handler.vcproj \ src/client/windows/sender/crash_report_sender.cc \ src/client/windows/sender/crash_report_sender.h \ - src/client/windows/sender/crash_report_sender.gyp \ - src/common/dwarf/dwarf2diehandler.h \ - src/common/dwarf/dwarf2enums.h \ - src/common/dwarf/line_state_machine.h \ - src/common/dwarf/types.h \ - src/common/mac/arch_utilities.h \ - src/common/mac/byteswap.h \ + src/client/windows/sender/crash_report_sender.vcproj \ + src/common/convert_UTF.c \ + src/common/convert_UTF.h \ + src/common/linux/dump_symbols.cc \ + src/common/linux/dump_symbols.h \ + src/common/linux/file_id.cc \ + src/common/linux/file_id.h \ + src/common/linux/guid_creator.cc \ + src/common/linux/guid_creator.h \ + src/common/linux/http_upload.cc \ + src/common/linux/http_upload.h \ src/common/mac/HTTPMultipartUpload.h \ src/common/mac/HTTPMultipartUpload.m \ + src/common/mac/dump_syms.h \ + src/common/mac/dump_syms.mm \ + src/common/mac/file_id.cc \ + src/common/mac/file_id.h \ + src/common/mac/macho_id.cc \ + src/common/mac/macho_id.h \ + src/common/mac/macho_utilities.cc \ + src/common/mac/macho_utilities.h \ + src/common/mac/macho_walker.cc \ + src/common/mac/macho_walker.h \ src/common/mac/string_utilities.cc \ src/common/mac/string_utilities.h \ - src/common/mac/super_fat_arch.h \ - src/common/scoped_ptr.h \ + src/common/md5.cc \ + src/common/md5.h \ src/common/solaris/dump_symbols.cc \ src/common/solaris/dump_symbols.h \ src/common/solaris/file_id.cc \ @@ -3153,6 +642,8 @@ EXTRA_DIST = \ src/common/solaris/guid_creator.cc \ src/common/solaris/guid_creator.h \ src/common/solaris/message_output.h \ + src/common/string_conversion.cc \ + src/common/string_conversion.h \ src/common/windows/guid_string.cc \ src/common/windows/guid_string.h \ src/common/windows/http_upload.cc \ @@ -3161,164 +652,28 @@ EXTRA_DIST = \ src/common/windows/pdb_source_line_writer.h \ src/common/windows/string_utils-inl.h \ src/common/windows/string_utils.cc \ - src/processor/stackwalk_common.cc \ - src/processor/stackwalk_common.h \ - src/processor/stackwalker_selftest_sol.s \ - src/processor/testdata/ascii_read_av_block_write.dmp \ - src/processor/testdata/ascii_read_av_clobber_write.dmp \ - src/processor/testdata/ascii_read_av_conditional.dmp \ - src/processor/testdata/ascii_read_av.dmp \ - src/processor/testdata/ascii_read_av_then_jmp.dmp \ - src/processor/testdata/ascii_read_av_xchg_write.dmp \ - src/processor/testdata/ascii_write_av_arg_to_call.dmp \ - src/processor/testdata/ascii_write_av.dmp \ - src/processor/testdata/exec_av_on_stack.dmp \ - src/processor/testdata/linux_divide_by_zero.dmp \ - src/processor/testdata/linux_executable_heap.dmp \ - src/processor/testdata/linux_executable_stack.dmp \ - src/processor/testdata/linux_inside_module_exe_region1.dmp \ - src/processor/testdata/linux_inside_module_exe_region2.dmp \ - src/processor/testdata/linux_jmp_to_0.dmp \ - src/processor/testdata/linux_jmp_to_module_not_exe_region.dmp \ - src/processor/testdata/linux_null_dereference.dmp \ - src/processor/testdata/linux_null_read_av.dmp \ - src/processor/testdata/linux_outside_module.dmp \ - src/processor/testdata/linux_overflow.dmp \ - src/processor/testdata/linux_raise_sigabrt.dmp \ - src/processor/testdata/linux_stack_pointer_in_module.dmp \ - src/processor/testdata/linux_stack_pointer_in_stack.dmp \ - src/processor/testdata/linux_stacksmash.dmp \ - src/processor/testdata/linux_write_to_nonwritable_module.dmp \ - src/processor/testdata/linux_write_to_nonwritable_region_math.dmp \ - src/processor/testdata/linux_write_to_outside_module.dmp \ - src/processor/testdata/linux_write_to_outside_module_via_math.dmp \ - src/processor/testdata/linux_write_to_under_4k.dmp \ - src/processor/testdata/microdump-arm64.dmp \ - src/processor/testdata/microdump-arm.dmp \ - src/processor/testdata/microdump-mips32.dmp \ - src/processor/testdata/microdump-mips64.dmp \ - src/processor/testdata/microdump-multiple.dmp \ - src/processor/testdata/microdump.stackwalk-arm64.out \ - src/processor/testdata/microdump.stackwalk-arm.out \ - src/processor/testdata/microdump.stackwalk.machine_readable-arm64.out \ - src/processor/testdata/microdump.stackwalk.machine_readable-arm.out \ - src/processor/testdata/microdump-x86.dmp \ src/processor/testdata/minidump2.dmp \ src/processor/testdata/minidump2.dump.out \ src/processor/testdata/minidump2.stackwalk.machine_readable.out \ src/processor/testdata/minidump2.stackwalk.out \ - src/processor/testdata/module0.out \ src/processor/testdata/module1.out \ src/processor/testdata/module2.out \ src/processor/testdata/module3_bad.out \ src/processor/testdata/module4_bad.out \ - src/processor/testdata/null_read_av.dmp \ - src/processor/testdata/null_write_av.dmp \ - src/processor/testdata/read_av_clobber_write.dmp \ - src/processor/testdata/read_av_conditional.dmp \ - src/processor/testdata/read_av_non_null.dmp \ - src/processor/testdata/stack_exhaustion.dmp \ - src/processor/testdata/write_av_non_null.dmp \ src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \ - src/processor/testdata/symbols/ld-2.13.so/C32AD7E235EA6112E02A5B9D6219C4850/ld-2.13.so.sym \ - src/processor/testdata/symbols/libc-2.13.so/F4F8DFCD5A5FB5A7CE64717E9E6AE3890/libc-2.13.so.sym \ - src/processor/testdata/symbols/libgcc_s.so.1/18B180F90887D8F8B5C35D185444AF4C0/libgcc_s.so.1.sym \ - src/processor/testdata/symbols/microdump/breakpad_unittests/D6D1FEC9A15DE7F38A236898871A2E770/breakpad_unittests.sym \ - src/processor/testdata/symbols/microdump/breakpad_unittests/DA7778FB66018A4E9B4110ED06E730D00/breakpad_unittests.sym \ - src/processor/testdata/symbols/microdump/crash_example/6E72E2F1A5F59AB3D51356FDFE394D490/crash_example.sym \ - src/processor/testdata/symbols/microdump/crash_example/8F36148CC4647A8116CAF2A25F591F570/crash_example.sym \ - src/processor/testdata/symbols/null_read_av/7B7D1968FF0D47AE4366E9C3A7E1B6750/null_read_av.sym \ - src/processor/testdata/symbols/overflow/B0E1FC01EF48E39CAF5C881D2DF0C3840/overflow.sym \ src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym \ src/processor/testdata/test_app.cc \ - src/testing/gtest/include/gtest/gtest.h \ - src/testing/gtest/include/gtest/gtest-death-test.h \ - src/testing/gtest/include/gtest/gtest-message.h \ - src/testing/gtest/include/gtest/gtest-param-test.h \ - src/testing/gtest/include/gtest/gtest-printers.h \ - src/testing/gtest/include/gtest/gtest-spi.h \ - src/testing/gtest/include/gtest/gtest-test-part.h \ - src/testing/gtest/include/gtest/gtest-typed-test.h \ - src/testing/gtest/include/gtest/gtest_pred_impl.h \ - src/testing/gtest/include/gtest/gtest_prod.h \ - src/testing/gtest/include/gtest/internal/gtest-death-test-internal.h \ - src/testing/gtest/include/gtest/internal/gtest-filepath.h \ - src/testing/gtest/include/gtest/internal/gtest-internal.h \ - src/testing/gtest/include/gtest/internal/gtest-linked_ptr.h \ - src/testing/gtest/include/gtest/internal/gtest-param-util-generated.h \ - src/testing/gtest/include/gtest/internal/gtest-param-util.h \ - src/testing/gtest/include/gtest/internal/gtest-port.h \ - src/testing/gtest/include/gtest/internal/gtest-string.h \ - src/testing/gtest/include/gtest/internal/gtest-tuple.h \ - src/testing/gtest/include/gtest/internal/gtest-type-util.h \ - src/testing/gtest/src/gtest.cc \ - src/testing/gtest/src/gtest-death-test.cc \ - src/testing/gtest/src/gtest-filepath.cc \ - src/testing/gtest/src/gtest-internal-inl.h \ - src/testing/gtest/src/gtest-port.cc \ - src/testing/gtest/src/gtest-printers.cc \ - src/testing/gtest/src/gtest-test-part.cc \ - src/testing/gtest/src/gtest-typed-test.cc \ - src/testing/include/gmock/gmock.h \ - src/testing/include/gmock/gmock-actions.h \ - src/testing/include/gmock/gmock-cardinalities.h \ - src/testing/include/gmock/gmock-generated-actions.h \ - src/testing/include/gmock/gmock-generated-function-mockers.h \ - src/testing/include/gmock/gmock-generated-matchers.h \ - src/testing/include/gmock/gmock-generated-nice-strict.h \ - src/testing/include/gmock/gmock-matchers.h \ - src/testing/include/gmock/gmock-more-actions.h \ - src/testing/include/gmock/gmock-more-matchers.h \ - src/testing/include/gmock/gmock-spec-builders.h \ - src/testing/include/gmock/internal/gmock-generated-internal-utils.h \ - src/testing/include/gmock/internal/gmock-internal-utils.h \ - src/testing/include/gmock/internal/gmock-port.h \ - src/testing/src/gmock.cc \ - src/testing/src/gmock-cardinalities.cc \ - src/testing/src/gmock-internal-utils.cc \ - src/testing/src/gmock-matchers.cc \ - src/testing/src/gmock-spec-builders.cc \ - src/testing/src/gmock_main.cc \ - src/third_party/curl/COPYING \ - src/third_party/curl/curlbuild.h \ - src/third_party/curl/curl.h \ - src/third_party/curl/curlrules.h \ - src/third_party/curl/curlver.h \ - src/third_party/curl/easy.h \ - src/third_party/curl/mprintf.h \ - src/third_party/curl/multi.h \ - src/third_party/curl/stdcheaders.h \ - src/third_party/curl/typecheck-gcc.h \ - src/third_party/curl/types.h \ - src/third_party/mac_headers/architecture/byte_order.h \ - src/third_party/mac_headers/i386/_types.h \ - src/third_party/mac_headers/mach/boolean.h \ - src/third_party/mac_headers/mach/i386/boolean.h \ - src/third_party/mac_headers/mach/i386/vm_param.h \ - src/third_party/mac_headers/mach/i386/vm_types.h \ - src/third_party/mac_headers/mach/machine/boolean.h \ - src/third_party/mac_headers/mach/machine.h \ - src/third_party/mac_headers/mach/machine/thread_state.h \ - src/third_party/mac_headers/mach/machine/thread_status.h \ - src/third_party/mac_headers/mach/machine/vm_types.h \ - src/third_party/mac_headers/mach-o/arch.h \ - src/third_party/mac_headers/mach-o/fat.h \ - src/third_party/mac_headers/mach-o/loader.h \ - src/third_party/mac_headers/mach-o/nlist.h \ - src/third_party/mac_headers/mach/thread_status.h \ - src/third_party/mac_headers/mach/vm_prot.h \ - src/third_party/mac_headers/README \ - src/third_party/musl/README \ - src/third_party/musl/COPYRIGHT \ - src/third_party/musl/README.breakpad \ - src/third_party/musl/VERSION \ - src/third_party/musl/include/elf.h \ + src/tools/linux/dump_syms/Makefile \ + src/tools/linux/dump_syms/dump_syms.cc \ + src/tools/linux/symupload/Makefile \ + src/tools/linux/symupload/minidump_upload.cc \ + src/tools/linux/symupload/sym_upload.cc \ src/tools/mac/crash_report/crash_report.mm \ src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj \ src/tools/mac/crash_report/on_demand_symbol_supplier.h \ src/tools/mac/crash_report/on_demand_symbol_supplier.mm \ src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj \ - src/tools/mac/dump_syms/dump_syms_tool.cc \ + src/tools/mac/dump_syms/dump_syms_tool.m \ src/tools/mac/symupload/minidump_upload.m \ src/tools/mac/symupload/symupload.m \ src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj \ @@ -3331,40 +686,36 @@ EXTRA_DIST = \ src/tools/solaris/dump_syms/testdata/dump_syms_regtest.sym \ src/tools/windows/converter/ms_symbol_server_converter.cc \ src/tools/windows/converter/ms_symbol_server_converter.h \ - src/tools/windows/converter/ms_symbol_server_converter.gyp \ + src/tools/windows/converter/ms_symbol_server_converter.vcproj \ src/tools/windows/dump_syms/dump_syms.cc \ - src/tools/windows/dump_syms/dump_syms.gyp \ + src/tools/windows/dump_syms/dump_syms.vcproj \ src/tools/windows/dump_syms/run_regtest.sh \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \ src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym \ - src/tools/windows/dump_syms/testdata/dump_syms_regtest64.sym \ - src/tools/windows/dump_syms/testdata/omap_reorder_bbs.sym \ - src/tools/windows/dump_syms/testdata/omap_reorder_funcs.sym \ - src/tools/windows/dump_syms/testdata/omap_stretched.sym \ - src/tools/windows/dump_syms/testdata/omap_stretched_filled.sym \ src/tools/windows/symupload/symupload.cc \ - src/tools/windows/symupload/symupload.gyp + src/tools/windows/symupload/symupload.vcproj all: all-am .SUFFIXES: -.SUFFIXES: .S .c .cc .log .o .obj .test .test$(EXEEXT) .trs -am--refresh: Makefile +.SUFFIXES: .cc .lo .o .obj +am--refresh: @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ @@ -3378,325 +729,170 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) src/config.h: src/stamp-h1 - @test -f $@ || rm -f src/stamp-h1 - @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1 + @if test ! -f $@; then \ + rm -f src/stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) src/stamp-h1; \ + else :; fi src/stamp-h1: $(top_srcdir)/src/config.h.in $(top_builddir)/config.status @rm -f src/stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status src/config.h -$(top_srcdir)/src/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) +$(top_srcdir)/src/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) rm -f src/stamp-h1 touch $@ distclean-hdr: -rm -f src/config.h src/stamp-h1 -breakpad.pc: $(top_builddir)/config.status $(srcdir)/breakpad.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -breakpad-client.pc: $(top_builddir)/config.status $(srcdir)/breakpad-client.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -clean-checkLIBRARIES: - -test -z "$(check_LIBRARIES)" || rm -f $(check_LIBRARIES) -install-libLIBRARIES: $(lib_LIBRARIES) +install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) - @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } - @$(POST_INSTALL) - @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - if test -f $$p; then \ - $(am__strip_dir) \ - echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \ - ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ else :; fi; \ done -uninstall-libLIBRARIES: +uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) - @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done -clean-libLIBRARIES: - -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) - -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -src/client/linux/crash_generation/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/crash_generation - @: > src/client/linux/crash_generation/$(am__dirstamp) -src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/crash_generation/$(DEPDIR) - @: > src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp) -src/client/linux/crash_generation/crash_generation_client.$(OBJEXT): \ - src/client/linux/crash_generation/$(am__dirstamp) \ - src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp) -src/client/linux/crash_generation/crash_generation_server.$(OBJEXT): \ - src/client/linux/crash_generation/$(am__dirstamp) \ - src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp) -src/client/linux/dump_writer_common/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/dump_writer_common - @: > src/client/linux/dump_writer_common/$(am__dirstamp) -src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/dump_writer_common/$(DEPDIR) - @: > src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp) -src/client/linux/dump_writer_common/thread_info.$(OBJEXT): \ - src/client/linux/dump_writer_common/$(am__dirstamp) \ - src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp) -src/client/linux/dump_writer_common/ucontext_reader.$(OBJEXT): \ - src/client/linux/dump_writer_common/$(am__dirstamp) \ - src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp) -src/client/linux/handler/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/handler - @: > src/client/linux/handler/$(am__dirstamp) -src/client/linux/handler/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/handler/$(DEPDIR) - @: > src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) -src/client/linux/handler/exception_handler.$(OBJEXT): \ - src/client/linux/handler/$(am__dirstamp) \ - src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) -src/client/linux/handler/minidump_descriptor.$(OBJEXT): \ - src/client/linux/handler/$(am__dirstamp) \ - src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) -src/client/linux/log/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/log - @: > src/client/linux/log/$(am__dirstamp) -src/client/linux/log/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/log/$(DEPDIR) - @: > src/client/linux/log/$(DEPDIR)/$(am__dirstamp) -src/client/linux/log/log.$(OBJEXT): \ - src/client/linux/log/$(am__dirstamp) \ - src/client/linux/log/$(DEPDIR)/$(am__dirstamp) -src/client/linux/microdump_writer/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/microdump_writer - @: > src/client/linux/microdump_writer/$(am__dirstamp) -src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/microdump_writer/$(DEPDIR) - @: > src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/microdump_writer/microdump_writer.$(OBJEXT): \ - src/client/linux/microdump_writer/$(am__dirstamp) \ - src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/minidump_writer - @: > src/client/linux/minidump_writer/$(am__dirstamp) -src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/client/linux/minidump_writer/$(DEPDIR) - @: > src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/linux_core_dumper.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/linux_dumper.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/linux_ptrace_dumper.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/minidump_writer.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/$(am__dirstamp): - @$(MKDIR_P) src/client - @: > src/client/$(am__dirstamp) -src/client/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/client/$(DEPDIR) - @: > src/client/$(DEPDIR)/$(am__dirstamp) -src/client/minidump_file_writer.$(OBJEXT): src/client/$(am__dirstamp) \ - src/client/$(DEPDIR)/$(am__dirstamp) -src/common/$(am__dirstamp): - @$(MKDIR_P) src/common - @: > src/common/$(am__dirstamp) -src/common/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/common/$(DEPDIR) - @: > src/common/$(DEPDIR)/$(am__dirstamp) -src/common/convert_UTF.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/md5.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/string_conversion.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/linux/$(am__dirstamp): - @$(MKDIR_P) src/common/linux - @: > src/common/linux/$(am__dirstamp) -src/common/linux/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/common/linux/$(DEPDIR) - @: > src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/elf_core_dump.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/elfutils.$(OBJEXT): src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/file_id.$(OBJEXT): src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/guid_creator.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/linux_libc_support.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/memory_mapped_file.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/safe_readlink.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/android/$(am__dirstamp): - @$(MKDIR_P) src/common/android - @: > src/common/android/$(am__dirstamp) -src/common/android/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/common/android/$(DEPDIR) - @: > src/common/android/$(DEPDIR)/$(am__dirstamp) -src/common/android/breakpad_getcontext.$(OBJEXT): \ - src/common/android/$(am__dirstamp) \ - src/common/android/$(DEPDIR)/$(am__dirstamp) -src/client/linux/$(am__dirstamp): - @$(MKDIR_P) src/client/linux - @: > src/client/linux/$(am__dirstamp) - -src/client/linux/libbreakpad_client.a: $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_DEPENDENCIES) $(EXTRA_src_client_linux_libbreakpad_client_a_DEPENDENCIES) src/client/linux/$(am__dirstamp) - $(AM_V_at)-rm -f src/client/linux/libbreakpad_client.a - $(AM_V_AR)$(src_client_linux_libbreakpad_client_a_AR) src/client/linux/libbreakpad_client.a $(src_client_linux_libbreakpad_client_a_OBJECTS) $(src_client_linux_libbreakpad_client_a_LIBADD) - $(AM_V_at)$(RANLIB) src/client/linux/libbreakpad_client.a +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done src/processor/$(am__dirstamp): @$(MKDIR_P) src/processor @: > src/processor/$(am__dirstamp) src/processor/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/processor/$(DEPDIR) @: > src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/basic_code_modules.$(OBJEXT): \ +src/processor/basic_code_modules.lo: src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/basic_source_line_resolver.lo: \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/basic_source_line_resolver.$(OBJEXT): \ +src/processor/call_stack.lo: src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/logging.lo: src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/minidump.lo: src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/minidump_processor.lo: src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/pathname_stripper.lo: src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/process_state.lo: src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/simple_symbol_supplier.lo: \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/call_stack.$(OBJEXT): src/processor/$(am__dirstamp) \ +src/processor/stackwalker.lo: src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/cfi_frame_info.$(OBJEXT): src/processor/$(am__dirstamp) \ +src/processor/stackwalker_amd64.lo: src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/disassembler_x86.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ +src/processor/stackwalker_ppc.lo: src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/dump_context.$(OBJEXT): src/processor/$(am__dirstamp) \ +src/processor/stackwalker_sparc.lo: src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/dump_object.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/exploitability.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/exploitability_linux.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/exploitability_win.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/fast_source_line_resolver.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/logging.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/microdump.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/microdump_processor.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/minidump.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/minidump_processor.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/module_comparer.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/module_serializer.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/pathname_stripper.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/process_state.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/proc_maps_linux.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/simple_symbol_supplier.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/source_line_resolver_base.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stack_frame_cpu.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stack_frame_symbolizer.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_amd64.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_arm.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_arm64.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_address_list.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_mips.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_ppc.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_ppc64.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_sparc.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/stackwalker_x86.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/symbolic_constants_win.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/tokenize.$(OBJEXT): src/processor/$(am__dirstamp) \ +src/processor/stackwalker_x86.lo: src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) src/$(am__dirstamp): @$(MKDIR_P) src @: > src/$(am__dirstamp) +src/libbreakpad.la: $(src_libbreakpad_la_OBJECTS) $(src_libbreakpad_la_DEPENDENCIES) src/$(am__dirstamp) + $(CXXLINK) -rpath $(libdir) $(src_libbreakpad_la_OBJECTS) $(src_libbreakpad_la_LIBADD) $(LIBS) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done -src/libbreakpad.a: $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_DEPENDENCIES) $(EXTRA_src_libbreakpad_a_DEPENDENCIES) src/$(am__dirstamp) - $(AM_V_at)-rm -f src/libbreakpad.a - $(AM_V_AR)$(src_libbreakpad_a_AR) src/libbreakpad.a $(src_libbreakpad_a_OBJECTS) $(src_libbreakpad_a_LIBADD) - $(AM_V_at)$(RANLIB) src/libbreakpad.a +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ + rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +src/processor/address_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/address_map_unittest$(EXEEXT): $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/address_map_unittest$(EXEEXT) + $(CXXLINK) $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_LDADD) $(LIBS) +src/processor/basic_source_line_resolver_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/basic_source_line_resolver_unittest$(EXEEXT): $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/basic_source_line_resolver_unittest$(EXEEXT) + $(CXXLINK) $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_LDADD) $(LIBS) +src/processor/contained_range_map_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/contained_range_map_unittest$(EXEEXT): $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/contained_range_map_unittest$(EXEEXT) + $(CXXLINK) $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_LDADD) $(LIBS) +src/processor/minidump_dump.$(OBJEXT): src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) +src/processor/minidump_dump$(EXEEXT): $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_DEPENDENCIES) src/processor/$(am__dirstamp) + @rm -f src/processor/minidump_dump$(EXEEXT) + $(CXXLINK) $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_LDADD) $(LIBS) +src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT): \ + src/processor/$(am__dirstamp) \ + src/processor/$(DEPDIR)/$(am__dirstamp) src/testing/gtest/src/$(am__dirstamp): @$(MKDIR_P) src/testing/gtest/src @: > src/testing/gtest/src/$(am__dirstamp) src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/testing/gtest/src/$(DEPDIR) @: > src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) -src/testing/gtest/src/src_testing_libtesting_a-gtest-all.$(OBJEXT): \ - src/testing/gtest/src/$(am__dirstamp) \ - src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) -src/testing/gtest/src/src_testing_libtesting_a-gtest_main.$(OBJEXT): \ +src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJEXT): \ src/testing/gtest/src/$(am__dirstamp) \ src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) src/testing/src/$(am__dirstamp): @@ -3705,4138 +901,334 @@ src/testing/src/$(am__dirstamp): src/testing/src/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/testing/src/$(DEPDIR) @: > src/testing/src/$(DEPDIR)/$(am__dirstamp) -src/testing/src/src_testing_libtesting_a-gmock-all.$(OBJEXT): \ +src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT): \ src/testing/src/$(am__dirstamp) \ src/testing/src/$(DEPDIR)/$(am__dirstamp) -src/testing/$(am__dirstamp): - @$(MKDIR_P) src/testing - @: > src/testing/$(am__dirstamp) - -src/testing/libtesting.a: $(src_testing_libtesting_a_OBJECTS) $(src_testing_libtesting_a_DEPENDENCIES) $(EXTRA_src_testing_libtesting_a_DEPENDENCIES) src/testing/$(am__dirstamp) - $(AM_V_at)-rm -f src/testing/libtesting.a - $(AM_V_AR)$(src_testing_libtesting_a_AR) src/testing/libtesting.a $(src_testing_libtesting_a_OBJECTS) $(src_testing_libtesting_a_LIBADD) - $(AM_V_at)$(RANLIB) src/testing/libtesting.a -src/third_party/libdisasm/$(am__dirstamp): - @$(MKDIR_P) src/third_party/libdisasm - @: > src/third_party/libdisasm/$(am__dirstamp) -src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/third_party/libdisasm/$(DEPDIR) - @: > src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/ia32_implicit.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/ia32_insn.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/ia32_invariant.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/ia32_modrm.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/ia32_opcode_tables.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/ia32_operand.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/ia32_reg.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/ia32_settings.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/x86_disasm.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/x86_format.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/x86_imm.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/x86_insn.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/x86_misc.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) -src/third_party/libdisasm/x86_operand_list.$(OBJEXT): \ - src/third_party/libdisasm/$(am__dirstamp) \ - src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) - -src/third_party/libdisasm/libdisasm.a: $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) $(EXTRA_src_third_party_libdisasm_libdisasm_a_DEPENDENCIES) src/third_party/libdisasm/$(am__dirstamp) - $(AM_V_at)-rm -f src/third_party/libdisasm/libdisasm.a - $(AM_V_AR)$(src_third_party_libdisasm_libdisasm_a_AR) src/third_party/libdisasm/libdisasm.a $(src_third_party_libdisasm_libdisasm_a_OBJECTS) $(src_third_party_libdisasm_libdisasm_a_LIBADD) - $(AM_V_at)$(RANLIB) src/third_party/libdisasm/libdisasm.a -install-binPROGRAMS: $(bin_PROGRAMS) - @$(NORMAL_INSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ - fi; \ - for p in $$list; do echo "$$p $$p"; done | \ - sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p \ - ; then echo "$$p"; echo "$$p"; else :; fi; \ - done | \ - sed -e 'p;s,.*/,,;n;h' \ - -e 's|.*|.|' \ - -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ - sed 'N;N;N;s,\n, ,g' | \ - $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ - { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ - if ($$2 == $$4) files[d] = files[d] " " $$1; \ - else { print "f", $$3 "/" $$4, $$1; } } \ - END { for (d in files) print "f", d, files[d] }' | \ - while read type dir files; do \ - if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ - test -z "$$files" || { \ - echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ - $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ - } \ - ; done - -uninstall-binPROGRAMS: - @$(NORMAL_UNINSTALL) - @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ - files=`for p in $$list; do echo "$$p"; done | \ - sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' \ - `; \ - test -n "$$list" || exit 0; \ - echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(bindir)" && rm -f $$files - -clean-binPROGRAMS: - -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) - -clean-checkPROGRAMS: - -test -z "$(check_PROGRAMS)" || rm -f $(check_PROGRAMS) - -clean-noinstPROGRAMS: - -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) - -src/client/linux/linux_client_unittest$(EXEEXT): $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_DEPENDENCIES) $(EXTRA_src_client_linux_linux_client_unittest_DEPENDENCIES) src/client/linux/$(am__dirstamp) - @rm -f src/client/linux/linux_client_unittest$(EXEEXT) - $(AM_V_CCLD)$(src_client_linux_linux_client_unittest_LINK) $(src_client_linux_linux_client_unittest_OBJECTS) $(src_client_linux_linux_client_unittest_LDADD) $(LIBS) -src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.$(OBJEXT): \ - src/testing/gtest/src/$(am__dirstamp) \ - src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) -src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.$(OBJEXT): \ - src/testing/gtest/src/$(am__dirstamp) \ - src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) -src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.$(OBJEXT): \ - src/testing/src/$(am__dirstamp) \ - src/testing/src/$(DEPDIR)/$(am__dirstamp) -src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.$(OBJEXT): \ - src/client/linux/handler/$(am__dirstamp) \ - src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/tests/$(am__dirstamp): - @$(MKDIR_P) src/common/linux/tests - @: > src/common/linux/tests/$(am__dirstamp) -src/common/linux/tests/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/common/linux/tests/$(DEPDIR) - @: > src/common/linux/tests/$(DEPDIR)/$(am__dirstamp) -src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.$(OBJEXT): \ - src/common/linux/tests/$(am__dirstamp) \ - src/common/linux/tests/$(DEPDIR)/$(am__dirstamp) -src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/tests/$(am__dirstamp): - @$(MKDIR_P) src/common/tests - @: > src/common/tests/$(am__dirstamp) -src/common/tests/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/common/tests/$(DEPDIR) - @: > src/common/tests/$(DEPDIR)/$(am__dirstamp) -src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.$(OBJEXT): \ - src/common/tests/$(am__dirstamp) \ - src/common/tests/$(DEPDIR)/$(am__dirstamp) -src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_client_linux_linux_client_unittest_shlib-logging.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_client_linux_linux_client_unittest_shlib-minidump.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.$(OBJEXT): \ - src/common/android/$(am__dirstamp) \ - src/common/android/$(DEPDIR)/$(am__dirstamp) -src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.$(OBJEXT): \ - src/client/linux/microdump_writer/$(am__dirstamp) \ - src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp) -src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.$(OBJEXT): \ - src/common/android/$(am__dirstamp) \ - src/common/android/$(DEPDIR)/$(am__dirstamp) - -src/client/linux/linux_client_unittest_shlib$(EXEEXT): $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) $(EXTRA_src_client_linux_linux_client_unittest_shlib_DEPENDENCIES) src/client/linux/$(am__dirstamp) - @rm -f src/client/linux/linux_client_unittest_shlib$(EXEEXT) - $(AM_V_CXXLD)$(src_client_linux_linux_client_unittest_shlib_LINK) $(src_client_linux_linux_client_unittest_shlib_OBJECTS) $(src_client_linux_linux_client_unittest_shlib_LDADD) $(LIBS) -src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.$(OBJEXT): \ - src/client/linux/minidump_writer/$(am__dirstamp) \ - src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) - -src/client/linux/linux_dumper_unittest_helper$(EXEEXT): $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) $(EXTRA_src_client_linux_linux_dumper_unittest_helper_DEPENDENCIES) src/client/linux/$(am__dirstamp) - @rm -f src/client/linux/linux_dumper_unittest_helper$(EXEEXT) - $(AM_V_CXXLD)$(src_client_linux_linux_dumper_unittest_helper_LINK) $(src_client_linux_linux_dumper_unittest_helper_OBJECTS) $(src_client_linux_linux_dumper_unittest_helper_LDADD) $(LIBS) -src/common/src_common_dumper_unittest-byte_cursor_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-dwarf_cfi_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-dwarf_cu_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-dwarf_line_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-language.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-memory_range_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-module_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-stabs_reader.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-stabs_reader_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-stabs_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-stabs_to_module_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_dumper_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/$(am__dirstamp): - @$(MKDIR_P) src/common/dwarf - @: > src/common/dwarf/$(am__dirstamp) -src/common/dwarf/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/common/dwarf/$(DEPDIR) - @: > src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-bytereader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-cfi_assembler.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-dwarf2reader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-elf_reader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-crc32.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-dump_symbols.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-elf_core_dump.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-elfutils.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-file_id.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-file_id_unittest.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-linux_libc_support.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-memory_mapped_file.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-safe_readlink.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-synth_elf.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/src_common_dumper_unittest-synth_elf_unittest.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/tests/src_common_dumper_unittest-crash_generator.$(OBJEXT): \ - src/common/linux/tests/$(am__dirstamp) \ - src/common/linux/tests/$(DEPDIR)/$(am__dirstamp) -src/common/tests/src_common_dumper_unittest-file_utils.$(OBJEXT): \ - src/common/tests/$(am__dirstamp) \ - src/common/tests/$(DEPDIR)/$(am__dirstamp) - -src/common/dumper_unittest$(EXEEXT): $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_DEPENDENCIES) $(EXTRA_src_common_dumper_unittest_DEPENDENCIES) src/common/$(am__dirstamp) - @rm -f src/common/dumper_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_common_dumper_unittest_OBJECTS) $(src_common_dumper_unittest_LDADD) $(LIBS) -src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_mac_macho_reader_unittest-language.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_mac_macho_reader_unittest-md5.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_mac_macho_reader_unittest-module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_mac_macho_reader_unittest-stabs_reader.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_mac_macho_reader_unittest-stabs_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_mac_macho_reader_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/mac/$(am__dirstamp): - @$(MKDIR_P) src/common/mac - @: > src/common/mac/$(am__dirstamp) -src/common/mac/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/common/mac/$(DEPDIR) - @: > src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_common_mac_macho_reader_unittest-file_id.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_common_mac_macho_reader_unittest-macho_id.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/tests/src_common_mac_macho_reader_unittest-file_utils.$(OBJEXT): \ - src/common/tests/$(am__dirstamp) \ - src/common/tests/$(DEPDIR)/$(am__dirstamp) - -src/common/mac/macho_reader_unittest$(EXEEXT): $(src_common_mac_macho_reader_unittest_OBJECTS) $(src_common_mac_macho_reader_unittest_DEPENDENCIES) $(EXTRA_src_common_mac_macho_reader_unittest_DEPENDENCIES) src/common/mac/$(am__dirstamp) - @rm -f src/common/mac/macho_reader_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_common_mac_macho_reader_unittest_OBJECTS) $(src_common_mac_macho_reader_unittest_LDADD) $(LIBS) -src/common/src_common_test_assembler_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_common_test_assembler_unittest-test_assembler_unittest.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) - -src/common/test_assembler_unittest$(EXEEXT): $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_DEPENDENCIES) $(EXTRA_src_common_test_assembler_unittest_DEPENDENCIES) src/common/$(am__dirstamp) - @rm -f src/common/test_assembler_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_common_test_assembler_unittest_OBJECTS) $(src_common_test_assembler_unittest_LDADD) $(LIBS) -src/processor/address_map_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/address_map_unittest$(EXEEXT): $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/address_map_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_address_map_unittest_OBJECTS) $(src_processor_address_map_unittest_LDADD) $(LIBS) -src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/basic_source_line_resolver_unittest$(EXEEXT): $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) $(EXTRA_src_processor_basic_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/basic_source_line_resolver_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_basic_source_line_resolver_unittest_OBJECTS) $(src_processor_basic_source_line_resolver_unittest_LDADD) $(LIBS) -src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/cfi_frame_info_unittest$(EXEEXT): $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_DEPENDENCIES) $(EXTRA_src_processor_cfi_frame_info_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/cfi_frame_info_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_cfi_frame_info_unittest_OBJECTS) $(src_processor_cfi_frame_info_unittest_LDADD) $(LIBS) -src/processor/contained_range_map_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/contained_range_map_unittest$(EXEEXT): $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/contained_range_map_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_contained_range_map_unittest_OBJECTS) $(src_processor_contained_range_map_unittest_LDADD) $(LIBS) -src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/disassembler_x86_unittest$(EXEEXT): $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_DEPENDENCIES) $(EXTRA_src_processor_disassembler_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/disassembler_x86_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_disassembler_x86_unittest_OBJECTS) $(src_processor_disassembler_x86_unittest_LDADD) $(LIBS) -src/processor/src_processor_exploitability_unittest-exploitability_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/exploitability_unittest$(EXEEXT): $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_DEPENDENCIES) $(EXTRA_src_processor_exploitability_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/exploitability_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_exploitability_unittest_OBJECTS) $(src_processor_exploitability_unittest_LDADD) $(LIBS) -src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/fast_source_line_resolver_unittest$(EXEEXT): $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) $(EXTRA_src_processor_fast_source_line_resolver_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/fast_source_line_resolver_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_fast_source_line_resolver_unittest_OBJECTS) $(src_processor_fast_source_line_resolver_unittest_LDADD) $(LIBS) -src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/map_serializers_unittest$(EXEEXT): $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_DEPENDENCIES) $(EXTRA_src_processor_map_serializers_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/map_serializers_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_map_serializers_unittest_OBJECTS) $(src_processor_map_serializers_unittest_LDADD) $(LIBS) -src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/microdump_processor_unittest$(EXEEXT): $(src_processor_microdump_processor_unittest_OBJECTS) $(src_processor_microdump_processor_unittest_DEPENDENCIES) $(EXTRA_src_processor_microdump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/microdump_processor_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_microdump_processor_unittest_OBJECTS) $(src_processor_microdump_processor_unittest_LDADD) $(LIBS) -src/processor/microdump_stackwalk.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/microdump_stackwalk$(EXEEXT): $(src_processor_microdump_stackwalk_OBJECTS) $(src_processor_microdump_stackwalk_DEPENDENCIES) $(EXTRA_src_processor_microdump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/microdump_stackwalk$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_microdump_stackwalk_OBJECTS) $(src_processor_microdump_stackwalk_LDADD) $(LIBS) -src/processor/minidump_dump.$(OBJEXT): src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/minidump_dump$(EXEEXT): $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_DEPENDENCIES) $(EXTRA_src_processor_minidump_dump_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/minidump_dump$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_dump_OBJECTS) $(src_processor_minidump_dump_LDADD) $(LIBS) -src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/minidump_processor_unittest$(EXEEXT): $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_DEPENDENCIES) $(EXTRA_src_processor_minidump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) +src/processor/minidump_processor_unittest$(EXEEXT): $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/minidump_processor_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_LDADD) $(LIBS) + $(CXXLINK) $(src_processor_minidump_processor_unittest_OBJECTS) $(src_processor_minidump_processor_unittest_LDADD) $(LIBS) src/processor/minidump_stackwalk.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/minidump_stackwalk$(EXEEXT): $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_DEPENDENCIES) $(EXTRA_src_processor_minidump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp) +src/processor/minidump_stackwalk$(EXEEXT): $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/minidump_stackwalk$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_LDADD) $(LIBS) -src/common/src_processor_minidump_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_minidump_unittest-minidump_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_minidump_unittest-synth_minidump.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/minidump_unittest$(EXEEXT): $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_DEPENDENCIES) $(EXTRA_src_processor_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/minidump_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_minidump_unittest_OBJECTS) $(src_processor_minidump_unittest_LDADD) $(LIBS) + $(CXXLINK) $(src_processor_minidump_stackwalk_OBJECTS) $(src_processor_minidump_stackwalk_LDADD) $(LIBS) src/processor/pathname_stripper_unittest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/pathname_stripper_unittest$(EXEEXT): $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_DEPENDENCIES) $(EXTRA_src_processor_pathname_stripper_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) +src/processor/pathname_stripper_unittest$(EXEEXT): $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/pathname_stripper_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_LDADD) $(LIBS) + $(CXXLINK) $(src_processor_pathname_stripper_unittest_OBJECTS) $(src_processor_pathname_stripper_unittest_LDADD) $(LIBS) src/processor/postfix_evaluator_unittest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/postfix_evaluator_unittest$(EXEEXT): $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_DEPENDENCIES) $(EXTRA_src_processor_postfix_evaluator_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) +src/processor/postfix_evaluator_unittest$(EXEEXT): $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/postfix_evaluator_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_LDADD) $(LIBS) -src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/proc_maps_linux_unittest$(EXEEXT): $(src_processor_proc_maps_linux_unittest_OBJECTS) $(src_processor_proc_maps_linux_unittest_DEPENDENCIES) $(EXTRA_src_processor_proc_maps_linux_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/proc_maps_linux_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_proc_maps_linux_unittest_OBJECTS) $(src_processor_proc_maps_linux_unittest_LDADD) $(LIBS) -src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/range_map_shrink_down_unittest$(EXEEXT): $(src_processor_range_map_shrink_down_unittest_OBJECTS) $(src_processor_range_map_shrink_down_unittest_DEPENDENCIES) $(EXTRA_src_processor_range_map_shrink_down_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/range_map_shrink_down_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_range_map_shrink_down_unittest_OBJECTS) $(src_processor_range_map_shrink_down_unittest_LDADD) $(LIBS) + $(CXXLINK) $(src_processor_postfix_evaluator_unittest_OBJECTS) $(src_processor_postfix_evaluator_unittest_LDADD) $(LIBS) src/processor/range_map_unittest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/range_map_unittest$(EXEEXT): $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) +src/processor/range_map_unittest$(EXEEXT): $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/range_map_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_LDADD) $(LIBS) -src/common/src_processor_stackwalker_address_list_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/stackwalker_address_list_unittest$(EXEEXT): $(src_processor_stackwalker_address_list_unittest_OBJECTS) $(src_processor_stackwalker_address_list_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_address_list_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/stackwalker_address_list_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_address_list_unittest_OBJECTS) $(src_processor_stackwalker_address_list_unittest_LDADD) $(LIBS) -src/common/src_processor_stackwalker_amd64_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/stackwalker_amd64_unittest$(EXEEXT): $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_amd64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/stackwalker_amd64_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_amd64_unittest_OBJECTS) $(src_processor_stackwalker_amd64_unittest_LDADD) $(LIBS) -src/common/src_processor_stackwalker_arm64_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/stackwalker_arm64_unittest$(EXEEXT): $(src_processor_stackwalker_arm64_unittest_OBJECTS) $(src_processor_stackwalker_arm64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_arm64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/stackwalker_arm64_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_arm64_unittest_OBJECTS) $(src_processor_stackwalker_arm64_unittest_LDADD) $(LIBS) -src/common/src_processor_stackwalker_arm_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/stackwalker_arm_unittest$(EXEEXT): $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_arm_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/stackwalker_arm_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_arm_unittest_OBJECTS) $(src_processor_stackwalker_arm_unittest_LDADD) $(LIBS) -src/common/src_processor_stackwalker_mips64_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/stackwalker_mips64_unittest$(EXEEXT): $(src_processor_stackwalker_mips64_unittest_OBJECTS) $(src_processor_stackwalker_mips64_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_mips64_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/stackwalker_mips64_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_mips64_unittest_OBJECTS) $(src_processor_stackwalker_mips64_unittest_LDADD) $(LIBS) -src/common/src_processor_stackwalker_mips_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/stackwalker_mips_unittest$(EXEEXT): $(src_processor_stackwalker_mips_unittest_OBJECTS) $(src_processor_stackwalker_mips_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_mips_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/stackwalker_mips_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_mips_unittest_OBJECTS) $(src_processor_stackwalker_mips_unittest_LDADD) $(LIBS) + $(CXXLINK) $(src_processor_range_map_unittest_OBJECTS) $(src_processor_range_map_unittest_LDADD) $(LIBS) src/processor/stackwalker_selftest.$(OBJEXT): \ src/processor/$(am__dirstamp) \ src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/stackwalker_selftest$(EXEEXT): $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_selftest_DEPENDENCIES) src/processor/$(am__dirstamp) +src/processor/stackwalker_selftest$(EXEEXT): $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_DEPENDENCIES) src/processor/$(am__dirstamp) @rm -f src/processor/stackwalker_selftest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_LDADD) $(LIBS) -src/common/src_processor_stackwalker_x86_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/stackwalker_x86_unittest$(EXEEXT): $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_DEPENDENCIES) $(EXTRA_src_processor_stackwalker_x86_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/stackwalker_x86_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_stackwalker_x86_unittest_OBJECTS) $(src_processor_stackwalker_x86_unittest_LDADD) $(LIBS) -src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/static_address_map_unittest$(EXEEXT): $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_address_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/static_address_map_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_address_map_unittest_OBJECTS) $(src_processor_static_address_map_unittest_LDADD) $(LIBS) -src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/static_contained_range_map_unittest$(EXEEXT): $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_contained_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/static_contained_range_map_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_contained_range_map_unittest_OBJECTS) $(src_processor_static_contained_range_map_unittest_LDADD) $(LIBS) -src/processor/src_processor_static_map_unittest-static_map_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/static_map_unittest$(EXEEXT): $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/static_map_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_map_unittest_OBJECTS) $(src_processor_static_map_unittest_LDADD) $(LIBS) -src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/static_range_map_unittest$(EXEEXT): $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_DEPENDENCIES) $(EXTRA_src_processor_static_range_map_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/static_range_map_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_static_range_map_unittest_OBJECTS) $(src_processor_static_range_map_unittest_LDADD) $(LIBS) -src/common/src_processor_synth_minidump_unittest-test_assembler.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) -src/processor/src_processor_synth_minidump_unittest-synth_minidump.$(OBJEXT): \ - src/processor/$(am__dirstamp) \ - src/processor/$(DEPDIR)/$(am__dirstamp) - -src/processor/synth_minidump_unittest$(EXEEXT): $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_DEPENDENCIES) $(EXTRA_src_processor_synth_minidump_unittest_DEPENDENCIES) src/processor/$(am__dirstamp) - @rm -f src/processor/synth_minidump_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_processor_synth_minidump_unittest_OBJECTS) $(src_processor_synth_minidump_unittest_LDADD) $(LIBS) -src/tools/linux/core2md/$(am__dirstamp): - @$(MKDIR_P) src/tools/linux/core2md - @: > src/tools/linux/core2md/$(am__dirstamp) -src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/tools/linux/core2md/$(DEPDIR) - @: > src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp) -src/tools/linux/core2md/core2md.$(OBJEXT): \ - src/tools/linux/core2md/$(am__dirstamp) \ - src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp) - -src/tools/linux/core2md/core2md$(EXEEXT): $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_DEPENDENCIES) $(EXTRA_src_tools_linux_core2md_core2md_DEPENDENCIES) src/tools/linux/core2md/$(am__dirstamp) - @rm -f src/tools/linux/core2md/core2md$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_core2md_core2md_OBJECTS) $(src_tools_linux_core2md_core2md_LDADD) $(LIBS) -src/common/dwarf_cfi_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf_cu_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf_line_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/language.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/module.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/stabs_reader.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/stabs_to_module.$(OBJEXT): src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/bytereader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/dwarf2diehandler.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/dwarf2reader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/elf_reader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/linux/crc32.$(OBJEXT): src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/dump_symbols.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/common/linux/elf_symbols_to_module.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/tools/linux/dump_syms/$(am__dirstamp): - @$(MKDIR_P) src/tools/linux/dump_syms - @: > src/tools/linux/dump_syms/$(am__dirstamp) -src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/tools/linux/dump_syms/$(DEPDIR) - @: > src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp) -src/tools/linux/dump_syms/dump_syms.$(OBJEXT): \ - src/tools/linux/dump_syms/$(am__dirstamp) \ - src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp) - -src/tools/linux/dump_syms/dump_syms$(EXEEXT): $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) $(EXTRA_src_tools_linux_dump_syms_dump_syms_DEPENDENCIES) src/tools/linux/dump_syms/$(am__dirstamp) - @rm -f src/tools/linux/dump_syms/dump_syms$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_dump_syms_dump_syms_OBJECTS) $(src_tools_linux_dump_syms_dump_syms_LDADD) $(LIBS) -src/tools/linux/md2core/$(am__dirstamp): - @$(MKDIR_P) src/tools/linux/md2core - @: > src/tools/linux/md2core/$(am__dirstamp) -src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/tools/linux/md2core/$(DEPDIR) - @: > src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) -src/tools/linux/md2core/minidump-2-core.$(OBJEXT): \ - src/tools/linux/md2core/$(am__dirstamp) \ - src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) - -src/tools/linux/md2core/minidump-2-core$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) $(EXTRA_src_tools_linux_md2core_minidump_2_core_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp) - @rm -f src/tools/linux/md2core/minidump-2-core$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_LDADD) $(LIBS) -src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.$(OBJEXT): \ - src/tools/linux/md2core/$(am__dirstamp) \ - src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) - -src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT): $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) $(EXTRA_src_tools_linux_md2core_minidump_2_core_unittest_DEPENDENCIES) src/tools/linux/md2core/$(am__dirstamp) - @rm -f src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_md2core_minidump_2_core_unittest_OBJECTS) $(src_tools_linux_md2core_minidump_2_core_unittest_LDADD) $(LIBS) -src/common/linux/http_upload.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/tools/linux/symupload/$(am__dirstamp): - @$(MKDIR_P) src/tools/linux/symupload - @: > src/tools/linux/symupload/$(am__dirstamp) -src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/tools/linux/symupload/$(DEPDIR) - @: > src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) -src/tools/linux/symupload/minidump_upload.$(OBJEXT): \ - src/tools/linux/symupload/$(am__dirstamp) \ - src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) - -src/tools/linux/symupload/minidump_upload$(EXEEXT): $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_DEPENDENCIES) $(EXTRA_src_tools_linux_symupload_minidump_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp) - @rm -f src/tools/linux/symupload/minidump_upload$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_symupload_minidump_upload_OBJECTS) $(src_tools_linux_symupload_minidump_upload_LDADD) $(LIBS) -src/common/linux/symbol_upload.$(OBJEXT): \ - src/common/linux/$(am__dirstamp) \ - src/common/linux/$(DEPDIR)/$(am__dirstamp) -src/tools/linux/symupload/sym_upload.$(OBJEXT): \ - src/tools/linux/symupload/$(am__dirstamp) \ - src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) - -src/tools/linux/symupload/sym_upload$(EXEEXT): $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_DEPENDENCIES) $(EXTRA_src_tools_linux_symupload_sym_upload_DEPENDENCIES) src/tools/linux/symupload/$(am__dirstamp) - @rm -f src/tools/linux/symupload/sym_upload$(EXEEXT) - $(AM_V_CXXLD)$(CXXLINK) $(src_tools_linux_symupload_sym_upload_OBJECTS) $(src_tools_linux_symupload_sym_upload_LDADD) $(LIBS) -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_tools_mac_dump_syms_dump_syms_mac-language.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_tools_mac_dump_syms_dump_syms_mac-module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.$(OBJEXT): \ - src/common/$(am__dirstamp) \ - src/common/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.$(OBJEXT): \ - src/common/dwarf/$(am__dirstamp) \ - src/common/dwarf/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.$(OBJEXT): \ - src/common/mac/$(am__dirstamp) \ - src/common/mac/$(DEPDIR)/$(am__dirstamp) -src/tools/mac/dump_syms/$(am__dirstamp): - @$(MKDIR_P) src/tools/mac/dump_syms - @: > src/tools/mac/dump_syms/$(am__dirstamp) -src/tools/mac/dump_syms/$(DEPDIR)/$(am__dirstamp): - @$(MKDIR_P) src/tools/mac/dump_syms/$(DEPDIR) - @: > src/tools/mac/dump_syms/$(DEPDIR)/$(am__dirstamp) -src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.$(OBJEXT): \ - src/tools/mac/dump_syms/$(am__dirstamp) \ - src/tools/mac/dump_syms/$(DEPDIR)/$(am__dirstamp) - -src/tools/mac/dump_syms/dump_syms_mac$(EXEEXT): $(src_tools_mac_dump_syms_dump_syms_mac_OBJECTS) $(src_tools_mac_dump_syms_dump_syms_mac_DEPENDENCIES) $(EXTRA_src_tools_mac_dump_syms_dump_syms_mac_DEPENDENCIES) src/tools/mac/dump_syms/$(am__dirstamp) - @rm -f src/tools/mac/dump_syms/dump_syms_mac$(EXEEXT) - $(AM_V_CXXLD)$(src_tools_mac_dump_syms_dump_syms_mac_LINK) $(src_tools_mac_dump_syms_dump_syms_mac_OBJECTS) $(src_tools_mac_dump_syms_dump_syms_mac_LDADD) $(LIBS) + $(CXXLINK) $(src_processor_stackwalker_selftest_OBJECTS) $(src_processor_stackwalker_selftest_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) - -rm -f src/client/*.$(OBJEXT) - -rm -f src/client/linux/crash_generation/*.$(OBJEXT) - -rm -f src/client/linux/dump_writer_common/*.$(OBJEXT) - -rm -f src/client/linux/handler/*.$(OBJEXT) - -rm -f src/client/linux/log/*.$(OBJEXT) - -rm -f src/client/linux/microdump_writer/*.$(OBJEXT) - -rm -f src/client/linux/minidump_writer/*.$(OBJEXT) - -rm -f src/common/*.$(OBJEXT) - -rm -f src/common/android/*.$(OBJEXT) - -rm -f src/common/dwarf/*.$(OBJEXT) - -rm -f src/common/linux/*.$(OBJEXT) - -rm -f src/common/linux/tests/*.$(OBJEXT) - -rm -f src/common/mac/*.$(OBJEXT) - -rm -f src/common/tests/*.$(OBJEXT) - -rm -f src/processor/*.$(OBJEXT) - -rm -f src/testing/gtest/src/*.$(OBJEXT) - -rm -f src/testing/src/*.$(OBJEXT) - -rm -f src/third_party/libdisasm/*.$(OBJEXT) - -rm -f src/tools/linux/core2md/*.$(OBJEXT) - -rm -f src/tools/linux/dump_syms/*.$(OBJEXT) - -rm -f src/tools/linux/md2core/*.$(OBJEXT) - -rm -f src/tools/linux/symupload/*.$(OBJEXT) - -rm -f src/tools/mac/dump_syms/*.$(OBJEXT) + -rm -f src/processor/address_map_unittest.$(OBJEXT) + -rm -f src/processor/basic_code_modules.$(OBJEXT) + -rm -f src/processor/basic_code_modules.lo + -rm -f src/processor/basic_source_line_resolver.$(OBJEXT) + -rm -f src/processor/basic_source_line_resolver.lo + -rm -f src/processor/basic_source_line_resolver_unittest.$(OBJEXT) + -rm -f src/processor/call_stack.$(OBJEXT) + -rm -f src/processor/call_stack.lo + -rm -f src/processor/contained_range_map_unittest.$(OBJEXT) + -rm -f src/processor/logging.$(OBJEXT) + -rm -f src/processor/logging.lo + -rm -f src/processor/minidump.$(OBJEXT) + -rm -f src/processor/minidump.lo + -rm -f src/processor/minidump_dump.$(OBJEXT) + -rm -f src/processor/minidump_processor.$(OBJEXT) + -rm -f src/processor/minidump_processor.lo + -rm -f src/processor/minidump_stackwalk.$(OBJEXT) + -rm -f src/processor/pathname_stripper.$(OBJEXT) + -rm -f src/processor/pathname_stripper.lo + -rm -f src/processor/pathname_stripper_unittest.$(OBJEXT) + -rm -f src/processor/postfix_evaluator_unittest.$(OBJEXT) + -rm -f src/processor/process_state.$(OBJEXT) + -rm -f src/processor/process_state.lo + -rm -f src/processor/range_map_unittest.$(OBJEXT) + -rm -f src/processor/simple_symbol_supplier.$(OBJEXT) + -rm -f src/processor/simple_symbol_supplier.lo + -rm -f src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.$(OBJEXT) + -rm -f src/processor/stackwalker.$(OBJEXT) + -rm -f src/processor/stackwalker.lo + -rm -f src/processor/stackwalker_amd64.$(OBJEXT) + -rm -f src/processor/stackwalker_amd64.lo + -rm -f src/processor/stackwalker_ppc.$(OBJEXT) + -rm -f src/processor/stackwalker_ppc.lo + -rm -f src/processor/stackwalker_selftest.$(OBJEXT) + -rm -f src/processor/stackwalker_sparc.$(OBJEXT) + -rm -f src/processor/stackwalker_sparc.lo + -rm -f src/processor/stackwalker_x86.$(OBJEXT) + -rm -f src/processor/stackwalker_x86.lo + -rm -f src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.$(OBJEXT) + -rm -f src/testing/src/src_processor_minidump_processor_unittest-gmock-all.$(OBJEXT) distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@src/client/$(DEPDIR)/minidump_file_writer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/crash_generation/$(DEPDIR)/crash_generation_client.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/crash_generation/$(DEPDIR)/crash_generation_server.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/dump_writer_common/$(DEPDIR)/thread_info.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/dump_writer_common/$(DEPDIR)/ucontext_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/exception_handler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/minidump_descriptor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/log/$(DEPDIR)/log.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/microdump_writer/$(DEPDIR)/microdump_writer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_core_dumper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_dumper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/linux_ptrace_dumper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/minidump_writer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/convert_UTF.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_cfi_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_cu_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/dwarf_line_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/language.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/md5.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/stabs_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/stabs_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/$(DEPDIR)/string_conversion.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/breakpad_getcontext.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/bytereader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/dwarf2diehandler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/dwarf2reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/elf_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/crc32.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/dump_symbols.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elf_core_dump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elf_symbols_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/elfutils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/file_id.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/guid_creator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/http_upload.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/linux_libc_support.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/memory_mapped_file.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/safe_readlink.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/$(DEPDIR)/symbol_upload.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/address_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_code_modules.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_source_line_resolver.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/call_stack.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/cfi_frame_info.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_code_modules.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_source_line_resolver.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/basic_source_line_resolver_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/call_stack.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/contained_range_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/disassembler_x86.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/dump_context.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/dump_object.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability_linux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability_win.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/fast_source_line_resolver.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/logging.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump_processor.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump_stackwalk.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/logging.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_dump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_processor.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_processor.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_stackwalk.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/module_comparer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/module_serializer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/pathname_stripper.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/pathname_stripper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/pathname_stripper_unittest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/postfix_evaluator_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/proc_maps_linux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/process_state.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/process_state.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/range_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/simple_symbol_supplier.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/source_line_resolver_base.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/simple_symbol_supplier.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stack_frame_cpu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stack_frame_symbolizer.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_address_list.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_amd64.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_arm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_arm64.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_mips.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_ppc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_ppc64.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_amd64.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_ppc.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_selftest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_sparc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_x86.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/symbolic_constants_win.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/tokenize.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_implicit.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_insn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_invariant.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_modrm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_opcode_tables.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_operand.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_reg.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/ia32_settings.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_disasm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_format.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_imm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_insn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_misc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/third_party/libdisasm/$(DEPDIR)/x86_operand_list.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/core2md/$(DEPDIR)/core2md.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/dump_syms/$(DEPDIR)/dump_syms.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/md2core/$(DEPDIR)/minidump-2-core.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/symupload/$(DEPDIR)/minidump_upload.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/tools/linux/symupload/$(DEPDIR)/sym_upload.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Po@am__quote@ - -.S.o: -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< - -.S.obj: -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o: src/common/android/breakpad_getcontext.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o `test -f 'src/common/android/breakpad_getcontext.S' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext.S -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='src/common/android/breakpad_getcontext.S' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.o `test -f 'src/common/android/breakpad_getcontext.S' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext.S - -src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj: src/common/android/breakpad_getcontext.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj `if test -f 'src/common/android/breakpad_getcontext.S'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext.S'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext.S'; fi` -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='src/common/android/breakpad_getcontext.S' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext.obj `if test -f 'src/common/android/breakpad_getcontext.S'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext.S'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext.S'; fi` - -.c.o: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< - -.c.obj: -@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_sparc.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/stackwalker_x86.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po@am__quote@ .cc.o: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cc.obj: -@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` -src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o: src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Tpo -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o' libtool=no @AMDEPBACKSLASH@ +.cc.lo: +@am__fastdepCXX_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ mv -f $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc - -src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj: src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Tpo -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` - -src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o: src/testing/gtest/src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Tpo -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc - -src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj: src/testing/gtest/src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Tpo -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_testing_libtesting_a-gtest_main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_testing_libtesting_a-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi` - -src/testing/src/src_testing_libtesting_a-gmock-all.o: src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_testing_libtesting_a-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Tpo -c -o src/testing/src/src_testing_libtesting_a-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_testing_libtesting_a-gmock-all.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_testing_libtesting_a-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc - -src/testing/src/src_testing_libtesting_a-gmock-all.obj: src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_testing_libtesting_a-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Tpo -c -o src/testing/src/src_testing_libtesting_a-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_testing_libtesting_a-gmock-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_testing_libtesting_a-gmock-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_testing_libtesting_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_testing_libtesting_a-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` - -src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o: src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc - -src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj: src/testing/gtest/src/gtest-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` - -src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o: src/testing/gtest/src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.o `test -f 'src/testing/gtest/src/gtest_main.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest_main.cc - -src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj: src/testing/gtest/src/gtest_main.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Tpo src/testing/gtest/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gtest_main.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/gtest/src/gtest_main.cc' object='src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_client_linux_linux_client_unittest_shlib-gtest_main.obj `if test -f 'src/testing/gtest/src/gtest_main.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest_main.cc'; fi` - -src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o: src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc - -src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj: src/testing/src/gmock-all.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-gmock-all.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/testing/src/gmock-all.cc' object='src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_client_linux_linux_client_unittest_shlib-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` - -src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o: src/client/linux/handler/exception_handler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o -MD -MP -MF src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o `test -f 'src/client/linux/handler/exception_handler_unittest.cc' || echo '$(srcdir)/'`src/client/linux/handler/exception_handler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/handler/exception_handler_unittest.cc' object='src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.o `test -f 'src/client/linux/handler/exception_handler_unittest.cc' || echo '$(srcdir)/'`src/client/linux/handler/exception_handler_unittest.cc - -src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj: src/client/linux/handler/exception_handler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj -MD -MP -MF src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj `if test -f 'src/client/linux/handler/exception_handler_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/handler/exception_handler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/handler/exception_handler_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Tpo src/client/linux/handler/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/handler/exception_handler_unittest.cc' object='src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/handler/src_client_linux_linux_client_unittest_shlib-exception_handler_unittest.obj `if test -f 'src/client/linux/handler/exception_handler_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/handler/exception_handler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/handler/exception_handler_unittest.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o: src/client/linux/minidump_writer/directory_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o `test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/directory_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/directory_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.o `test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/directory_reader_unittest.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj: src/client/linux/minidump_writer/directory_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/directory_reader_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/directory_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-directory_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/directory_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/directory_reader_unittest.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o: src/client/linux/minidump_writer/cpu_set_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o `test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/cpu_set_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/cpu_set_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.o `test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/cpu_set_unittest.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj: src/client/linux/minidump_writer/cpu_set_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj `if test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/cpu_set_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/cpu_set_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-cpu_set_unittest.obj `if test -f 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/cpu_set_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/cpu_set_unittest.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o: src/client/linux/minidump_writer/line_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o `test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/line_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/line_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.o `test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/line_reader_unittest.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj: src/client/linux/minidump_writer/line_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/line_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/line_reader_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/line_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-line_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/line_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/line_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/line_reader_unittest.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o: src/client/linux/minidump_writer/linux_core_dumper.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj: src/client/linux/minidump_writer/linux_core_dumper.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o: src/client/linux/minidump_writer/linux_core_dumper_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_core_dumper_unittest.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj: src/client/linux/minidump_writer/linux_core_dumper_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_core_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_core_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o: src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.o `test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj: src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-linux_ptrace_dumper_unittest.obj `if test -f 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o: src/client/linux/minidump_writer/minidump_writer_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj: src/client/linux/minidump_writer/minidump_writer_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o: src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.o `test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj: src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-minidump_writer_unittest_utils.obj `if test -f 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o: src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o `test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.o `test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc - -src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj: src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_client_unittest_shlib-proc_cpuinfo_reader_unittest.obj `if test -f 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc'; fi` - -src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o: src/common/linux/elf_core_dump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc - -src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj: src/common/linux/elf_core_dump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-elf_core_dump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi` - -src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o: src/common/linux/linux_libc_support_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o `test -f 'src/common/linux/linux_libc_support_unittest.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/linux_libc_support_unittest.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.o `test -f 'src/common/linux/linux_libc_support_unittest.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support_unittest.cc - -src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj: src/common/linux/linux_libc_support_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj `if test -f 'src/common/linux/linux_libc_support_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Tpo src/common/linux/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/linux_libc_support_unittest.cc' object='src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_client_linux_linux_client_unittest_shlib-linux_libc_support_unittest.obj `if test -f 'src/common/linux/linux_libc_support_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support_unittest.cc'; fi` - -src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o: src/common/linux/tests/crash_generator.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc - -src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj: src/common/linux/tests/crash_generator.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-crash_generator.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_client_linux_linux_client_unittest_shlib-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi` - -src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o: src/common/memory_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o `test -f 'src/common/memory_unittest.cc' || echo '$(srcdir)/'`src/common/memory_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/memory_unittest.cc' object='src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.o `test -f 'src/common/memory_unittest.cc' || echo '$(srcdir)/'`src/common/memory_unittest.cc - -src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj: src/common/memory_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj `if test -f 'src/common/memory_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Tpo src/common/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-memory_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/memory_unittest.cc' object='src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_client_linux_linux_client_unittest_shlib-memory_unittest.obj `if test -f 'src/common/memory_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_unittest.cc'; fi` - -src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o: src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o -MD -MP -MF src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc - -src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj: src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj -MD -MP -MF src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Tpo src/common/tests/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-file_utils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_client_linux_linux_client_unittest_shlib-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` - -src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o: src/processor/basic_code_modules.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o `test -f 'src/processor/basic_code_modules.cc' || echo '$(srcdir)/'`src/processor/basic_code_modules.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/basic_code_modules.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.o `test -f 'src/processor/basic_code_modules.cc' || echo '$(srcdir)/'`src/processor/basic_code_modules.cc - -src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj: src/processor/basic_code_modules.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj `if test -f 'src/processor/basic_code_modules.cc'; then $(CYGPATH_W) 'src/processor/basic_code_modules.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_code_modules.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-basic_code_modules.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/basic_code_modules.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-basic_code_modules.obj `if test -f 'src/processor/basic_code_modules.cc'; then $(CYGPATH_W) 'src/processor/basic_code_modules.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_code_modules.cc'; fi` - -src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o: src/processor/dump_context.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o `test -f 'src/processor/dump_context.cc' || echo '$(srcdir)/'`src/processor/dump_context.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/dump_context.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.o `test -f 'src/processor/dump_context.cc' || echo '$(srcdir)/'`src/processor/dump_context.cc - -src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj: src/processor/dump_context.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj `if test -f 'src/processor/dump_context.cc'; then $(CYGPATH_W) 'src/processor/dump_context.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_context.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_context.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/dump_context.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_context.obj `if test -f 'src/processor/dump_context.cc'; then $(CYGPATH_W) 'src/processor/dump_context.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_context.cc'; fi` - -src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o: src/processor/dump_object.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o `test -f 'src/processor/dump_object.cc' || echo '$(srcdir)/'`src/processor/dump_object.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/dump_object.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.o `test -f 'src/processor/dump_object.cc' || echo '$(srcdir)/'`src/processor/dump_object.cc - -src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj: src/processor/dump_object.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj `if test -f 'src/processor/dump_object.cc'; then $(CYGPATH_W) 'src/processor/dump_object.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_object.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-dump_object.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/dump_object.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-dump_object.obj `if test -f 'src/processor/dump_object.cc'; then $(CYGPATH_W) 'src/processor/dump_object.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/dump_object.cc'; fi` - -src/processor/src_client_linux_linux_client_unittest_shlib-logging.o: src/processor/logging.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-logging.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.o `test -f 'src/processor/logging.cc' || echo '$(srcdir)/'`src/processor/logging.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/logging.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-logging.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.o `test -f 'src/processor/logging.cc' || echo '$(srcdir)/'`src/processor/logging.cc - -src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj: src/processor/logging.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj `if test -f 'src/processor/logging.cc'; then $(CYGPATH_W) 'src/processor/logging.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/logging.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-logging.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/logging.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-logging.obj `if test -f 'src/processor/logging.cc'; then $(CYGPATH_W) 'src/processor/logging.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/logging.cc'; fi` - -src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o: src/processor/minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o `test -f 'src/processor/minidump.cc' || echo '$(srcdir)/'`src/processor/minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.o `test -f 'src/processor/minidump.cc' || echo '$(srcdir)/'`src/processor/minidump.cc - -src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj: src/processor/minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj `if test -f 'src/processor/minidump.cc'; then $(CYGPATH_W) 'src/processor/minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-minidump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-minidump.obj `if test -f 'src/processor/minidump.cc'; then $(CYGPATH_W) 'src/processor/minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump.cc'; fi` - -src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o: src/processor/pathname_stripper.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o `test -f 'src/processor/pathname_stripper.cc' || echo '$(srcdir)/'`src/processor/pathname_stripper.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/pathname_stripper.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.o `test -f 'src/processor/pathname_stripper.cc' || echo '$(srcdir)/'`src/processor/pathname_stripper.cc - -src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj: src/processor/pathname_stripper.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj `if test -f 'src/processor/pathname_stripper.cc'; then $(CYGPATH_W) 'src/processor/pathname_stripper.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/pathname_stripper.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-pathname_stripper.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/pathname_stripper.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-pathname_stripper.obj `if test -f 'src/processor/pathname_stripper.cc'; then $(CYGPATH_W) 'src/processor/pathname_stripper.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/pathname_stripper.cc'; fi` - -src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o: src/processor/proc_maps_linux.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o `test -f 'src/processor/proc_maps_linux.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.o `test -f 'src/processor/proc_maps_linux.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux.cc - -src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj: src/processor/proc_maps_linux.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj -MD -MP -MF src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Tpo -c -o src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj `if test -f 'src/processor/proc_maps_linux.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Tpo src/processor/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux.cc' object='src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_client_linux_linux_client_unittest_shlib-proc_maps_linux.obj `if test -f 'src/processor/proc_maps_linux.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux.cc'; fi` - -src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o: src/client/linux/microdump_writer/microdump_writer_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o -MD -MP -MF src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o `test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/microdump_writer/microdump_writer_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/microdump_writer/microdump_writer_unittest.cc' object='src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.o `test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc' || echo '$(srcdir)/'`src/client/linux/microdump_writer/microdump_writer_unittest.cc - -src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj: src/client/linux/microdump_writer/microdump_writer_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj -MD -MP -MF src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj `if test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/microdump_writer/microdump_writer_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Tpo src/client/linux/microdump_writer/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/microdump_writer/microdump_writer_unittest.cc' object='src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/microdump_writer/src_client_linux_linux_client_unittest_shlib-microdump_writer_unittest.obj `if test -f 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; then $(CYGPATH_W) 'src/client/linux/microdump_writer/microdump_writer_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/microdump_writer/microdump_writer_unittest.cc'; fi` - -src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o: src/common/android/breakpad_getcontext_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o `test -f 'src/common/android/breakpad_getcontext_unittest.cc' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/android/breakpad_getcontext_unittest.cc' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.o `test -f 'src/common/android/breakpad_getcontext_unittest.cc' || echo '$(srcdir)/'`src/common/android/breakpad_getcontext_unittest.cc - -src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj: src/common/android/breakpad_getcontext_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj -MD -MP -MF src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj `if test -f 'src/common/android/breakpad_getcontext_unittest.cc'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Tpo src/common/android/$(DEPDIR)/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/android/breakpad_getcontext_unittest.cc' object='src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_client_linux_linux_client_unittest_shlib_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/android/src_client_linux_linux_client_unittest_shlib-breakpad_getcontext_unittest.obj `if test -f 'src/common/android/breakpad_getcontext_unittest.cc'; then $(CYGPATH_W) 'src/common/android/breakpad_getcontext_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/android/breakpad_getcontext_unittest.cc'; fi` - -src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o: src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o `test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.o `test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' || echo '$(srcdir)/'`src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc - -src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj: src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -MT src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj -MD -MP -MF src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj `if test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Tpo src/client/linux/minidump_writer/$(DEPDIR)/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc' object='src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_client_linux_linux_dumper_unittest_helper_CXXFLAGS) $(CXXFLAGS) -c -o src/client/linux/minidump_writer/src_client_linux_linux_dumper_unittest_helper-linux_dumper_unittest_helper.obj `if test -f 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; then $(CYGPATH_W) 'src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; else $(CYGPATH_W) '$(srcdir)/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc'; fi` - -src/common/src_common_dumper_unittest-byte_cursor_unittest.o: src/common/byte_cursor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-byte_cursor_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.o `test -f 'src/common/byte_cursor_unittest.cc' || echo '$(srcdir)/'`src/common/byte_cursor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/byte_cursor_unittest.cc' object='src/common/src_common_dumper_unittest-byte_cursor_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.o `test -f 'src/common/byte_cursor_unittest.cc' || echo '$(srcdir)/'`src/common/byte_cursor_unittest.cc - -src/common/src_common_dumper_unittest-byte_cursor_unittest.obj: src/common/byte_cursor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-byte_cursor_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.obj `if test -f 'src/common/byte_cursor_unittest.cc'; then $(CYGPATH_W) 'src/common/byte_cursor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/byte_cursor_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-byte_cursor_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/byte_cursor_unittest.cc' object='src/common/src_common_dumper_unittest-byte_cursor_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-byte_cursor_unittest.obj `if test -f 'src/common/byte_cursor_unittest.cc'; then $(CYGPATH_W) 'src/common/byte_cursor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/byte_cursor_unittest.cc'; fi` - -src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o: src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc - -src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj: src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` - -src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o: src/common/dwarf_cfi_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o `test -f 'src/common/dwarf_cfi_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.o `test -f 'src/common/dwarf_cfi_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module_unittest.cc - -src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj: src/common/dwarf_cfi_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj `if test -f 'src/common/dwarf_cfi_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cfi_to_module_unittest.obj `if test -f 'src/common/dwarf_cfi_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module_unittest.cc'; fi` - -src/common/src_common_dumper_unittest-dwarf_cu_to_module.o: src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc - -src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj: src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` - -src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o: src/common/dwarf_cu_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o `test -f 'src/common/dwarf_cu_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.o `test -f 'src/common/dwarf_cu_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module_unittest.cc - -src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj: src/common/dwarf_cu_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj `if test -f 'src/common/dwarf_cu_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_cu_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_cu_to_module_unittest.obj `if test -f 'src/common/dwarf_cu_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module_unittest.cc'; fi` - -src/common/src_common_dumper_unittest-dwarf_line_to_module.o: src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc - -src/common/src_common_dumper_unittest-dwarf_line_to_module.obj: src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` - -src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o: src/common/dwarf_line_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o `test -f 'src/common/dwarf_line_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.o `test -f 'src/common/dwarf_line_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module_unittest.cc - -src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj: src/common/dwarf_line_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj `if test -f 'src/common/dwarf_line_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-dwarf_line_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-dwarf_line_to_module_unittest.obj `if test -f 'src/common/dwarf_line_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module_unittest.cc'; fi` - -src/common/src_common_dumper_unittest-language.o: src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-language.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo -c -o src/common/src_common_dumper_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_dumper_unittest-language.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc - -src/common/src_common_dumper_unittest-language.obj: src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-language.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo -c -o src/common/src_common_dumper_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-language.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-language.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_dumper_unittest-language.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` - -src/common/src_common_dumper_unittest-memory_range_unittest.o: src/common/memory_range_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-memory_range_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo -c -o src/common/src_common_dumper_unittest-memory_range_unittest.o `test -f 'src/common/memory_range_unittest.cc' || echo '$(srcdir)/'`src/common/memory_range_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/memory_range_unittest.cc' object='src/common/src_common_dumper_unittest-memory_range_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-memory_range_unittest.o `test -f 'src/common/memory_range_unittest.cc' || echo '$(srcdir)/'`src/common/memory_range_unittest.cc - -src/common/src_common_dumper_unittest-memory_range_unittest.obj: src/common/memory_range_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-memory_range_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo -c -o src/common/src_common_dumper_unittest-memory_range_unittest.obj `if test -f 'src/common/memory_range_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_range_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-memory_range_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/memory_range_unittest.cc' object='src/common/src_common_dumper_unittest-memory_range_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-memory_range_unittest.obj `if test -f 'src/common/memory_range_unittest.cc'; then $(CYGPATH_W) 'src/common/memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/memory_range_unittest.cc'; fi` - -src/common/src_common_dumper_unittest-module.o: src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo -c -o src/common/src_common_dumper_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_dumper_unittest-module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc - -src/common/src_common_dumper_unittest-module.obj: src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo -c -o src/common/src_common_dumper_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_dumper_unittest-module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` - -src/common/src_common_dumper_unittest-module_unittest.o: src/common/module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-module_unittest.o `test -f 'src/common/module_unittest.cc' || echo '$(srcdir)/'`src/common/module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module_unittest.cc' object='src/common/src_common_dumper_unittest-module_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module_unittest.o `test -f 'src/common/module_unittest.cc' || echo '$(srcdir)/'`src/common/module_unittest.cc - -src/common/src_common_dumper_unittest-module_unittest.obj: src/common/module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-module_unittest.obj `if test -f 'src/common/module_unittest.cc'; then $(CYGPATH_W) 'src/common/module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module_unittest.cc' object='src/common/src_common_dumper_unittest-module_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-module_unittest.obj `if test -f 'src/common/module_unittest.cc'; then $(CYGPATH_W) 'src/common/module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module_unittest.cc'; fi` - -src/common/src_common_dumper_unittest-stabs_reader.o: src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_dumper_unittest-stabs_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc - -src/common/src_common_dumper_unittest-stabs_reader.obj: src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_dumper_unittest-stabs_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` - -src/common/src_common_dumper_unittest-stabs_reader_unittest.o: src/common/stabs_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.o `test -f 'src/common/stabs_reader_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.o `test -f 'src/common/stabs_reader_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_reader_unittest.cc - -src/common/src_common_dumper_unittest-stabs_reader_unittest.obj: src/common/stabs_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_reader_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.obj `if test -f 'src/common/stabs_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_reader_unittest.obj `if test -f 'src/common/stabs_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader_unittest.cc'; fi` - -src/common/src_common_dumper_unittest-stabs_to_module.o: src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_dumper_unittest-stabs_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc - -src/common/src_common_dumper_unittest-stabs_to_module.obj: src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_dumper_unittest-stabs_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` - -src/common/src_common_dumper_unittest-stabs_to_module_unittest.o: src/common/stabs_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.o `test -f 'src/common/stabs_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.o `test -f 'src/common/stabs_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/stabs_to_module_unittest.cc - -src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj: src/common/stabs_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj `if test -f 'src/common/stabs_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-stabs_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module_unittest.cc' object='src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-stabs_to_module_unittest.obj `if test -f 'src/common/stabs_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module_unittest.cc'; fi` - -src/common/src_common_dumper_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo -c -o src/common/src_common_dumper_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_dumper_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_common_dumper_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_dumper_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo -c -o src/common/src_common_dumper_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_dumper_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_dumper_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_dumper_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-bytereader.o: src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc - -src/common/dwarf/src_common_dumper_unittest-bytereader.obj: src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o: src/common/dwarf/bytereader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o `test -f 'src/common/dwarf/bytereader_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.o `test -f 'src/common/dwarf/bytereader_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader_unittest.cc - -src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj: src/common/dwarf/bytereader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj `if test -f 'src/common/dwarf/bytereader_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-bytereader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-bytereader_unittest.obj `if test -f 'src/common/dwarf/bytereader_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader_unittest.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o: src/common/dwarf/cfi_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc - -src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj: src/common/dwarf/cfi_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-cfi_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o: src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc - -src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj: src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o: src/common/dwarf/dwarf2diehandler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o `test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.o `test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler_unittest.cc - -src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj: src/common/dwarf/dwarf2diehandler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj `if test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2diehandler_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2diehandler_unittest.obj `if test -f 'src/common/dwarf/dwarf2diehandler_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler_unittest.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o: src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc - -src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj: src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-elf_reader.o: src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-elf_reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_common_dumper_unittest-elf_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc - -src/common/dwarf/src_common_dumper_unittest-elf_reader.obj: src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-elf_reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-elf_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_common_dumper_unittest-elf_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o: src/common/dwarf/dwarf2reader_cfi_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o `test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_cfi_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader_cfi_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.o `test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_cfi_unittest.cc - -src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj: src/common/dwarf/dwarf2reader_cfi_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_cfi_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_cfi_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader_cfi_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_cfi_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_cfi_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_cfi_unittest.cc'; fi` - -src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o: src/common/dwarf/dwarf2reader_die_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o `test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_die_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader_die_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.o `test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader_die_unittest.cc - -src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj: src/common/dwarf/dwarf2reader_die_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_die_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_die_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Tpo src/common/dwarf/$(DEPDIR)/src_common_dumper_unittest-dwarf2reader_die_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader_die_unittest.cc' object='src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_dumper_unittest-dwarf2reader_die_unittest.obj `if test -f 'src/common/dwarf/dwarf2reader_die_unittest.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader_die_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader_die_unittest.cc'; fi` - -src/common/linux/src_common_dumper_unittest-crc32.o: src/common/linux/crc32.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-crc32.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo -c -o src/common/linux/src_common_dumper_unittest-crc32.o `test -f 'src/common/linux/crc32.cc' || echo '$(srcdir)/'`src/common/linux/crc32.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/crc32.cc' object='src/common/linux/src_common_dumper_unittest-crc32.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-crc32.o `test -f 'src/common/linux/crc32.cc' || echo '$(srcdir)/'`src/common/linux/crc32.cc - -src/common/linux/src_common_dumper_unittest-crc32.obj: src/common/linux/crc32.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-crc32.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo -c -o src/common/linux/src_common_dumper_unittest-crc32.obj `if test -f 'src/common/linux/crc32.cc'; then $(CYGPATH_W) 'src/common/linux/crc32.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/crc32.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-crc32.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/crc32.cc' object='src/common/linux/src_common_dumper_unittest-crc32.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-crc32.obj `if test -f 'src/common/linux/crc32.cc'; then $(CYGPATH_W) 'src/common/linux/crc32.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/crc32.cc'; fi` - -src/common/linux/src_common_dumper_unittest-dump_symbols.o: src/common/linux/dump_symbols.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.o `test -f 'src/common/linux/dump_symbols.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/dump_symbols.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.o `test -f 'src/common/linux/dump_symbols.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols.cc - -src/common/linux/src_common_dumper_unittest-dump_symbols.obj: src/common/linux/dump_symbols.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.obj `if test -f 'src/common/linux/dump_symbols.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/dump_symbols.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols.obj `if test -f 'src/common/linux/dump_symbols.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols.cc'; fi` - -src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o: src/common/linux/dump_symbols_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o `test -f 'src/common/linux/dump_symbols_unittest.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/dump_symbols_unittest.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.o `test -f 'src/common/linux/dump_symbols_unittest.cc' || echo '$(srcdir)/'`src/common/linux/dump_symbols_unittest.cc - -src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj: src/common/linux/dump_symbols_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj `if test -f 'src/common/linux/dump_symbols_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-dump_symbols_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/dump_symbols_unittest.cc' object='src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-dump_symbols_unittest.obj `if test -f 'src/common/linux/dump_symbols_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/dump_symbols_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/dump_symbols_unittest.cc'; fi` - -src/common/linux/src_common_dumper_unittest-elf_core_dump.o: src/common/linux/elf_core_dump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.o `test -f 'src/common/linux/elf_core_dump.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump.cc - -src/common/linux/src_common_dumper_unittest-elf_core_dump.obj: src/common/linux/elf_core_dump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump.obj `if test -f 'src/common/linux/elf_core_dump.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump.cc'; fi` - -src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o: src/common/linux/elf_core_dump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o `test -f 'src/common/linux/elf_core_dump_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.o `test -f 'src/common/linux/elf_core_dump_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_core_dump_unittest.cc - -src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj: src/common/linux/elf_core_dump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj `if test -f 'src/common/linux/elf_core_dump_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_core_dump_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_core_dump_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_core_dump_unittest.obj `if test -f 'src/common/linux/elf_core_dump_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_core_dump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_core_dump_unittest.cc'; fi` - -src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o: src/common/linux/elf_symbols_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o `test -f 'src/common/linux/elf_symbols_to_module.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_symbols_to_module.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.o `test -f 'src/common/linux/elf_symbols_to_module.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module.cc - -src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj: src/common/linux/elf_symbols_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj `if test -f 'src/common/linux/elf_symbols_to_module.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_symbols_to_module.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module.obj `if test -f 'src/common/linux/elf_symbols_to_module.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module.cc'; fi` - -src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o: src/common/linux/elf_symbols_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o `test -f 'src/common/linux/elf_symbols_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_symbols_to_module_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.o `test -f 'src/common/linux/elf_symbols_to_module_unittest.cc' || echo '$(srcdir)/'`src/common/linux/elf_symbols_to_module_unittest.cc - -src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj: src/common/linux/elf_symbols_to_module_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj `if test -f 'src/common/linux/elf_symbols_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elf_symbols_to_module_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elf_symbols_to_module_unittest.cc' object='src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elf_symbols_to_module_unittest.obj `if test -f 'src/common/linux/elf_symbols_to_module_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/elf_symbols_to_module_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elf_symbols_to_module_unittest.cc'; fi` - -src/common/linux/src_common_dumper_unittest-elfutils.o: src/common/linux/elfutils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elfutils.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo -c -o src/common/linux/src_common_dumper_unittest-elfutils.o `test -f 'src/common/linux/elfutils.cc' || echo '$(srcdir)/'`src/common/linux/elfutils.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elfutils.cc' object='src/common/linux/src_common_dumper_unittest-elfutils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elfutils.o `test -f 'src/common/linux/elfutils.cc' || echo '$(srcdir)/'`src/common/linux/elfutils.cc - -src/common/linux/src_common_dumper_unittest-elfutils.obj: src/common/linux/elfutils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-elfutils.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo -c -o src/common/linux/src_common_dumper_unittest-elfutils.obj `if test -f 'src/common/linux/elfutils.cc'; then $(CYGPATH_W) 'src/common/linux/elfutils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elfutils.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-elfutils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/elfutils.cc' object='src/common/linux/src_common_dumper_unittest-elfutils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-elfutils.obj `if test -f 'src/common/linux/elfutils.cc'; then $(CYGPATH_W) 'src/common/linux/elfutils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/elfutils.cc'; fi` - -src/common/linux/src_common_dumper_unittest-file_id.o: src/common/linux/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id.o `test -f 'src/common/linux/file_id.cc' || echo '$(srcdir)/'`src/common/linux/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/file_id.cc' object='src/common/linux/src_common_dumper_unittest-file_id.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id.o `test -f 'src/common/linux/file_id.cc' || echo '$(srcdir)/'`src/common/linux/file_id.cc - -src/common/linux/src_common_dumper_unittest-file_id.obj: src/common/linux/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id.obj `if test -f 'src/common/linux/file_id.cc'; then $(CYGPATH_W) 'src/common/linux/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/file_id.cc' object='src/common/linux/src_common_dumper_unittest-file_id.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id.obj `if test -f 'src/common/linux/file_id.cc'; then $(CYGPATH_W) 'src/common/linux/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id.cc'; fi` - -src/common/linux/src_common_dumper_unittest-file_id_unittest.o: src/common/linux/file_id_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.o `test -f 'src/common/linux/file_id_unittest.cc' || echo '$(srcdir)/'`src/common/linux/file_id_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/file_id_unittest.cc' object='src/common/linux/src_common_dumper_unittest-file_id_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.o `test -f 'src/common/linux/file_id_unittest.cc' || echo '$(srcdir)/'`src/common/linux/file_id_unittest.cc - -src/common/linux/src_common_dumper_unittest-file_id_unittest.obj: src/common/linux/file_id_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-file_id_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.obj `if test -f 'src/common/linux/file_id_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/file_id_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-file_id_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/file_id_unittest.cc' object='src/common/linux/src_common_dumper_unittest-file_id_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-file_id_unittest.obj `if test -f 'src/common/linux/file_id_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/file_id_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/file_id_unittest.cc'; fi` - -src/common/linux/src_common_dumper_unittest-linux_libc_support.o: src/common/linux/linux_libc_support.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-linux_libc_support.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.o `test -f 'src/common/linux/linux_libc_support.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/linux_libc_support.cc' object='src/common/linux/src_common_dumper_unittest-linux_libc_support.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.o `test -f 'src/common/linux/linux_libc_support.cc' || echo '$(srcdir)/'`src/common/linux/linux_libc_support.cc - -src/common/linux/src_common_dumper_unittest-linux_libc_support.obj: src/common/linux/linux_libc_support.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-linux_libc_support.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.obj `if test -f 'src/common/linux/linux_libc_support.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-linux_libc_support.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/linux_libc_support.cc' object='src/common/linux/src_common_dumper_unittest-linux_libc_support.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-linux_libc_support.obj `if test -f 'src/common/linux/linux_libc_support.cc'; then $(CYGPATH_W) 'src/common/linux/linux_libc_support.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/linux_libc_support.cc'; fi` - -src/common/linux/src_common_dumper_unittest-memory_mapped_file.o: src/common/linux/memory_mapped_file.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.o `test -f 'src/common/linux/memory_mapped_file.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/memory_mapped_file.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.o `test -f 'src/common/linux/memory_mapped_file.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file.cc - -src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj: src/common/linux/memory_mapped_file.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj `if test -f 'src/common/linux/memory_mapped_file.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/memory_mapped_file.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file.obj `if test -f 'src/common/linux/memory_mapped_file.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file.cc'; fi` - -src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o: src/common/linux/memory_mapped_file_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o `test -f 'src/common/linux/memory_mapped_file_unittest.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/memory_mapped_file_unittest.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.o `test -f 'src/common/linux/memory_mapped_file_unittest.cc' || echo '$(srcdir)/'`src/common/linux/memory_mapped_file_unittest.cc - -src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj: src/common/linux/memory_mapped_file_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj `if test -f 'src/common/linux/memory_mapped_file_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-memory_mapped_file_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/memory_mapped_file_unittest.cc' object='src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-memory_mapped_file_unittest.obj `if test -f 'src/common/linux/memory_mapped_file_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/memory_mapped_file_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/memory_mapped_file_unittest.cc'; fi` - -src/common/linux/src_common_dumper_unittest-safe_readlink.o: src/common/linux/safe_readlink.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.o `test -f 'src/common/linux/safe_readlink.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/safe_readlink.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.o `test -f 'src/common/linux/safe_readlink.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink.cc - -src/common/linux/src_common_dumper_unittest-safe_readlink.obj: src/common/linux/safe_readlink.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.obj `if test -f 'src/common/linux/safe_readlink.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/safe_readlink.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink.obj `if test -f 'src/common/linux/safe_readlink.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink.cc'; fi` - -src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o: src/common/linux/safe_readlink_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o `test -f 'src/common/linux/safe_readlink_unittest.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/safe_readlink_unittest.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.o `test -f 'src/common/linux/safe_readlink_unittest.cc' || echo '$(srcdir)/'`src/common/linux/safe_readlink_unittest.cc - -src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj: src/common/linux/safe_readlink_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj `if test -f 'src/common/linux/safe_readlink_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-safe_readlink_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/safe_readlink_unittest.cc' object='src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-safe_readlink_unittest.obj `if test -f 'src/common/linux/safe_readlink_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/safe_readlink_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/safe_readlink_unittest.cc'; fi` - -src/common/linux/src_common_dumper_unittest-synth_elf.o: src/common/linux/synth_elf.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf.o `test -f 'src/common/linux/synth_elf.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/synth_elf.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf.o `test -f 'src/common/linux/synth_elf.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf.cc - -src/common/linux/src_common_dumper_unittest-synth_elf.obj: src/common/linux/synth_elf.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf.obj `if test -f 'src/common/linux/synth_elf.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/synth_elf.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf.obj `if test -f 'src/common/linux/synth_elf.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf.cc'; fi` - -src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o: src/common/linux/synth_elf_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o `test -f 'src/common/linux/synth_elf_unittest.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/synth_elf_unittest.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.o `test -f 'src/common/linux/synth_elf_unittest.cc' || echo '$(srcdir)/'`src/common/linux/synth_elf_unittest.cc - -src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj: src/common/linux/synth_elf_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj -MD -MP -MF src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj `if test -f 'src/common/linux/synth_elf_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Tpo src/common/linux/$(DEPDIR)/src_common_dumper_unittest-synth_elf_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/synth_elf_unittest.cc' object='src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/src_common_dumper_unittest-synth_elf_unittest.obj `if test -f 'src/common/linux/synth_elf_unittest.cc'; then $(CYGPATH_W) 'src/common/linux/synth_elf_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/synth_elf_unittest.cc'; fi` - -src/common/linux/tests/src_common_dumper_unittest-crash_generator.o: src/common/linux/tests/crash_generator.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_common_dumper_unittest-crash_generator.o -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_common_dumper_unittest-crash_generator.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.o `test -f 'src/common/linux/tests/crash_generator.cc' || echo '$(srcdir)/'`src/common/linux/tests/crash_generator.cc - -src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj: src/common/linux/tests/crash_generator.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj -MD -MP -MF src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Tpo src/common/linux/tests/$(DEPDIR)/src_common_dumper_unittest-crash_generator.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/linux/tests/crash_generator.cc' object='src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/linux/tests/src_common_dumper_unittest-crash_generator.obj `if test -f 'src/common/linux/tests/crash_generator.cc'; then $(CYGPATH_W) 'src/common/linux/tests/crash_generator.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/linux/tests/crash_generator.cc'; fi` - -src/common/tests/src_common_dumper_unittest-file_utils.o: src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_dumper_unittest-file_utils.o -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo -c -o src/common/tests/src_common_dumper_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_dumper_unittest-file_utils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_dumper_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc - -src/common/tests/src_common_dumper_unittest-file_utils.obj: src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_dumper_unittest-file_utils.obj -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo -c -o src/common/tests/src_common_dumper_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_dumper_unittest-file_utils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_dumper_unittest-file_utils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_dumper_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_dumper_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o: src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc - -src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj: src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o: src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc - -src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj: src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o: src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc - -src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj: src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf_line_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-language.o: src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-language.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_mac_macho_reader_unittest-language.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc - -src/common/src_common_mac_macho_reader_unittest-language.obj: src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-language.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-language.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_common_mac_macho_reader_unittest-language.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-md5.o: src/common/md5.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-md5.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-md5.o `test -f 'src/common/md5.cc' || echo '$(srcdir)/'`src/common/md5.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/md5.cc' object='src/common/src_common_mac_macho_reader_unittest-md5.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-md5.o `test -f 'src/common/md5.cc' || echo '$(srcdir)/'`src/common/md5.cc - -src/common/src_common_mac_macho_reader_unittest-md5.obj: src/common/md5.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-md5.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-md5.obj `if test -f 'src/common/md5.cc'; then $(CYGPATH_W) 'src/common/md5.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/md5.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-md5.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/md5.cc' object='src/common/src_common_mac_macho_reader_unittest-md5.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-md5.obj `if test -f 'src/common/md5.cc'; then $(CYGPATH_W) 'src/common/md5.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/md5.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-module.o: src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_mac_macho_reader_unittest-module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc - -src/common/src_common_mac_macho_reader_unittest-module.obj: src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_common_mac_macho_reader_unittest-module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-stabs_reader.o: src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-stabs_reader.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_mac_macho_reader_unittest-stabs_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc - -src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj: src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o: src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc - -src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj: src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-stabs_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` - -src/common/src_common_mac_macho_reader_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_mac_macho_reader_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_common_mac_macho_reader_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_mac_macho_reader_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Tpo -c -o src/common/src_common_mac_macho_reader_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_mac_macho_reader_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_mac_macho_reader_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_mac_macho_reader_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o: src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc - -src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj: src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-bytereader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` - -src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o: src/common/dwarf/cfi_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.o `test -f 'src/common/dwarf/cfi_assembler.cc' || echo '$(srcdir)/'`src/common/dwarf/cfi_assembler.cc - -src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj: src/common/dwarf/cfi_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-cfi_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/cfi_assembler.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-cfi_assembler.obj `if test -f 'src/common/dwarf/cfi_assembler.cc'; then $(CYGPATH_W) 'src/common/dwarf/cfi_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/cfi_assembler.cc'; fi` - -src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o: src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc - -src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj: src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2diehandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` - -src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o: src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc - -src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj: src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-dwarf2reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` - -src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o: src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc - -src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj: src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Tpo -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_common_mac_macho_reader_unittest-elf_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_common_mac_macho_reader_unittest-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` - -src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o: src/common/mac/arch_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o `test -f 'src/common/mac/arch_utilities.cc' || echo '$(srcdir)/'`src/common/mac/arch_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/arch_utilities.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.o `test -f 'src/common/mac/arch_utilities.cc' || echo '$(srcdir)/'`src/common/mac/arch_utilities.cc - -src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj: src/common/mac/arch_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj `if test -f 'src/common/mac/arch_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/arch_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/arch_utilities.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-arch_utilities.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/arch_utilities.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-arch_utilities.obj `if test -f 'src/common/mac/arch_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/arch_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/arch_utilities.cc'; fi` - -src/common/mac/src_common_mac_macho_reader_unittest-file_id.o: src/common/mac/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-file_id.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-file_id.o `test -f 'src/common/mac/file_id.cc' || echo '$(srcdir)/'`src/common/mac/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/file_id.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-file_id.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-file_id.o `test -f 'src/common/mac/file_id.cc' || echo '$(srcdir)/'`src/common/mac/file_id.cc - -src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj: src/common/mac/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj `if test -f 'src/common/mac/file_id.cc'; then $(CYGPATH_W) 'src/common/mac/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/file_id.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/file_id.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-file_id.obj `if test -f 'src/common/mac/file_id.cc'; then $(CYGPATH_W) 'src/common/mac/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/file_id.cc'; fi` - -src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o: src/common/mac/macho_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o `test -f 'src/common/mac/macho_id.cc' || echo '$(srcdir)/'`src/common/mac/macho_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_id.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_id.o `test -f 'src/common/mac/macho_id.cc' || echo '$(srcdir)/'`src/common/mac/macho_id.cc - -src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj: src/common/mac/macho_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj `if test -f 'src/common/mac/macho_id.cc'; then $(CYGPATH_W) 'src/common/mac/macho_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_id.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_id.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_id.obj `if test -f 'src/common/mac/macho_id.cc'; then $(CYGPATH_W) 'src/common/mac/macho_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_id.cc'; fi` - -src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o: src/common/mac/macho_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o `test -f 'src/common/mac/macho_reader.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.o `test -f 'src/common/mac/macho_reader.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader.cc - -src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj: src/common/mac/macho_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj `if test -f 'src/common/mac/macho_reader.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader.obj `if test -f 'src/common/mac/macho_reader.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader.cc'; fi` - -src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o: src/common/mac/macho_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o `test -f 'src/common/mac/macho_reader_unittest.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader_unittest.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.o `test -f 'src/common/mac/macho_reader_unittest.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader_unittest.cc - -src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj: src/common/mac/macho_reader_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj `if test -f 'src/common/mac/macho_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_reader_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader_unittest.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_reader_unittest.obj `if test -f 'src/common/mac/macho_reader_unittest.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader_unittest.cc'; fi` - -src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o: src/common/mac/macho_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o `test -f 'src/common/mac/macho_utilities.cc' || echo '$(srcdir)/'`src/common/mac/macho_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_utilities.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.o `test -f 'src/common/mac/macho_utilities.cc' || echo '$(srcdir)/'`src/common/mac/macho_utilities.cc - -src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj: src/common/mac/macho_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj `if test -f 'src/common/mac/macho_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/macho_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_utilities.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_utilities.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_utilities.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_utilities.obj `if test -f 'src/common/mac/macho_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/macho_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_utilities.cc'; fi` - -src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o: src/common/mac/macho_walker.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o `test -f 'src/common/mac/macho_walker.cc' || echo '$(srcdir)/'`src/common/mac/macho_walker.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_walker.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.o `test -f 'src/common/mac/macho_walker.cc' || echo '$(srcdir)/'`src/common/mac/macho_walker.cc - -src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj: src/common/mac/macho_walker.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Tpo -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj `if test -f 'src/common/mac/macho_walker.cc'; then $(CYGPATH_W) 'src/common/mac/macho_walker.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_walker.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Tpo src/common/mac/$(DEPDIR)/src_common_mac_macho_reader_unittest-macho_walker.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_walker.cc' object='src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_common_mac_macho_reader_unittest-macho_walker.obj `if test -f 'src/common/mac/macho_walker.cc'; then $(CYGPATH_W) 'src/common/mac/macho_walker.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_walker.cc'; fi` - -src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o: src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Tpo -c -o src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_mac_macho_reader_unittest-file_utils.o `test -f 'src/common/tests/file_utils.cc' || echo '$(srcdir)/'`src/common/tests/file_utils.cc - -src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj: src/common/tests/file_utils.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj -MD -MP -MF src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Tpo -c -o src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Tpo src/common/tests/$(DEPDIR)/src_common_mac_macho_reader_unittest-file_utils.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/tests/file_utils.cc' object='src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_mac_macho_reader_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/tests/src_common_mac_macho_reader_unittest-file_utils.obj `if test -f 'src/common/tests/file_utils.cc'; then $(CYGPATH_W) 'src/common/tests/file_utils.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/tests/file_utils.cc'; fi` - -src/common/src_common_test_assembler_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_test_assembler_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_common_test_assembler_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_common_test_assembler_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/common/src_common_test_assembler_unittest-test_assembler_unittest.o: src/common/test_assembler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler_unittest.o -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.o `test -f 'src/common/test_assembler_unittest.cc' || echo '$(srcdir)/'`src/common/test_assembler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler_unittest.cc' object='src/common/src_common_test_assembler_unittest-test_assembler_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.o `test -f 'src/common/test_assembler_unittest.cc' || echo '$(srcdir)/'`src/common/test_assembler_unittest.cc - -src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj: src/common/test_assembler_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj -MD -MP -MF src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj `if test -f 'src/common/test_assembler_unittest.cc'; then $(CYGPATH_W) 'src/common/test_assembler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Tpo src/common/$(DEPDIR)/src_common_test_assembler_unittest-test_assembler_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler_unittest.cc' object='src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_common_test_assembler_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_common_test_assembler_unittest-test_assembler_unittest.obj `if test -f 'src/common/test_assembler_unittest.cc'; then $(CYGPATH_W) 'src/common/test_assembler_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler_unittest.cc'; fi` - -src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o: src/processor/basic_source_line_resolver_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o `test -f 'src/processor/basic_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/basic_source_line_resolver_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/basic_source_line_resolver_unittest.cc' object='src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.o `test -f 'src/processor/basic_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/basic_source_line_resolver_unittest.cc - -src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj: src/processor/basic_source_line_resolver_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj `if test -f 'src/processor/basic_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/basic_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_source_line_resolver_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/basic_source_line_resolver_unittest.cc' object='src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_basic_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_basic_source_line_resolver_unittest-basic_source_line_resolver_unittest.obj `if test -f 'src/processor/basic_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/basic_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/basic_source_line_resolver_unittest.cc'; fi` - -src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o: src/processor/cfi_frame_info_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o `test -f 'src/processor/cfi_frame_info_unittest.cc' || echo '$(srcdir)/'`src/processor/cfi_frame_info_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/cfi_frame_info_unittest.cc' object='src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.o `test -f 'src/processor/cfi_frame_info_unittest.cc' || echo '$(srcdir)/'`src/processor/cfi_frame_info_unittest.cc - -src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj: src/processor/cfi_frame_info_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj `if test -f 'src/processor/cfi_frame_info_unittest.cc'; then $(CYGPATH_W) 'src/processor/cfi_frame_info_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/cfi_frame_info_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Tpo src/processor/$(DEPDIR)/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/cfi_frame_info_unittest.cc' object='src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_cfi_frame_info_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_cfi_frame_info_unittest-cfi_frame_info_unittest.obj `if test -f 'src/processor/cfi_frame_info_unittest.cc'; then $(CYGPATH_W) 'src/processor/cfi_frame_info_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/cfi_frame_info_unittest.cc'; fi` - -src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o: src/processor/disassembler_x86_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o `test -f 'src/processor/disassembler_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/disassembler_x86_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/disassembler_x86_unittest.cc' object='src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.o `test -f 'src/processor/disassembler_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/disassembler_x86_unittest.cc - -src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj: src/processor/disassembler_x86_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj `if test -f 'src/processor/disassembler_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/disassembler_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/disassembler_x86_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/disassembler_x86_unittest.cc' object='src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_disassembler_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_disassembler_x86_unittest-disassembler_x86_unittest.obj `if test -f 'src/processor/disassembler_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/disassembler_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/disassembler_x86_unittest.cc'; fi` - -src/processor/src_processor_exploitability_unittest-exploitability_unittest.o: src/processor/exploitability_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_exploitability_unittest-exploitability_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.o `test -f 'src/processor/exploitability_unittest.cc' || echo '$(srcdir)/'`src/processor/exploitability_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/exploitability_unittest.cc' object='src/processor/src_processor_exploitability_unittest-exploitability_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.o `test -f 'src/processor/exploitability_unittest.cc' || echo '$(srcdir)/'`src/processor/exploitability_unittest.cc - -src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj: src/processor/exploitability_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj `if test -f 'src/processor/exploitability_unittest.cc'; then $(CYGPATH_W) 'src/processor/exploitability_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/exploitability_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Tpo src/processor/$(DEPDIR)/src_processor_exploitability_unittest-exploitability_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/exploitability_unittest.cc' object='src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_exploitability_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_exploitability_unittest-exploitability_unittest.obj `if test -f 'src/processor/exploitability_unittest.cc'; then $(CYGPATH_W) 'src/processor/exploitability_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/exploitability_unittest.cc'; fi` - -src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o: src/processor/fast_source_line_resolver_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o `test -f 'src/processor/fast_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/fast_source_line_resolver_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/fast_source_line_resolver_unittest.cc' object='src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.o `test -f 'src/processor/fast_source_line_resolver_unittest.cc' || echo '$(srcdir)/'`src/processor/fast_source_line_resolver_unittest.cc - -src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj: src/processor/fast_source_line_resolver_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj `if test -f 'src/processor/fast_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/fast_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/fast_source_line_resolver_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Tpo src/processor/$(DEPDIR)/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/fast_source_line_resolver_unittest.cc' object='src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_fast_source_line_resolver_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_fast_source_line_resolver_unittest-fast_source_line_resolver_unittest.obj `if test -f 'src/processor/fast_source_line_resolver_unittest.cc'; then $(CYGPATH_W) 'src/processor/fast_source_line_resolver_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/fast_source_line_resolver_unittest.cc'; fi` - -src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o: src/processor/map_serializers_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o `test -f 'src/processor/map_serializers_unittest.cc' || echo '$(srcdir)/'`src/processor/map_serializers_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/map_serializers_unittest.cc' object='src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.o `test -f 'src/processor/map_serializers_unittest.cc' || echo '$(srcdir)/'`src/processor/map_serializers_unittest.cc - -src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj: src/processor/map_serializers_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj `if test -f 'src/processor/map_serializers_unittest.cc'; then $(CYGPATH_W) 'src/processor/map_serializers_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/map_serializers_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Tpo src/processor/$(DEPDIR)/src_processor_map_serializers_unittest-map_serializers_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/map_serializers_unittest.cc' object='src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_map_serializers_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_map_serializers_unittest-map_serializers_unittest.obj `if test -f 'src/processor/map_serializers_unittest.cc'; then $(CYGPATH_W) 'src/processor/map_serializers_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/map_serializers_unittest.cc'; fi` - -src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o: src/processor/microdump_processor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o `test -f 'src/processor/microdump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/microdump_processor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/microdump_processor_unittest.cc' object='src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.o `test -f 'src/processor/microdump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/microdump_processor_unittest.cc - -src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj: src/processor/microdump_processor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj `if test -f 'src/processor/microdump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/microdump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/microdump_processor_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_microdump_processor_unittest-microdump_processor_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/microdump_processor_unittest.cc' object='src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_microdump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_microdump_processor_unittest-microdump_processor_unittest.obj `if test -f 'src/processor/microdump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/microdump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/microdump_processor_unittest.cc'; fi` +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o: src/processor/minidump_processor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc +@am__fastdepCXX_TRUE@ mv -f src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.o `test -f 'src/processor/minidump_processor_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_processor_unittest.cc src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj: src/processor/minidump_processor_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ mv -f src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_processor_unittest-minidump_processor_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/processor/minidump_processor_unittest.cc' object='src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_processor_unittest-minidump_processor_unittest.obj `if test -f 'src/processor/minidump_processor_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_processor_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_processor_unittest.cc'; fi` -src/common/src_processor_minidump_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_minidump_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_minidump_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ +src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o: src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ mv -f src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.o `test -f 'src/testing/gtest/src/gtest-all.cc' || echo '$(srcdir)/'`src/testing/gtest/src/gtest-all.cc -src/common/src_processor_minidump_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_minidump_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_minidump_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_minidump_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ +src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj: src/testing/gtest/src/gtest-all.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj -MD -MP -MF src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` +@am__fastdepCXX_TRUE@ mv -f src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Tpo src/testing/gtest/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/testing/gtest/src/gtest-all.cc' object='src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/gtest/src/src_processor_minidump_processor_unittest-gtest-all.obj `if test -f 'src/testing/gtest/src/gtest-all.cc'; then $(CYGPATH_W) 'src/testing/gtest/src/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/gtest/src/gtest-all.cc'; fi` -src/processor/src_processor_minidump_unittest-minidump_unittest.o: src/processor/minidump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-minidump_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.o `test -f 'src/processor/minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump_unittest.cc' object='src/processor/src_processor_minidump_unittest-minidump_unittest.o' libtool=no @AMDEPBACKSLASH@ +src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o: src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ mv -f src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.o `test -f 'src/processor/minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/minidump_unittest.cc +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.o `test -f 'src/testing/src/gmock-all.cc' || echo '$(srcdir)/'`src/testing/src/gmock-all.cc -src/processor/src_processor_minidump_unittest-minidump_unittest.obj: src/processor/minidump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-minidump_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.obj `if test -f 'src/processor/minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-minidump_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/minidump_unittest.cc' object='src/processor/src_processor_minidump_unittest-minidump_unittest.obj' libtool=no @AMDEPBACKSLASH@ +src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj: src/testing/src/gmock-all.cc +@am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj -MD -MP -MF src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` +@am__fastdepCXX_TRUE@ mv -f src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Tpo src/testing/src/$(DEPDIR)/src_processor_minidump_processor_unittest-gmock-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='src/testing/src/gmock-all.cc' object='src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-minidump_unittest.obj `if test -f 'src/processor/minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/minidump_unittest.cc'; fi` +@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_processor_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/testing/src/src_processor_minidump_processor_unittest-gmock-all.obj `if test -f 'src/testing/src/gmock-all.cc'; then $(CYGPATH_W) 'src/testing/src/gmock-all.cc'; else $(CYGPATH_W) '$(srcdir)/src/testing/src/gmock-all.cc'; fi` -src/processor/src_processor_minidump_unittest-synth_minidump.o: src/processor/synth_minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-synth_minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_minidump_unittest-synth_minidump.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc - -src/processor/src_processor_minidump_unittest-synth_minidump.obj: src/processor/synth_minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_minidump_unittest-synth_minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_minidump_unittest-synth_minidump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_minidump_unittest-synth_minidump.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi` - -src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o: src/processor/proc_maps_linux.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Tpo -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o `test -f 'src/processor/proc_maps_linux.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Tpo src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux.cc' object='src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.o `test -f 'src/processor/proc_maps_linux.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux.cc - -src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj: src/processor/proc_maps_linux.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Tpo -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj `if test -f 'src/processor/proc_maps_linux.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Tpo src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux.cc' object='src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux.obj `if test -f 'src/processor/proc_maps_linux.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux.cc'; fi` - -src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o: src/processor/proc_maps_linux_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Tpo -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o `test -f 'src/processor/proc_maps_linux_unittest.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Tpo src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux_unittest.cc' object='src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.o `test -f 'src/processor/proc_maps_linux_unittest.cc' || echo '$(srcdir)/'`src/processor/proc_maps_linux_unittest.cc - -src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj: src/processor/proc_maps_linux_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Tpo -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj `if test -f 'src/processor/proc_maps_linux_unittest.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Tpo src/processor/$(DEPDIR)/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/proc_maps_linux_unittest.cc' object='src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_proc_maps_linux_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_proc_maps_linux_unittest-proc_maps_linux_unittest.obj `if test -f 'src/processor/proc_maps_linux_unittest.cc'; then $(CYGPATH_W) 'src/processor/proc_maps_linux_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/proc_maps_linux_unittest.cc'; fi` - -src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o: src/processor/range_map_shrink_down_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_range_map_shrink_down_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Tpo -c -o src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o `test -f 'src/processor/range_map_shrink_down_unittest.cc' || echo '$(srcdir)/'`src/processor/range_map_shrink_down_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Tpo src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/range_map_shrink_down_unittest.cc' object='src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_range_map_shrink_down_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.o `test -f 'src/processor/range_map_shrink_down_unittest.cc' || echo '$(srcdir)/'`src/processor/range_map_shrink_down_unittest.cc - -src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj: src/processor/range_map_shrink_down_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_range_map_shrink_down_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Tpo -c -o src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj `if test -f 'src/processor/range_map_shrink_down_unittest.cc'; then $(CYGPATH_W) 'src/processor/range_map_shrink_down_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/range_map_shrink_down_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Tpo src/processor/$(DEPDIR)/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/range_map_shrink_down_unittest.cc' object='src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_range_map_shrink_down_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_range_map_shrink_down_unittest-range_map_shrink_down_unittest.obj `if test -f 'src/processor/range_map_shrink_down_unittest.cc'; then $(CYGPATH_W) 'src/processor/range_map_shrink_down_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/range_map_shrink_down_unittest.cc'; fi` - -src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_address_list_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o: src/processor/stackwalker_address_list_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o `test -f 'src/processor/stackwalker_address_list_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_address_list_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_address_list_unittest.cc' object='src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.o `test -f 'src/processor/stackwalker_address_list_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_address_list_unittest.cc - -src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj: src/processor/stackwalker_address_list_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj `if test -f 'src/processor/stackwalker_address_list_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_address_list_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_address_list_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_address_list_unittest.cc' object='src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_address_list_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_address_list_unittest-stackwalker_address_list_unittest.obj `if test -f 'src/processor/stackwalker_address_list_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_address_list_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_address_list_unittest.cc'; fi` +mostlyclean-libtool: + -rm -f *.lo -src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_amd64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o: src/processor/stackwalker_amd64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o `test -f 'src/processor/stackwalker_amd64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_amd64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_amd64_unittest.cc' object='src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.o `test -f 'src/processor/stackwalker_amd64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_amd64_unittest.cc - -src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj: src/processor/stackwalker_amd64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj `if test -f 'src/processor/stackwalker_amd64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_amd64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_amd64_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_amd64_unittest.cc' object='src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_amd64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_amd64_unittest-stackwalker_amd64_unittest.obj `if test -f 'src/processor/stackwalker_amd64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_amd64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_amd64_unittest.cc'; fi` - -src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o: src/processor/stackwalker_arm64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o `test -f 'src/processor/stackwalker_arm64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_arm64_unittest.cc' object='src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.o `test -f 'src/processor/stackwalker_arm64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm64_unittest.cc - -src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj: src/processor/stackwalker_arm64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj `if test -f 'src/processor/stackwalker_arm64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm64_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_arm64_unittest.cc' object='src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm64_unittest-stackwalker_arm64_unittest.obj `if test -f 'src/processor/stackwalker_arm64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm64_unittest.cc'; fi` - -src/common/src_processor_stackwalker_arm_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_arm_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_arm_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o: src/processor/stackwalker_arm_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o `test -f 'src/processor/stackwalker_arm_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_arm_unittest.cc' object='src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.o `test -f 'src/processor/stackwalker_arm_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_arm_unittest.cc - -src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj: src/processor/stackwalker_arm_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj `if test -f 'src/processor/stackwalker_arm_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_arm_unittest.cc' object='src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_arm_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_arm_unittest-stackwalker_arm_unittest.obj `if test -f 'src/processor/stackwalker_arm_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_arm_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_arm_unittest.cc'; fi` +clean-libtool: + -rm -rf .libs _libs + -rm -rf src/.libs src/_libs + -rm -rf src/processor/.libs src/processor/_libs -src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips64_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips64_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o: src/processor/stackwalker_mips64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o `test -f 'src/processor/stackwalker_mips64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_mips64_unittest.cc' object='src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.o `test -f 'src/processor/stackwalker_mips64_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips64_unittest.cc - -src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj: src/processor/stackwalker_mips64_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj `if test -f 'src/processor/stackwalker_mips64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips64_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_mips64_unittest.cc' object='src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips64_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips64_unittest-stackwalker_mips64_unittest.obj `if test -f 'src/processor/stackwalker_mips64_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips64_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips64_unittest.cc'; fi` - -src/common/src_processor_stackwalker_mips_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_mips_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_mips_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o: src/processor/stackwalker_mips_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o `test -f 'src/processor/stackwalker_mips_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_mips_unittest.cc' object='src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.o `test -f 'src/processor/stackwalker_mips_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_mips_unittest.cc - -src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj: src/processor/stackwalker_mips_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj `if test -f 'src/processor/stackwalker_mips_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_mips_unittest.cc' object='src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_mips_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_mips_unittest-stackwalker_mips_unittest.obj `if test -f 'src/processor/stackwalker_mips_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_mips_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_mips_unittest.cc'; fi` - -src/common/src_processor_stackwalker_x86_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_x86_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_x86_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_stackwalker_x86_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_stackwalker_x86_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o: src/processor/stackwalker_x86_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o `test -f 'src/processor/stackwalker_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_x86_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_x86_unittest.cc' object='src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.o `test -f 'src/processor/stackwalker_x86_unittest.cc' || echo '$(srcdir)/'`src/processor/stackwalker_x86_unittest.cc - -src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj: src/processor/stackwalker_x86_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj `if test -f 'src/processor/stackwalker_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_x86_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Tpo src/processor/$(DEPDIR)/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/stackwalker_x86_unittest.cc' object='src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_stackwalker_x86_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_stackwalker_x86_unittest-stackwalker_x86_unittest.obj `if test -f 'src/processor/stackwalker_x86_unittest.cc'; then $(CYGPATH_W) 'src/processor/stackwalker_x86_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/stackwalker_x86_unittest.cc'; fi` - -src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o: src/processor/static_address_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o `test -f 'src/processor/static_address_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_address_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_address_map_unittest.cc' object='src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.o `test -f 'src/processor/static_address_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_address_map_unittest.cc - -src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj: src/processor/static_address_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj `if test -f 'src/processor/static_address_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_address_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_address_map_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_address_map_unittest-static_address_map_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_address_map_unittest.cc' object='src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_address_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_address_map_unittest-static_address_map_unittest.obj `if test -f 'src/processor/static_address_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_address_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_address_map_unittest.cc'; fi` - -src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o: src/processor/static_contained_range_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o `test -f 'src/processor/static_contained_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_contained_range_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_contained_range_map_unittest.cc' object='src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.o `test -f 'src/processor/static_contained_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_contained_range_map_unittest.cc - -src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj: src/processor/static_contained_range_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj `if test -f 'src/processor/static_contained_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_contained_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_contained_range_map_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_contained_range_map_unittest.cc' object='src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_contained_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_contained_range_map_unittest-static_contained_range_map_unittest.obj `if test -f 'src/processor/static_contained_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_contained_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_contained_range_map_unittest.cc'; fi` - -src/processor/src_processor_static_map_unittest-static_map_unittest.o: src/processor/static_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_map_unittest-static_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.o `test -f 'src/processor/static_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_map_unittest.cc' object='src/processor/src_processor_static_map_unittest-static_map_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.o `test -f 'src/processor/static_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_map_unittest.cc - -src/processor/src_processor_static_map_unittest-static_map_unittest.obj: src/processor/static_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_map_unittest-static_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.obj `if test -f 'src/processor/static_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_map_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_map_unittest-static_map_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_map_unittest.cc' object='src/processor/src_processor_static_map_unittest-static_map_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_map_unittest-static_map_unittest.obj `if test -f 'src/processor/static_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_map_unittest.cc'; fi` - -src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o: src/processor/static_range_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o `test -f 'src/processor/static_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_range_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_range_map_unittest.cc' object='src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.o `test -f 'src/processor/static_range_map_unittest.cc' || echo '$(srcdir)/'`src/processor/static_range_map_unittest.cc - -src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj: src/processor/static_range_map_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj `if test -f 'src/processor/static_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_range_map_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Tpo src/processor/$(DEPDIR)/src_processor_static_range_map_unittest-static_range_map_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/static_range_map_unittest.cc' object='src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_static_range_map_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_static_range_map_unittest-static_range_map_unittest.obj `if test -f 'src/processor/static_range_map_unittest.cc'; then $(CYGPATH_W) 'src/processor/static_range_map_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/static_range_map_unittest.cc'; fi` - -src/common/src_processor_synth_minidump_unittest-test_assembler.o: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_synth_minidump_unittest-test_assembler.o -MD -MP -MF src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_synth_minidump_unittest-test_assembler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.o `test -f 'src/common/test_assembler.cc' || echo '$(srcdir)/'`src/common/test_assembler.cc - -src/common/src_processor_synth_minidump_unittest-test_assembler.obj: src/common/test_assembler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_processor_synth_minidump_unittest-test_assembler.obj -MD -MP -MF src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Tpo src/common/$(DEPDIR)/src_processor_synth_minidump_unittest-test_assembler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/test_assembler.cc' object='src/common/src_processor_synth_minidump_unittest-test_assembler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_processor_synth_minidump_unittest-test_assembler.obj `if test -f 'src/common/test_assembler.cc'; then $(CYGPATH_W) 'src/common/test_assembler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/test_assembler.cc'; fi` - -src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o: src/processor/synth_minidump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o `test -f 'src/processor/synth_minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/synth_minidump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump_unittest.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.o `test -f 'src/processor/synth_minidump_unittest.cc' || echo '$(srcdir)/'`src/processor/synth_minidump_unittest.cc - -src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj: src/processor/synth_minidump_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj `if test -f 'src/processor/synth_minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump_unittest.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump_unittest.obj `if test -f 'src/processor/synth_minidump_unittest.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump_unittest.cc'; fi` - -src/processor/src_processor_synth_minidump_unittest-synth_minidump.o: src/processor/synth_minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump.o -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.o `test -f 'src/processor/synth_minidump.cc' || echo '$(srcdir)/'`src/processor/synth_minidump.cc - -src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj: src/processor/synth_minidump.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj -MD -MP -MF src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Tpo src/processor/$(DEPDIR)/src_processor_synth_minidump_unittest-synth_minidump.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/processor/synth_minidump.cc' object='src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_processor_synth_minidump_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/processor/src_processor_synth_minidump_unittest-synth_minidump.obj `if test -f 'src/processor/synth_minidump.cc'; then $(CYGPATH_W) 'src/processor/synth_minidump.cc'; else $(CYGPATH_W) '$(srcdir)/src/processor/synth_minidump.cc'; fi` - -src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o: src/tools/linux/md2core/minidump_memory_range_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o -MD -MP -MF src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o `test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc' || echo '$(srcdir)/'`src/tools/linux/md2core/minidump_memory_range_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/tools/linux/md2core/minidump_memory_range_unittest.cc' object='src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.o `test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc' || echo '$(srcdir)/'`src/tools/linux/md2core/minidump_memory_range_unittest.cc - -src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj: src/tools/linux/md2core/minidump_memory_range_unittest.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj -MD -MP -MF src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj `if test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; then $(CYGPATH_W) 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/linux/md2core/minidump_memory_range_unittest.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Tpo src/tools/linux/md2core/$(DEPDIR)/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/tools/linux/md2core/minidump_memory_range_unittest.cc' object='src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(src_tools_linux_md2core_minidump_2_core_unittest_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/linux/md2core/src_tools_linux_md2core_minidump_2_core_unittest-minidump_memory_range_unittest.obj `if test -f 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; then $(CYGPATH_W) 'src/tools/linux/md2core/minidump_memory_range_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/linux/md2core/minidump_memory_range_unittest.cc'; fi` - -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o: src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.o `test -f 'src/common/dwarf_cfi_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cfi_to_module.cc - -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj: src/common/dwarf_cfi_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cfi_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cfi_to_module.obj `if test -f 'src/common/dwarf_cfi_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cfi_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cfi_to_module.cc'; fi` - -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o: src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.o `test -f 'src/common/dwarf_cu_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_cu_to_module.cc - -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj: src/common/dwarf_cu_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_cu_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_cu_to_module.obj `if test -f 'src/common/dwarf_cu_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_cu_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_cu_to_module.cc'; fi` - -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o: src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.o `test -f 'src/common/dwarf_line_to_module.cc' || echo '$(srcdir)/'`src/common/dwarf_line_to_module.cc - -src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj: src/common/dwarf_line_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf_line_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-dwarf_line_to_module.obj `if test -f 'src/common/dwarf_line_to_module.cc'; then $(CYGPATH_W) 'src/common/dwarf_line_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf_line_to_module.cc'; fi` - -src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o: src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-language.o `test -f 'src/common/language.cc' || echo '$(srcdir)/'`src/common/language.cc - -src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj: src/common/language.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-language.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/language.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-language.obj `if test -f 'src/common/language.cc'; then $(CYGPATH_W) 'src/common/language.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/language.cc'; fi` - -src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o: src/common/md5.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o `test -f 'src/common/md5.cc' || echo '$(srcdir)/'`src/common/md5.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/md5.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.o `test -f 'src/common/md5.cc' || echo '$(srcdir)/'`src/common/md5.cc - -src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj: src/common/md5.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj `if test -f 'src/common/md5.cc'; then $(CYGPATH_W) 'src/common/md5.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/md5.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-md5.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/md5.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-md5.obj `if test -f 'src/common/md5.cc'; then $(CYGPATH_W) 'src/common/md5.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/md5.cc'; fi` - -src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o: src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-module.o `test -f 'src/common/module.cc' || echo '$(srcdir)/'`src/common/module.cc - -src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj: src/common/module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-module.obj `if test -f 'src/common/module.cc'; then $(CYGPATH_W) 'src/common/module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/module.cc'; fi` - -src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o: src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.o `test -f 'src/common/stabs_reader.cc' || echo '$(srcdir)/'`src/common/stabs_reader.cc - -src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj: src/common/stabs_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_reader.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_reader.obj `if test -f 'src/common/stabs_reader.cc'; then $(CYGPATH_W) 'src/common/stabs_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_reader.cc'; fi` - -src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o: src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.o `test -f 'src/common/stabs_to_module.cc' || echo '$(srcdir)/'`src/common/stabs_to_module.cc - -src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj: src/common/stabs_to_module.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj -MD -MP -MF src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Tpo -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Tpo src/common/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/stabs_to_module.cc' object='src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/src_tools_mac_dump_syms_dump_syms_mac-stabs_to_module.obj `if test -f 'src/common/stabs_to_module.cc'; then $(CYGPATH_W) 'src/common/stabs_to_module.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/stabs_to_module.cc'; fi` - -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o: src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.o `test -f 'src/common/dwarf/bytereader.cc' || echo '$(srcdir)/'`src/common/dwarf/bytereader.cc - -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj: src/common/dwarf/bytereader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-bytereader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/bytereader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-bytereader.obj `if test -f 'src/common/dwarf/bytereader.cc'; then $(CYGPATH_W) 'src/common/dwarf/bytereader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/bytereader.cc'; fi` - -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o: src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.o `test -f 'src/common/dwarf/dwarf2diehandler.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2diehandler.cc - -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj: src/common/dwarf/dwarf2diehandler.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2diehandler.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2diehandler.obj `if test -f 'src/common/dwarf/dwarf2diehandler.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2diehandler.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2diehandler.cc'; fi` - -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o: src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.o `test -f 'src/common/dwarf/dwarf2reader.cc' || echo '$(srcdir)/'`src/common/dwarf/dwarf2reader.cc - -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj: src/common/dwarf/dwarf2reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/dwarf2reader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-dwarf2reader.obj `if test -f 'src/common/dwarf/dwarf2reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/dwarf2reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/dwarf2reader.cc'; fi` - -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o: src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.o `test -f 'src/common/dwarf/elf_reader.cc' || echo '$(srcdir)/'`src/common/dwarf/elf_reader.cc - -src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj: src/common/dwarf/elf_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj -MD -MP -MF src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Tpo -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Tpo src/common/dwarf/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/dwarf/elf_reader.cc' object='src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/dwarf/src_tools_mac_dump_syms_dump_syms_mac-elf_reader.obj `if test -f 'src/common/dwarf/elf_reader.cc'; then $(CYGPATH_W) 'src/common/dwarf/elf_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/dwarf/elf_reader.cc'; fi` - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o: src/common/mac/arch_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o `test -f 'src/common/mac/arch_utilities.cc' || echo '$(srcdir)/'`src/common/mac/arch_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/arch_utilities.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.o `test -f 'src/common/mac/arch_utilities.cc' || echo '$(srcdir)/'`src/common/mac/arch_utilities.cc - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj: src/common/mac/arch_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj `if test -f 'src/common/mac/arch_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/arch_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/arch_utilities.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/arch_utilities.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-arch_utilities.obj `if test -f 'src/common/mac/arch_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/arch_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/arch_utilities.cc'; fi` - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o: src/common/mac/dump_syms.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o `test -f 'src/common/mac/dump_syms.cc' || echo '$(srcdir)/'`src/common/mac/dump_syms.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/dump_syms.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.o `test -f 'src/common/mac/dump_syms.cc' || echo '$(srcdir)/'`src/common/mac/dump_syms.cc - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj: src/common/mac/dump_syms.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj `if test -f 'src/common/mac/dump_syms.cc'; then $(CYGPATH_W) 'src/common/mac/dump_syms.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/dump_syms.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/dump_syms.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-dump_syms.obj `if test -f 'src/common/mac/dump_syms.cc'; then $(CYGPATH_W) 'src/common/mac/dump_syms.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/dump_syms.cc'; fi` - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o: src/common/mac/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o `test -f 'src/common/mac/file_id.cc' || echo '$(srcdir)/'`src/common/mac/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/file_id.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.o `test -f 'src/common/mac/file_id.cc' || echo '$(srcdir)/'`src/common/mac/file_id.cc - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj: src/common/mac/file_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj `if test -f 'src/common/mac/file_id.cc'; then $(CYGPATH_W) 'src/common/mac/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/file_id.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-file_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/file_id.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-file_id.obj `if test -f 'src/common/mac/file_id.cc'; then $(CYGPATH_W) 'src/common/mac/file_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/file_id.cc'; fi` - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o: src/common/mac/macho_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o `test -f 'src/common/mac/macho_id.cc' || echo '$(srcdir)/'`src/common/mac/macho_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_id.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.o `test -f 'src/common/mac/macho_id.cc' || echo '$(srcdir)/'`src/common/mac/macho_id.cc - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj: src/common/mac/macho_id.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj `if test -f 'src/common/mac/macho_id.cc'; then $(CYGPATH_W) 'src/common/mac/macho_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_id.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_id.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_id.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_id.obj `if test -f 'src/common/mac/macho_id.cc'; then $(CYGPATH_W) 'src/common/mac/macho_id.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_id.cc'; fi` - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o: src/common/mac/macho_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o `test -f 'src/common/mac/macho_reader.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.o `test -f 'src/common/mac/macho_reader.cc' || echo '$(srcdir)/'`src/common/mac/macho_reader.cc - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj: src/common/mac/macho_reader.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj `if test -f 'src/common/mac/macho_reader.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_reader.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_reader.obj `if test -f 'src/common/mac/macho_reader.cc'; then $(CYGPATH_W) 'src/common/mac/macho_reader.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_reader.cc'; fi` - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o: src/common/mac/macho_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o `test -f 'src/common/mac/macho_utilities.cc' || echo '$(srcdir)/'`src/common/mac/macho_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_utilities.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.o `test -f 'src/common/mac/macho_utilities.cc' || echo '$(srcdir)/'`src/common/mac/macho_utilities.cc - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj: src/common/mac/macho_utilities.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj `if test -f 'src/common/mac/macho_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/macho_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_utilities.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_utilities.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_utilities.obj `if test -f 'src/common/mac/macho_utilities.cc'; then $(CYGPATH_W) 'src/common/mac/macho_utilities.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_utilities.cc'; fi` - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o: src/common/mac/macho_walker.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o `test -f 'src/common/mac/macho_walker.cc' || echo '$(srcdir)/'`src/common/mac/macho_walker.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_walker.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.o `test -f 'src/common/mac/macho_walker.cc' || echo '$(srcdir)/'`src/common/mac/macho_walker.cc - -src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj: src/common/mac/macho_walker.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj -MD -MP -MF src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Tpo -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj `if test -f 'src/common/mac/macho_walker.cc'; then $(CYGPATH_W) 'src/common/mac/macho_walker.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_walker.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Tpo src/common/mac/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/common/mac/macho_walker.cc' object='src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/common/mac/src_tools_mac_dump_syms_dump_syms_mac-macho_walker.obj `if test -f 'src/common/mac/macho_walker.cc'; then $(CYGPATH_W) 'src/common/mac/macho_walker.cc'; else $(CYGPATH_W) '$(srcdir)/src/common/mac/macho_walker.cc'; fi` - -src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o: src/tools/mac/dump_syms/dump_syms_tool.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o -MD -MP -MF src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Tpo -c -o src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o `test -f 'src/tools/mac/dump_syms/dump_syms_tool.cc' || echo '$(srcdir)/'`src/tools/mac/dump_syms/dump_syms_tool.cc -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Tpo src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/tools/mac/dump_syms/dump_syms_tool.cc' object='src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.o `test -f 'src/tools/mac/dump_syms/dump_syms_tool.cc' || echo '$(srcdir)/'`src/tools/mac/dump_syms/dump_syms_tool.cc - -src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj: src/tools/mac/dump_syms/dump_syms_tool.cc -@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -MT src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj -MD -MP -MF src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Tpo -c -o src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj `if test -f 'src/tools/mac/dump_syms/dump_syms_tool.cc'; then $(CYGPATH_W) 'src/tools/mac/dump_syms/dump_syms_tool.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/mac/dump_syms/dump_syms_tool.cc'; fi` -@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Tpo src/tools/mac/dump_syms/$(DEPDIR)/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.Po -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/tools/mac/dump_syms/dump_syms_tool.cc' object='src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(src_tools_mac_dump_syms_dump_syms_mac_CXXFLAGS) $(CXXFLAGS) -c -o src/tools/mac/dump_syms/src_tools_mac_dump_syms_dump_syms_mac-dump_syms_tool.obj `if test -f 'src/tools/mac/dump_syms/dump_syms_tool.cc'; then $(CYGPATH_W) 'src/tools/mac/dump_syms/dump_syms_tool.cc'; else $(CYGPATH_W) '$(srcdir)/src/tools/mac/dump_syms/dump_syms_tool.cc'; fi` +distclean-libtool: + -rm -f libtool install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) - @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ - fi; \ - for p in $$list; do \ + test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)" + @list='$(dist_doc_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ + f=$(am__strip_dir) \ + echo " $(dist_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \ + $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \ done uninstall-dist_docDATA: @$(NORMAL_UNINSTALL) - @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + @list='$(dist_doc_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \ + rm -f "$(DESTDIR)$(docdir)/$$f"; \ done -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) -install-includecHEADERS: $(includec_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includec_HEADERS)'; test -n "$(includecdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includecdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includecdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includecdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includecdir)" || exit $$?; \ - done +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique +tags: TAGS -uninstall-includecHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includec_HEADERS)'; test -n "$(includecdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includecdir)'; $(am__uninstall_files_from_dir) -install-includeclHEADERS: $(includecl_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includecl_HEADERS)'; test -n "$(includecldir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includecldir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includecldir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includecldir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includecldir)" || exit $$?; \ - done - -uninstall-includeclHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includecl_HEADERS)'; test -n "$(includecldir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includecldir)'; $(am__uninstall_files_from_dir) -install-includeclcHEADERS: $(includeclc_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includeclc_HEADERS)'; test -n "$(includeclcdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includeclcdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includeclcdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclcdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclcdir)" || exit $$?; \ - done - -uninstall-includeclcHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includeclc_HEADERS)'; test -n "$(includeclcdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includeclcdir)'; $(am__uninstall_files_from_dir) -install-includecldwcHEADERS: $(includecldwc_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includecldwc_HEADERS)'; test -n "$(includecldwcdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includecldwcdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includecldwcdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includecldwcdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includecldwcdir)" || exit $$?; \ - done - -uninstall-includecldwcHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includecldwc_HEADERS)'; test -n "$(includecldwcdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includecldwcdir)'; $(am__uninstall_files_from_dir) -install-includeclhHEADERS: $(includeclh_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includeclh_HEADERS)'; test -n "$(includeclhdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includeclhdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includeclhdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclhdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclhdir)" || exit $$?; \ - done - -uninstall-includeclhHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includeclh_HEADERS)'; test -n "$(includeclhdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includeclhdir)'; $(am__uninstall_files_from_dir) -install-includeclmHEADERS: $(includeclm_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includeclm_HEADERS)'; test -n "$(includeclmdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includeclmdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includeclmdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includeclmdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includeclmdir)" || exit $$?; \ - done - -uninstall-includeclmHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includeclm_HEADERS)'; test -n "$(includeclmdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includeclmdir)'; $(am__uninstall_files_from_dir) -install-includegbcHEADERS: $(includegbc_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includegbc_HEADERS)'; test -n "$(includegbcdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includegbcdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includegbcdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includegbcdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includegbcdir)" || exit $$?; \ - done - -uninstall-includegbcHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includegbc_HEADERS)'; test -n "$(includegbcdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includegbcdir)'; $(am__uninstall_files_from_dir) -install-includelssHEADERS: $(includelss_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includelss_HEADERS)'; test -n "$(includelssdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includelssdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includelssdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includelssdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includelssdir)" || exit $$?; \ - done - -uninstall-includelssHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includelss_HEADERS)'; test -n "$(includelssdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includelssdir)'; $(am__uninstall_files_from_dir) -install-includepHEADERS: $(includep_HEADERS) - @$(NORMAL_INSTALL) - @list='$(includep_HEADERS)'; test -n "$(includepdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includepdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includepdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includepdir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(includepdir)" || exit $$?; \ - done - -uninstall-includepHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(includep_HEADERS)'; test -n "$(includepdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(includepdir)'; $(am__uninstall_files_from_dir) - -ID: $(am__tagged_files) - $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am -TAGS: tags - -tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - set x; \ +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ here=`pwd`; \ - $(am__define_uniq_tagged_files); \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ fi -ctags: ctags-am - -CTAGS: ctags -ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) - $(am__define_uniq_tagged_files); \ - test -z "$(CTAGS_ARGS)$$unique" \ +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique + $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" -cscope: cscope.files - test ! -s cscope.files \ - || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) -clean-cscope: - -rm -f cscope.files -cscope.files: clean-cscope cscopelist -cscopelist: cscopelist-am - -cscopelist-am: $(am__tagged_files) - list='$(am__tagged_files)'; \ - case "$(srcdir)" in \ - [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ - *) sdir=$(subdir)/$(srcdir) ;; \ - esac; \ - for i in $$list; do \ - if test -f "$$i"; then \ - echo "$(subdir)/$$i"; \ - else \ - echo "$$sdir/$$i"; \ - fi; \ - done >> $(top_builddir)/cscope.files + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -rm -f cscope.out cscope.in.out cscope.po.out cscope.files -# Recover from deleted '.trs' file; this should ensure that -# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create -# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells -# to avoid problems with "make -n". -.log.trs: - rm -f $< $@ - $(MAKE) $(AM_MAKEFLAGS) $< - -# Leading 'am--fnord' is there to ensure the list of targets does not -# expand to empty, as could happen e.g. with make check TESTS=''. -am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) -am--force-recheck: - @: - -$(TEST_SUITE_LOG): $(TEST_LOGS) - @$(am__set_TESTS_bases); \ - am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ - redo_bases=`for i in $$bases; do \ - am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ - done`; \ - if test -n "$$redo_bases"; then \ - redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ - redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ - if $(am__make_dryrun); then :; else \ - rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ - fi; \ - fi; \ - if test -n "$$am__remaking_logs"; then \ - echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ - "recursion detected" >&2; \ - elif test -n "$$redo_logs"; then \ - am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ - fi; \ - if $(am__make_dryrun); then :; else \ - st=0; \ - errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ - for i in $$redo_bases; do \ - test -f $$i.trs && test -r $$i.trs \ - || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ - test -f $$i.log && test -r $$i.log \ - || { echo "$$errmsg $$i.log" >&2; st=1; }; \ +check-TESTS: $(TESTS) + @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \ + srcdir=$(srcdir); export srcdir; \ + list=' $(TESTS) '; \ + if test -n "$$list"; then \ + for tst in $$list; do \ + if test -f ./$$tst; then dir=./; \ + elif test -f $$tst; then dir=; \ + else dir="$(srcdir)/"; fi; \ + if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *$$ws$$tst$$ws*) \ + xpass=`expr $$xpass + 1`; \ + failed=`expr $$failed + 1`; \ + echo "XPASS: $$tst"; \ + ;; \ + *) \ + echo "PASS: $$tst"; \ + ;; \ + esac; \ + elif test $$? -ne 77; then \ + all=`expr $$all + 1`; \ + case " $(XFAIL_TESTS) " in \ + *$$ws$$tst$$ws*) \ + xfail=`expr $$xfail + 1`; \ + echo "XFAIL: $$tst"; \ + ;; \ + *) \ + failed=`expr $$failed + 1`; \ + echo "FAIL: $$tst"; \ + ;; \ + esac; \ + else \ + skip=`expr $$skip + 1`; \ + echo "SKIP: $$tst"; \ + fi; \ done; \ - test $$st -eq 0 || exit 1; \ - fi - @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ - ws='[ ]'; \ - results=`for b in $$bases; do echo $$b.trs; done`; \ - test -n "$$results" || results=/dev/null; \ - all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ - pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ - fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ - skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ - xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ - xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ - error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ - if test `expr $$fail + $$xpass + $$error` -eq 0; then \ - success=true; \ - else \ - success=false; \ - fi; \ - br='==================='; br=$$br$$br$$br$$br; \ - result_count () \ - { \ - if test x"$$1" = x"--maybe-color"; then \ - maybe_colorize=yes; \ - elif test x"$$1" = x"--no-color"; then \ - maybe_colorize=no; \ + if test "$$failed" -eq 0; then \ + if test "$$xfail" -eq 0; then \ + banner="All $$all tests passed"; \ else \ - echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + banner="All $$all tests behaved as expected ($$xfail expected failures)"; \ fi; \ - shift; \ - desc=$$1 count=$$2; \ - if test $$maybe_colorize = yes && test $$count -gt 0; then \ - color_start=$$3 color_end=$$std; \ + else \ + if test "$$xpass" -eq 0; then \ + banner="$$failed of $$all tests failed"; \ else \ - color_start= color_end=; \ + banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \ fi; \ - echo "$${color_start}# $$desc $$count$${color_end}"; \ - }; \ - create_testsuite_report () \ - { \ - result_count $$1 "TOTAL:" $$all "$$brg"; \ - result_count $$1 "PASS: " $$pass "$$grn"; \ - result_count $$1 "SKIP: " $$skip "$$blu"; \ - result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ - result_count $$1 "FAIL: " $$fail "$$red"; \ - result_count $$1 "XPASS:" $$xpass "$$red"; \ - result_count $$1 "ERROR:" $$error "$$mgn"; \ - }; \ - { \ - echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ - $(am__rst_title); \ - create_testsuite_report --no-color; \ - echo; \ - echo ".. contents:: :depth: 2"; \ - echo; \ - for b in $$bases; do echo $$b; done \ - | $(am__create_global_log); \ - } >$(TEST_SUITE_LOG).tmp || exit 1; \ - mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ - if $$success; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ - fi; \ - echo "$${col}$$br$${std}"; \ - echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ - echo "$${col}$$br$${std}"; \ - create_testsuite_report --maybe-color; \ - echo "$$col$$br$$std"; \ - if $$success; then :; else \ - echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ - if test -n "$(PACKAGE_BUGREPORT)"; then \ - echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ - fi; \ - echo "$$col$$br$$std"; \ - fi; \ - $$success || exit 1 - -check-TESTS: - @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list - @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - @set +e; $(am__set_TESTS_bases); \ - log_list=`for i in $$bases; do echo $$i.log; done`; \ - trs_list=`for i in $$bases; do echo $$i.trs; done`; \ - log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ - exit $$?; -recheck: all $(check_LIBRARIES) $(check_PROGRAMS) $(check_SCRIPTS) - @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) - @set +e; $(am__set_TESTS_bases); \ - bases=`for i in $$bases; do echo $$i; done \ - | $(am__list_recheck_tests)` || exit 1; \ - log_list=`for i in $$bases; do echo $$i.log; done`; \ - log_list=`echo $$log_list`; \ - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ - am__force_recheck=am--force-recheck \ - TEST_LOGS="$$log_list"; \ - exit $$? -src/common/test_assembler_unittest.log: src/common/test_assembler_unittest$(EXEEXT) - @p='src/common/test_assembler_unittest$(EXEEXT)'; \ - b='src/common/test_assembler_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/address_map_unittest.log: src/processor/address_map_unittest$(EXEEXT) - @p='src/processor/address_map_unittest$(EXEEXT)'; \ - b='src/processor/address_map_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/basic_source_line_resolver_unittest.log: src/processor/basic_source_line_resolver_unittest$(EXEEXT) - @p='src/processor/basic_source_line_resolver_unittest$(EXEEXT)'; \ - b='src/processor/basic_source_line_resolver_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/cfi_frame_info_unittest.log: src/processor/cfi_frame_info_unittest$(EXEEXT) - @p='src/processor/cfi_frame_info_unittest$(EXEEXT)'; \ - b='src/processor/cfi_frame_info_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/contained_range_map_unittest.log: src/processor/contained_range_map_unittest$(EXEEXT) - @p='src/processor/contained_range_map_unittest$(EXEEXT)'; \ - b='src/processor/contained_range_map_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/disassembler_x86_unittest.log: src/processor/disassembler_x86_unittest$(EXEEXT) - @p='src/processor/disassembler_x86_unittest$(EXEEXT)'; \ - b='src/processor/disassembler_x86_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/exploitability_unittest.log: src/processor/exploitability_unittest$(EXEEXT) - @p='src/processor/exploitability_unittest$(EXEEXT)'; \ - b='src/processor/exploitability_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/fast_source_line_resolver_unittest.log: src/processor/fast_source_line_resolver_unittest$(EXEEXT) - @p='src/processor/fast_source_line_resolver_unittest$(EXEEXT)'; \ - b='src/processor/fast_source_line_resolver_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/map_serializers_unittest.log: src/processor/map_serializers_unittest$(EXEEXT) - @p='src/processor/map_serializers_unittest$(EXEEXT)'; \ - b='src/processor/map_serializers_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/microdump_processor_unittest.log: src/processor/microdump_processor_unittest$(EXEEXT) - @p='src/processor/microdump_processor_unittest$(EXEEXT)'; \ - b='src/processor/microdump_processor_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/minidump_processor_unittest.log: src/processor/minidump_processor_unittest$(EXEEXT) - @p='src/processor/minidump_processor_unittest$(EXEEXT)'; \ - b='src/processor/minidump_processor_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/minidump_unittest.log: src/processor/minidump_unittest$(EXEEXT) - @p='src/processor/minidump_unittest$(EXEEXT)'; \ - b='src/processor/minidump_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/static_address_map_unittest.log: src/processor/static_address_map_unittest$(EXEEXT) - @p='src/processor/static_address_map_unittest$(EXEEXT)'; \ - b='src/processor/static_address_map_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/static_contained_range_map_unittest.log: src/processor/static_contained_range_map_unittest$(EXEEXT) - @p='src/processor/static_contained_range_map_unittest$(EXEEXT)'; \ - b='src/processor/static_contained_range_map_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/static_map_unittest.log: src/processor/static_map_unittest$(EXEEXT) - @p='src/processor/static_map_unittest$(EXEEXT)'; \ - b='src/processor/static_map_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/static_range_map_unittest.log: src/processor/static_range_map_unittest$(EXEEXT) - @p='src/processor/static_range_map_unittest$(EXEEXT)'; \ - b='src/processor/static_range_map_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/pathname_stripper_unittest.log: src/processor/pathname_stripper_unittest$(EXEEXT) - @p='src/processor/pathname_stripper_unittest$(EXEEXT)'; \ - b='src/processor/pathname_stripper_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/postfix_evaluator_unittest.log: src/processor/postfix_evaluator_unittest$(EXEEXT) - @p='src/processor/postfix_evaluator_unittest$(EXEEXT)'; \ - b='src/processor/postfix_evaluator_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/proc_maps_linux_unittest.log: src/processor/proc_maps_linux_unittest$(EXEEXT) - @p='src/processor/proc_maps_linux_unittest$(EXEEXT)'; \ - b='src/processor/proc_maps_linux_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/range_map_shrink_down_unittest.log: src/processor/range_map_shrink_down_unittest$(EXEEXT) - @p='src/processor/range_map_shrink_down_unittest$(EXEEXT)'; \ - b='src/processor/range_map_shrink_down_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/range_map_unittest.log: src/processor/range_map_unittest$(EXEEXT) - @p='src/processor/range_map_unittest$(EXEEXT)'; \ - b='src/processor/range_map_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/stackwalker_amd64_unittest.log: src/processor/stackwalker_amd64_unittest$(EXEEXT) - @p='src/processor/stackwalker_amd64_unittest$(EXEEXT)'; \ - b='src/processor/stackwalker_amd64_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/stackwalker_arm_unittest.log: src/processor/stackwalker_arm_unittest$(EXEEXT) - @p='src/processor/stackwalker_arm_unittest$(EXEEXT)'; \ - b='src/processor/stackwalker_arm_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/stackwalker_arm64_unittest.log: src/processor/stackwalker_arm64_unittest$(EXEEXT) - @p='src/processor/stackwalker_arm64_unittest$(EXEEXT)'; \ - b='src/processor/stackwalker_arm64_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/stackwalker_address_list_unittest.log: src/processor/stackwalker_address_list_unittest$(EXEEXT) - @p='src/processor/stackwalker_address_list_unittest$(EXEEXT)'; \ - b='src/processor/stackwalker_address_list_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/stackwalker_mips_unittest.log: src/processor/stackwalker_mips_unittest$(EXEEXT) - @p='src/processor/stackwalker_mips_unittest$(EXEEXT)'; \ - b='src/processor/stackwalker_mips_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/stackwalker_mips64_unittest.log: src/processor/stackwalker_mips64_unittest$(EXEEXT) - @p='src/processor/stackwalker_mips64_unittest$(EXEEXT)'; \ - b='src/processor/stackwalker_mips64_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/stackwalker_x86_unittest.log: src/processor/stackwalker_x86_unittest$(EXEEXT) - @p='src/processor/stackwalker_x86_unittest$(EXEEXT)'; \ - b='src/processor/stackwalker_x86_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/synth_minidump_unittest.log: src/processor/synth_minidump_unittest$(EXEEXT) - @p='src/processor/synth_minidump_unittest$(EXEEXT)'; \ - b='src/processor/synth_minidump_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/client/linux/linux_client_unittest.log: src/client/linux/linux_client_unittest$(EXEEXT) - @p='src/client/linux/linux_client_unittest$(EXEEXT)'; \ - b='src/client/linux/linux_client_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/common/dumper_unittest.log: src/common/dumper_unittest$(EXEEXT) - @p='src/common/dumper_unittest$(EXEEXT)'; \ - b='src/common/dumper_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/tools/linux/md2core/minidump_2_core_unittest.log: src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT) - @p='src/tools/linux/md2core/minidump_2_core_unittest$(EXEEXT)'; \ - b='src/tools/linux/md2core/minidump_2_core_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/common/mac/macho_reader_unittest.log: src/common/mac/macho_reader_unittest$(EXEEXT) - @p='src/common/mac/macho_reader_unittest$(EXEEXT)'; \ - b='src/common/mac/macho_reader_unittest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/stackwalker_selftest.log: src/processor/stackwalker_selftest$(EXEEXT) - @p='src/processor/stackwalker_selftest$(EXEEXT)'; \ - b='src/processor/stackwalker_selftest'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/microdump_stackwalk_test.log: src/processor/microdump_stackwalk_test - @p='src/processor/microdump_stackwalk_test'; \ - b='src/processor/microdump_stackwalk_test'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/microdump_stackwalk_machine_readable_test.log: src/processor/microdump_stackwalk_machine_readable_test - @p='src/processor/microdump_stackwalk_machine_readable_test'; \ - b='src/processor/microdump_stackwalk_machine_readable_test'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/minidump_dump_test.log: src/processor/minidump_dump_test - @p='src/processor/minidump_dump_test'; \ - b='src/processor/minidump_dump_test'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/minidump_stackwalk_test.log: src/processor/minidump_stackwalk_test - @p='src/processor/minidump_stackwalk_test'; \ - b='src/processor/minidump_stackwalk_test'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -src/processor/minidump_stackwalk_machine_readable_test.log: src/processor/minidump_stackwalk_machine_readable_test - @p='src/processor/minidump_stackwalk_machine_readable_test'; \ - b='src/processor/minidump_stackwalk_machine_readable_test'; \ - $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -.test.log: - @p='$<'; \ - $(am__set_b); \ - $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ - --log-file $$b.log --trs-file $$b.trs \ - $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ - "$$tst" $(AM_TESTS_FD_REDIRECT) -@am__EXEEXT_TRUE@.test$(EXEEXT).log: -@am__EXEEXT_TRUE@ @p='$<'; \ -@am__EXEEXT_TRUE@ $(am__set_b); \ -@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ -@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ -@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ -@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + fi; \ + dashes="$$banner"; \ + skipped=""; \ + if test "$$skip" -ne 0; then \ + skipped="($$skip tests were not run)"; \ + test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$skipped"; \ + fi; \ + report=""; \ + if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ + report="Please report to $(PACKAGE_BUGREPORT)"; \ + test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ + dashes="$$report"; \ + fi; \ + dashes=`echo "$$dashes" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + test -z "$$skipped" || echo "$$skipped"; \ + test -z "$$report" || echo "$$report"; \ + echo "$$dashes"; \ + test "$$failed" -eq 0; \ + else :; fi distdir: $(DISTFILES) $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" + test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ @@ -7852,65 +1244,45 @@ distdir: $(DISTFILES) if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" + || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__post_remove_distdir) + $(am__remove_distdir) dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__post_remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__post_remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__post_remove_distdir) + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) dist-tarZ: distdir - @echo WARNING: "Support for distribution archives compressed with" \ - "legacy program 'compress' is deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__post_remove_distdir) + $(am__remove_distdir) dist-shar: distdir - @echo WARNING: "Support for shar distribution archives is" \ - "deprecated." >&2 - @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__post_remove_distdir) + $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) - $(am__post_remove_distdir) + $(am__remove_distdir) -dist dist-all: - $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' - $(am__post_remove_distdir) +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another @@ -7918,33 +1290,25 @@ dist dist-all: distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir) - chmod u+w $(distdir) - mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build/sub \ - && ../../configure \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ - --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ @@ -7964,24 +1328,14 @@ distcheck: dist && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__post_remove_distdir) + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ @@ -7998,14 +1352,14 @@ distcleancheck: distclean $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_LIBRARIES) $(check_PROGRAMS) \ - $(check_SCRIPTS) + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am -all-am: Makefile $(LIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) \ - $(HEADERS) +all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +install-binPROGRAMS: install-libLTLIBRARIES + installdirs: - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includecdir)" "$(DESTDIR)$(includecldir)" "$(DESTDIR)$(includeclcdir)" "$(DESTDIR)$(includecldwcdir)" "$(DESTDIR)$(includeclhdir)" "$(DESTDIR)$(includeclmdir)" "$(DESTDIR)$(includegbcdir)" "$(DESTDIR)$(includelssdir)" "$(DESTDIR)$(includepdir)"; do \ + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am @@ -8018,91 +1372,39 @@ install-am: all-am installcheck: installcheck-am install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: - -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) - -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) - -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: - -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f src/$(am__dirstamp) - -rm -f src/client/$(DEPDIR)/$(am__dirstamp) - -rm -f src/client/$(am__dirstamp) - -rm -f src/client/linux/$(am__dirstamp) - -rm -f src/client/linux/crash_generation/$(DEPDIR)/$(am__dirstamp) - -rm -f src/client/linux/crash_generation/$(am__dirstamp) - -rm -f src/client/linux/dump_writer_common/$(DEPDIR)/$(am__dirstamp) - -rm -f src/client/linux/dump_writer_common/$(am__dirstamp) - -rm -f src/client/linux/handler/$(DEPDIR)/$(am__dirstamp) - -rm -f src/client/linux/handler/$(am__dirstamp) - -rm -f src/client/linux/log/$(DEPDIR)/$(am__dirstamp) - -rm -f src/client/linux/log/$(am__dirstamp) - -rm -f src/client/linux/microdump_writer/$(DEPDIR)/$(am__dirstamp) - -rm -f src/client/linux/microdump_writer/$(am__dirstamp) - -rm -f src/client/linux/minidump_writer/$(DEPDIR)/$(am__dirstamp) - -rm -f src/client/linux/minidump_writer/$(am__dirstamp) - -rm -f src/common/$(DEPDIR)/$(am__dirstamp) - -rm -f src/common/$(am__dirstamp) - -rm -f src/common/android/$(DEPDIR)/$(am__dirstamp) - -rm -f src/common/android/$(am__dirstamp) - -rm -f src/common/dwarf/$(DEPDIR)/$(am__dirstamp) - -rm -f src/common/dwarf/$(am__dirstamp) - -rm -f src/common/linux/$(DEPDIR)/$(am__dirstamp) - -rm -f src/common/linux/$(am__dirstamp) - -rm -f src/common/linux/tests/$(DEPDIR)/$(am__dirstamp) - -rm -f src/common/linux/tests/$(am__dirstamp) - -rm -f src/common/mac/$(DEPDIR)/$(am__dirstamp) - -rm -f src/common/mac/$(am__dirstamp) - -rm -f src/common/tests/$(DEPDIR)/$(am__dirstamp) - -rm -f src/common/tests/$(am__dirstamp) -rm -f src/processor/$(DEPDIR)/$(am__dirstamp) -rm -f src/processor/$(am__dirstamp) - -rm -f src/testing/$(am__dirstamp) -rm -f src/testing/gtest/src/$(DEPDIR)/$(am__dirstamp) -rm -f src/testing/gtest/src/$(am__dirstamp) -rm -f src/testing/src/$(DEPDIR)/$(am__dirstamp) -rm -f src/testing/src/$(am__dirstamp) - -rm -f src/third_party/libdisasm/$(DEPDIR)/$(am__dirstamp) - -rm -f src/third_party/libdisasm/$(am__dirstamp) - -rm -f src/tools/linux/core2md/$(DEPDIR)/$(am__dirstamp) - -rm -f src/tools/linux/core2md/$(am__dirstamp) - -rm -f src/tools/linux/dump_syms/$(DEPDIR)/$(am__dirstamp) - -rm -f src/tools/linux/dump_syms/$(am__dirstamp) - -rm -f src/tools/linux/md2core/$(DEPDIR)/$(am__dirstamp) - -rm -f src/tools/linux/md2core/$(am__dirstamp) - -rm -f src/tools/linux/symupload/$(DEPDIR)/$(am__dirstamp) - -rm -f src/tools/linux/symupload/$(am__dirstamp) - -rm -f src/tools/mac/dump_syms/$(DEPDIR)/$(am__dirstamp) - -rm -f src/tools/mac/dump_syms/$(am__dirstamp) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am -clean-am: clean-binPROGRAMS clean-checkLIBRARIES clean-checkPROGRAMS \ - clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \ - clean-noinstPROGRAMS mostlyclean-am +clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf src/client/$(DEPDIR) src/client/linux/crash_generation/$(DEPDIR) src/client/linux/dump_writer_common/$(DEPDIR) src/client/linux/handler/$(DEPDIR) src/client/linux/log/$(DEPDIR) src/client/linux/microdump_writer/$(DEPDIR) src/client/linux/minidump_writer/$(DEPDIR) src/common/$(DEPDIR) src/common/android/$(DEPDIR) src/common/dwarf/$(DEPDIR) src/common/linux/$(DEPDIR) src/common/linux/tests/$(DEPDIR) src/common/mac/$(DEPDIR) src/common/tests/$(DEPDIR) src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) src/third_party/libdisasm/$(DEPDIR) src/tools/linux/core2md/$(DEPDIR) src/tools/linux/dump_syms/$(DEPDIR) src/tools/linux/md2core/$(DEPDIR) src/tools/linux/symupload/$(DEPDIR) src/tools/mac/dump_syms/$(DEPDIR) + -rm -rf src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ - distclean-hdr distclean-tags + distclean-hdr distclean-libtool distclean-tags dvi: dvi-am @@ -8110,56 +1412,39 @@ dvi-am: html: html-am -html-am: - info: info-am info-am: -install-data-am: install-dist_docDATA install-includecHEADERS \ - install-includeclHEADERS install-includeclcHEADERS \ - install-includecldwcHEADERS install-includeclhHEADERS \ - install-includeclmHEADERS install-includegbcHEADERS \ - install-includelssHEADERS install-includepHEADERS \ - install-pkgconfigDATA +install-data-am: install-dist_docDATA install-dvi: install-dvi-am -install-dvi-am: - -install-exec-am: install-binPROGRAMS install-libLIBRARIES +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES install-html: install-html-am -install-html-am: - install-info: install-info-am -install-info-am: - install-man: install-pdf: install-pdf-am -install-pdf-am: - install-ps: install-ps-am -install-ps-am: - installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache - -rm -rf src/client/$(DEPDIR) src/client/linux/crash_generation/$(DEPDIR) src/client/linux/dump_writer_common/$(DEPDIR) src/client/linux/handler/$(DEPDIR) src/client/linux/log/$(DEPDIR) src/client/linux/microdump_writer/$(DEPDIR) src/client/linux/minidump_writer/$(DEPDIR) src/common/$(DEPDIR) src/common/android/$(DEPDIR) src/common/dwarf/$(DEPDIR) src/common/linux/$(DEPDIR) src/common/linux/tests/$(DEPDIR) src/common/mac/$(DEPDIR) src/common/tests/$(DEPDIR) src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) src/third_party/libdisasm/$(DEPDIR) src/tools/linux/core2md/$(DEPDIR) src/tools/linux/dump_syms/$(DEPDIR) src/tools/linux/md2core/$(DEPDIR) src/tools/linux/symupload/$(DEPDIR) src/tools/mac/dump_syms/$(DEPDIR) + -rm -rf src/processor/$(DEPDIR) src/testing/gtest/src/$(DEPDIR) src/testing/src/$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-local + mostlyclean-libtool pdf: pdf-am @@ -8170,52 +1455,32 @@ ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-dist_docDATA \ - uninstall-includecHEADERS uninstall-includeclHEADERS \ - uninstall-includeclcHEADERS uninstall-includecldwcHEADERS \ - uninstall-includeclhHEADERS uninstall-includeclmHEADERS \ - uninstall-includegbcHEADERS uninstall-includelssHEADERS \ - uninstall-includepHEADERS uninstall-libLIBRARIES \ - uninstall-pkgconfigDATA + uninstall-libLTLIBRARIES -.MAKE: check-am install-am install-strip +.MAKE: install-am install-strip -.PHONY: CTAGS GTAGS TAGS all all-am am--refresh check check-TESTS \ - check-am clean clean-binPROGRAMS clean-checkLIBRARIES \ - clean-checkPROGRAMS clean-cscope clean-generic \ - clean-libLIBRARIES clean-noinstLIBRARIES clean-noinstPROGRAMS \ - cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ - dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ - distcheck distclean distclean-compile distclean-generic \ - distclean-hdr distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-binPROGRAMS install-data \ - install-data-am install-dist_docDATA install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-includecHEADERS \ - install-includeclHEADERS install-includeclcHEADERS \ - install-includecldwcHEADERS install-includeclhHEADERS \ - install-includeclmHEADERS install-includegbcHEADERS \ - install-includelssHEADERS install-includepHEADERS install-info \ - install-info-am install-libLIBRARIES install-man install-pdf \ - install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-local pdf \ - pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am \ - uninstall-binPROGRAMS uninstall-dist_docDATA \ - uninstall-includecHEADERS uninstall-includeclHEADERS \ - uninstall-includeclcHEADERS uninstall-includecldwcHEADERS \ - uninstall-includeclhHEADERS uninstall-includeclmHEADERS \ - uninstall-includegbcHEADERS uninstall-includelssHEADERS \ - uninstall-includepHEADERS uninstall-libLIBRARIES \ - uninstall-pkgconfigDATA - -.PRECIOUS: Makefile +.PHONY: CTAGS GTAGS all all-am am--refresh check check-TESTS check-am \ + clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ + clean-libLTLIBRARIES clean-libtool clean-noinstPROGRAMS ctags \ + dist dist-all dist-bzip2 dist-gzip dist-shar dist-tarZ \ + dist-zip distcheck distclean distclean-compile \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am \ + install-dist_docDATA install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-dist_docDATA uninstall-libLTLIBRARIES -mostlyclean-local: - -find src -name '*.dwo' -exec rm -f {} + - +libtool: $(LIBTOOL_DEPS) + $(SHELL) ./config.status --recheck # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff --git a/toolkit/crashreporter/google-breakpad/README.ANDROID b/toolkit/crashreporter/google-breakpad/README.ANDROID index 30959ed3a2c0..93dbb953ec4f 100644 --- a/toolkit/crashreporter/google-breakpad/README.ANDROID +++ b/toolkit/crashreporter/google-breakpad/README.ANDROID @@ -6,7 +6,7 @@ on Android, and later generate valid stack traces from the minidumps it generates. This release supports ARM, x86 and MIPS based Android systems. -This release requires NDK release r11c or higher. +This release requires NDK release r10c or higher. I. Building the client library: =============================== diff --git a/toolkit/crashreporter/google-breakpad/README.md b/toolkit/crashreporter/google-breakpad/README.md index e7f3e1726ee3..bfb9f1420aca 100644 --- a/toolkit/crashreporter/google-breakpad/README.md +++ b/toolkit/crashreporter/google-breakpad/README.md @@ -3,80 +3,45 @@ Breakpad is a set of client and server components which implement a crash-reporting system. -* [Homepage](https://chromium.googlesource.com/breakpad/breakpad/) -* [Documentation](https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/) -* [Bugs](https://bugs.chromium.org/p/google-breakpad/) -* Discussion/Questions: [google-breakpad-discuss@googlegroups.com](https://groups.google.com/d/forum/google-breakpad-discuss) -* Developer/Reviews: [google-breakpad-dev@googlegroups.com](https://groups.google.com/d/forum/google-breakpad-dev) -* Tests: [![Build Status](https://travis-ci.org/google/breakpad.svg?branch=master)](https://travis-ci.org/google/breakpad) -* Coverage [![Coverity Status](https://scan.coverity.com/projects/9215/badge.svg)](https://scan.coverity.com/projects/google-breakpad) +## Getting started in 32-bit mode (from trunk) -## Getting started (from master) - -1. First, [download depot_tools](http://dev.chromium.org/developers/how-tos/install-depot-tools) - and ensure that they’re in your `PATH`. - -2. Create a new directory for checking out the source code (it must be named - breakpad). - - ```sh - mkdir breakpad && cd breakpad - ``` - -3. Run the `fetch` tool from depot_tools to download all the source repos. - - ```sh - fetch breakpad - cd src - ``` - -4. Build the source. - - ```sh - ./configure && make - ``` - - You can also cd to another directory and run configure from there to build - outside the source tree. - - This will build the processor tools (`src/processor/minidump_stackwalk`, - `src/processor/minidump_dump`, etc), and when building on Linux it will - also build the client libraries and some tools - (`src/tools/linux/dump_syms/dump_syms`, - `src/tools/linux/md2core/minidump-2-core`, etc). - -5. Optionally, run tests. - - ```sh - make check - ``` - -6. Optionally, install the built libraries - - ```sh - make install - ``` +```sh +# Configure +CXXFLAGS=-m32 CFLAGS=-m32 CPPFLAGS=-m32 ./configure +# Build +make +# Test +make check +# Install +make install +``` If you need to reconfigure your build be sure to run `make distclean` first. -To update an existing checkout to a newer revision, you can -`git pull` as usual, but then you should run `gclient sync` to ensure that the -dependent repos are up-to-date. +## To request change review: -## To request change review +1. Get a copy of depot_tools repo. + http://dev.chromium.org/developers/how-tos/install-depot-tools -1. Follow the steps above to get the source and build it. +2. Create a new directory for checking out the source code. + mkdir breakpad && cd breakpad -2. Make changes. Build and test your changes. +3. Run the `fetch` tool from depot_tools to download all the source repos. + `fetch breakpad` + +4. Make changes. Build and test your changes. For core code like processor use methods above. For linux/mac/windows, there are test targets in each project file. -3. Commit your changes to your local repo and upload them to the server. +5. Commit your changes to your local repo and upload them to the server. http://dev.chromium.org/developers/contributing-code e.g. `git commit ... && git cl upload ...` You will be prompted for credential and a description. -4. At https://chromium-review.googlesource.com/ you'll find your issue listed; - click on it, then “Add reviewer”, and enter in the code reviewer. Depending - on your settings, you may not see an email, but the reviewer has been - notified with google-breakpad-dev@googlegroups.com always CC’d. +6. At https://codereview.chromium.org/ you'll find your issue listed; click on + it, and select Publish+Mail, and enter in the code reviewer and CC + google-breakpad-dev@googlegroups.com + +## Documentation + +Visit https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/ diff --git a/toolkit/crashreporter/google-breakpad/aclocal.m4 b/toolkit/crashreporter/google-breakpad/aclocal.m4 index 10010c229319..e657517b01ac 100644 --- a/toolkit/crashreporter/google-breakpad/aclocal.m4 +++ b/toolkit/crashreporter/google-breakpad/aclocal.m4 @@ -56,66 +56,6 @@ m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -# Copyright (C) 2011-2014 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_AR([ACT-IF-FAIL]) -# ------------------------- -# Try to determine the archiver interface, and trigger the ar-lib wrapper -# if it is needed. If the detection of archiver interface fails, run -# ACT-IF-FAIL (default is to abort configure with a proper error message). -AC_DEFUN([AM_PROG_AR], -[AC_BEFORE([$0], [LT_INIT])dnl -AC_BEFORE([$0], [AC_PROG_LIBTOOL])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([ar-lib])dnl -AC_CHECK_TOOLS([AR], [ar lib "link -lib"], [false]) -: ${AR=ar} - -AC_CACHE_CHECK([the archiver ($AR) interface], [am_cv_ar_interface], - [AC_LANG_PUSH([C]) - am_cv_ar_interface=ar - AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int some_variable = 0;]])], - [am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([am_ar_try]) - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - ]) - AC_LANG_POP([C])]) - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - m4_default([$1], - [AC_MSG_ERROR([could not determine $AR interface])]) - ;; -esac -AC_SUBST([AR])dnl -]) - # Figure out how to run the assembler. -*- Autoconf -*- # Copyright (C) 2001-2014 Free Software Foundation, Inc. diff --git a/toolkit/crashreporter/google-breakpad/android/google_breakpad/Android.mk b/toolkit/crashreporter/google-breakpad/android/google_breakpad/Android.mk index 74625eb550f0..52fa5e4bea14 100644 --- a/toolkit/crashreporter/google-breakpad/android/google_breakpad/Android.mk +++ b/toolkit/crashreporter/google-breakpad/android/google_breakpad/Android.mk @@ -71,12 +71,9 @@ LOCAL_ARM_MODE := arm # List of client source files, directly taken from Makefile.am LOCAL_SRC_FILES := \ src/client/linux/crash_generation/crash_generation_client.cc \ - src/client/linux/dump_writer_common/thread_info.cc \ - src/client/linux/dump_writer_common/ucontext_reader.cc \ src/client/linux/handler/exception_handler.cc \ src/client/linux/handler/minidump_descriptor.cc \ src/client/linux/log/log.cc \ - src/client/linux/microdump_writer/microdump_writer.cc \ src/client/linux/minidump_writer/linux_dumper.cc \ src/client/linux/minidump_writer/linux_ptrace_dumper.cc \ src/client/linux/minidump_writer/minidump_writer.cc \ diff --git a/toolkit/crashreporter/google-breakpad/android/sample_app/jni/Application.mk b/toolkit/crashreporter/google-breakpad/android/sample_app/jni/Application.mk index 9728017d3f68..366ce29f78bf 100644 --- a/toolkit/crashreporter/google-breakpad/android/sample_app/jni/Application.mk +++ b/toolkit/crashreporter/google-breakpad/android/sample_app/jni/Application.mk @@ -29,4 +29,3 @@ APP_STL := stlport_static APP_ABI := all -APP_CXXFLAGS := -std=c++11 -D__STDC_LIMIT_MACROS diff --git a/toolkit/crashreporter/google-breakpad/autotools/compile b/toolkit/crashreporter/google-breakpad/autotools/compile index a85b723c7e67..531136b068ef 100755 --- a/toolkit/crashreporter/google-breakpad/autotools/compile +++ b/toolkit/crashreporter/google-breakpad/autotools/compile @@ -3,7 +3,7 @@ scriptversion=2012-10-14.11; # UTC -# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify diff --git a/toolkit/crashreporter/google-breakpad/autotools/config.guess b/toolkit/crashreporter/google-breakpad/autotools/config.guess index dcd5149681df..f7eb141e75a9 100755 --- a/toolkit/crashreporter/google-breakpad/autotools/config.guess +++ b/toolkit/crashreporter/google-breakpad/autotools/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2016 Free Software Foundation, Inc. +# Copyright 1992-2015 Free Software Foundation, Inc. -timestamp='2016-01-01' +timestamp='2015-03-04' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ timestamp='2016-01-01' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2016 Free Software Foundation, Inc. +Copyright 1992-2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -221,7 +221,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: @@ -249,9 +249,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; - *:Sortix:*:*) - echo ${UNAME_MACHINE}-unknown-sortix - exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -965,9 +962,6 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; - k1om:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -1044,7 +1038,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1123,7 +1117,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configure will decide that + # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1393,9 +1387,6 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; - amd64:Isilon\ OneFS:*:*) - echo x86_64-unknown-onefs - exit ;; esac cat >&2 <&2 - exit 1;; - esac - shift;; + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; -o) chowncmd="$chownprog $2" - shift;; + shift;; -s) stripcmd=$stripprog;; - -t) - is_target_a_directory=always - dst_arg=$2 - # Protect names problematic for 'test' and other utilities. - case $dst_arg in - -* | [=\(\)!]) dst_arg=./$dst_arg;; - esac - shift;; + -t) dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; - -T) is_target_a_directory=never;; + -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; - --) shift - break;; + --) shift + break;; - -*) echo "$0: invalid option: $1" >&2 - exit 1;; + -*) echo "$0: invalid option: $1" >&2 + exit 1;; *) break;; esac shift done -# We allow the use of options -d and -T together, by making -d -# take the precedence; this is for compatibility with GNU install. - -if test -n "$dir_arg"; then - if test -n "$dst_arg"; then - echo "$0: target directory not allowed when installing a directory." >&2 - exit 1 - fi -fi - if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. @@ -203,15 +207,6 @@ if test $# -eq 0; then exit 0 fi -if test -z "$dir_arg"; then - if test $# -gt 1 || test "$is_target_a_directory" = always; then - if test ! -d "$dst_arg"; then - echo "$0: $dst_arg: Is not a directory." >&2 - exit 1 - fi - fi -fi - if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 @@ -228,16 +223,16 @@ if test -z "$dir_arg"; then *[0-7]) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw='% 200' + u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then - u_plus_rw= + u_plus_rw= else - u_plus_rw=,u+rw + u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac @@ -274,15 +269,41 @@ do # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then - if test "$is_target_a_directory" = never; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else - dstdir=`dirname "$dst"` + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + test -d "$dstdir" dstdir_status=$? fi @@ -293,74 +314,74 @@ do if test $dstdir_status != 0; then case $posix_mkdir in '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; esac if $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else @@ -370,51 +391,53 @@ do # directory the slow way, step by step, checking for races as we go. case $dstdir in - /*) prefix='/';; - [-=\(\)!]*) prefix='./';; - *) prefix='';; + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; esac + eval "$initialize_posix_glob" + oIFS=$IFS IFS=/ - set -f + $posix_glob set -f set fnord $dstdir shift - set +f + $posix_glob set +f IFS=$oIFS prefixes= for d do - test X"$d" = X && continue + test X"$d" = X && continue - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ done if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true fi fi fi @@ -449,12 +472,15 @@ do # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - set -f && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && - set +f && + $posix_glob set +f && + test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then @@ -467,24 +493,24 @@ do # to itself, or perhaps because mv is so ancient that it does not # support -f. { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 diff --git a/toolkit/crashreporter/google-breakpad/autotools/missing b/toolkit/crashreporter/google-breakpad/autotools/missing index f62bbae306c7..db98974ff5d5 100755 --- a/toolkit/crashreporter/google-breakpad/autotools/missing +++ b/toolkit/crashreporter/google-breakpad/autotools/missing @@ -3,7 +3,7 @@ scriptversion=2013-10-28.13; # UTC -# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify diff --git a/toolkit/crashreporter/google-breakpad/autotools/test-driver b/toolkit/crashreporter/google-breakpad/autotools/test-driver index 8e575b017d93..d30605660a06 100755 --- a/toolkit/crashreporter/google-breakpad/autotools/test-driver +++ b/toolkit/crashreporter/google-breakpad/autotools/test-driver @@ -3,7 +3,7 @@ scriptversion=2013-07-13.22; # UTC -# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# Copyright (C) 2011-2013 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -106,14 +106,11 @@ trap "st=143; $do_exit" 15 # Test script is run here. "$@" >$log_file 2>&1 estatus=$? - if test $enable_hard_errors = no && test $estatus -eq 99; then - tweaked_estatus=1 -else - tweaked_estatus=$estatus + estatus=1 fi -case $tweaked_estatus:$expect_failure in +case $estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; @@ -122,12 +119,6 @@ case $tweaked_estatus:$expect_failure in *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac -# Report the test outcome and exit status in the logs, so that one can -# know whether the test passed or failed simply by looking at the '.log' -# file, without the need of also peaking into the corresponding '.trs' -# file (automake bug#11814). -echo "$res $test_name (exit status: $estatus)" >>$log_file - # Report outcome to console. echo "${col}${res}${std}: $test_name" diff --git a/toolkit/crashreporter/google-breakpad/codereview.settings b/toolkit/crashreporter/google-breakpad/codereview.settings index 2a60978c1379..2228d565a75e 100644 --- a/toolkit/crashreporter/google-breakpad/codereview.settings +++ b/toolkit/crashreporter/google-breakpad/codereview.settings @@ -1,4 +1,5 @@ -GERRIT_HOST: True -GERRIT_SQUASH_UPLOADS: True -CODE_REVIEW_SERVER: chromium-review.googlesource.com +# This file is used by gcl to get repository specific information. +CODE_REVIEW_SERVER: codereview.chromium.org +CC_LIST: google-breakpad-dev@googlegroups.com +TRY_ON_UPLOAD: False VIEW_VC: https://chromium.googlesource.com/breakpad/breakpad/+/ diff --git a/toolkit/crashreporter/google-breakpad/configure b/toolkit/crashreporter/google-breakpad/configure index a02f7cd537a5..2bf5fe0a0d42 100755 --- a/toolkit/crashreporter/google-breakpad/configure +++ b/toolkit/crashreporter/google-breakpad/configure @@ -628,25 +628,14 @@ LTLIBOBJS LIBOBJS SELFTEST_FALSE SELFTEST_TRUE -GTEST_LIBS -GTEST_CFLAGS -GTEST_CONFIG -GMOCK_LIBS -GMOCK_CFLAGS -GMOCK_CONFIG -SYSTEM_TEST_LIBS_FALSE -SYSTEM_TEST_LIBS_TRUE DISABLE_TOOLS_FALSE DISABLE_TOOLS_TRUE DISABLE_PROCESSOR_FALSE DISABLE_PROCESSOR_TRUE -X86_HOST_FALSE -X86_HOST_TRUE ANDROID_HOST_FALSE ANDROID_HOST_TRUE LINUX_HOST_FALSE LINUX_HOST_TRUE -HAVE_CXX11 PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC @@ -685,8 +674,6 @@ CPPFLAGS LDFLAGS CFLAGS CC -ac_ct_AR -AR MAINT MAINTAINER_MODE_FALSE MAINTAINER_MODE_TRUE @@ -773,7 +760,6 @@ enable_m32 enable_largefile enable_processor enable_tools -enable_system_test_libs enable_selftest ' ac_precious_vars='build_alias @@ -789,13 +775,7 @@ CCASFLAGS CPP CXX CXXFLAGS -CCC -GMOCK_CONFIG -GMOCK_CFLAGS -GMOCK_LIBS -GTEST_CONFIG -GTEST_CFLAGS -GTEST_LIBS' +CCC' # Initialize some variables set by options. @@ -1427,9 +1407,6 @@ Optional Features: --disable-largefile omit support for large files --disable-processor Don't build processor library (default is no) --disable-tools Don't build tool binaries (default is no) - --enable-system-test-libs - Use gtest/gmock/etc... from the system instead of - the local copies (default is local) --enable-selftest Run extra tests with "make check" (may conflict with optimizations) (default is no) @@ -1446,16 +1423,6 @@ Some influential environment variables: CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags - GMOCK_CONFIG - Path to gmock-config script - GMOCK_CFLAGS - Compiler flags for gmock - GMOCK_LIBS Linker flags for gmock - GTEST_CONFIG - Path to gtest-config script - GTEST_CFLAGS - Compiler flags for gtest - GTEST_LIBS Linker flags for gtest Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -4074,178 +4041,6 @@ else fi - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar lib "link -lib" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar lib "link -lib" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the archiver ($AR) interface" >&5 -$as_echo_n "checking the archiver ($AR) interface... " >&6; } -if ${am_cv_ar_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - am_cv_ar_interface=ar - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int some_variable = 0; -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - am_ar_try='$AR cru libconftest.a conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=ar - else - am_ar_try='$AR -NOLOGO -OUT:conftest.lib conftest.$ac_objext >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$am_ar_try\""; } >&5 - (eval $am_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - am_cv_ar_interface=lib - else - am_cv_ar_interface=unknown - fi - fi - rm -f conftest.lib libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_ar_interface" >&5 -$as_echo "$am_cv_ar_interface" >&6; } - -case $am_cv_ar_interface in -ar) - ;; -lib) - # Microsoft lib, so override with the ar-lib wrapper script. - # FIXME: It is wrong to rewrite AR. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__AR in this case, - # and then we could set am__AR="$am_aux_dir/ar-lib \$(AR)" or something - # similar. - AR="$am_aux_dir/ar-lib $AR" - ;; -unknown) - as_fn_error $? "could not determine $AR interface" "$LINENO" 5 - ;; -esac - # By default we simply use the C compiler to build assembly code. test "${CCAS+set}" = set || CCAS=$CC @@ -5750,6 +5545,7 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : @@ -6017,7 +5813,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6063,7 +5859,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6087,7 +5883,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6132,7 +5928,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6156,7 +5952,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -6675,728 +6471,6 @@ fi done -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional]) -# -# DESCRIPTION -# -# Check for baseline language coverage in the compiler for the specified -# version of the C++ standard. If necessary, add switches to CXXFLAGS to -# enable support. VERSION may be '11' (for the C++11 standard) or '14' -# (for the C++14 standard). -# -# The second argument, if specified, indicates whether you insist on an -# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g. -# -std=c++11). If neither is specified, you get whatever works, with -# preference for an extended mode. -# -# The third argument, if specified 'mandatory' or if left unspecified, -# indicates that baseline support for the specified C++ standard is -# required and that the macro should error out if no mode with that -# support is found. If specified 'optional', then configuration proceeds -# regardless, after defining HAVE_CXX${VERSION} if and only if a -# supporting mode is found. -# -# LICENSE -# -# Copyright (c) 2008 Benjamin Kosnik -# Copyright (c) 2012 Zack Weinberg -# Copyright (c) 2013 Roy Stogner -# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov -# Copyright (c) 2015 Paul Norman -# Copyright (c) 2015 Moritz Klammler -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 1 - - - - - - - - - - - - - - - - - - - - - - ax_cxx_compile_cxx11_required=true - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - ac_success=no - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features by default" >&5 -$as_echo_n "checking whether $CXX supports C++11 features by default... " >&6; } -if ${ax_cv_cxx_compile_cxx11+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -// If the compiler admits that it is not ready for C++11, why torture it? -// Hopefully, this will speed up the test. - -#ifndef __cplusplus - -#error "This is not a C++ compiler" - -#elif __cplusplus < 201103L - -#error "This is not a C++11 compiler" - -#else - -namespace cxx11 -{ - - namespace test_static_assert - { - - template - struct check - { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); - }; - - } - - namespace test_final_override - { - - struct Base - { - virtual void f() {} - }; - - struct Derived : public Base - { - virtual void f() override {} - }; - - } - - namespace test_double_right_angle_brackets - { - - template < typename T > - struct check {}; - - typedef check single_type; - typedef check> double_type; - typedef check>> triple_type; - typedef check>>> quadruple_type; - - } - - namespace test_decltype - { - - int - f() - { - int a = 1; - decltype(a) b = 2; - return a + b; - } - - } - - namespace test_type_deduction - { - - template < typename T1, typename T2 > - struct is_same - { - static const bool value = false; - }; - - template < typename T > - struct is_same - { - static const bool value = true; - }; - - template < typename T1, typename T2 > - auto - add(T1 a1, T2 a2) -> decltype(a1 + a2) - { - return a1 + a2; - } - - int - test(const int c, volatile int v) - { - static_assert(is_same::value == true, ""); - static_assert(is_same::value == false, ""); - static_assert(is_same::value == false, ""); - auto ac = c; - auto av = v; - auto sumi = ac + av + 'x'; - auto sumf = ac + av + 1.0; - static_assert(is_same::value == true, ""); - static_assert(is_same::value == true, ""); - static_assert(is_same::value == true, ""); - static_assert(is_same::value == false, ""); - static_assert(is_same::value == true, ""); - return (sumf > 0.0) ? sumi : add(c, v); - } - - } - - namespace test_noexcept - { - - int f() { return 0; } - int g() noexcept { return 0; } - - static_assert(noexcept(f()) == false, ""); - static_assert(noexcept(g()) == true, ""); - - } - - namespace test_constexpr - { - - template < typename CharT > - unsigned long constexpr - strlen_c_r(const CharT *const s, const unsigned long acc) noexcept - { - return *s ? strlen_c_r(s + 1, acc + 1) : acc; - } - - template < typename CharT > - unsigned long constexpr - strlen_c(const CharT *const s) noexcept - { - return strlen_c_r(s, 0UL); - } - - static_assert(strlen_c("") == 0UL, ""); - static_assert(strlen_c("1") == 1UL, ""); - static_assert(strlen_c("example") == 7UL, ""); - static_assert(strlen_c("another\0example") == 7UL, ""); - - } - - namespace test_rvalue_references - { - - template < int N > - struct answer - { - static constexpr int value = N; - }; - - answer<1> f(int&) { return answer<1>(); } - answer<2> f(const int&) { return answer<2>(); } - answer<3> f(int&&) { return answer<3>(); } - - void - test() - { - int i = 0; - const int c = 0; - static_assert(decltype(f(i))::value == 1, ""); - static_assert(decltype(f(c))::value == 2, ""); - static_assert(decltype(f(0))::value == 3, ""); - } - - } - - namespace test_uniform_initialization - { - - struct test - { - static const int zero {}; - static const int one {1}; - }; - - static_assert(test::zero == 0, ""); - static_assert(test::one == 1, ""); - - } - - namespace test_lambdas - { - - void - test1() - { - auto lambda1 = [](){}; - auto lambda2 = lambda1; - lambda1(); - lambda2(); - } - - int - test2() - { - auto a = [](int i, int j){ return i + j; }(1, 2); - auto b = []() -> int { return '0'; }(); - auto c = [=](){ return a + b; }(); - auto d = [&](){ return c; }(); - auto e = [a, &b](int x) mutable { - const auto identity = [](int y){ return y; }; - for (auto i = 0; i < a; ++i) - a += b--; - return x + identity(a + b); - }(0); - return a + b + c + d + e; - } - - int - test3() - { - const auto nullary = [](){ return 0; }; - const auto unary = [](int x){ return x; }; - using nullary_t = decltype(nullary); - using unary_t = decltype(unary); - const auto higher1st = [](nullary_t f){ return f(); }; - const auto higher2nd = [unary](nullary_t f1){ - return [unary, f1](unary_t f2){ return f2(unary(f1())); }; - }; - return higher1st(nullary) + higher2nd(nullary)(unary); - } - - } - - namespace test_variadic_templates - { - - template - struct sum; - - template - struct sum - { - static constexpr auto value = N0 + sum::value; - }; - - template <> - struct sum<> - { - static constexpr auto value = 0; - }; - - static_assert(sum<>::value == 0, ""); - static_assert(sum<1>::value == 1, ""); - static_assert(sum<23>::value == 23, ""); - static_assert(sum<1, 2>::value == 3, ""); - static_assert(sum<5, 5, 11>::value == 21, ""); - static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); - - } - - // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae - // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function - // because of this. - namespace test_template_alias_sfinae - { - - struct foo {}; - - template - using member = typename T::member_type; - - template - void func(...) {} - - template - void func(member*) {} - - void test(); - - void test() { func(0); } - - } - -} // namespace cxx11 - -#endif // __cplusplus >= 201103L - - - -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ax_cv_cxx_compile_cxx11=yes -else - ax_cv_cxx_compile_cxx11=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_cxx_compile_cxx11" >&5 -$as_echo "$ax_cv_cxx_compile_cxx11" >&6; } - if test x$ax_cv_cxx_compile_cxx11 = xyes; then - ac_success=yes - fi - - - - if test x$ac_success = xno; then - for switch in -std=c++11 -std=c++0x +std=c++11 "-h std=c++11"; do - cachevar=`$as_echo "ax_cv_cxx_compile_cxx11_$switch" | $as_tr_sh` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++11 features with $switch" >&5 -$as_echo_n "checking whether $CXX supports C++11 features with $switch... " >&6; } -if eval \${$cachevar+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS $switch" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - -// If the compiler admits that it is not ready for C++11, why torture it? -// Hopefully, this will speed up the test. - -#ifndef __cplusplus - -#error "This is not a C++ compiler" - -#elif __cplusplus < 201103L - -#error "This is not a C++11 compiler" - -#else - -namespace cxx11 -{ - - namespace test_static_assert - { - - template - struct check - { - static_assert(sizeof(int) <= sizeof(T), "not big enough"); - }; - - } - - namespace test_final_override - { - - struct Base - { - virtual void f() {} - }; - - struct Derived : public Base - { - virtual void f() override {} - }; - - } - - namespace test_double_right_angle_brackets - { - - template < typename T > - struct check {}; - - typedef check single_type; - typedef check> double_type; - typedef check>> triple_type; - typedef check>>> quadruple_type; - - } - - namespace test_decltype - { - - int - f() - { - int a = 1; - decltype(a) b = 2; - return a + b; - } - - } - - namespace test_type_deduction - { - - template < typename T1, typename T2 > - struct is_same - { - static const bool value = false; - }; - - template < typename T > - struct is_same - { - static const bool value = true; - }; - - template < typename T1, typename T2 > - auto - add(T1 a1, T2 a2) -> decltype(a1 + a2) - { - return a1 + a2; - } - - int - test(const int c, volatile int v) - { - static_assert(is_same::value == true, ""); - static_assert(is_same::value == false, ""); - static_assert(is_same::value == false, ""); - auto ac = c; - auto av = v; - auto sumi = ac + av + 'x'; - auto sumf = ac + av + 1.0; - static_assert(is_same::value == true, ""); - static_assert(is_same::value == true, ""); - static_assert(is_same::value == true, ""); - static_assert(is_same::value == false, ""); - static_assert(is_same::value == true, ""); - return (sumf > 0.0) ? sumi : add(c, v); - } - - } - - namespace test_noexcept - { - - int f() { return 0; } - int g() noexcept { return 0; } - - static_assert(noexcept(f()) == false, ""); - static_assert(noexcept(g()) == true, ""); - - } - - namespace test_constexpr - { - - template < typename CharT > - unsigned long constexpr - strlen_c_r(const CharT *const s, const unsigned long acc) noexcept - { - return *s ? strlen_c_r(s + 1, acc + 1) : acc; - } - - template < typename CharT > - unsigned long constexpr - strlen_c(const CharT *const s) noexcept - { - return strlen_c_r(s, 0UL); - } - - static_assert(strlen_c("") == 0UL, ""); - static_assert(strlen_c("1") == 1UL, ""); - static_assert(strlen_c("example") == 7UL, ""); - static_assert(strlen_c("another\0example") == 7UL, ""); - - } - - namespace test_rvalue_references - { - - template < int N > - struct answer - { - static constexpr int value = N; - }; - - answer<1> f(int&) { return answer<1>(); } - answer<2> f(const int&) { return answer<2>(); } - answer<3> f(int&&) { return answer<3>(); } - - void - test() - { - int i = 0; - const int c = 0; - static_assert(decltype(f(i))::value == 1, ""); - static_assert(decltype(f(c))::value == 2, ""); - static_assert(decltype(f(0))::value == 3, ""); - } - - } - - namespace test_uniform_initialization - { - - struct test - { - static const int zero {}; - static const int one {1}; - }; - - static_assert(test::zero == 0, ""); - static_assert(test::one == 1, ""); - - } - - namespace test_lambdas - { - - void - test1() - { - auto lambda1 = [](){}; - auto lambda2 = lambda1; - lambda1(); - lambda2(); - } - - int - test2() - { - auto a = [](int i, int j){ return i + j; }(1, 2); - auto b = []() -> int { return '0'; }(); - auto c = [=](){ return a + b; }(); - auto d = [&](){ return c; }(); - auto e = [a, &b](int x) mutable { - const auto identity = [](int y){ return y; }; - for (auto i = 0; i < a; ++i) - a += b--; - return x + identity(a + b); - }(0); - return a + b + c + d + e; - } - - int - test3() - { - const auto nullary = [](){ return 0; }; - const auto unary = [](int x){ return x; }; - using nullary_t = decltype(nullary); - using unary_t = decltype(unary); - const auto higher1st = [](nullary_t f){ return f(); }; - const auto higher2nd = [unary](nullary_t f1){ - return [unary, f1](unary_t f2){ return f2(unary(f1())); }; - }; - return higher1st(nullary) + higher2nd(nullary)(unary); - } - - } - - namespace test_variadic_templates - { - - template - struct sum; - - template - struct sum - { - static constexpr auto value = N0 + sum::value; - }; - - template <> - struct sum<> - { - static constexpr auto value = 0; - }; - - static_assert(sum<>::value == 0, ""); - static_assert(sum<1>::value == 1, ""); - static_assert(sum<23>::value == 23, ""); - static_assert(sum<1, 2>::value == 3, ""); - static_assert(sum<5, 5, 11>::value == 21, ""); - static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, ""); - - } - - // http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae - // Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function - // because of this. - namespace test_template_alias_sfinae - { - - struct foo {}; - - template - using member = typename T::member_type; - - template - void func(...) {} - - template - void func(member*) {} - - void test(); - - void test() { func(0); } - - } - -} // namespace cxx11 - -#endif // __cplusplus >= 201103L - - - -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - eval $cachevar=yes -else - eval $cachevar=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - CXXFLAGS="$ac_save_CXXFLAGS" -fi -eval ac_res=\$$cachevar - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - if eval test x\$$cachevar = xyes; then - CXXFLAGS="$CXXFLAGS $switch" - ac_success=yes - break - fi - done - fi - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - if test x$ax_cxx_compile_cxx11_required = xtrue; then - if test x$ac_success = xno; then - as_fn_error $? "*** A compiler with support for C++11 language features is required." "$LINENO" 5 - fi - else - if test x$ac_success = xno; then - HAVE_CXX11=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++11 support was found" >&5 -$as_echo "$as_me: No compiler with C++11 support was found" >&6;} - else - HAVE_CXX11=1 - -$as_echo "#define HAVE_CXX11 1" >>confdefs.h - - fi - - - fi - - # Only build Linux client libs when compiling for Linux case $host in *-*-linux* | *-android* ) @@ -7427,21 +6501,6 @@ else fi -# Some tools (like mac ones) only support x86 currently. -case $host_cpu in - i?86|x86_64) - X86_HOST=true - ;; -esac - if test x$X86_HOST = xtrue; then - X86_HOST_TRUE= - X86_HOST_FALSE='#' -else - X86_HOST_TRUE='#' - X86_HOST_FALSE= -fi - - # Check whether --enable-processor was given. if test "${enable_processor+set}" = set; then : enableval=$enable_processor; case "${enableval}" in @@ -7498,229 +6557,6 @@ if test x$LINUX_HOST = xfalse -a x$disable_processor = xtrue -a x$disable_tools as_fn_error $? "--disable-processor and --disable-tools were specified, and not building for Linux. Nothing to build!" "$LINENO" 5 fi -# Check whether --enable-system-test-libs was given. -if test "${enable_system_test_libs+set}" = set; then : - enableval=$enable_system_test_libs; case "${enableval}" in - yes) - system_test_libs=true - ;; - no) - system_test_libs=false - ;; - *) - as_fn_error $? "bad value ${enableval} for --enable-system-test-libs" "$LINENO" 5 - ;; - esac -else - system_test_libs=false -fi - - if test x$system_test_libs = xtrue; then - SYSTEM_TEST_LIBS_TRUE= - SYSTEM_TEST_LIBS_FALSE='#' -else - SYSTEM_TEST_LIBS_TRUE='#' - SYSTEM_TEST_LIBS_FALSE= -fi - - - - - - - - -if test x$system_test_libs = xtrue; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gmock-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}gmock-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_GMOCK_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$GMOCK_CONFIG"; then - ac_cv_prog_GMOCK_CONFIG="$GMOCK_CONFIG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_GMOCK_CONFIG="${ac_tool_prefix}gmock-config" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -GMOCK_CONFIG=$ac_cv_prog_GMOCK_CONFIG -if test -n "$GMOCK_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMOCK_CONFIG" >&5 -$as_echo "$GMOCK_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_GMOCK_CONFIG"; then - ac_ct_GMOCK_CONFIG=$GMOCK_CONFIG - # Extract the first word of "gmock-config", so it can be a program name with args. -set dummy gmock-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_GMOCK_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_GMOCK_CONFIG"; then - ac_cv_prog_ac_ct_GMOCK_CONFIG="$ac_ct_GMOCK_CONFIG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_GMOCK_CONFIG="gmock-config" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_GMOCK_CONFIG=$ac_cv_prog_ac_ct_GMOCK_CONFIG -if test -n "$ac_ct_GMOCK_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GMOCK_CONFIG" >&5 -$as_echo "$ac_ct_GMOCK_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_GMOCK_CONFIG" = x; then - GMOCK_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - GMOCK_CONFIG=$ac_ct_GMOCK_CONFIG - fi -else - GMOCK_CONFIG="$ac_cv_prog_GMOCK_CONFIG" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gtest-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}gtest-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_GTEST_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$GTEST_CONFIG"; then - ac_cv_prog_GTEST_CONFIG="$GTEST_CONFIG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_GTEST_CONFIG="${ac_tool_prefix}gtest-config" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -GTEST_CONFIG=$ac_cv_prog_GTEST_CONFIG -if test -n "$GTEST_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GTEST_CONFIG" >&5 -$as_echo "$GTEST_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_GTEST_CONFIG"; then - ac_ct_GTEST_CONFIG=$GTEST_CONFIG - # Extract the first word of "gtest-config", so it can be a program name with args. -set dummy gtest-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_GTEST_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_GTEST_CONFIG"; then - ac_cv_prog_ac_ct_GTEST_CONFIG="$ac_ct_GTEST_CONFIG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_GTEST_CONFIG="gtest-config" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_GTEST_CONFIG=$ac_cv_prog_ac_ct_GTEST_CONFIG -if test -n "$ac_ct_GTEST_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GTEST_CONFIG" >&5 -$as_echo "$ac_ct_GTEST_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_GTEST_CONFIG" = x; then - GTEST_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - GTEST_CONFIG=$ac_ct_GTEST_CONFIG - fi -else - GTEST_CONFIG="$ac_cv_prog_GTEST_CONFIG" -fi - - GMOCK_CFLAGS=`$GMOCK_CONFIG --cppflags --cxxflags` - GMOCK_LIBS=`$GMOCK_CONFIG --ldflags --libs` - GTEST_CFLAGS=`$GTEST_CONFIG --cppflags --cxxflags` - GTEST_LIBS=`$GTEST_CONFIG --ldflags --libs` -fi - # Check whether --enable-selftest was given. if test "${enable_selftest+set}" = set; then : enableval=$enable_selftest; case "${enableval}" in @@ -7910,10 +6746,6 @@ if test -z "${ANDROID_HOST_TRUE}" && test -z "${ANDROID_HOST_FALSE}"; then as_fn_error $? "conditional \"ANDROID_HOST\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${X86_HOST_TRUE}" && test -z "${X86_HOST_FALSE}"; then - as_fn_error $? "conditional \"X86_HOST\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${DISABLE_PROCESSOR_TRUE}" && test -z "${DISABLE_PROCESSOR_FALSE}"; then as_fn_error $? "conditional \"DISABLE_PROCESSOR\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -7922,10 +6754,6 @@ if test -z "${DISABLE_TOOLS_TRUE}" && test -z "${DISABLE_TOOLS_FALSE}"; then as_fn_error $? "conditional \"DISABLE_TOOLS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${SYSTEM_TEST_LIBS_TRUE}" && test -z "${SYSTEM_TEST_LIBS_FALSE}"; then - as_fn_error $? "conditional \"SYSTEM_TEST_LIBS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${SELFTEST_TRUE}" && test -z "${SELFTEST_FALSE}"; then as_fn_error $? "conditional \"SELFTEST\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 diff --git a/toolkit/crashreporter/google-breakpad/configure.ac b/toolkit/crashreporter/google-breakpad/configure.ac index 23195b7d3e3c..42a3740bb351 100644 --- a/toolkit/crashreporter/google-breakpad/configure.ac +++ b/toolkit/crashreporter/google-breakpad/configure.ac @@ -41,7 +41,6 @@ AM_INIT_AUTOMAKE(subdir-objects tar-ustar 1.11.1) AM_CONFIG_HEADER(src/config.h) AM_MAINTAINER_MODE -AM_PROG_AR AM_PROG_AS AC_PROG_CC AM_PROG_CC_C_O @@ -76,9 +75,6 @@ m4_include(m4/ax_pthread.m4) AX_PTHREAD AC_CHECK_HEADERS([a.out.h]) -m4_include(m4/ax_cxx_compile_stdcxx.m4) -AX_CXX_COMPILE_STDCXX(11, noext, mandatory) - # Only build Linux client libs when compiling for Linux case $host in *-*-linux* | *-android* ) @@ -95,14 +91,6 @@ case $host in esac AM_CONDITIONAL(ANDROID_HOST, test x$ANDROID_HOST = xtrue) -# Some tools (like mac ones) only support x86 currently. -case $host_cpu in - i?86|x86_64) - X86_HOST=true - ;; -esac -AM_CONDITIONAL(X86_HOST, test x$X86_HOST = xtrue) - AC_ARG_ENABLE(processor, AS_HELP_STRING([--disable-processor], [Don't build processor library] @@ -143,39 +131,6 @@ if test x$LINUX_HOST = xfalse -a x$disable_processor = xtrue -a x$disable_tools AC_MSG_ERROR([--disable-processor and --disable-tools were specified, and not building for Linux. Nothing to build!]) fi -AC_ARG_ENABLE(system-test-libs, - AS_HELP_STRING([--enable-system-test-libs], - [Use gtest/gmock/etc... from the system instead ] - [of the local copies (default is local)]), - [case "${enableval}" in - yes) - system_test_libs=true - ;; - no) - system_test_libs=false - ;; - *) - AC_MSG_ERROR(bad value ${enableval} for --enable-system-test-libs) - ;; - esac], - [system_test_libs=false]) -AM_CONDITIONAL(SYSTEM_TEST_LIBS, test x$system_test_libs = xtrue) - -AC_ARG_VAR([GMOCK_CONFIG], [Path to gmock-config script]) -AC_ARG_VAR([GMOCK_CFLAGS], [Compiler flags for gmock]) -AC_ARG_VAR([GMOCK_LIBS], [Linker flags for gmock]) -AC_ARG_VAR([GTEST_CONFIG], [Path to gtest-config script]) -AC_ARG_VAR([GTEST_CFLAGS], [Compiler flags for gtest]) -AC_ARG_VAR([GTEST_LIBS], [Linker flags for gtest]) -if test x$system_test_libs = xtrue; then - AC_CHECK_TOOL([GMOCK_CONFIG], [gmock-config]) - AC_CHECK_TOOL([GTEST_CONFIG], [gtest-config]) - GMOCK_CFLAGS=`$GMOCK_CONFIG --cppflags --cxxflags` - GMOCK_LIBS=`$GMOCK_CONFIG --ldflags --libs` - GTEST_CFLAGS=`$GTEST_CONFIG --cppflags --cxxflags` - GTEST_LIBS=`$GTEST_CONFIG --ldflags --libs` -fi - AC_ARG_ENABLE(selftest, AS_HELP_STRING([--enable-selftest], [Run extra tests with "make check" ] diff --git a/toolkit/crashreporter/google-breakpad/src/breakpad_googletest_includes.h b/toolkit/crashreporter/google-breakpad/src/breakpad_googletest_includes.h index 19a3e980777d..1cc324b2323a 100644 --- a/toolkit/crashreporter/google-breakpad/src/breakpad_googletest_includes.h +++ b/toolkit/crashreporter/google-breakpad/src/breakpad_googletest_includes.h @@ -30,8 +30,8 @@ #ifndef BREAKPAD_GOOGLETEST_INCLUDES_H__ #define BREAKPAD_GOOGLETEST_INCLUDES_H__ -#include "gtest/gtest.h" -#include "gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/include/gmock/gmock.h" // If AddressSanitizer is used, NULL pointer dereferences generate SIGILL // (illegal instruction) instead of SIGSEGV (segmentation fault). Also, diff --git a/toolkit/crashreporter/google-breakpad/src/client/ios/Breakpad.mm b/toolkit/crashreporter/google-breakpad/src/client/ios/Breakpad.mm index ce635bd27197..0a1fc2ad7954 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/ios/Breakpad.mm +++ b/toolkit/crashreporter/google-breakpad/src/client/ios/Breakpad.mm @@ -263,8 +263,8 @@ void Breakpad::UncaughtExceptionHandler(NSException *exception) { NSSetUncaughtExceptionHandler(NULL); if (current_breakpad_) { current_breakpad_->HandleUncaughtException(exception); - BreakpadRelease(current_breakpad_); } + BreakpadRelease(current_breakpad_); } //============================================================================= diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc index 1d7d93b99cb4..860e8bc9f3a4 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/crash_generation/crash_generation_server.cc @@ -123,9 +123,6 @@ CrashGenerationServer::Stop() void* dummy; pthread_join(thread_, &dummy); - close(control_pipe_in_); - close(control_pipe_out_); - started_ = false; } diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc index 0a1041d62d30..9956d4450bb4 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/thread_info.cc @@ -235,13 +235,7 @@ uintptr_t ThreadInfo::GetInstructionPointer() const { } void ThreadInfo::FillCPUContext(RawContextCPU* out) const { -#if _MIPS_SIM == _ABI64 - out->context_flags = MD_CONTEXT_MIPS64_FULL; -#elif _MIPS_SIM == _ABIO32 out->context_flags = MD_CONTEXT_MIPS_FULL; -#else -# error "This mips ABI is currently not supported (n32)" -#endif for (int i = 0; i < MD_CONTEXT_MIPS_GPR_COUNT; ++i) out->iregs[i] = mcontext.gregs[i]; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc index c80724dd878a..d37fdeb01f83 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc @@ -219,13 +219,7 @@ uintptr_t UContextReader::GetInstructionPointer(const struct ucontext* uc) { } void UContextReader::FillCPUContext(RawContextCPU *out, const ucontext *uc) { -#if _MIPS_SIM == _ABI64 - out->context_flags = MD_CONTEXT_MIPS64_FULL; -#elif _MIPS_SIM == _ABIO32 out->context_flags = MD_CONTEXT_MIPS_FULL; -#else -#error "This mips ABI is currently not supported (n32)" -#endif for (int i = 0; i < MD_CONTEXT_MIPS_GPR_COUNT; ++i) out->iregs[i] = uc->uc_mcontext.gregs[i]; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc index 577ee8e9bc2f..2ccea4db2476 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc @@ -118,7 +118,7 @@ namespace { // all these signals must be Core (see man 7 signal) because we rethrow the // signal after handling it and expect that it'll be fatal. const int kExceptionSignals[] = { - SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS, SIGTRAP + SIGSEGV, SIGABRT, SIGFPE, SIGILL, SIGBUS }; const int kNumHandledSignals = sizeof(kExceptionSignals) / sizeof(kExceptionSignals[0]); diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc index 17d84cf7be4d..b4065b414f88 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler_unittest.cc @@ -45,6 +45,7 @@ #include "client/linux/handler/exception_handler.h" #include "client/linux/minidump_writer/minidump_writer.h" #include "common/linux/eintr_wrapper.h" +#include "common/linux/file_id.h" #include "common/linux/ignore_ret.h" #include "common/linux/linux_libc_support.h" #include "common/tests/auto_tempdir.h" @@ -93,6 +94,10 @@ void FlushInstructionCache(const char* memory, uint32_t memory_size) { #endif } +// Length of a formatted GUID string = +// sizeof(MDGUID) * 2 + 4 (for dashes) + 1 (null terminator) +const int kGUIDStringSize = 37; + void sigchld_handler(int signo) { } int CreateTMPFile(const string& dir, string* path) { @@ -257,6 +262,8 @@ TEST(ExceptionHandlerTest, ChildCrashWithFD) { ASSERT_NO_FATAL_FAILURE(ChildCrash(true)); } +#endif // !ADDRESS_SANITIZER + static bool DoneCallbackReturnFalse(const MinidumpDescriptor& descriptor, void* context, bool succeeded) { @@ -298,6 +305,8 @@ static bool InstallRaiseSIGKILL() { return sigaction(SIGSEGV, &sa, NULL) != -1; } +#ifndef ADDRESS_SANITIZER + static void CrashWithCallbacks(ExceptionHandler::FilterCallback filter, ExceptionHandler::MinidumpCallback done, string path) { @@ -812,7 +821,19 @@ TEST(ExceptionHandlerTest, ModuleInfo) { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; - const string module_identifier = "33221100554477668899AABBCCDDEEFF0"; + char module_identifier_buffer[kGUIDStringSize]; + FileID::ConvertIdentifierToString(kModuleGUID, + module_identifier_buffer, + sizeof(module_identifier_buffer)); + string module_identifier(module_identifier_buffer); + // Strip out dashes + size_t pos; + while ((pos = module_identifier.find('-')) != string::npos) { + module_identifier.erase(pos, 1); + } + // And append a zero, because module IDs include an "age" field + // which is always zero on Linux. + module_identifier += "0"; // Get some memory. char* memory = @@ -857,8 +878,6 @@ TEST(ExceptionHandlerTest, ModuleInfo) { unlink(minidump_desc.path()); } -#ifndef ADDRESS_SANITIZER - static const unsigned kControlMsgSize = CMSG_SPACE(sizeof(int)) + CMSG_SPACE(sizeof(struct ucred)); @@ -911,6 +930,8 @@ CrashHandler(const void* crash_context, size_t crash_context_size, return true; } +#ifndef ADDRESS_SANITIZER + TEST(ExceptionHandlerTest, ExternalDumper) { int fds[2]; ASSERT_NE(socketpair(AF_UNIX, SOCK_DGRAM, 0, fds), -1); diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/microdump_extra_info.h b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/microdump_extra_info.h index bf01f0c7b1d4..b9c3d30dc06e 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/handler/microdump_extra_info.h +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/handler/microdump_extra_info.h @@ -38,13 +38,9 @@ struct MicrodumpExtraInfo { const char* build_fingerprint; const char* product_info; const char* gpu_fingerprint; - const char* process_type; MicrodumpExtraInfo() - : build_fingerprint(NULL), - product_info(NULL), - gpu_fingerprint(NULL), - process_type(NULL) {} + : build_fingerprint(NULL), product_info(NULL), gpu_fingerprint(NULL) {} }; } diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc index 6f5b435591bd..aa9f94136761 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc @@ -32,8 +32,6 @@ #include "client/linux/microdump_writer/microdump_writer.h" -#include - #include #include "client/linux/dump_writer_common/thread_info.h" @@ -42,15 +40,11 @@ #include "client/linux/handler/microdump_extra_info.h" #include "client/linux/log/log.h" #include "client/linux/minidump_writer/linux_ptrace_dumper.h" -#include "common/linux/file_id.h" #include "common/linux/linux_libc_support.h" -#include "common/memory.h" namespace { -using google_breakpad::auto_wasteful_vector; using google_breakpad::ExceptionHandler; -using google_breakpad::kDefaultBuildIdSize; using google_breakpad::LinuxDumper; using google_breakpad::LinuxPtraceDumper; using google_breakpad::MappingInfo; @@ -62,72 +56,6 @@ using google_breakpad::UContextReader; const size_t kLineBufferSize = 2048; -#if !defined(__LP64__) -// The following are only used by DumpFreeSpace, so need to be compiled -// in conditionally in the same way. - -template -Dst saturated_cast(Src src) { - if (src >= std::numeric_limits::max()) - return std::numeric_limits::max(); - if (src <= std::numeric_limits::min()) - return std::numeric_limits::min(); - return static_cast(src); -} - -int Log2Floor(uint64_t n) { - // Copied from chromium src/base/bits.h - if (n == 0) - return -1; - int log = 0; - uint64_t value = n; - for (int i = 5; i >= 0; --i) { - int shift = (1 << i); - uint64_t x = value >> shift; - if (x != 0) { - value = x; - log += shift; - } - } - assert(value == 1u); - return log; -} - -bool MappingsAreAdjacent(const MappingInfo& a, const MappingInfo& b) { - // Because of load biasing, we can end up with a situation where two - // mappings actually overlap. So we will define adjacency to also include a - // b start address that lies within a's address range (including starting - // immediately after a). - // Because load biasing only ever moves the start address backwards, the end - // address should still increase. - return a.start_addr <= b.start_addr && a.start_addr + a.size >= b.start_addr; -} - -bool MappingLessThan(const MappingInfo* a, const MappingInfo* b) { - // Return true if mapping a is before mapping b. - // For the same reason (load biasing) we compare end addresses, which - unlike - // start addresses - will not have been modified. - return a->start_addr + a->size < b->start_addr + b->size; -} - -size_t NextOrderedMapping( - const google_breakpad::wasteful_vector& mappings, - size_t curr) { - // Find the mapping that directly follows mappings[curr]. - // If no such mapping exists, return |invalid| to indicate this. - const size_t invalid = std::numeric_limits::max(); - size_t best = invalid; - for (size_t next = 0; next < mappings.size(); ++next) { - if (MappingLessThan(mappings[curr], mappings[next]) && - (best == invalid || MappingLessThan(mappings[next], mappings[best]))) { - best = next; - } - } - return best; -} - -#endif // !__LP64__ - class MicrodumpWriter { public: MicrodumpWriter(const ExceptionHandler::CrashContext* context, @@ -164,11 +92,7 @@ class MicrodumpWriter { LogLine("-----BEGIN BREAKPAD MICRODUMP-----"); DumpProductInformation(); DumpOSInformation(); - DumpProcessType(); DumpGPUInformation(); -#if !defined(__LP64__) - DumpFreeSpace(); -#endif success = DumpCrashingThread(); if (success) success = DumpMappings(); @@ -234,16 +158,6 @@ class MicrodumpWriter { LogCommitLine(); } - void DumpProcessType() { - LogAppend("P "); - if (microdump_extra_info_.process_type) { - LogAppend(microdump_extra_info_.process_type); - } else { - LogAppend("UNKNOWN"); - } - LogCommitLine(); - } - void DumpOSInformation() { const uint8_t n_cpus = static_cast(sysconf(_SC_NPROCESSORS_CONF)); @@ -265,13 +179,7 @@ class MicrodumpWriter { #elif defined(__i386__) const char kArch[] = "x86"; #elif defined(__mips__) -# if _MIPS_SIM == _ABIO32 const char kArch[] = "mips"; -# elif _MIPS_SIM == _ABI64 - const char kArch[] = "mips64"; -# else -# error "This mips ABI is currently not supported (n32)" -#endif #else #error "This code has not been ported to your platform yet" #endif @@ -422,31 +330,21 @@ class MicrodumpWriter { bool member, unsigned int mapping_id, const uint8_t* identifier) { - - auto_wasteful_vector identifier_bytes( - dumper_->allocator()); - + MDGUID module_identifier; if (identifier) { // GUID was provided by caller. - identifier_bytes.insert(identifier_bytes.end(), - identifier, - identifier + sizeof(MDGUID)); + my_memcpy(&module_identifier, identifier, sizeof(MDGUID)); } else { dumper_->ElfFileIdentifierForMapping( mapping, member, mapping_id, - identifier_bytes); + reinterpret_cast(&module_identifier)); } - // Copy as many bytes of |identifier| as will fit into a MDGUID - MDGUID module_identifier = {0}; - memcpy(&module_identifier, &identifier_bytes[0], - std::min(sizeof(MDGUID), identifier_bytes.size())); - char file_name[NAME_MAX]; char file_path[NAME_MAX]; - dumper_->GetMappingEffectiveNameAndPath( + LinuxDumper::GetMappingEffectiveNameAndPath( mapping, file_path, sizeof(file_path), file_name, sizeof(file_name)); LogAppend("M "); @@ -472,80 +370,6 @@ class MicrodumpWriter { LogCommitLine(); } -#if !defined(__LP64__) - void DumpFreeSpace() { - const google_breakpad::wasteful_vector& mappings = - dumper_->mappings(); - if (mappings.size() == 0) return; - - // This is complicated by the fact that mappings is not in order. It should - // be mostly in order, however the mapping that contains the entry point for - // the process is always at the front of the vector. - - static const int HBITS = sizeof(size_t) * 8; - size_t hole_histogram[HBITS]; - my_memset(hole_histogram, 0, sizeof(hole_histogram)); - - // Find the lowest address mapping. - size_t curr = 0; - for (size_t i = 1; i < mappings.size(); ++i) { - if (mappings[i]->start_addr < mappings[curr]->start_addr) curr = i; - } - - uintptr_t lo_addr = mappings[curr]->start_addr; - - size_t hole_cnt = 0; - size_t hole_max = 0; - size_t hole_sum = 0; - - while (true) { - // Skip to the end of an adjacent run of mappings. This is an optimization - // for the fact that mappings is mostly sorted. - while (curr != mappings.size() - 1 && - MappingsAreAdjacent(*mappings[curr], *mappings[curr + 1])) { - ++curr; - } - - size_t next = NextOrderedMapping(mappings, curr); - if (next == std::numeric_limits::max()) - break; - - uintptr_t hole_lo = mappings[curr]->start_addr + mappings[curr]->size; - uintptr_t hole_hi = mappings[next]->start_addr; - - if (hole_hi > hole_lo) { - size_t hole_sz = hole_hi - hole_lo; - hole_sum += hole_sz; - hole_max = std::max(hole_sz, hole_max); - ++hole_cnt; - ++hole_histogram[Log2Floor(hole_sz)]; - } - curr = next; - } - - uintptr_t hi_addr = mappings[curr]->start_addr + mappings[curr]->size; - - LogAppend("H "); - LogAppend(lo_addr); - LogAppend(" "); - LogAppend(hi_addr); - LogAppend(" "); - LogAppend(saturated_cast(hole_cnt)); - LogAppend(" "); - LogAppend(hole_max); - LogAppend(" "); - LogAppend(hole_sum); - for (unsigned int i = 0; i < HBITS; ++i) { - if (!hole_histogram[i]) continue; - LogAppend(" "); - LogAppend(saturated_cast(i)); - LogAppend(":"); - LogAppend(saturated_cast(hole_histogram[i])); - } - LogCommitLine(); - } -#endif - // Write information about the mappings in effect. bool DumpMappings() { // First write all the mappings from the dumper diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc index 622f05069432..d732824593bf 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc @@ -49,9 +49,8 @@ namespace google_breakpad { LinuxCoreDumper::LinuxCoreDumper(pid_t pid, const char* core_path, - const char* procfs_path, - const char* root_prefix) - : LinuxDumper(pid, root_prefix), + const char* procfs_path) + : LinuxDumper(pid), core_path_(core_path), procfs_path_(procfs_path), thread_infos_(&allocator_, 8) { diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h index 8a7c924b61cd..8537896eecf4 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper.h @@ -47,9 +47,7 @@ class LinuxCoreDumper : public LinuxDumper { // its proc files at |procfs_path|. If |procfs_path| is a copy of // /proc/, it should contain the following files: // auxv, cmdline, environ, exe, maps, status - // See LinuxDumper for the purpose of |root_prefix|. - LinuxCoreDumper(pid_t pid, const char* core_path, const char* procfs_path, - const char* root_prefix = ""); + LinuxCoreDumper(pid_t pid, const char* core_path, const char* procfs_path); // Implements LinuxDumper::BuildProcPath(). // Builds a proc path for a certain pid for a node (/proc//). diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc index ae0c965b34d1..8f6a423ee04f 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_core_dumper_unittest.cc @@ -39,16 +39,6 @@ using namespace google_breakpad; -TEST(LinuxCoreDumperTest, GetMappingAbsolutePath) { - const LinuxCoreDumper dumper(getpid(), "core", "/tmp", "/mnt/root"); - const MappingInfo mapping = { 0, 0, 0, false, "/usr/lib/libc.so" }; - - char path[PATH_MAX]; - dumper.GetMappingAbsolutePath(mapping, path); - - EXPECT_STREQ("/mnt/root/usr/lib/libc.so", path); -} - TEST(LinuxCoreDumperTest, BuildProcPath) { const pid_t pid = getpid(); const char procfs_path[] = "/procfs_copy"; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc index a95ec7ec812c..43b74ad9de7e 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.cc @@ -70,6 +70,7 @@ static const int DT_ANDROID_RELA = DT_LOOS + 4; static const char kMappedFileUnsafePrefix[] = "/dev/"; static const char kDeletedSuffix[] = " (deleted)"; +static const char kReservedFlags[] = " ---p"; inline static bool IsMappedFileOpenUnsafe( const google_breakpad::MappingInfo& mapping) { @@ -84,186 +85,17 @@ inline static bool IsMappedFileOpenUnsafe( namespace google_breakpad { -#if defined(__CHROMEOS__) - -namespace { - -// Recover memory mappings before writing dump on ChromeOS -// -// On Linux, breakpad relies on /proc/[pid]/maps to associate symbols from -// addresses. ChromeOS' hugepage implementation replaces some segments with -// anonymous private pages, which is a restriction of current implementation -// in Linux kernel at the time of writing. Thus, breakpad can no longer -// symbolize addresses from those text segments replaced with hugepages. -// -// This postprocess tries to recover the mappings. Because hugepages are always -// inserted in between some .text sections, it tries to infer the names and -// offsets of the segments, by looking at segments immediately precede and -// succeed them. -// -// For example, a text segment before hugepage optimization -// 02001000-03002000 r-xp /opt/google/chrome/chrome -// -// can be broken into -// 02001000-02200000 r-xp /opt/google/chrome/chrome -// 02200000-03000000 r-xp -// 03000000-03002000 r-xp /opt/google/chrome/chrome -// -// For more details, see: -// crbug.com/628040 ChromeOS' use of hugepages confuses crash symbolization - -// Copied from CrOS' hugepage implementation, which is unlikely to change. -// The hugepage size is 2M. -const unsigned int kHpageShift = 21; -const size_t kHpageSize = (1 << kHpageShift); -const size_t kHpageMask = (~(kHpageSize - 1)); - -// Find and merge anonymous r-xp segments with surrounding named segments. -// There are two cases: - -// Case 1: curr, next -// curr is anonymous -// curr is r-xp -// curr.size >= 2M -// curr.size is a multiple of 2M. -// next is backed by some file. -// curr and next are contiguous. -// offset(next) == sizeof(curr) -void TryRecoverMappings(MappingInfo *curr, MappingInfo *next) { - // Merged segments are marked with size = 0. - if (curr->size == 0 || next->size == 0) - return; - - if (curr->size >= kHpageSize && - curr->exec && - (curr->size & kHpageMask) == curr->size && - (curr->start_addr & kHpageMask) == curr->start_addr && - curr->name[0] == '\0' && - next->name[0] != '\0' && - curr->start_addr + curr->size == next->start_addr && - curr->size == next->offset) { - - // matched - my_strlcpy(curr->name, next->name, NAME_MAX); - if (next->exec) { - // (curr, next) - curr->size += next->size; - next->size = 0; - } - } -} - -// Case 2: prev, curr, next -// curr is anonymous -// curr is r-xp -// curr.size >= 2M -// curr.size is a multiple of 2M. -// next and prev are backed by the same file. -// prev, curr and next are contiguous. -// offset(next) == offset(prev) + sizeof(prev) + sizeof(curr) -void TryRecoverMappings(MappingInfo *prev, MappingInfo *curr, - MappingInfo *next) { - // Merged segments are marked with size = 0. - if (prev->size == 0 || curr->size == 0 || next->size == 0) - return; - - if (curr->size >= kHpageSize && - curr->exec && - (curr->size & kHpageMask) == curr->size && - (curr->start_addr & kHpageMask) == curr->start_addr && - curr->name[0] == '\0' && - next->name[0] != '\0' && - curr->start_addr + curr->size == next->start_addr && - prev->start_addr + prev->size == curr->start_addr && - my_strncmp(prev->name, next->name, NAME_MAX) == 0 && - next->offset == prev->offset + prev->size + curr->size) { - - // matched - my_strlcpy(curr->name, prev->name, NAME_MAX); - if (prev->exec) { - curr->offset = prev->offset; - curr->start_addr = prev->start_addr; - if (next->exec) { - // (prev, curr, next) - curr->size += prev->size + next->size; - prev->size = 0; - next->size = 0; - } else { - // (prev, curr), next - curr->size += prev->size; - prev->size = 0; - } - } else { - curr->offset = prev->offset + prev->size; - if (next->exec) { - // prev, (curr, next) - curr->size += next->size; - next->size = 0; - } else { - // prev, curr, next - } - } - } -} - -// mappings_ is sorted excepted for the first entry. -// This function tries to merge segemnts into the first entry, -// then check for other sorted entries. -// See LinuxDumper::EnumerateMappings(). -void CrOSPostProcessMappings(wasteful_vector& mappings) { - // Find the candidate "next" to first segment, which is the only one that - // could be out-of-order. - size_t l = 1; - size_t r = mappings.size(); - size_t next = mappings.size(); - while (l < r) { - int m = (l + r) / 2; - if (mappings[m]->start_addr > mappings[0]->start_addr) - r = next = m; - else - l = m + 1; - } - - // Try to merge segments into the first. - if (next < mappings.size()) { - TryRecoverMappings(mappings[0], mappings[next]); - if (next - 1 > 0) - TryRecoverMappings(mappings[next - 1], mappings[0], mappings[next]); - } - - // Iterate through normal, sorted cases. - // Normal case 1. - for (size_t i = 1; i < mappings.size() - 1; i++) - TryRecoverMappings(mappings[i], mappings[i + 1]); - - // Normal case 2. - for (size_t i = 1; i < mappings.size() - 2; i++) - TryRecoverMappings(mappings[i], mappings[i + 1], mappings[i + 2]); - - // Collect merged (size == 0) segments. - size_t f, e; - for (f = e = 0; e < mappings.size(); e++) - if (mappings[e]->size > 0) - mappings[f++] = mappings[e]; - mappings.resize(f); -} - -} // namespace -#endif // __CHROMEOS__ - // All interesting auvx entry types are below AT_SYSINFO_EHDR #define AT_MAX AT_SYSINFO_EHDR -LinuxDumper::LinuxDumper(pid_t pid, const char* root_prefix) +LinuxDumper::LinuxDumper(pid_t pid) : pid_(pid), - root_prefix_(root_prefix), crash_address_(0), crash_signal_(0), crash_thread_(pid), threads_(&allocator_, 8), mappings_(&allocator_), auxv_(&allocator_, AT_MAX + 1) { - assert(root_prefix_ && my_strlen(root_prefix_) < PATH_MAX); // The passed-in size to the constructor (above) is only a hint. // Must call .resize() to do actual initialization of the elements. auxv_.resize(AT_MAX + 1); @@ -280,11 +112,6 @@ bool LinuxDumper::LateInit() { #if defined(__ANDROID__) LatePostprocessMappings(); #endif - -#if defined(__CHROMEOS__) - CrOSPostProcessMappings(mappings_); -#endif - return true; } @@ -292,8 +119,9 @@ bool LinuxDumper::ElfFileIdentifierForMapping(const MappingInfo& mapping, bool member, unsigned int mapping_id, - wasteful_vector& identifier) { + uint8_t identifier[sizeof(MDGUID)]) { assert(!member || mapping_id < mappings_.size()); + my_memset(identifier, 0, sizeof(MDGUID)); if (IsMappedFileOpenUnsafe(mapping)) return false; @@ -311,9 +139,14 @@ LinuxDumper::ElfFileIdentifierForMapping(const MappingInfo& mapping, return FileID::ElfFileIdentifierFromMappedFile(linux_gate, identifier); } - char filename[PATH_MAX]; - if (!GetMappingAbsolutePath(mapping, filename)) + char filename[NAME_MAX]; + size_t filename_len = my_strlen(mapping.name); + if (filename_len >= NAME_MAX) { + assert(false); return false; + } + my_memcpy(filename, mapping.name, filename_len); + filename[filename_len] = '\0'; bool filename_modified = HandleDeletedFileInMapping(filename); MemoryMappedFile mapped_file(filename, mapping.offset); @@ -323,19 +156,13 @@ LinuxDumper::ElfFileIdentifierForMapping(const MappingInfo& mapping, bool success = FileID::ElfFileIdentifierFromMappedFile(mapped_file.data(), identifier); if (success && member && filename_modified) { - mappings_[mapping_id]->name[my_strlen(mapping.name) - + mappings_[mapping_id]->name[filename_len - sizeof(kDeletedSuffix) + 1] = '\0'; } return success; } -bool LinuxDumper::GetMappingAbsolutePath(const MappingInfo& mapping, - char path[PATH_MAX]) const { - return my_strlcpy(path, root_prefix_, PATH_MAX) < PATH_MAX && - my_strlcat(path, mapping.name, PATH_MAX) < PATH_MAX; -} - namespace { bool ElfFileSoNameFromMappedFile( const void* elf_base, char* soname, size_t soname_size) { @@ -385,16 +212,23 @@ bool ElfFileSoNameFromMappedFile( // for |mapping|. If the SONAME is found copy it into the passed buffer // |soname| and return true. The size of the buffer is |soname_size|. // The SONAME will be truncated if it is too long to fit in the buffer. -bool ElfFileSoName(const LinuxDumper& dumper, +bool ElfFileSoName( const MappingInfo& mapping, char* soname, size_t soname_size) { if (IsMappedFileOpenUnsafe(mapping)) { // Not safe return false; } - char filename[PATH_MAX]; - if (!dumper.GetMappingAbsolutePath(mapping, filename)) + char filename[NAME_MAX]; + size_t filename_len = my_strlen(mapping.name); + if (filename_len >= NAME_MAX) { + assert(false); + // name too long return false; + } + + my_memcpy(filename, mapping.name, filename_len); + filename[filename_len] = '\0'; MemoryMappedFile mapped_file(filename, mapping.offset); if (!mapped_file.data() || mapped_file.size() < SELFMAG) { @@ -408,6 +242,7 @@ bool ElfFileSoName(const LinuxDumper& dumper, } // namespace +// static void LinuxDumper::GetMappingEffectiveNameAndPath(const MappingInfo& mapping, char* file_path, size_t file_path_size, @@ -420,10 +255,8 @@ void LinuxDumper::GetMappingEffectiveNameAndPath(const MappingInfo& mapping, // apk on Android). We try to find the name of the shared object (SONAME) by // looking in the file for ELF sections. bool mapped_from_archive = false; - if (mapping.exec && mapping.offset != 0) { - mapped_from_archive = - ElfFileSoName(*this, mapping, file_name, file_name_size); - } + if (mapping.exec && mapping.offset != 0) + mapped_from_archive = ElfFileSoName(mapping, file_name, file_name_size); if (mapped_from_archive) { // Some tools (e.g., stackwalk) extract the basename from the pathname. In @@ -521,8 +354,24 @@ bool LinuxDumper::EnumerateMappings() { MappingInfo* module = mappings_.back(); if ((start_addr == module->start_addr + module->size) && (my_strlen(name) == my_strlen(module->name)) && - (my_strncmp(name, module->name, my_strlen(name)) == 0) && - (exec == module->exec)) { + (my_strncmp(name, module->name, my_strlen(name)) == 0)) { + module->size = end_addr - module->start_addr; + line_reader->PopLine(line_len); + continue; + } + } + // Also merge mappings that result from address ranges that the + // linker reserved but which a loaded library did not use. These + // appear as an anonymous private mapping with no access flags set + // and which directly follow an executable mapping. + if (!name && !mappings_.empty()) { + MappingInfo* module = mappings_.back(); + if ((start_addr == module->start_addr + module->size) && + module->exec && + module->name[0] == '/' && + offset == 0 && my_strncmp(i2, + kReservedFlags, + sizeof(kReservedFlags) - 1) == 0) { module->size = end_addr - module->start_addr; line_reader->PopLine(line_len); continue; @@ -731,13 +580,10 @@ bool LinuxDumper::HandleDeletedFileInMapping(char* path) const { // Check |path| against the /proc/pid/exe 'symlink'. char exe_link[NAME_MAX]; + char new_path[NAME_MAX]; if (!BuildProcPath(exe_link, pid_, "exe")) return false; - MappingInfo new_mapping = {0}; - if (!SafeReadLink(exe_link, new_mapping.name)) - return false; - char new_path[PATH_MAX]; - if (!GetMappingAbsolutePath(new_mapping, new_path)) + if (!SafeReadLink(exe_link, new_path)) return false; if (my_strcmp(path, new_path) != 0) return false; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h index c3c799267c40..6a3a100f3237 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_dumper.h @@ -49,7 +49,6 @@ #include "client/linux/dump_writer_common/mapping_info.h" #include "client/linux/dump_writer_common/thread_info.h" -#include "common/linux/file_id.h" #include "common/memory.h" #include "google_breakpad/common/minidump_format.h" @@ -73,9 +72,7 @@ const char kLinuxGateLibraryName[] = "linux-gate.so"; class LinuxDumper { public: - // The |root_prefix| is prepended to mapping paths before opening them, which - // is useful if the crash originates from a chroot. - explicit LinuxDumper(pid_t pid, const char* root_prefix = ""); + explicit LinuxDumper(pid_t pid); virtual ~LinuxDumper(); @@ -130,7 +127,7 @@ class LinuxDumper { bool ElfFileIdentifierForMapping(const MappingInfo& mapping, bool member, unsigned int mapping_id, - wasteful_vector& identifier); + uint8_t identifier[sizeof(MDGUID)]); uintptr_t crash_address() const { return crash_address_; } void set_crash_address(uintptr_t crash_address) { @@ -143,21 +140,16 @@ class LinuxDumper { pid_t crash_thread() const { return crash_thread_; } void set_crash_thread(pid_t crash_thread) { crash_thread_ = crash_thread; } - // Concatenates the |root_prefix_| and |mapping| path. Writes into |path| and - // returns true unless the string is too long. - bool GetMappingAbsolutePath(const MappingInfo& mapping, - char path[PATH_MAX]) const; - // Extracts the effective path and file name of from |mapping|. In most cases // the effective name/path are just the mapping's path and basename. In some // other cases, however, a library can be mapped from an archive (e.g., when // loading .so libs from an apk on Android) and this method is able to // reconstruct the original file name. - void GetMappingEffectiveNameAndPath(const MappingInfo& mapping, - char* file_path, - size_t file_path_size, - char* file_name, - size_t file_name_size); + static void GetMappingEffectiveNameAndPath(const MappingInfo& mapping, + char* file_path, + size_t file_path_size, + char* file_name, + size_t file_name_size); protected: bool ReadAuxv(); @@ -180,9 +172,6 @@ class LinuxDumper { // ID of the crashed process. const pid_t pid_; - // Path of the root directory to which mapping paths are relative. - const char* const root_prefix_; - // Virtual address at which the process crashed. uintptr_t crash_address_; diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc index be533e157d8b..838ea5f6bacd 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc @@ -66,7 +66,6 @@ using namespace google_breakpad; namespace { -typedef wasteful_vector id_vector; typedef testing::Test LinuxPtraceDumperTest; /* Fixture for running tests in a child process. */ @@ -106,17 +105,11 @@ class LinuxPtraceDumperChildTest : public testing::Test { * This is achieved by defining a TestBody macro further below. */ virtual void RealTestBody() = 0; - - id_vector make_vector() { - return id_vector(&allocator, kDefaultBuildIdSize); - } - private: static const int kFatalFailure = 1; static const int kNonFatalFailure = 2; pid_t child_pid_; - PageAllocator allocator; }; } // namespace @@ -317,15 +310,14 @@ TEST_F(LinuxPtraceDumperChildTest, LinuxGateMappingID) { // Need to suspend the child so ptrace actually works. ASSERT_TRUE(dumper.ThreadsSuspend()); - id_vector identifier(make_vector()); + uint8_t identifier[sizeof(MDGUID)]; ASSERT_TRUE(dumper.ElfFileIdentifierForMapping(*mappings[index], true, index, identifier)); - - id_vector empty_identifier(make_vector()); - empty_identifier.resize(kDefaultBuildIdSize, 0); - EXPECT_NE(empty_identifier, identifier); + uint8_t empty_identifier[sizeof(MDGUID)]; + memset(empty_identifier, 0, sizeof(empty_identifier)); + EXPECT_NE(0, memcmp(empty_identifier, identifier, sizeof(identifier))); EXPECT_TRUE(dumper.ThreadsResume()); } #endif @@ -351,18 +343,19 @@ TEST_F(LinuxPtraceDumperChildTest, FileIDsMatch) { } ASSERT_TRUE(found_exe); - id_vector identifier1(make_vector()); - id_vector identifier2(make_vector()); + uint8_t identifier1[sizeof(MDGUID)]; + uint8_t identifier2[sizeof(MDGUID)]; EXPECT_TRUE(dumper.ElfFileIdentifierForMapping(*mappings[i], true, i, identifier1)); FileID fileid(exe_name); EXPECT_TRUE(fileid.ElfFileIdentifier(identifier2)); - - string identifier_string1 = - FileID::ConvertIdentifierToUUIDString(identifier1); - string identifier_string2 = - FileID::ConvertIdentifierToUUIDString(identifier2); - EXPECT_EQ(identifier_string1, identifier_string2); + char identifier_string1[37]; + char identifier_string2[37]; + FileID::ConvertIdentifierToString(identifier1, identifier_string1, + 37); + FileID::ConvertIdentifierToString(identifier2, identifier_string2, + 37); + EXPECT_STREQ(identifier_string1, identifier_string2); } /* Get back to normal behavior of TEST*() macros wrt TestBody. */ diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc index a5cdbd5e6345..8413662ea499 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc @@ -73,7 +73,6 @@ #include "client/linux/minidump_writer/linux_ptrace_dumper.h" #include "client/linux/minidump_writer/proc_cpuinfo_reader.h" #include "client/minidump_file_writer.h" -#include "common/linux/file_id.h" #include "common/linux/linux_libc_support.h" #include "common/minidump_type_helper.h" #include "google_breakpad/common/minidump_format.h" @@ -82,10 +81,8 @@ namespace { using google_breakpad::AppMemoryList; -using google_breakpad::auto_wasteful_vector; using google_breakpad::ExceptionHandler; using google_breakpad::CpuSet; -using google_breakpad::kDefaultBuildIdSize; using google_breakpad::LineReader; using google_breakpad::LinuxDumper; using google_breakpad::LinuxPtraceDumper; @@ -274,14 +271,6 @@ class MinidumpWriter { if (max_stack_len >= 0 && stack_len > static_cast(max_stack_len)) { stack_len = max_stack_len; - // Skip empty chunks of length max_stack_len. - uintptr_t int_stack = reinterpret_cast(stack); - if (max_stack_len > 0) { - while (int_stack + max_stack_len < stack_pointer) { - int_stack += max_stack_len; - } - } - stack = reinterpret_cast(int_stack); } if (!memory.Allocate(stack_len)) return false; @@ -526,7 +515,7 @@ class MinidumpWriter { continue; MDRawModule mod; - if (!FillRawModule(mapping, true, i, &mod, NULL)) + if (!FillRawModule(mapping, true, i, mod, NULL)) return false; list.CopyIndexAfterObject(j++, &mod, MD_MODULE_SIZE); } @@ -535,7 +524,7 @@ class MinidumpWriter { iter != mapping_list_.end(); ++iter) { MDRawModule mod; - if (!FillRawModule(iter->first, false, 0, &mod, iter->second)) + if (!FillRawModule(iter->first, false, 0, mod, iter->second)) return false; list.CopyIndexAfterObject(j++, &mod, MD_MODULE_SIZE); } @@ -549,51 +538,52 @@ class MinidumpWriter { bool FillRawModule(const MappingInfo& mapping, bool member, unsigned int mapping_id, - MDRawModule* mod, + MDRawModule& mod, const uint8_t* identifier) { - my_memset(mod, 0, MD_MODULE_SIZE); + my_memset(&mod, 0, MD_MODULE_SIZE); - mod->base_of_image = mapping.start_addr; - mod->size_of_image = mapping.size; + mod.base_of_image = mapping.start_addr; + mod.size_of_image = mapping.size; - auto_wasteful_vector identifier_bytes( - dumper_->allocator()); + uint8_t cv_buf[MDCVInfoPDB70_minsize + NAME_MAX]; + uint8_t* cv_ptr = cv_buf; + const uint32_t cv_signature = MD_CVINFOPDB70_SIGNATURE; + my_memcpy(cv_ptr, &cv_signature, sizeof(cv_signature)); + cv_ptr += sizeof(cv_signature); + uint8_t* signature = cv_ptr; + cv_ptr += sizeof(MDGUID); if (identifier) { // GUID was provided by caller. - identifier_bytes.insert(identifier_bytes.end(), - identifier, - identifier + sizeof(MDGUID)); + my_memcpy(signature, identifier, sizeof(MDGUID)); } else { // Note: ElfFileIdentifierForMapping() can manipulate the |mapping.name|. - dumper_->ElfFileIdentifierForMapping(mapping, - member, - mapping_id, - identifier_bytes); - } - - if (!identifier_bytes.empty()) { - UntypedMDRVA cv(&minidump_writer_); - if (!cv.Allocate(MDCVInfoELF_minsize + identifier_bytes.size())) - return false; - - const uint32_t cv_signature = MD_CVINFOELF_SIGNATURE; - cv.Copy(&cv_signature, sizeof(cv_signature)); - cv.Copy(cv.position() + sizeof(cv_signature), &identifier_bytes[0], - identifier_bytes.size()); - - mod->cv_record = cv.location(); + dumper_->ElfFileIdentifierForMapping(mapping, member, + mapping_id, signature); } + my_memset(cv_ptr, 0, sizeof(uint32_t)); // Set age to 0 on Linux. + cv_ptr += sizeof(uint32_t); char file_name[NAME_MAX]; char file_path[NAME_MAX]; - dumper_->GetMappingEffectiveNameAndPath( + LinuxDumper::GetMappingEffectiveNameAndPath( mapping, file_path, sizeof(file_path), file_name, sizeof(file_name)); + const size_t file_name_len = my_strlen(file_name); + UntypedMDRVA cv(&minidump_writer_); + if (!cv.Allocate(MDCVInfoPDB70_minsize + file_name_len + 1)) + return false; + + // Write pdb_file_name + my_memcpy(cv_ptr, file_name, file_name_len + 1); + cv.Copy(cv_buf, MDCVInfoPDB70_minsize + file_name_len + 1); + + mod.cv_record = cv.location(); + MDLocationDescriptor ld; if (!minidump_writer_.WriteString(file_path, my_strlen(file_path), &ld)) return false; - mod->module_name_rva = ld.rva; + mod.module_name_rva = ld.rva; return true; } @@ -700,14 +690,17 @@ class MinidumpWriter { } #ifdef __mips__ - const int32_t debug_tag = DT_MIPS_RLD_MAP; -#else - const int32_t debug_tag = DT_DEBUG; -#endif - if (dyn.d_tag == debug_tag) { + if (dyn.d_tag == DT_MIPS_RLD_MAP) { r_debug = reinterpret_cast(dyn.d_un.d_ptr); continue; - } else if (dyn.d_tag == DT_NULL) { + } +#else + if (dyn.d_tag == DT_DEBUG) { + r_debug = reinterpret_cast(dyn.d_un.d_ptr); + continue; + } +#endif + else if (dyn.d_tag == DT_NULL) { break; } } @@ -833,13 +826,7 @@ class MinidumpWriter { // processor_architecture should always be set, do this first sys_info->processor_architecture = #if defined(__mips__) -# if _MIPS_SIM == _ABIO32 MD_CPU_ARCHITECTURE_MIPS; -# elif _MIPS_SIM == _ABI64 - MD_CPU_ARCHITECTURE_MIPS64; -# else -# error "This mips ABI is currently not supported (n32)" -#endif #elif defined(__i386__) MD_CPU_ARCHITECTURE_X86; #else @@ -855,14 +842,15 @@ class MinidumpWriter { ProcCpuInfoReader* const reader = new(allocator) ProcCpuInfoReader(fd); const char* field; while (reader->GetNextField(&field)) { - bool is_first_entry = true; - for (CpuInfoEntry& entry : cpu_info_table) { - if (!is_first_entry && entry.found) { + for (size_t i = 0; + i < sizeof(cpu_info_table) / sizeof(cpu_info_table[0]); + i++) { + CpuInfoEntry* entry = &cpu_info_table[i]; + if (i > 0 && entry->found) { // except for the 'processor' field, ignore repeated values. continue; } - is_first_entry = false; - if (!my_strcmp(field, entry.info_name)) { + if (!my_strcmp(field, entry->info_name)) { size_t value_len; const char* value = reader->GetValueAndLen(&value_len); if (value_len == 0) @@ -872,8 +860,8 @@ class MinidumpWriter { if (my_read_decimal_ptr(&val, value) == value) continue; - entry.value = static_cast(val); - entry.found = true; + entry->value = static_cast(val); + entry->found = true; } } @@ -889,8 +877,10 @@ class MinidumpWriter { } // make sure we got everything we wanted - for (const CpuInfoEntry& entry : cpu_info_table) { - if (!entry.found) { + for (size_t i = 0; + i < sizeof(cpu_info_table) / sizeof(cpu_info_table[0]); + i++) { + if (!cpu_info_table[i].found) { return false; } } @@ -1026,15 +1016,18 @@ class MinidumpWriter { new(allocator) ProcCpuInfoReader(fd); const char* field; while (reader->GetNextField(&field)) { - for (const CpuIdEntry& entry : cpu_id_entries) { - if (my_strcmp(entry.field, field) != 0) + for (size_t i = 0; + i < sizeof(cpu_id_entries)/sizeof(cpu_id_entries[0]); + ++i) { + const CpuIdEntry* entry = &cpu_id_entries[i]; + if (my_strcmp(entry->field, field) != 0) continue; uintptr_t result = 0; const char* value = reader->GetValue(); const char* p = value; if (value[0] == '0' && value[1] == 'x') { p = my_read_hex_ptr(&result, value+2); - } else if (entry.format == 'x') { + } else if (entry->format == 'x') { p = my_read_hex_ptr(&result, value); } else { p = my_read_decimal_ptr(&result, value); @@ -1042,8 +1035,8 @@ class MinidumpWriter { if (p == value) continue; - result &= (1U << entry.bit_length)-1; - result <<= entry.bit_lshift; + result &= (1U << entry->bit_length)-1; + result <<= entry->bit_lshift; sys_info->cpu.arm_cpu_info.cpuid |= static_cast(result); } @@ -1097,7 +1090,7 @@ class MinidumpWriter { const char* tag = value; size_t tag_len = value_len; const char* p = my_strchr(tag, ' '); - if (p) { + if (p != NULL) { tag_len = static_cast(p - tag); value += tag_len + 1; value_len -= tag_len + 1; @@ -1105,10 +1098,14 @@ class MinidumpWriter { tag_len = strlen(tag); value_len = 0; } - for (const CpuFeaturesEntry& entry : cpu_features_entries) { - if (tag_len == strlen(entry.tag) && - !memcmp(tag, entry.tag, tag_len)) { - sys_info->cpu.arm_cpu_info.elf_hwcaps |= entry.hwcaps; + for (size_t i = 0; + i < sizeof(cpu_features_entries)/ + sizeof(cpu_features_entries[0]); + ++i) { + const CpuFeaturesEntry* entry = &cpu_features_entries[i]; + if (tag_len == strlen(entry->tag) && + !memcmp(tag, entry->tag, tag_len)) { + sys_info->cpu.arm_cpu_info.elf_hwcaps |= entry->hwcaps; break; } } diff --git a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc index 2e4749e7e954..e1046e12a0b2 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc @@ -54,6 +54,10 @@ using namespace google_breakpad; +// Length of a formatted GUID string = +// sizeof(MDGUID) * 2 + 4 (for dashes) + 1 (null terminator) +const int kGUIDStringSize = 37; + namespace { typedef testing::Test MinidumpWriterTest; @@ -133,7 +137,19 @@ TEST(MinidumpWriterTest, MappingInfo) { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; - const string module_identifier = "33221100554477668899AABBCCDDEEFF0"; + char module_identifier_buffer[kGUIDStringSize]; + FileID::ConvertIdentifierToString(kModuleGUID, + module_identifier_buffer, + sizeof(module_identifier_buffer)); + string module_identifier(module_identifier_buffer); + // Strip out dashes + size_t pos; + while ((pos = module_identifier.find('-')) != string::npos) { + module_identifier.erase(pos, 1); + } + // And append a zero, because module IDs include an "age" field + // which is always zero on Linux. + module_identifier += "0"; // Get some memory. char* memory = @@ -169,7 +185,6 @@ TEST(MinidumpWriterTest, MappingInfo) { info.start_addr = kMemoryAddress; info.size = memory_size; info.offset = 0; - info.exec = false; strcpy(info.name, kMemoryName); MappingList mappings; @@ -215,53 +230,6 @@ TEST(MinidumpWriterTest, MappingInfo) { close(fds[1]); } -// Test that a binary with a longer-than-usual build id note -// makes its way all the way through to the minidump unscathed. -// The linux_client_unittest is linked with an explicit --build-id -// in Makefile.am. -TEST(MinidumpWriterTest, BuildIDLong) { - int fds[2]; - ASSERT_NE(-1, pipe(fds)); - - const pid_t child = fork(); - if (child == 0) { - close(fds[1]); - char b; - IGNORE_RET(HANDLE_EINTR(read(fds[0], &b, sizeof(b)))); - close(fds[0]); - syscall(__NR_exit); - } - close(fds[0]); - - ExceptionHandler::CrashContext context; - memset(&context, 0, sizeof(context)); - ASSERT_EQ(0, getcontext(&context.context)); - context.tid = child; - - AutoTempDir temp_dir; - const string dump_path = temp_dir.path() + kMDWriterUnitTestFileName; - - EXPECT_TRUE(WriteMinidump(dump_path.c_str(), - child, &context, sizeof(context))); - close(fds[1]); - - // Read the minidump. Load the module list, and ensure that - // the main module has the correct debug id and code id. - Minidump minidump(dump_path); - ASSERT_TRUE(minidump.Read()); - - MinidumpModuleList* module_list = minidump.GetModuleList(); - ASSERT_TRUE(module_list); - const MinidumpModule* module = module_list->GetMainModule(); - ASSERT_TRUE(module); - const string module_identifier = "030201000504070608090A0B0C0D0E0F0"; - // This is passed explicitly to the linker in Makefile.am - const string build_id = - "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f"; - EXPECT_EQ(module_identifier, module->debug_identifier()); - EXPECT_EQ(build_id, module->code_identifier()); -} - // Test that mapping info can be specified, and that it overrides // existing mappings that are wholly contained within the specified // range. @@ -277,7 +245,19 @@ TEST(MinidumpWriterTest, MappingInfoContained) { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF }; - const string module_identifier = "33221100554477668899AABBCCDDEEFF0"; + char module_identifier_buffer[kGUIDStringSize]; + FileID::ConvertIdentifierToString(kModuleGUID, + module_identifier_buffer, + sizeof(module_identifier_buffer)); + string module_identifier(module_identifier_buffer); + // Strip out dashes + size_t pos; + while ((pos = module_identifier.find('-')) != string::npos) { + module_identifier.erase(pos, 1); + } + // And append a zero, because module IDs include an "age" field + // which is always zero on Linux. + module_identifier += "0"; // mmap a file AutoTempDir temp_dir; @@ -324,7 +304,6 @@ TEST(MinidumpWriterTest, MappingInfoContained) { info.start_addr = kMemoryAddress - memory_size; info.size = memory_size * 3; info.offset = 0; - info.exec = false; strcpy(info.name, kMemoryName); MappingList mappings; @@ -431,10 +410,12 @@ TEST(MinidumpWriterTest, DeletedBinary) { EXPECT_STREQ(binpath.c_str(), module->code_file().c_str()); // Check that the file ID is correct. FileID fileid(helper_path.c_str()); - PageAllocator allocator; - wasteful_vector identifier(&allocator, kDefaultBuildIdSize); + uint8_t identifier[sizeof(MDGUID)]; EXPECT_TRUE(fileid.ElfFileIdentifier(identifier)); - string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); + char identifier_string[kGUIDStringSize]; + FileID::ConvertIdentifierToString(identifier, + identifier_string, + kGUIDStringSize); string module_identifier(identifier_string); // Strip out dashes size_t pos; diff --git a/toolkit/crashreporter/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj b/toolkit/crashreporter/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj index 1a93ce6dd6e4..584ec5d229e2 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj +++ b/toolkit/crashreporter/google-breakpad/src/client/mac/Breakpad.xcodeproj/project.pbxproj @@ -583,6 +583,7 @@ 4DBE4769134A4F080072546A /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = System/Library/Frameworks/CoreServices.framework; sourceTree = SDKROOT; }; 8B31007011F0CD3C00FCF3E4 /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMDefines.h; path = ../../common/mac/GTMDefines.h; sourceTree = SOURCE_ROOT; }; 8B3101E911F0CDE300FCF3E4 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + 8B31022211F0CE1000FCF3E4 /* GTMGarbageCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GTMGarbageCollection.h; path = ../../common/mac/GTMGarbageCollection.h; sourceTree = SOURCE_ROOT; }; 8B31027711F0D3AF00FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; }; 8B31027811F0D3AF00FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; }; 8B31FFF611F0C90500FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; }; @@ -954,6 +955,7 @@ children = ( 162F64F0161C577500CD68D5 /* arch_utilities.cc */, 162F64F1161C577500CD68D5 /* arch_utilities.h */, + 8B31022211F0CE1000FCF3E4 /* GTMGarbageCollection.h */, 8B31007011F0CD3C00FCF3E4 /* GTMDefines.h */, F9C77E0F0F7DDF650045F7DB /* testing */, F9C44EE70EF0A3C1003AEBAA /* GTMLogger.h */, diff --git a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc index cdba6df4acfb..3dc4f3b463dc 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/dynamic_images.cc @@ -364,7 +364,7 @@ static uint64_t LookupSymbol(const char* symbol_name, return list.n_value; } -#if TARGET_OS_IPHONE || MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 +#if TARGET_OS_IPHONE static bool HasTaskDyldInfo() { return true; } @@ -381,9 +381,13 @@ static SInt32 GetOSVersion() { } static bool HasTaskDyldInfo() { +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6 + return true; +#else return GetOSVersion() >= 0x1060; +#endif } -#endif // TARGET_OS_IPHONE || MAC_OS_X_VERSION_MIN_REQUIRED >= 10_6 +#endif // TARGET_OS_IPHONE uint64_t DynamicImages::GetDyldAllImageInfosPointer() { if (HasTaskDyldInfo()) { diff --git a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc index 48cd2e99b666..38baa04e874f 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/mac/handler/minidump_generator.cc @@ -133,47 +133,25 @@ void MinidumpGenerator::GatherSystemInformation() { vers_path, kCFURLPOSIXPathStyle, false); - CFReadStreamRef read_stream = CFReadStreamCreateWithFile(NULL, sys_vers); - CFRelease(sys_vers); - if (!read_stream) { - return; - } - if (!CFReadStreamOpen(read_stream)) { - CFRelease(read_stream); - return; - } - CFMutableDataRef data = NULL; - while (true) { - // Actual data file tests: Mac at 480 bytes and iOS at 413 bytes. - const CFIndex kMaxBufferLength = 1024; - UInt8 data_bytes[kMaxBufferLength]; - CFIndex num_bytes_read = - CFReadStreamRead(read_stream, data_bytes, kMaxBufferLength); - if (num_bytes_read < 0) { - if (data) { - CFRelease(data); - data = NULL; - } - break; - } else if (num_bytes_read == 0) { - break; - } else if (!data) { - data = CFDataCreateMutable(NULL, 0); - } - CFDataAppendBytes(data, data_bytes, num_bytes_read); - } - CFReadStreamClose(read_stream); - CFRelease(read_stream); + CFDataRef data; + SInt32 error; + CFURLCreateDataAndPropertiesFromResource(NULL, sys_vers, &data, NULL, NULL, + &error); + if (!data) { + CFRelease(sys_vers); return; } - CFDictionaryRef list = - static_cast(CFPropertyListCreateWithData( - NULL, data, kCFPropertyListImmutable, NULL, NULL)); - CFRelease(data); + + CFDictionaryRef list = static_cast + (CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable, + NULL)); if (!list) { + CFRelease(sys_vers); + CFRelease(data); return; } + CFStringRef build_version = static_cast (CFDictionaryGetValue(list, CFSTR("ProductBuildVersion"))); CFStringRef product_version = static_cast @@ -182,6 +160,8 @@ void MinidumpGenerator::GatherSystemInformation() { string product_str = ConvertToString(product_version); CFRelease(list); + CFRelease(sys_vers); + CFRelease(data); strlcpy(build_string_, build_str.c_str(), sizeof(build_string_)); diff --git a/toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc b/toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc index a1957f324a9c..9e905335320a 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/minidump_file_writer.cc @@ -44,47 +44,6 @@ #include "third_party/lss/linux_syscall_support.h" #endif -#if defined(__ANDROID__) -#include - -namespace { - -bool g_need_ftruncate_workaround = false; -bool g_checked_need_ftruncate_workaround = false; - -void CheckNeedsFTruncateWorkAround(int file) { - if (g_checked_need_ftruncate_workaround) { - return; - } - g_checked_need_ftruncate_workaround = true; - - // Attempt an idempotent truncate that chops off nothing and see if we - // run into any sort of errors. - off_t offset = sys_lseek(file, 0, SEEK_END); - if (offset == -1) { - // lseek failed. Don't apply work around. It's unlikely that we can write - // to a minidump with either method. - return; - } - - int result = ftruncate(file, offset); - if (result == -1 && errno == EACCES) { - // It very likely that we are running into the kernel bug in M devices. - // We are going to deploy the workaround for writing minidump files - // without uses of ftruncate(). This workaround should be fine even - // for kernels without the bug. - // See http://crbug.com/542840 for more details. - g_need_ftruncate_workaround = true; - } -} - -bool NeedsFTruncateWorkAround() { - return g_need_ftruncate_workaround; -} - -} // namespace -#endif // defined(__ANDROID__) - namespace google_breakpad { const MDRVA MinidumpFileWriter::kInvalidMDRVA = static_cast(-1); @@ -116,24 +75,15 @@ void MinidumpFileWriter::SetFile(const int file) { assert(file_ == -1); file_ = file; close_file_when_destroyed_ = false; -#if defined(__ANDROID__) - CheckNeedsFTruncateWorkAround(file); -#endif } bool MinidumpFileWriter::Close() { bool result = true; if (file_ != -1) { -#if defined(__ANDROID__) - if (!NeedsFTruncateWorkAround() && ftruncate(file_, position_)) { + if (-1 == ftruncate(file_, position_)) { return false; } -#else - if (ftruncate(file_, position_)) { - return false; - } -#endif #if defined(__linux__) && __linux__ result = (sys_close(file_) == 0); #else @@ -270,20 +220,6 @@ bool MinidumpFileWriter::WriteMemory(const void *src, size_t size, MDRVA MinidumpFileWriter::Allocate(size_t size) { assert(size); assert(file_ != -1); -#if defined(__ANDROID__) - if (NeedsFTruncateWorkAround()) { - // If ftruncate() is not available. We simply increase the size beyond the - // current file size. sys_write() will expand the file when data is written - // to it. Because we did not over allocate to fit memory pages, we also - // do not need to ftruncate() the file once we are done. - size_ += size; - - // We don't need to seek since the file is unchanged. - MDRVA current_position = position_; - position_ += static_cast(size); - return current_position; - } -#endif size_t aligned_size = (size + 7) & ~7; // 64-bit alignment if (position_ + aligned_size > size_) { @@ -320,16 +256,14 @@ bool MinidumpFileWriter::Copy(MDRVA position, const void *src, ssize_t size) { #if defined(__linux__) && __linux__ if (sys_lseek(file_, position, SEEK_SET) == static_cast(position)) { if (sys_write(file_, src, size) == size) { - return true; - } - } #else if (lseek(file_, position, SEEK_SET) == static_cast(position)) { if (write(file_, src, size) == size) { +#endif return true; } } -#endif + return false; } diff --git a/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc b/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc index 1f7b19f9a661..ef581dd3a9ac 100644 --- a/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc +++ b/toolkit/crashreporter/google-breakpad/src/client/windows/handler/exception_handler.cc @@ -41,6 +41,12 @@ namespace google_breakpad { +static const int kWaitForHandlerThreadMs = 60000; +static const int kExceptionHandlerThreadInitialStackSize = 64 * 1024; + +// As documented on MSDN, on failure SuspendThread returns (DWORD) -1 +static const DWORD kFailedToSuspendThread = static_cast(-1); + // This is passed as the context to the MinidumpWriteDump callback. typedef struct { AppMemoryList::const_iterator iter; @@ -211,7 +217,6 @@ void ExceptionHandler::Initialize( // Don't attempt to create the thread if we could not create the semaphores. if (handler_finish_semaphore_ != NULL && handler_start_semaphore_ != NULL) { DWORD thread_id; - const int kExceptionHandlerThreadInitialStackSize = 64 * 1024; handler_thread_ = CreateThread(NULL, // lpThreadAttributes kExceptionHandlerThreadInitialStackSize, ExceptionHandlerThreadMain, @@ -348,7 +353,6 @@ ExceptionHandler::~ExceptionHandler() { // inside DllMain. is_shutdown_ = true; ReleaseSemaphore(handler_start_semaphore_, 1, NULL); - const int kWaitForHandlerThreadMs = 60000; WaitForSingleObject(handler_thread_, kWaitForHandlerThreadMs); #else TerminateThread(handler_thread_, 1); @@ -777,8 +781,6 @@ bool ExceptionHandler::WriteMinidumpForChild(HANDLE child, EXCEPTION_RECORD ex; CONTEXT ctx; EXCEPTION_POINTERS exinfo = { NULL, NULL }; - // As documented on MSDN, on failure SuspendThread returns (DWORD) -1 - const DWORD kFailedToSuspendThread = static_cast(-1); DWORD last_suspend_count = kFailedToSuspendThread; HANDLE child_thread_handle = OpenThread(THREAD_GET_CONTEXT | THREAD_QUERY_INFORMATION | diff --git a/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/procfs.h b/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/procfs.h index 185124364e6c..27223ea34a9a 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/procfs.h +++ b/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/procfs.h @@ -101,8 +101,8 @@ struct elf_prpsinfo { unsigned int pr_uid; unsigned int pr_gid; #elif defined(__mips__) - __kernel_uid_t pr_uid; - __kernel_gid_t pr_gid; + unsigned long pr_uid; + unsigned long pr_gid; #else unsigned short pr_uid; unsigned short pr_gid; diff --git a/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/user.h b/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/user.h index 1eb02a57d2cc..5f0360475dcf 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/user.h +++ b/toolkit/crashreporter/google-breakpad/src/common/android/include/sys/user.h @@ -34,20 +34,12 @@ // glibc) and therefore avoid doing otherwise awkward #ifdefs in the code. // The following quirks are currently handled by this file: // - i386: Use the Android NDK but alias user_fxsr_struct > user_fpxregs_struct. -// - aarch64: -// - NDK r10: Add missing user_regs_struct and user_fpsimd_struct structs. -// - NDK r11+: Add missing include +// - aarch64: Add missing user_regs_struct and user_fpsimd_struct structs. // - Other platforms: Just use the Android NDK unchanged. // TODO(primiano): remove these changes after Chromium has stably rolled to // an NDK with the appropriate fixes. -#if defined(ANDROID_NDK_MAJOR_VERSION) && ANDROID_NDK_MAJOR_VERSION > 10 -#ifdef __aarch64__ -#include -#endif // __aarch64__ -#endif // defined(ANDROID_NDK_MAJOR_VERSION) && ANDROID_NDK_MAJOR_VERSION > 10 - #include_next #ifdef __i386__ @@ -60,7 +52,6 @@ typedef struct user_fxsr_struct user_fpxregs_struct; #endif // __cplusplus #endif // __i386__ -#if !defined(ANDROID_NDK_MAJOR_VERSION) || ANDROID_NDK_MAJOR_VERSION == 10 #ifdef __aarch64__ #ifdef __cplusplus extern "C" { @@ -80,6 +71,5 @@ struct user_fpsimd_struct { } // extern "C" #endif // __cplusplus #endif // __aarch64__ -#endif // defined(ANDROID_NDK_VERSION) && ANDROID_NDK_MAJOR_VERSION == 10 #endif // GOOGLE_BREAKPAD_COMMON_ANDROID_INCLUDE_SYS_USER_H diff --git a/toolkit/crashreporter/google-breakpad/src/common/common.gyp b/toolkit/crashreporter/google-breakpad/src/common/common.gyp index 08772bf7561a..5a666de61f03 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/common.gyp +++ b/toolkit/crashreporter/google-breakpad/src/common/common.gyp @@ -35,11 +35,6 @@ ['OS=="linux"', { 'defines': ['HAVE_A_OUT_H'], }], - ['OS!="android"', {'sources/': [['exclude', '(^|/)android/']]}], - ['OS!="linux"', {'sources/': [['exclude', '(^|/)linux/']]}], - ['OS!="mac"', {'sources/': [['exclude', '(^|/)mac/']]}], - ['OS!="solaris"', {'sources/': [['exclude', '(^|/)solaris/']]}], - ['OS!="win"', {'sources/': [['exclude', '(^|/)windows/']]}], ], }, 'targets': [ @@ -75,8 +70,6 @@ 'dwarf/dwarf2reader.cc', 'dwarf/dwarf2reader.h', 'dwarf/dwarf2reader_test_common.h', - 'dwarf/elf_reader.cc', - 'dwarf/elf_reader.h', 'dwarf/functioninfo.cc', 'dwarf/functioninfo.h', 'dwarf/line_state_machine.h', diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader-inl.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader-inl.h index 42c92f943f40..3c167089f721 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader-inl.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader-inl.h @@ -32,15 +32,16 @@ #include "common/dwarf/bytereader.h" #include -#include namespace dwarf2reader { -inline uint8 ByteReader::ReadOneByte(const uint8_t *buffer) const { +inline uint8 ByteReader::ReadOneByte(const char* buffer) const { return buffer[0]; } -inline uint16 ByteReader::ReadTwoBytes(const uint8_t *buffer) const { +inline uint16 ByteReader::ReadTwoBytes(const char* signed_buffer) const { + const unsigned char *buffer + = reinterpret_cast(signed_buffer); const uint16 buffer0 = buffer[0]; const uint16 buffer1 = buffer[1]; if (endian_ == ENDIANNESS_LITTLE) { @@ -50,7 +51,9 @@ inline uint16 ByteReader::ReadTwoBytes(const uint8_t *buffer) const { } } -inline uint64 ByteReader::ReadFourBytes(const uint8_t *buffer) const { +inline uint64 ByteReader::ReadFourBytes(const char* signed_buffer) const { + const unsigned char *buffer + = reinterpret_cast(signed_buffer); const uint32 buffer0 = buffer[0]; const uint32 buffer1 = buffer[1]; const uint32 buffer2 = buffer[2]; @@ -62,7 +65,9 @@ inline uint64 ByteReader::ReadFourBytes(const uint8_t *buffer) const { } } -inline uint64 ByteReader::ReadEightBytes(const uint8_t *buffer) const { +inline uint64 ByteReader::ReadEightBytes(const char* signed_buffer) const { + const unsigned char *buffer + = reinterpret_cast(signed_buffer); const uint64 buffer0 = buffer[0]; const uint64 buffer1 = buffer[1]; const uint64 buffer2 = buffer[2]; @@ -84,12 +89,12 @@ inline uint64 ByteReader::ReadEightBytes(const uint8_t *buffer) const { // information, plus one bit saying whether the number continues or // not. -inline uint64 ByteReader::ReadUnsignedLEB128(const uint8_t *buffer, +inline uint64 ByteReader::ReadUnsignedLEB128(const char* buffer, size_t* len) const { uint64 result = 0; size_t num_read = 0; unsigned int shift = 0; - uint8_t byte; + unsigned char byte; do { byte = *buffer++; @@ -109,12 +114,12 @@ inline uint64 ByteReader::ReadUnsignedLEB128(const uint8_t *buffer, // Read a signed LEB128 number. These are like regular LEB128 // numbers, except the last byte may have a sign bit set. -inline int64 ByteReader::ReadSignedLEB128(const uint8_t *buffer, +inline int64 ByteReader::ReadSignedLEB128(const char* buffer, size_t* len) const { int64 result = 0; unsigned int shift = 0; size_t num_read = 0; - uint8_t byte; + unsigned char byte; do { byte = *buffer++; @@ -129,18 +134,18 @@ inline int64 ByteReader::ReadSignedLEB128(const uint8_t *buffer, return result; } -inline uint64 ByteReader::ReadOffset(const uint8_t *buffer) const { +inline uint64 ByteReader::ReadOffset(const char* buffer) const { assert(this->offset_reader_); return (this->*offset_reader_)(buffer); } -inline uint64 ByteReader::ReadAddress(const uint8_t *buffer) const { +inline uint64 ByteReader::ReadAddress(const char* buffer) const { assert(this->address_reader_); return (this->*address_reader_)(buffer); } inline void ByteReader::SetCFIDataBase(uint64 section_base, - const uint8_t *buffer_base) { + const char *buffer_base) { section_base_ = section_base; buffer_base_ = buffer_base; have_section_base_ = true; diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.cc index 14b43adb8f7f..6802026449bd 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.cc @@ -27,7 +27,6 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -#include #include #include "common/dwarf/bytereader-inl.h" @@ -63,7 +62,7 @@ void ByteReader::SetAddressSize(uint8 size) { } } -uint64 ByteReader::ReadInitialLength(const uint8_t *start, size_t* len) { +uint64 ByteReader::ReadInitialLength(const char* start, size_t* len) { const uint64 initial_length = ReadFourBytes(start); start += 4; @@ -101,7 +100,7 @@ bool ByteReader::UsableEncoding(DwarfPointerEncoding encoding) const { } } -uint64 ByteReader::ReadEncodedPointer(const uint8_t *buffer, +uint64 ByteReader::ReadEncodedPointer(const char *buffer, DwarfPointerEncoding encoding, size_t *len) const { // UsableEncoding doesn't approve of DW_EH_PE_omit, so we shouldn't @@ -130,7 +129,7 @@ uint64 ByteReader::ReadEncodedPointer(const uint8_t *buffer, // Round up to the next boundary. uint64 aligned = (offset + AddressSize() - 1) & -AddressSize(); // Convert back to a pointer. - const uint8_t *aligned_buffer = buffer_base_ + (aligned - skew); + const char *aligned_buffer = buffer_base_ + (aligned - skew); // Finally, store the length and actually fetch the pointer. *len = aligned_buffer - buffer + AddressSize(); return ReadAddress(aligned_buffer); @@ -243,8 +242,4 @@ uint64 ByteReader::ReadEncodedPointer(const uint8_t *buffer, return pointer; } -Endianness ByteReader::GetEndianness() const { - return endian_; -} - } // namespace dwarf2reader diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.h index 59d430348079..e3894273f1d4 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader.h @@ -31,10 +31,7 @@ #ifndef COMMON_DWARF_BYTEREADER_H__ #define COMMON_DWARF_BYTEREADER_H__ -#include - #include - #include "common/dwarf/types.h" #include "common/dwarf/dwarf2enums.h" @@ -62,22 +59,22 @@ class ByteReader { // Read a single byte from BUFFER and return it as an unsigned 8 bit // number. - uint8 ReadOneByte(const uint8_t *buffer) const; + uint8 ReadOneByte(const char* buffer) const; // Read two bytes from BUFFER and return them as an unsigned 16 bit // number, using this ByteReader's endianness. - uint16 ReadTwoBytes(const uint8_t *buffer) const; + uint16 ReadTwoBytes(const char* buffer) const; // Read four bytes from BUFFER and return them as an unsigned 32 bit // number, using this ByteReader's endianness. This function returns // a uint64 so that it is compatible with ReadAddress and // ReadOffset. The number it returns will never be outside the range // of an unsigned 32 bit integer. - uint64 ReadFourBytes(const uint8_t *buffer) const; + uint64 ReadFourBytes(const char* buffer) const; // Read eight bytes from BUFFER and return them as an unsigned 64 // bit number, using this ByteReader's endianness. - uint64 ReadEightBytes(const uint8_t *buffer) const; + uint64 ReadEightBytes(const char* buffer) const; // Read an unsigned LEB128 (Little Endian Base 128) number from // BUFFER and return it as an unsigned 64 bit integer. Set LEN to @@ -96,7 +93,7 @@ class ByteReader { // In other words, we break VALUE into groups of seven bits, put // them in little-endian order, and then write them as eight-bit // bytes with the high bit on all but the last. - uint64 ReadUnsignedLEB128(const uint8_t *buffer, size_t *len) const; + uint64 ReadUnsignedLEB128(const char* buffer, size_t* len) const; // Read a signed LEB128 number from BUFFER and return it as an // signed 64 bit integer. Set LEN to the number of bytes read. @@ -115,7 +112,7 @@ class ByteReader { // In other words, we break VALUE into groups of seven bits, put // them in little-endian order, and then write them as eight-bit // bytes with the high bit on all but the last. - int64 ReadSignedLEB128(const uint8_t *buffer, size_t *len) const; + int64 ReadSignedLEB128(const char* buffer, size_t* len) const; // Indicate that addresses on this architecture are SIZE bytes long. SIZE // must be either 4 or 8. (DWARF allows addresses to be any number of @@ -138,7 +135,7 @@ class ByteReader { // Read an address from BUFFER and return it as an unsigned 64 bit // integer, respecting this ByteReader's endianness and address size. You // must call SetAddressSize before calling this function. - uint64 ReadAddress(const uint8_t *buffer) const; + uint64 ReadAddress(const char* buffer) const; // DWARF actually defines two slightly different formats: 32-bit DWARF // and 64-bit DWARF. This is *not* related to the size of registers or @@ -175,14 +172,14 @@ class ByteReader { // - The 32-bit value 0xffffffff, followed by a 64-bit byte count, // indicating that the data whose length is being measured uses // the 64-bit DWARF format. - uint64 ReadInitialLength(const uint8_t *start, size_t *len); + uint64 ReadInitialLength(const char* start, size_t* len); // Read an offset from BUFFER and return it as an unsigned 64 bit // integer, respecting the ByteReader's endianness. In 32-bit DWARF, the // offset is 4 bytes long; in 64-bit DWARF, the offset is eight bytes // long. You must call ReadInitialLength or SetOffsetSize before calling // this function; see the comments above for details. - uint64 ReadOffset(const uint8_t *buffer) const; + uint64 ReadOffset(const char* buffer) const; // Return the current offset size, in bytes. // A return value of 4 indicates that we are reading 32-bit DWARF. @@ -237,7 +234,7 @@ class ByteReader { // is BUFFER_BASE. This allows us to find the address that a given // byte in our buffer would have when loaded into the program the // data describes. We need this to resolve DW_EH_PE_pcrel pointers. - void SetCFIDataBase(uint64 section_base, const uint8_t *buffer_base); + void SetCFIDataBase(uint64 section_base, const char *buffer_base); // Indicate that the base address of the program's ".text" section // is TEXT_BASE. We need this to resolve DW_EH_PE_textrel pointers. @@ -276,15 +273,13 @@ class ByteReader { // base address this reader hasn't been given, so you should check // with ValidEncoding and UsableEncoding first if you would rather // die in a more helpful way. - uint64 ReadEncodedPointer(const uint8_t *buffer, - DwarfPointerEncoding encoding, + uint64 ReadEncodedPointer(const char *buffer, DwarfPointerEncoding encoding, size_t *len) const; - Endianness GetEndianness() const; private: // Function pointer type for our address and offset readers. - typedef uint64 (ByteReader::*AddressReader)(const uint8_t *) const; + typedef uint64 (ByteReader::*AddressReader)(const char*) const; // Read an offset from BUFFER and return it as an unsigned 64 bit // integer. DWARF2/3 define offsets as either 4 or 8 bytes, @@ -307,7 +302,7 @@ class ByteReader { bool have_section_base_, have_text_base_, have_data_base_; bool have_function_base_; uint64 section_base_, text_base_, data_base_, function_base_; - const uint8_t *buffer_base_; + const char *buffer_base_; }; } // namespace dwarf2reader diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader_unittest.cc index e66062d1fe48..4311ab6a2539 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/bytereader_unittest.cc @@ -31,8 +31,6 @@ // bytereader_unittest.cc: Unit tests for dwarf2reader::ByteReader -#include - #include #include "breakpad_googletest_includes.h" @@ -73,7 +71,7 @@ TEST_F(Reader, SimpleConstructor) { .LEB128(-0x4f337badf4483f83LL) .D32(0xfec319c9); ASSERT_TRUE(section.GetContents(&contents)); - const uint8_t *data = reinterpret_cast(contents.data()); + const char *data = contents.data(); EXPECT_EQ(0xc0U, reader.ReadOneByte(data)); EXPECT_EQ(0xcf0dU, reader.ReadTwoBytes(data + 1)); EXPECT_EQ(0x96fdd219U, reader.ReadFourBytes(data + 3)); @@ -377,7 +375,7 @@ TEST_F(Reader, ValidEncodings) { } TEST_F(ReaderDeathTest, DW_EH_PE_omit) { - static const uint8_t data[] = { 42 }; + static const char data[1] = { 42 }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); EXPECT_DEATH(reader.ReadEncodedPointer(data, dwarf2reader::DW_EH_PE_omit, @@ -386,7 +384,7 @@ TEST_F(ReaderDeathTest, DW_EH_PE_omit) { } TEST_F(Reader, DW_EH_PE_absptr4) { - static const uint8_t data[] = { 0x27, 0x57, 0xea, 0x40 }; + static const char data[] = { 0x27, 0x57, 0xea, 0x40 }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(4); EXPECT_EQ(0x40ea5727U, @@ -396,7 +394,7 @@ TEST_F(Reader, DW_EH_PE_absptr4) { } TEST_F(Reader, DW_EH_PE_absptr8) { - static const uint8_t data[] = { + static const char data[] = { 0x60, 0x27, 0x57, 0xea, 0x40, 0xc2, 0x98, 0x05, 0x01, 0x50 }; ByteReader reader(ENDIANNESS_LITTLE); @@ -408,7 +406,7 @@ TEST_F(Reader, DW_EH_PE_absptr8) { } TEST_F(Reader, DW_EH_PE_uleb128) { - static const uint8_t data[] = { 0x81, 0x84, 0x4c }; + static const char data[] = { 0x81, 0x84, 0x4c }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(4); EXPECT_EQ(0x130201U, @@ -418,7 +416,7 @@ TEST_F(Reader, DW_EH_PE_uleb128) { } TEST_F(Reader, DW_EH_PE_udata2) { - static const uint8_t data[] = { 0xf4, 0x8d }; + static const char data[] = { 0xf4, 0x8d }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); EXPECT_EQ(0xf48dU, @@ -428,7 +426,7 @@ TEST_F(Reader, DW_EH_PE_udata2) { } TEST_F(Reader, DW_EH_PE_udata4) { - static const uint8_t data[] = { 0xb2, 0x68, 0xa5, 0x62, 0x8f, 0x8b }; + static const char data[] = { 0xb2, 0x68, 0xa5, 0x62, 0x8f, 0x8b }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(8); EXPECT_EQ(0xa5628f8b, @@ -438,7 +436,7 @@ TEST_F(Reader, DW_EH_PE_udata4) { } TEST_F(Reader, DW_EH_PE_udata8Addr8) { - static const uint8_t data[] = { + static const char data[] = { 0x27, 0x04, 0x73, 0x04, 0x69, 0x9f, 0x19, 0xed, 0x8f, 0xfe }; ByteReader reader(ENDIANNESS_LITTLE); @@ -450,7 +448,7 @@ TEST_F(Reader, DW_EH_PE_udata8Addr8) { } TEST_F(Reader, DW_EH_PE_udata8Addr4) { - static const uint8_t data[] = { + static const char data[] = { 0x27, 0x04, 0x73, 0x04, 0x69, 0x9f, 0x19, 0xed, 0x8f, 0xfe }; ByteReader reader(ENDIANNESS_LITTLE); @@ -462,7 +460,7 @@ TEST_F(Reader, DW_EH_PE_udata8Addr4) { } TEST_F(Reader, DW_EH_PE_sleb128) { - static const uint8_t data[] = { 0x42, 0xff, 0xfb, 0x73 }; + static const char data[] = { 0x42, 0xff, 0xfb, 0x73 }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); EXPECT_EQ(-0x030201U & 0xffffffff, @@ -472,7 +470,7 @@ TEST_F(Reader, DW_EH_PE_sleb128) { } TEST_F(Reader, DW_EH_PE_sdata2) { - static const uint8_t data[] = { 0xb9, 0xbf }; + static const char data[] = { 0xb9, 0xbf }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(8); EXPECT_EQ(0xffffffffffffbfb9ULL, @@ -482,7 +480,7 @@ TEST_F(Reader, DW_EH_PE_sdata2) { } TEST_F(Reader, DW_EH_PE_sdata4) { - static const uint8_t data[] = { 0xa0, 0xca, 0xf2, 0xb8, 0xc2, 0xad }; + static const char data[] = { 0xa0, 0xca, 0xf2, 0xb8, 0xc2, 0xad }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(8); EXPECT_EQ(0xffffffffadc2b8f2ULL, @@ -492,7 +490,7 @@ TEST_F(Reader, DW_EH_PE_sdata4) { } TEST_F(Reader, DW_EH_PE_sdata8) { - static const uint8_t data[] = { + static const char data[] = { 0xf6, 0x66, 0x57, 0x79, 0xe0, 0x0c, 0x9b, 0x26, 0x87 }; ByteReader reader(ENDIANNESS_LITTLE); @@ -504,9 +502,7 @@ TEST_F(Reader, DW_EH_PE_sdata8) { } TEST_F(Reader, DW_EH_PE_pcrel) { - static const uint8_t data[] = { - 0x4a, 0x8b, 0x1b, 0x14, 0xc8, 0xc4, 0x02, 0xce - }; + static const char data[] = { 0x4a, 0x8b, 0x1b, 0x14, 0xc8, 0xc4, 0x02, 0xce }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); DwarfPointerEncoding encoding = @@ -519,9 +515,7 @@ TEST_F(Reader, DW_EH_PE_pcrel) { } TEST_F(Reader, DW_EH_PE_textrel) { - static const uint8_t data[] = { - 0xd9, 0x0d, 0x05, 0x17, 0xc9, 0x7a, 0x42, 0x1e - }; + static const char data[] = { 0xd9, 0x0d, 0x05, 0x17, 0xc9, 0x7a, 0x42, 0x1e }; ByteReader reader(ENDIANNESS_LITTLE); reader.SetAddressSize(4); reader.SetTextBase(0xb91beaf0); @@ -534,9 +528,7 @@ TEST_F(Reader, DW_EH_PE_textrel) { } TEST_F(Reader, DW_EH_PE_datarel) { - static const uint8_t data[] = { - 0x16, 0xf2, 0xbb, 0x82, 0x68, 0xa7, 0xbc, 0x39 - }; + static const char data[] = { 0x16, 0xf2, 0xbb, 0x82, 0x68, 0xa7, 0xbc, 0x39 }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(8); reader.SetDataBase(0xbef308bd25ce74f0ULL); @@ -549,9 +541,7 @@ TEST_F(Reader, DW_EH_PE_datarel) { } TEST_F(Reader, DW_EH_PE_funcrel) { - static const uint8_t data[] = { - 0x84, 0xf8, 0x14, 0x01, 0x61, 0xd1, 0x48, 0xc9 - }; + static const char data[] = { 0x84, 0xf8, 0x14, 0x01, 0x61, 0xd1, 0x48, 0xc9 }; ByteReader reader(ENDIANNESS_BIG); reader.SetAddressSize(4); reader.SetFunctionBase(0x823c3520); @@ -564,7 +554,7 @@ TEST_F(Reader, DW_EH_PE_funcrel) { } TEST(UsableBase, CFI) { - static const uint8_t data[] = { 0x42 }; + static const char data[1] = { 0x42 }; ByteReader reader(ENDIANNESS_BIG); reader.SetCFIDataBase(0xb31cbd20, data); EXPECT_TRUE(reader.UsableEncoding(dwarf2reader::DW_EH_PE_absptr)); @@ -627,12 +617,12 @@ TEST(UsableBase, ClearFunction) { struct AlignedFixture { AlignedFixture() : reader(ENDIANNESS_BIG) { reader.SetAddressSize(4); } - static const uint8_t data[10]; + static const char data[10]; ByteReader reader; size_t pointer_size; }; -const uint8_t AlignedFixture::data[10] = { +const char AlignedFixture::data[10] = { 0xfe, 0x6e, 0x93, 0xd8, 0x34, 0xd5, 0x1c, 0xd3, 0xac, 0x2b }; diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.cc index 94542b5ea9e8..20c15fa9d102 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.cc @@ -32,7 +32,6 @@ // See dwarf2diehandler.h for details. #include -#include #include @@ -168,7 +167,7 @@ void DIEDispatcher::ProcessAttributeReference(uint64 offset, void DIEDispatcher::ProcessAttributeBuffer(uint64 offset, enum DwarfAttribute attr, enum DwarfForm form, - const uint8_t *data, + const char* data, uint64 len) { HandlerStack ¤t = die_handlers_.top(); // This had better be an attribute of the DIE we were meant to handle. diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.h index a1e589a863e0..81f40f072f14 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler.h @@ -156,8 +156,6 @@ #ifndef COMMON_DWARF_DWARF2DIEHANDLER_H__ #define COMMON_DWARF_DWARF2DIEHANDLER_H__ -#include - #include #include @@ -208,7 +206,7 @@ class DIEHandler { uint64 data) { } virtual void ProcessAttributeBuffer(enum DwarfAttribute attr, enum DwarfForm form, - const uint8_t *data, + const char* data, uint64 len) { } virtual void ProcessAttributeString(enum DwarfAttribute attr, enum DwarfForm form, @@ -311,7 +309,7 @@ class DIEDispatcher: public Dwarf2Handler { void ProcessAttributeBuffer(uint64 offset, enum DwarfAttribute attr, enum DwarfForm form, - const uint8_t *data, + const char* data, uint64 len); void ProcessAttributeString(uint64 offset, enum DwarfAttribute attr, diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc index db70eb31b9e3..c0a532aa0162 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2diehandler_unittest.cc @@ -32,8 +32,6 @@ // dwarf2diehander_unittest.cc: Unit tests for google_breakpad::DIEDispatcher. -#include - #include #include @@ -69,7 +67,7 @@ class MockDIEHandler: public DIEHandler { MOCK_METHOD3(ProcessAttributeReference, void(DwarfAttribute, DwarfForm, uint64)); MOCK_METHOD4(ProcessAttributeBuffer, - void(DwarfAttribute, DwarfForm, const uint8_t *, uint64)); + void(DwarfAttribute, DwarfForm, const char *, uint64)); MOCK_METHOD3(ProcessAttributeString, void(DwarfAttribute, DwarfForm, const string &)); MOCK_METHOD3(ProcessAttributeSignature, @@ -88,7 +86,7 @@ class MockRootDIEHandler: public RootDIEHandler { MOCK_METHOD3(ProcessAttributeReference, void(DwarfAttribute, DwarfForm, uint64)); MOCK_METHOD4(ProcessAttributeBuffer, - void(DwarfAttribute, DwarfForm, const uint8_t *, uint64)); + void(DwarfAttribute, DwarfForm, const char *, uint64)); MOCK_METHOD3(ProcessAttributeString, void(DwarfAttribute, DwarfForm, const string &)); MOCK_METHOD3(ProcessAttributeSignature, @@ -187,9 +185,8 @@ TEST(Dwarf2DIEHandler, PassAttributeValues) { MockRootDIEHandler mock_root_handler; DIEDispatcher die_dispatcher(&mock_root_handler); - const uint8_t buffer[10] = { - 0x24, 0x24, 0x35, 0x9a, 0xca, 0xcf, 0xa8, 0x84, 0xa7, 0x18 - }; + const char buffer[10] = { 0x24, 0x24, 0x35, 0x9a, 0xca, + 0xcf, 0xa8, 0x84, 0xa7, 0x18 }; string str = "\xc8\x26\x2e\x0d\xa4\x9c\x37\xd6\xfb\x1d"; // Set expectations. diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2enums.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2enums.h index 6b8a724591cd..5565d66e12d8 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2enums.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2enums.h @@ -149,10 +149,7 @@ enum DwarfForm { DW_FORM_sec_offset = 0x17, DW_FORM_exprloc = 0x18, DW_FORM_flag_present = 0x19, - DW_FORM_ref_sig8 = 0x20, - // Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. - DW_FORM_GNU_addr_index = 0x1f01, - DW_FORM_GNU_str_index = 0x1f02 + DW_FORM_ref_sig8 = 0x20 }; // Attribute names and codes @@ -267,13 +264,6 @@ enum DwarfAttribute { DW_AT_body_begin = 0x2105, DW_AT_body_end = 0x2106, DW_AT_GNU_vector = 0x2107, - // Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. - DW_AT_GNU_dwo_name = 0x2130, - DW_AT_GNU_dwo_id = 0x2131, - DW_AT_GNU_ranges_base = 0x2132, - DW_AT_GNU_addr_base = 0x2133, - DW_AT_GNU_pubnames = 0x2134, - DW_AT_GNU_pubtypes = 0x2135, // VMS extensions. DW_AT_VMS_rtnbeg_pd_address = 0x2201, // UPC extension. @@ -501,22 +491,7 @@ enum DwarfOpcode { DW_OP_lo_user =0xe0, DW_OP_hi_user =0xff, // GNU extensions - DW_OP_GNU_push_tls_address =0xe0, - // Extensions for Fission. See http://gcc.gnu.org/wiki/DebugFission. - DW_OP_GNU_addr_index =0xfb, - DW_OP_GNU_const_index =0xfc -}; - -// Section identifiers for DWP files -enum DwarfSectionId { - DW_SECT_INFO = 1, - DW_SECT_TYPES = 2, - DW_SECT_ABBREV = 3, - DW_SECT_LINE = 4, - DW_SECT_LOC = 5, - DW_SECT_STR_OFFSETS = 6, - DW_SECT_MACINFO = 7, - DW_SECT_MACRO = 8 + DW_OP_GNU_push_tls_address =0xe0 }; // Source languages. These are values for DW_AT_language. diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc index a65b43c8a3c0..f2f3d5810e14 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.cc @@ -44,8 +44,6 @@ #include #include -#include - #include "common/dwarf/bytereader-inl.h" #include "common/dwarf/bytereader.h" #include "common/dwarf/line_state_machine.h" @@ -53,38 +51,11 @@ namespace dwarf2reader { -CompilationUnit::CompilationUnit(const string& path, - const SectionMap& sections, uint64 offset, +CompilationUnit::CompilationUnit(const SectionMap& sections, uint64 offset, ByteReader* reader, Dwarf2Handler* handler) - : path_(path), offset_from_section_start_(offset), reader_(reader), - sections_(sections), handler_(handler), abbrevs_(), - string_buffer_(NULL), string_buffer_length_(0), - str_offsets_buffer_(NULL), str_offsets_buffer_length_(0), - addr_buffer_(NULL), addr_buffer_length_(0), - is_split_dwarf_(false), dwo_id_(0), dwo_name_(), - skeleton_dwo_id_(0), ranges_base_(0), addr_base_(0), - have_checked_for_dwp_(false), dwp_path_(), - dwp_byte_reader_(), dwp_reader_() {} - -// Initialize a compilation unit from a .dwo or .dwp file. -// In this case, we need the .debug_addr section from the -// executable file that contains the corresponding skeleton -// compilation unit. We also inherit the Dwarf2Handler from -// the executable file, and call it as if we were still -// processing the original compilation unit. - -void CompilationUnit::SetSplitDwarf(const uint8_t* addr_buffer, - uint64 addr_buffer_length, - uint64 addr_base, - uint64 ranges_base, - uint64 dwo_id) { - is_split_dwarf_ = true; - addr_buffer_ = addr_buffer; - addr_buffer_length_ = addr_buffer_length; - addr_base_ = addr_base; - ranges_base_ = ranges_base; - skeleton_dwo_id_ = dwo_id; -} + : offset_from_section_start_(offset), reader_(reader), + sections_(sections), handler_(handler), abbrevs_(NULL), + string_buffer_(NULL), string_buffer_length_(0) {} // Read a DWARF2/3 abbreviation section. // Each abbrev consists of a abbreviation number, a tag, a byte @@ -112,9 +83,9 @@ void CompilationUnit::ReadAbbrevs() { // The only way to check whether we are reading over the end of the // buffer would be to first compute the size of the leb128 data by // reading it, then go back and read it again. - const uint8_t *abbrev_start = iter->second.first + + const char* abbrev_start = iter->second.first + header_.abbrev_offset; - const uint8_t *abbrevptr = abbrev_start; + const char* abbrevptr = abbrev_start; #ifndef NDEBUG const uint64 abbrev_length = iter->second.second - header_.abbrev_offset; #endif @@ -161,8 +132,8 @@ void CompilationUnit::ReadAbbrevs() { } // Skips a single DIE's attributes. -const uint8_t *CompilationUnit::SkipDIE(const uint8_t* start, - const Abbrev& abbrev) { +const char* CompilationUnit::SkipDIE(const char* start, + const Abbrev& abbrev) { for (AttributeList::const_iterator i = abbrev.attributes.begin(); i != abbrev.attributes.end(); i++) { @@ -172,8 +143,8 @@ const uint8_t *CompilationUnit::SkipDIE(const uint8_t* start, } // Skips a single attribute form's data. -const uint8_t *CompilationUnit::SkipAttribute(const uint8_t *start, - enum DwarfForm form) { +const char* CompilationUnit::SkipAttribute(const char* start, + enum DwarfForm form) { size_t len; switch (form) { @@ -200,11 +171,9 @@ const uint8_t *CompilationUnit::SkipAttribute(const uint8_t *start, case DW_FORM_ref_sig8: return start + 8; case DW_FORM_string: - return start + strlen(reinterpret_cast(start)) + 1; + return start + strlen(start) + 1; case DW_FORM_udata: case DW_FORM_ref_udata: - case DW_FORM_GNU_str_index: - case DW_FORM_GNU_addr_index: reader_->ReadUnsignedLEB128(start, &len); return start + len; @@ -249,7 +218,7 @@ const uint8_t *CompilationUnit::SkipAttribute(const uint8_t *start, // the offset in the .debug_abbrev section for our abbrevs, and an // address size. void CompilationUnit::ReadHeader() { - const uint8_t *headerptr = buffer_; + const char* headerptr = buffer_; size_t initial_length_size; assert(headerptr + 4 < buffer_ + buffer_length_); @@ -266,9 +235,7 @@ void CompilationUnit::ReadHeader() { header_.abbrev_offset = reader_->ReadOffset(headerptr); headerptr += reader_->OffsetSize(); - // Compare against less than or equal because this may be the last - // section in the file. - assert(headerptr + 1 <= buffer_ + buffer_length_); + assert(headerptr + 1 < buffer_ + buffer_length_); header_.address_size = reader_->ReadOneByte(headerptr); reader_->SetAddressSize(header_.address_size); headerptr += 1; @@ -329,39 +296,17 @@ uint64 CompilationUnit::Start() { string_buffer_length_ = iter->second.second; } - // Set the string offsets section if we have one. - iter = sections_.find(".debug_str_offsets"); - if (iter != sections_.end()) { - str_offsets_buffer_ = iter->second.first; - str_offsets_buffer_length_ = iter->second.second; - } - - // Set the address section if we have one. - iter = sections_.find(".debug_addr"); - if (iter != sections_.end()) { - addr_buffer_ = iter->second.first; - addr_buffer_length_ = iter->second.second; - } - // Now that we have our abbreviations, start processing DIE's. ProcessDIEs(); - // If this is a skeleton compilation unit generated with split DWARF, - // and the client needs the full debug info, we need to find the full - // compilation unit in a .dwo or .dwp file. - if (!is_split_dwarf_ - && dwo_name_ != NULL - && handler_->NeedSplitDebugInfo()) - ProcessSplitDwarf(); - return ourlength; } // If one really wanted, you could merge SkipAttribute and // ProcessAttribute // This is all boring data manipulation and calling of the handler. -const uint8_t *CompilationUnit::ProcessAttribute( - uint64 dieoffset, const uint8_t *start, enum DwarfAttribute attr, +const char* CompilationUnit::ProcessAttribute( + uint64 dieoffset, const char* start, enum DwarfAttribute attr, enum DwarfForm form) { size_t len; @@ -375,46 +320,48 @@ const uint8_t *CompilationUnit::ProcessAttribute( return ProcessAttribute(dieoffset, start, attr, form); case DW_FORM_flag_present: - ProcessAttributeUnsigned(dieoffset, attr, form, 1); + handler_->ProcessAttributeUnsigned(dieoffset, attr, form, 1); return start; case DW_FORM_data1: case DW_FORM_flag: - ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadOneByte(start)); + handler_->ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadOneByte(start)); return start + 1; case DW_FORM_data2: - ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadTwoBytes(start)); + handler_->ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadTwoBytes(start)); return start + 2; case DW_FORM_data4: - ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadFourBytes(start)); + handler_->ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadFourBytes(start)); return start + 4; case DW_FORM_data8: - ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadEightBytes(start)); + handler_->ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadEightBytes(start)); return start + 8; case DW_FORM_string: { - const char *str = reinterpret_cast(start); - ProcessAttributeString(dieoffset, attr, form, str); + const char* str = start; + handler_->ProcessAttributeString(dieoffset, attr, form, + str); return start + strlen(str) + 1; } case DW_FORM_udata: - ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadUnsignedLEB128(start, &len)); + handler_->ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadUnsignedLEB128(start, + &len)); return start + len; case DW_FORM_sdata: - ProcessAttributeSigned(dieoffset, attr, form, - reader_->ReadSignedLEB128(start, &len)); + handler_->ProcessAttributeSigned(dieoffset, attr, form, + reader_->ReadSignedLEB128(start, &len)); return start + len; case DW_FORM_addr: - ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadAddress(start)); + handler_->ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadAddress(start)); return start + reader_->AddressSize(); case DW_FORM_sec_offset: - ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadOffset(start)); + handler_->ProcessAttributeUnsigned(dieoffset, attr, form, + reader_->ReadOffset(start)); return start + reader_->OffsetSize(); case DW_FORM_ref1: @@ -493,66 +440,34 @@ const uint8_t *CompilationUnit::ProcessAttribute( const uint64 offset = reader_->ReadOffset(start); assert(string_buffer_ + offset < string_buffer_ + string_buffer_length_); - const char *str = reinterpret_cast(string_buffer_ + offset); - ProcessAttributeString(dieoffset, attr, form, str); + const char* str = string_buffer_ + offset; + handler_->ProcessAttributeString(dieoffset, attr, form, + str); return start + reader_->OffsetSize(); } - - case DW_FORM_GNU_str_index: { - uint64 str_index = reader_->ReadUnsignedLEB128(start, &len); - const uint8_t* offset_ptr = - str_offsets_buffer_ + str_index * reader_->OffsetSize(); - const uint64 offset = reader_->ReadOffset(offset_ptr); - if (offset >= string_buffer_length_) { - return NULL; - } - - const char* str = reinterpret_cast(string_buffer_) + offset; - ProcessAttributeString(dieoffset, attr, form, str); - return start + len; - break; - } - case DW_FORM_GNU_addr_index: { - uint64 addr_index = reader_->ReadUnsignedLEB128(start, &len); - const uint8_t* addr_ptr = - addr_buffer_ + addr_base_ + addr_index * reader_->AddressSize(); - ProcessAttributeUnsigned(dieoffset, attr, form, - reader_->ReadAddress(addr_ptr)); - return start + len; - } } fprintf(stderr, "Unhandled form type\n"); return NULL; } -const uint8_t *CompilationUnit::ProcessDIE(uint64 dieoffset, - const uint8_t *start, - const Abbrev& abbrev) { +const char* CompilationUnit::ProcessDIE(uint64 dieoffset, + const char* start, + const Abbrev& abbrev) { for (AttributeList::const_iterator i = abbrev.attributes.begin(); i != abbrev.attributes.end(); i++) { start = ProcessAttribute(dieoffset, start, i->first, i->second); } - - // If this is a compilation unit in a split DWARF object, verify that - // the dwo_id matches. If it does not match, we will ignore this - // compilation unit. - if (abbrev.tag == DW_TAG_compile_unit - && is_split_dwarf_ - && dwo_id_ != skeleton_dwo_id_) { - return NULL; - } - return start; } void CompilationUnit::ProcessDIEs() { - const uint8_t *dieptr = after_header_; + const char* dieptr = after_header_; size_t len; // lengthstart is the place the length field is based on. // It is the point in the header after the initial length field - const uint8_t *lengthstart = buffer_; + const char* lengthstart = buffer_; // In 64 bit dwarf, the initial length is 12 bytes, because of the // 0xffffffff at the start. @@ -600,313 +515,10 @@ void CompilationUnit::ProcessDIEs() { } } -// Check for a valid ELF file and return the Address size. -// Returns 0 if not a valid ELF file. -inline int GetElfWidth(const ElfReader& elf) { - if (elf.IsElf32File()) - return 4; - if (elf.IsElf64File()) - return 8; - return 0; -} - -void CompilationUnit::ProcessSplitDwarf() { - struct stat statbuf; - if (!have_checked_for_dwp_) { - // Look for a .dwp file in the same directory as the executable. - have_checked_for_dwp_ = true; - string dwp_suffix(".dwp"); - dwp_path_ = path_ + dwp_suffix; - if (stat(dwp_path_.c_str(), &statbuf) != 0) { - // Fall back to a split .debug file in the same directory. - string debug_suffix(".debug"); - dwp_path_ = path_; - size_t found = path_.rfind(debug_suffix); - if (found + debug_suffix.length() == path_.length()) - dwp_path_ = dwp_path_.replace(found, debug_suffix.length(), dwp_suffix); - } - if (stat(dwp_path_.c_str(), &statbuf) == 0) { - ElfReader* elf = new ElfReader(dwp_path_); - int width = GetElfWidth(*elf); - if (width != 0) { - dwp_byte_reader_.reset(new ByteReader(reader_->GetEndianness())); - dwp_byte_reader_->SetAddressSize(width); - dwp_reader_.reset(new DwpReader(*dwp_byte_reader_, elf)); - dwp_reader_->Initialize(); - } else { - delete elf; - } - } - } - bool found_in_dwp = false; - if (dwp_reader_) { - // If we have a .dwp file, read the debug sections for the requested CU. - SectionMap sections; - dwp_reader_->ReadDebugSectionsForCU(dwo_id_, §ions); - if (!sections.empty()) { - found_in_dwp = true; - CompilationUnit dwp_comp_unit(dwp_path_, sections, 0, - dwp_byte_reader_.get(), handler_); - dwp_comp_unit.SetSplitDwarf(addr_buffer_, addr_buffer_length_, addr_base_, - ranges_base_, dwo_id_); - dwp_comp_unit.Start(); - } - } - if (!found_in_dwp) { - // If no .dwp file, try to open the .dwo file. - if (stat(dwo_name_, &statbuf) == 0) { - ElfReader elf(dwo_name_); - int width = GetElfWidth(elf); - if (width != 0) { - ByteReader reader(ENDIANNESS_LITTLE); - reader.SetAddressSize(width); - SectionMap sections; - ReadDebugSectionsFromDwo(&elf, §ions); - CompilationUnit dwo_comp_unit(dwo_name_, sections, 0, &reader, - handler_); - dwo_comp_unit.SetSplitDwarf(addr_buffer_, addr_buffer_length_, - addr_base_, ranges_base_, dwo_id_); - dwo_comp_unit.Start(); - } - } - } -} - -void CompilationUnit::ReadDebugSectionsFromDwo(ElfReader* elf_reader, - SectionMap* sections) { - static const char* const section_names[] = { - ".debug_abbrev", - ".debug_info", - ".debug_str_offsets", - ".debug_str" - }; - for (unsigned int i = 0u; - i < sizeof(section_names)/sizeof(*(section_names)); ++i) { - string base_name = section_names[i]; - string dwo_name = base_name + ".dwo"; - size_t section_size; - const char* section_data = elf_reader->GetSectionByName(dwo_name, - §ion_size); - if (section_data != NULL) - sections->insert(std::make_pair( - base_name, std::make_pair( - reinterpret_cast(section_data), - section_size))); - } -} - -DwpReader::DwpReader(const ByteReader& byte_reader, ElfReader* elf_reader) - : elf_reader_(elf_reader), byte_reader_(byte_reader), - cu_index_(NULL), cu_index_size_(0), string_buffer_(NULL), - string_buffer_size_(0), version_(0), ncolumns_(0), nunits_(0), - nslots_(0), phash_(NULL), pindex_(NULL), shndx_pool_(NULL), - offset_table_(NULL), size_table_(NULL), abbrev_data_(NULL), - abbrev_size_(0), info_data_(NULL), info_size_(0), - str_offsets_data_(NULL), str_offsets_size_(0) {} - -DwpReader::~DwpReader() { - if (elf_reader_) delete elf_reader_; -} - -void DwpReader::Initialize() { - cu_index_ = elf_reader_->GetSectionByName(".debug_cu_index", - &cu_index_size_); - if (cu_index_ == NULL) { - return; - } - // The .debug_str.dwo section is shared by all CUs in the file. - string_buffer_ = elf_reader_->GetSectionByName(".debug_str.dwo", - &string_buffer_size_); - - version_ = byte_reader_.ReadFourBytes( - reinterpret_cast(cu_index_)); - - if (version_ == 1) { - nslots_ = byte_reader_.ReadFourBytes( - reinterpret_cast(cu_index_) - + 3 * sizeof(uint32)); - phash_ = cu_index_ + 4 * sizeof(uint32); - pindex_ = phash_ + nslots_ * sizeof(uint64); - shndx_pool_ = pindex_ + nslots_ * sizeof(uint32); - if (shndx_pool_ >= cu_index_ + cu_index_size_) { - version_ = 0; - } - } else if (version_ == 2) { - ncolumns_ = byte_reader_.ReadFourBytes( - reinterpret_cast(cu_index_) + sizeof(uint32)); - nunits_ = byte_reader_.ReadFourBytes( - reinterpret_cast(cu_index_) + 2 * sizeof(uint32)); - nslots_ = byte_reader_.ReadFourBytes( - reinterpret_cast(cu_index_) + 3 * sizeof(uint32)); - phash_ = cu_index_ + 4 * sizeof(uint32); - pindex_ = phash_ + nslots_ * sizeof(uint64); - offset_table_ = pindex_ + nslots_ * sizeof(uint32); - size_table_ = offset_table_ + ncolumns_ * (nunits_ + 1) * sizeof(uint32); - abbrev_data_ = elf_reader_->GetSectionByName(".debug_abbrev.dwo", - &abbrev_size_); - info_data_ = elf_reader_->GetSectionByName(".debug_info.dwo", &info_size_); - str_offsets_data_ = elf_reader_->GetSectionByName(".debug_str_offsets.dwo", - &str_offsets_size_); - if (size_table_ >= cu_index_ + cu_index_size_) { - version_ = 0; - } - } -} - -void DwpReader::ReadDebugSectionsForCU(uint64 dwo_id, - SectionMap* sections) { - if (version_ == 1) { - int slot = LookupCU(dwo_id); - if (slot == -1) { - return; - } - - // The index table points to the section index pool, where we - // can read a list of section indexes for the debug sections - // for the CU whose dwo_id we are looking for. - int index = byte_reader_.ReadFourBytes( - reinterpret_cast(pindex_) - + slot * sizeof(uint32)); - const char* shndx_list = shndx_pool_ + index * sizeof(uint32); - for (;;) { - if (shndx_list >= cu_index_ + cu_index_size_) { - version_ = 0; - return; - } - unsigned int shndx = byte_reader_.ReadFourBytes( - reinterpret_cast(shndx_list)); - shndx_list += sizeof(uint32); - if (shndx == 0) - break; - const char* section_name = elf_reader_->GetSectionName(shndx); - size_t section_size; - const char* section_data; - // We're only interested in these four debug sections. - // The section names in the .dwo file end with ".dwo", but we - // add them to the sections table with their normal names. - if (!strncmp(section_name, ".debug_abbrev", strlen(".debug_abbrev"))) { - section_data = elf_reader_->GetSectionByIndex(shndx, §ion_size); - sections->insert(std::make_pair( - ".debug_abbrev", - std::make_pair(reinterpret_cast (section_data), - section_size))); - } else if (!strncmp(section_name, ".debug_info", strlen(".debug_info"))) { - section_data = elf_reader_->GetSectionByIndex(shndx, §ion_size); - sections->insert(std::make_pair( - ".debug_info", - std::make_pair(reinterpret_cast (section_data), - section_size))); - } else if (!strncmp(section_name, ".debug_str_offsets", - strlen(".debug_str_offsets"))) { - section_data = elf_reader_->GetSectionByIndex(shndx, §ion_size); - sections->insert(std::make_pair( - ".debug_str_offsets", - std::make_pair(reinterpret_cast (section_data), - section_size))); - } - } - sections->insert(std::make_pair( - ".debug_str", - std::make_pair(reinterpret_cast (string_buffer_), - string_buffer_size_))); - } else if (version_ == 2) { - uint32 index = LookupCUv2(dwo_id); - if (index == 0) { - return; - } - - // The index points to a row in each of the section offsets table - // and the section size table, where we can read the offsets and sizes - // of the contributions to each debug section from the CU whose dwo_id - // we are looking for. Row 0 of the section offsets table has the - // section ids for each column of the table. The size table begins - // with row 1. - const char* id_row = offset_table_; - const char* offset_row = offset_table_ - + index * ncolumns_ * sizeof(uint32); - const char* size_row = - size_table_ + (index - 1) * ncolumns_ * sizeof(uint32); - if (size_row + ncolumns_ * sizeof(uint32) > cu_index_ + cu_index_size_) { - version_ = 0; - return; - } - for (unsigned int col = 0u; col < ncolumns_; ++col) { - uint32 section_id = - byte_reader_.ReadFourBytes(reinterpret_cast(id_row) - + col * sizeof(uint32)); - uint32 offset = byte_reader_.ReadFourBytes( - reinterpret_cast(offset_row) - + col * sizeof(uint32)); - uint32 size = byte_reader_.ReadFourBytes( - reinterpret_cast(size_row) + col * sizeof(uint32)); - if (section_id == DW_SECT_ABBREV) { - sections->insert(std::make_pair( - ".debug_abbrev", - std::make_pair(reinterpret_cast (abbrev_data_) - + offset, size))); - } else if (section_id == DW_SECT_INFO) { - sections->insert(std::make_pair( - ".debug_info", - std::make_pair(reinterpret_cast (info_data_) - + offset, size))); - } else if (section_id == DW_SECT_STR_OFFSETS) { - sections->insert(std::make_pair( - ".debug_str_offsets", - std::make_pair(reinterpret_cast (str_offsets_data_) - + offset, size))); - } - } - sections->insert(std::make_pair( - ".debug_str", - std::make_pair(reinterpret_cast (string_buffer_), - string_buffer_size_))); - } -} - -int DwpReader::LookupCU(uint64 dwo_id) { - uint32 slot = static_cast(dwo_id) & (nslots_ - 1); - uint64 probe = byte_reader_.ReadEightBytes( - reinterpret_cast(phash_) + slot * sizeof(uint64)); - if (probe != 0 && probe != dwo_id) { - uint32 secondary_hash = - (static_cast(dwo_id >> 32) & (nslots_ - 1)) | 1; - do { - slot = (slot + secondary_hash) & (nslots_ - 1); - probe = byte_reader_.ReadEightBytes( - reinterpret_cast(phash_) + slot * sizeof(uint64)); - } while (probe != 0 && probe != dwo_id); - } - if (probe == 0) - return -1; - return slot; -} - -uint32 DwpReader::LookupCUv2(uint64 dwo_id) { - uint32 slot = static_cast(dwo_id) & (nslots_ - 1); - uint64 probe = byte_reader_.ReadEightBytes( - reinterpret_cast(phash_) + slot * sizeof(uint64)); - uint32 index = byte_reader_.ReadFourBytes( - reinterpret_cast(pindex_) + slot * sizeof(uint32)); - if (index != 0 && probe != dwo_id) { - uint32 secondary_hash = - (static_cast(dwo_id >> 32) & (nslots_ - 1)) | 1; - do { - slot = (slot + secondary_hash) & (nslots_ - 1); - probe = byte_reader_.ReadEightBytes( - reinterpret_cast(phash_) + slot * sizeof(uint64)); - index = byte_reader_.ReadFourBytes( - reinterpret_cast(pindex_) + slot * sizeof(uint32)); - } while (index != 0 && probe != dwo_id); - } - return index; -} - -LineInfo::LineInfo(const uint8_t *buffer, uint64 buffer_length, +LineInfo::LineInfo(const char* buffer, uint64 buffer_length, ByteReader* reader, LineInfoHandler* handler): - handler_(handler), reader_(reader), buffer_(buffer) { -#ifndef NDEBUG - buffer_length_ = buffer_length; -#endif + handler_(handler), reader_(reader), buffer_(buffer), + buffer_length_(buffer_length) { header_.std_opcode_lengths = NULL; } @@ -919,7 +531,7 @@ uint64 LineInfo::Start() { // The header for a debug_line section is mildly complicated, because // the line info is very tightly encoded. void LineInfo::ReadHeader() { - const uint8_t *lineptr = buffer_; + const char* lineptr = buffer_; size_t initial_length_size; const uint64 initial_length @@ -966,7 +578,7 @@ void LineInfo::ReadHeader() { if (*lineptr) { uint32 dirindex = 1; while (*lineptr) { - const char *dirname = reinterpret_cast(lineptr); + const char* dirname = lineptr; handler_->DefineDir(dirname, dirindex); lineptr += strlen(dirname) + 1; dirindex++; @@ -979,7 +591,7 @@ void LineInfo::ReadHeader() { uint32 fileindex = 1; size_t len; while (*lineptr) { - const char *filename = reinterpret_cast(lineptr); + const char* filename = lineptr; lineptr += strlen(filename) + 1; uint64 dirindex = reader_->ReadUnsignedLEB128(lineptr, &len); @@ -1004,7 +616,7 @@ void LineInfo::ReadHeader() { bool LineInfo::ProcessOneOpcode(ByteReader* reader, LineInfoHandler* handler, const struct LineInfoHeader &header, - const uint8_t *start, + const char* start, struct LineStateMachine* lsm, size_t* len, uintptr pc, @@ -1145,7 +757,7 @@ bool LineInfo::ProcessOneOpcode(ByteReader* reader, } break; case DW_LNE_define_file: { - const char *filename = reinterpret_cast(start); + const char* filename = start; templen = strlen(filename) + 1; start += templen; @@ -1192,7 +804,7 @@ void LineInfo::ReadLines() { // lengthstart is the place the length field is based on. // It is the point in the header after the initial length field - const uint8_t *lengthstart = buffer_; + const char* lengthstart = buffer_; // In 64 bit dwarf, the initial length is 12 bytes, because of the // 0xffffffff at the start. @@ -1201,7 +813,7 @@ void LineInfo::ReadLines() { else lengthstart += 4; - const uint8_t *lineptr = after_header_; + const char* lineptr = after_header_; lsm.Reset(header_.default_is_stmt); // The LineInfoHandler interface expects each line's length along @@ -1700,7 +1312,7 @@ class CallFrameInfo::State { const Entry *entry_; // The next instruction to process. - const uint8_t *cursor_; + const char *cursor_; // The current set of rules. RuleMap rules_; @@ -1798,8 +1410,7 @@ bool CallFrameInfo::State::ParseOperands(const char *format, if (len > bytes_left || expression_length > bytes_left - len) return ReportIncomplete(); cursor_ += len; - operands->expression = string(reinterpret_cast(cursor_), - expression_length); + operands->expression = string(cursor_, expression_length); cursor_ += expression_length; break; } @@ -2152,8 +1763,8 @@ bool CallFrameInfo::State::DoRestore(unsigned reg) { return DoRule(reg, rule); } -bool CallFrameInfo::ReadEntryPrologue(const uint8_t *cursor, Entry *entry) { - const uint8_t *buffer_end = buffer_ + buffer_length_; +bool CallFrameInfo::ReadEntryPrologue(const char *cursor, Entry *entry) { + const char *buffer_end = buffer_ + buffer_length_; // Initialize enough of ENTRY for use in error reporting. entry->offset = cursor - buffer_; @@ -2231,7 +1842,7 @@ bool CallFrameInfo::ReadEntryPrologue(const uint8_t *cursor, Entry *entry) { } bool CallFrameInfo::ReadCIEFields(CIE *cie) { - const uint8_t *cursor = cie->fields; + const char *cursor = cie->fields; size_t len; assert(cie->kind == kCIE); @@ -2262,14 +1873,13 @@ bool CallFrameInfo::ReadCIEFields(CIE *cie) { return false; } - const uint8_t *augmentation_start = cursor; - const uint8_t *augmentation_end = - reinterpret_cast(memchr(augmentation_start, '\0', - cie->end - augmentation_start)); + const char *augmentation_start = cursor; + const void *augmentation_end = + memchr(augmentation_start, '\0', cie->end - augmentation_start); if (! augmentation_end) return ReportIncomplete(cie); - cursor = augmentation_end; - cie->augmentation = string(reinterpret_cast(augmentation_start), - cursor - augmentation_start); + cursor = static_cast(augmentation_end); + cie->augmentation = string(augmentation_start, + cursor - augmentation_start); // Skip the terminating '\0'. cursor++; @@ -2315,9 +1925,9 @@ bool CallFrameInfo::ReadCIEFields(CIE *cie) { if (size_t(cie->end - cursor) < len + data_size) return ReportIncomplete(cie); cursor += len; - const uint8_t *data = cursor; + const char *data = cursor; cursor += data_size; - const uint8_t *data_end = cursor; + const char *data_end = cursor; cie->has_z_lsda = false; cie->has_z_personality = false; @@ -2409,7 +2019,7 @@ bool CallFrameInfo::ReadCIEFields(CIE *cie) { } bool CallFrameInfo::ReadFDEFields(FDE *fde) { - const uint8_t *cursor = fde->fields; + const char *cursor = fde->fields; size_t size; fde->address = reader_->ReadEncodedPointer(cursor, fde->cie->pointer_encoding, @@ -2475,10 +2085,10 @@ bool CallFrameInfo::ReadFDEFields(FDE *fde) { } bool CallFrameInfo::Start() { - const uint8_t *buffer_end = buffer_ + buffer_length_; - const uint8_t *cursor; + const char *buffer_end = buffer_ + buffer_length_; + const char *cursor; bool all_ok = true; - const uint8_t *entry_end; + const char *entry_end; bool ok; // Traverse all the entries in buffer_, skipping CIEs and offering diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.h index 064c42bc8a50..8824bf90e7a4 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader.h @@ -40,30 +40,25 @@ #ifndef COMMON_DWARF_DWARF2READER_H__ #define COMMON_DWARF_DWARF2READER_H__ -#include - #include #include #include #include #include -#include #include "common/dwarf/bytereader.h" #include "common/dwarf/dwarf2enums.h" #include "common/dwarf/types.h" #include "common/using_std_string.h" -#include "common/dwarf/elf_reader.h" namespace dwarf2reader { struct LineStateMachine; class Dwarf2Handler; class LineInfoHandler; -class DwpReader; // This maps from a string naming a section to a pair containing a // the data for the section, and the size of the section. -typedef std::map > SectionMap; +typedef std::map > SectionMap; typedef std::list > AttributeList; typedef AttributeList::iterator AttributeIterator; @@ -90,7 +85,7 @@ class LineInfo { // to the beginning and length of the line information to read. // Reader is a ByteReader class that has the endianness set // properly. - LineInfo(const uint8_t *buffer_, uint64 buffer_length, + LineInfo(const char* buffer_, uint64 buffer_length, ByteReader* reader, LineInfoHandler* handler); virtual ~LineInfo() { @@ -116,7 +111,7 @@ class LineInfo { static bool ProcessOneOpcode(ByteReader* reader, LineInfoHandler* handler, const struct LineInfoHeader &header, - const uint8_t *start, + const char* start, struct LineStateMachine* lsm, size_t* len, uintptr pc, @@ -144,11 +139,9 @@ class LineInfo { // buffer is the buffer for our line info, starting at exactly where // the line info to read is. after_header is the place right after // the end of the line information header. - const uint8_t *buffer_; -#ifndef NDEBUG + const char* buffer_; uint64 buffer_length_; -#endif - const uint8_t *after_header_; + const char* after_header_; }; // This class is the main interface between the line info reader and @@ -187,106 +180,6 @@ class LineInfoHandler { uint32 file_num, uint32 line_num, uint32 column_num) { } }; -// This class is the main interface between the reader and the -// client. The virtual functions inside this get called for -// interesting events that happen during DWARF2 reading. -// The default implementation skips everything. -class Dwarf2Handler { - public: - Dwarf2Handler() { } - - virtual ~Dwarf2Handler() { } - - // Start to process a compilation unit at OFFSET from the beginning of the - // .debug_info section. Return false if you would like to skip this - // compilation unit. - virtual bool StartCompilationUnit(uint64 offset, uint8 address_size, - uint8 offset_size, uint64 cu_length, - uint8 dwarf_version) { return false; } - - // When processing a skeleton compilation unit, resulting from a split - // DWARF compilation, once the skeleton debug info has been read, - // the reader will call this function to ask the client if it needs - // the full debug info from the .dwo or .dwp file. Return true if - // you need it, or false to skip processing the split debug info. - virtual bool NeedSplitDebugInfo() { return true; } - - // Start to process a split compilation unit at OFFSET from the beginning of - // the debug_info section in the .dwp/.dwo file. Return false if you would - // like to skip this compilation unit. - virtual bool StartSplitCompilationUnit(uint64 offset, - uint64 cu_length) { return false; } - - // Start to process a DIE at OFFSET from the beginning of the .debug_info - // section. Return false if you would like to skip this DIE. - virtual bool StartDIE(uint64 offset, enum DwarfTag tag) { return false; } - - // Called when we have an attribute with unsigned data to give to our - // handler. The attribute is for the DIE at OFFSET from the beginning of the - // .debug_info section. Its name is ATTR, its form is FORM, and its value is - // DATA. - virtual void ProcessAttributeUnsigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 data) { } - - // Called when we have an attribute with signed data to give to our handler. - // The attribute is for the DIE at OFFSET from the beginning of the - // .debug_info section. Its name is ATTR, its form is FORM, and its value is - // DATA. - virtual void ProcessAttributeSigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - int64 data) { } - - // Called when we have an attribute whose value is a reference to - // another DIE. The attribute belongs to the DIE at OFFSET from the - // beginning of the .debug_info section. Its name is ATTR, its form - // is FORM, and the offset of the DIE being referred to from the - // beginning of the .debug_info section is DATA. - virtual void ProcessAttributeReference(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 data) { } - - // Called when we have an attribute with a buffer of data to give to our - // handler. The attribute is for the DIE at OFFSET from the beginning of the - // .debug_info section. Its name is ATTR, its form is FORM, DATA points to - // the buffer's contents, and its length in bytes is LENGTH. The buffer is - // owned by the caller, not the callee, and may not persist for very long. - // If you want the data to be available later, it needs to be copied. - virtual void ProcessAttributeBuffer(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const uint8_t *data, - uint64 len) { } - - // Called when we have an attribute with string data to give to our handler. - // The attribute is for the DIE at OFFSET from the beginning of the - // .debug_info section. Its name is ATTR, its form is FORM, and its value is - // DATA. - virtual void ProcessAttributeString(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const string& data) { } - - // Called when we have an attribute whose value is the 64-bit signature - // of a type unit in the .debug_types section. OFFSET is the offset of - // the DIE whose attribute we're reporting. ATTR and FORM are the - // attribute's name and form. SIGNATURE is the type unit's signature. - virtual void ProcessAttributeSignature(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 signature) { } - - // Called when finished processing the DIE at OFFSET. - // Because DWARF2/3 specifies a tree of DIEs, you may get starts - // before ends of the previous DIE, as we process children before - // ending the parent. - virtual void EndDIE(uint64 offset) { } - -}; - // The base of DWARF2/3 debug info is a DIE (Debugging Information // Entry. // DWARF groups DIE's into a tree and calls the root of this tree a @@ -328,21 +221,12 @@ class CompilationUnit { // Initialize a compilation unit. This requires a map of sections, // the offset of this compilation unit in the .debug_info section, a // ByteReader, and a Dwarf2Handler class to call callbacks in. - CompilationUnit(const string& path, const SectionMap& sections, uint64 offset, + CompilationUnit(const SectionMap& sections, uint64 offset, ByteReader* reader, Dwarf2Handler* handler); virtual ~CompilationUnit() { if (abbrevs_) delete abbrevs_; } - // Initialize a compilation unit from a .dwo or .dwp file. - // In this case, we need the .debug_addr section from the - // executable file that contains the corresponding skeleton - // compilation unit. We also inherit the Dwarf2Handler from - // the executable file, and call it as if we were still - // processing the original compilation unit. - void SetSplitDwarf(const uint8_t* addr_buffer, uint64 addr_buffer_length, - uint64 addr_base, uint64 ranges_base, uint64 dwo_id); - // Begin reading a Dwarf2 compilation unit, and calling the // callbacks in the Dwarf2Handler @@ -382,104 +266,29 @@ class CompilationUnit { // Processes a single DIE for this compilation unit and return a new // pointer just past the end of it - const uint8_t *ProcessDIE(uint64 dieoffset, - const uint8_t *start, - const Abbrev& abbrev); + const char* ProcessDIE(uint64 dieoffset, + const char* start, + const Abbrev& abbrev); // Processes a single attribute and return a new pointer just past the // end of it - const uint8_t *ProcessAttribute(uint64 dieoffset, - const uint8_t *start, - enum DwarfAttribute attr, - enum DwarfForm form); - - // Called when we have an attribute with unsigned data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA. - // If we see a DW_AT_GNU_dwo_id attribute, save the value so that - // we can find the debug info in a .dwo or .dwp file. - void ProcessAttributeUnsigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - uint64 data) { - if (attr == DW_AT_GNU_dwo_id) { - dwo_id_ = data; - } - else if (attr == DW_AT_GNU_addr_base) { - addr_base_ = data; - } - else if (attr == DW_AT_GNU_ranges_base) { - ranges_base_ = data; - } - // TODO(yunlian): When we add DW_AT_ranges_base from DWARF-5, - // that base will apply to DW_AT_ranges attributes in the - // skeleton CU as well as in the .dwo/.dwp files. - else if (attr == DW_AT_ranges && is_split_dwarf_) { - data += ranges_base_; - } - handler_->ProcessAttributeUnsigned(offset, attr, form, data); - } - - // Called when we have an attribute with signed data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA. - void ProcessAttributeSigned(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - int64 data) { - handler_->ProcessAttributeSigned(offset, attr, form, data); - } - - // Called when we have an attribute with a buffer of data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA, and the - // length of the buffer is LENGTH. - void ProcessAttributeBuffer(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const uint8_t* data, - uint64 len) { - handler_->ProcessAttributeBuffer(offset, attr, form, data, len); - } - - // Called when we have an attribute with string data to give to - // our handler. The attribute is for the DIE at OFFSET from the - // beginning of compilation unit, has a name of ATTR, a form of - // FORM, and the actual data of the attribute is in DATA. - // If we see a DW_AT_GNU_dwo_name attribute, save the value so - // that we can find the debug info in a .dwo or .dwp file. - void ProcessAttributeString(uint64 offset, - enum DwarfAttribute attr, - enum DwarfForm form, - const char* data) { - if (attr == DW_AT_GNU_dwo_name) - dwo_name_ = data; - handler_->ProcessAttributeString(offset, attr, form, data); - } + const char* ProcessAttribute(uint64 dieoffset, + const char* start, + enum DwarfAttribute attr, + enum DwarfForm form); // Processes all DIEs for this compilation unit void ProcessDIEs(); // Skips the die with attributes specified in ABBREV starting at // START, and return the new place to position the stream to. - const uint8_t *SkipDIE(const uint8_t *start, const Abbrev& abbrev); + const char* SkipDIE(const char* start, + const Abbrev& abbrev); // Skips the attribute starting at START, with FORM, and return the // new place to position the stream to. - const uint8_t *SkipAttribute(const uint8_t *start, enum DwarfForm form); - - // Process the actual debug information in a split DWARF file. - void ProcessSplitDwarf(); - - // Read the debug sections from a .dwo file. - void ReadDebugSectionsFromDwo(ElfReader* elf_reader, - SectionMap* sections); - - // Path of the file containing the debug information. - const string path_; + const char* SkipAttribute(const char* start, + enum DwarfForm form); // Offset from section start is the offset of this compilation unit // from the beginning of the .debug_info section. @@ -488,9 +297,9 @@ class CompilationUnit { // buffer is the buffer for our CU, starting at .debug_info + offset // passed in from constructor. // after_header points to right after the compilation unit header. - const uint8_t *buffer_; + const char* buffer_; uint64 buffer_length_; - const uint8_t *after_header_; + const char* after_header_; // The associated ByteReader that handles endianness issues for us ByteReader* reader_; @@ -509,143 +318,96 @@ class CompilationUnit { // String section buffer and length, if we have a string section. // This is here to avoid doing a section lookup for strings in // ProcessAttribute, which is in the hot path for DWARF2 reading. - const uint8_t *string_buffer_; + const char* string_buffer_; uint64 string_buffer_length_; - - // String offsets section buffer and length, if we have a string offsets - // section (.debug_str_offsets or .debug_str_offsets.dwo). - const uint8_t* str_offsets_buffer_; - uint64 str_offsets_buffer_length_; - - // Address section buffer and length, if we have an address section - // (.debug_addr). - const uint8_t* addr_buffer_; - uint64 addr_buffer_length_; - - // Flag indicating whether this compilation unit is part of a .dwo - // or .dwp file. If true, we are reading this unit because a - // skeleton compilation unit in an executable file had a - // DW_AT_GNU_dwo_name or DW_AT_GNU_dwo_id attribute. - // In a .dwo file, we expect the string offsets section to - // have a ".dwo" suffix, and we will use the ".debug_addr" section - // associated with the skeleton compilation unit. - bool is_split_dwarf_; - - // The value of the DW_AT_GNU_dwo_id attribute, if any. - uint64 dwo_id_; - - // The value of the DW_AT_GNU_dwo_name attribute, if any. - const char* dwo_name_; - - // If this is a split DWARF CU, the value of the DW_AT_GNU_dwo_id attribute - // from the skeleton CU. - uint64 skeleton_dwo_id_; - - // The value of the DW_AT_GNU_ranges_base attribute, if any. - uint64 ranges_base_; - - // The value of the DW_AT_GNU_addr_base attribute, if any. - uint64 addr_base_; - - // True if we have already looked for a .dwp file. - bool have_checked_for_dwp_; - - // Path to the .dwp file. - string dwp_path_; - - // ByteReader for the DWP file. - std::unique_ptr dwp_byte_reader_; - - // DWP reader. - std::unique_ptr dwp_reader_; }; -// A Reader for a .dwp file. Supports the fetching of DWARF debug -// info for a given dwo_id. -// -// There are two versions of .dwp files. In both versions, the -// .dwp file is an ELF file containing only debug sections. -// In Version 1, the file contains many copies of each debug -// section, one for each .dwo file that is packaged in the .dwp -// file, and the .debug_cu_index section maps from the dwo_id -// to a set of section indexes. In Version 2, the file contains -// one of each debug section, and the .debug_cu_index section -// maps from the dwo_id to a set of offsets and lengths that -// identify each .dwo file's contribution to the larger sections. +// This class is the main interface between the reader and the +// client. The virtual functions inside this get called for +// interesting events that happen during DWARF2 reading. +// The default implementation skips everything. -class DwpReader { +class Dwarf2Handler { public: - DwpReader(const ByteReader& byte_reader, ElfReader* elf_reader); + Dwarf2Handler() { } - ~DwpReader(); + virtual ~Dwarf2Handler() { } - // Read the CU index and initialize data members. - void Initialize(); + // Start to process a compilation unit at OFFSET from the beginning of the + // .debug_info section. Return false if you would like to skip this + // compilation unit. + virtual bool StartCompilationUnit(uint64 offset, uint8 address_size, + uint8 offset_size, uint64 cu_length, + uint8 dwarf_version) { return false; } - // Read the debug sections for the given dwo_id. - void ReadDebugSectionsForCU(uint64 dwo_id, SectionMap* sections); + // Start to process a DIE at OFFSET from the beginning of the .debug_info + // section. Return false if you would like to skip this DIE. + virtual bool StartDIE(uint64 offset, enum DwarfTag tag) { return false; } - private: - // Search a v1 hash table for "dwo_id". Returns the slot index - // where the dwo_id was found, or -1 if it was not found. - int LookupCU(uint64 dwo_id); + // Called when we have an attribute with unsigned data to give to our + // handler. The attribute is for the DIE at OFFSET from the beginning of the + // .debug_info section. Its name is ATTR, its form is FORM, and its value is + // DATA. + virtual void ProcessAttributeUnsigned(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + uint64 data) { } - // Search a v2 hash table for "dwo_id". Returns the row index - // in the offsets and sizes tables, or 0 if it was not found. - uint32 LookupCUv2(uint64 dwo_id); + // Called when we have an attribute with signed data to give to our handler. + // The attribute is for the DIE at OFFSET from the beginning of the + // .debug_info section. Its name is ATTR, its form is FORM, and its value is + // DATA. + virtual void ProcessAttributeSigned(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + int64 data) { } - // The ELF reader for the .dwp file. - ElfReader* elf_reader_; + // Called when we have an attribute whose value is a reference to + // another DIE. The attribute belongs to the DIE at OFFSET from the + // beginning of the .debug_info section. Its name is ATTR, its form + // is FORM, and the offset of the DIE being referred to from the + // beginning of the .debug_info section is DATA. + virtual void ProcessAttributeReference(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + uint64 data) { } - // The ByteReader for the .dwp file. - const ByteReader& byte_reader_; + // Called when we have an attribute with a buffer of data to give to our + // handler. The attribute is for the DIE at OFFSET from the beginning of the + // .debug_info section. Its name is ATTR, its form is FORM, DATA points to + // the buffer's contents, and its length in bytes is LENGTH. The buffer is + // owned by the caller, not the callee, and may not persist for very long. + // If you want the data to be available later, it needs to be copied. + virtual void ProcessAttributeBuffer(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + const char* data, + uint64 len) { } - // Pointer to the .debug_cu_index section. - const char* cu_index_; + // Called when we have an attribute with string data to give to our handler. + // The attribute is for the DIE at OFFSET from the beginning of the + // .debug_info section. Its name is ATTR, its form is FORM, and its value is + // DATA. + virtual void ProcessAttributeString(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + const string& data) { } - // Size of the .debug_cu_index section. - size_t cu_index_size_; + // Called when we have an attribute whose value is the 64-bit signature + // of a type unit in the .debug_types section. OFFSET is the offset of + // the DIE whose attribute we're reporting. ATTR and FORM are the + // attribute's name and form. SIGNATURE is the type unit's signature. + virtual void ProcessAttributeSignature(uint64 offset, + enum DwarfAttribute attr, + enum DwarfForm form, + uint64 signature) { } - // Pointer to the .debug_str.dwo section. - const char* string_buffer_; + // Called when finished processing the DIE at OFFSET. + // Because DWARF2/3 specifies a tree of DIEs, you may get starts + // before ends of the previous DIE, as we process children before + // ending the parent. + virtual void EndDIE(uint64 offset) { } - // Size of the .debug_str.dwo section. - size_t string_buffer_size_; - - // Version of the .dwp file. We support versions 1 and 2 currently. - int version_; - - // Number of columns in the section tables (version 2). - unsigned int ncolumns_; - - // Number of units in the section tables (version 2). - unsigned int nunits_; - - // Number of slots in the hash table. - unsigned int nslots_; - - // Pointer to the beginning of the hash table. - const char* phash_; - - // Pointer to the beginning of the index table. - const char* pindex_; - - // Pointer to the beginning of the section index pool (version 1). - const char* shndx_pool_; - - // Pointer to the beginning of the section offset table (version 2). - const char* offset_table_; - - // Pointer to the beginning of the section size table (version 2). - const char* size_table_; - - // Contents of the sections of interest (version 2). - const char* abbrev_data_; - size_t abbrev_size_; - const char* info_data_; - size_t info_size_; - const char* str_offsets_data_; - size_t str_offsets_size_; }; // This class is a reader for DWARF's Call Frame Information. CFI @@ -875,7 +637,7 @@ class CallFrameInfo { // The mechanics of C++ exception handling, personality routines, // and language-specific data areas are described here, rather nicely: // http://www.codesourcery.com/public/cxx-abi/abi-eh.html - CallFrameInfo(const uint8_t *buffer, size_t buffer_length, + CallFrameInfo(const char *buffer, size_t buffer_length, ByteReader *reader, Handler *handler, Reporter *reporter, bool eh_frame = false) : buffer_(buffer), buffer_length_(buffer_length), @@ -903,7 +665,7 @@ class CallFrameInfo { size_t offset; // The start of this entry in the buffer. - const uint8_t *start; + const char *start; // Which kind of entry this is. // @@ -914,16 +676,16 @@ class CallFrameInfo { // The end of this entry's common prologue (initial length and id), and // the start of this entry's kind-specific fields. - const uint8_t *fields; + const char *fields; // The start of this entry's instructions. - const uint8_t *instructions; + const char *instructions; // The address past the entry's last byte in the buffer. (Note that // since offset points to the entry's initial length field, and the // length field is the number of bytes after that field, this is not // simply buffer_ + offset + length.) - const uint8_t *end; + const char *end; // For both DWARF CFI and .eh_frame sections, this is the CIE id in a // CIE, and the offset of the associated CIE in an FDE. @@ -1000,7 +762,7 @@ class CallFrameInfo { // true. On failure, report the problem, and return false. Even if we // return false, set ENTRY->end to the first byte after the entry if we // were able to figure that out, or NULL if we weren't. - bool ReadEntryPrologue(const uint8_t *cursor, Entry *entry); + bool ReadEntryPrologue(const char *cursor, Entry *entry); // Parse the fields of a CIE after the entry prologue, including any 'z' // augmentation data. Assume that the 'Entry' fields of CIE are @@ -1028,7 +790,7 @@ class CallFrameInfo { } // The contents of the DWARF .debug_info section we're parsing. - const uint8_t *buffer_; + const char *buffer_; size_t buffer_length_; // For reading multi-byte values with the appropriate endianness. diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc index e50ea5fbd3d2..66c6198b11be 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_cfi_unittest.cc @@ -31,7 +31,6 @@ // dwarf2reader_cfi_unittest.cc: Unit tests for dwarf2reader::CallFrameInfo -#include #include #include @@ -187,7 +186,7 @@ class CFI: public CFIFixture, public Test { }; TEST_F(CFI, EmptyRegion) { EXPECT_CALL(handler, Entry(_, _, _, _, _, _)).Times(0); EXPECT_CALL(handler, End()).Times(0); - static const uint8_t data[] = { 42 }; + static const char data[1] = { 42 }; ByteReader byte_reader(ENDIANNESS_BIG); CallFrameInfo parser(data, 0, &byte_reader, &handler, &reporter); @@ -214,8 +213,7 @@ TEST_F(CFI, IncompleteLength32) { ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(8); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size() - 2, + CallFrameInfo parser(contents.data(), contents.size() - 2, &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -240,8 +238,7 @@ TEST_F(CFI, IncompleteLength64) { ByteReader byte_reader(ENDIANNESS_LITTLE); byte_reader.SetAddressSize(4); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size() - 4, + CallFrameInfo parser(contents.data(), contents.size() - 4, &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -265,8 +262,7 @@ TEST_F(CFI, IncompleteId32) { ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(8); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -292,8 +288,7 @@ TEST_F(CFI, BadId32) { ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(8); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -314,8 +309,7 @@ TEST_F(CFI, SingleCIE) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_LITTLE); byte_reader.SetAddressSize(4); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -345,8 +339,7 @@ TEST_F(CFI, OneFDE) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -389,8 +382,7 @@ TEST_F(CFI, TwoFDEsOneCIE) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -439,8 +431,7 @@ TEST_F(CFI, TwoFDEsTwoCIEs) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_LITTLE); byte_reader.SetAddressSize(8); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -484,8 +475,7 @@ TEST_F(CFI, BadVersion) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -529,8 +519,7 @@ TEST_F(CFI, BadAugmentation) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_FALSE(parser.Start()); } @@ -564,8 +553,7 @@ TEST_F(CFI, CIEVersion1ReturnColumn) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -599,8 +587,7 @@ TEST_F(CFI, CIEVersion3ReturnColumn) { EXPECT_TRUE(section.GetContents(&contents)); ByteReader byte_reader(ENDIANNESS_BIG); byte_reader.SetAddressSize(4); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); EXPECT_TRUE(parser.Start()); } @@ -681,8 +668,7 @@ struct CFIInsnFixture: public CFIFixture { } ByteReader byte_reader(endianness); byte_reader.SetAddressSize(section->AddressSize()); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter); if (succeeds) EXPECT_TRUE(parser.Start()); @@ -2003,12 +1989,10 @@ struct EHFrameFixture: public CFIInsnFixture { } ByteReader byte_reader(endianness); byte_reader.SetAddressSize(section->AddressSize()); - byte_reader.SetCFIDataBase(encoded_pointer_bases.cfi, - reinterpret_cast(contents.data())); + byte_reader.SetCFIDataBase(encoded_pointer_bases.cfi, contents.data()); byte_reader.SetTextBase(encoded_pointer_bases.text); byte_reader.SetDataBase(encoded_pointer_bases.data); - CallFrameInfo parser(reinterpret_cast(contents.data()), - contents.size(), + CallFrameInfo parser(contents.data(), contents.size(), &byte_reader, &handler, &reporter, true); if (succeeds) EXPECT_TRUE(parser.Start()); diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc index 71418eb8d761..4e3443693192 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/dwarf2reader_die_unittest.cc @@ -31,7 +31,6 @@ // dwarf2reader_die_unittest.cc: Unit tests for dwarf2reader::CompilationUnit -#include #include #include @@ -92,7 +91,7 @@ class MockDwarf2Handler: public Dwarf2Handler { MOCK_METHOD5(ProcessAttributeBuffer, void(uint64 offset, enum DwarfAttribute attr, enum DwarfForm form, - const uint8_t *data, + const char* data, uint64 len)); MOCK_METHOD4(ProcessAttributeString, void(uint64 offset, enum DwarfAttribute attr, @@ -133,11 +132,9 @@ struct DIEFixture { assert(info.GetContents(&info_contents)); assert(abbrevs.GetContents(&abbrevs_contents)); section_map.clear(); - section_map[".debug_info"].first - = reinterpret_cast(info_contents.data()); + section_map[".debug_info"].first = info_contents.data(); section_map[".debug_info"].second = info_contents.size(); - section_map[".debug_abbrev"].first - = reinterpret_cast(abbrevs_contents.data()); + section_map[".debug_abbrev"].first = abbrevs_contents.data(); section_map[".debug_abbrev"].second = abbrevs_contents.size(); return section_map; } @@ -199,7 +196,7 @@ TEST_P(DwarfHeader, Header) { ByteReader byte_reader(GetParam().endianness == kLittleEndian ? ENDIANNESS_LITTLE : ENDIANNESS_BIG); - CompilationUnit parser("", MakeSectionMap(), 0, &byte_reader, &handler); + CompilationUnit parser(MakeSectionMap(), 0, &byte_reader, &handler); EXPECT_EQ(parser.Start(), info_contents.size()); } @@ -277,7 +274,7 @@ struct DwarfFormsFixture: public DIEFixture { void ParseCompilationUnit(const DwarfHeaderParams ¶ms, uint64 offset=0) { ByteReader byte_reader(params.endianness == kLittleEndian ? ENDIANNESS_LITTLE : ENDIANNESS_BIG); - CompilationUnit parser("", MakeSectionMap(), offset, &byte_reader, &handler); + CompilationUnit parser(MakeSectionMap(), offset, &byte_reader, &handler); EXPECT_EQ(offset + parser.Start(), info_contents.size()); } diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.cc deleted file mode 100644 index 4135a51a9805..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.cc +++ /dev/null @@ -1,1273 +0,0 @@ -// Copyright 2005 Google Inc. All Rights Reserved. -// Author: chatham@google.com (Andrew Chatham) -// Author: satorux@google.com (Satoru Takabayashi) -// -// Code for reading in ELF files. -// -// For information on the ELF format, see -// http://www.x86.org/ftp/manuals/tools/elf.pdf -// -// I also liked: -// http://www.caldera.com/developers/gabi/1998-04-29/contents.html -// -// A note about types: When dealing with the file format, we use types -// like Elf32_Word, but in the public interfaces we treat all -// addresses as uint64. As a result, we should be able to symbolize -// 64-bit binaries from a 32-bit process (which we don't do, -// anyway). size_t should therefore be avoided, except where required -// by things like mmap(). -// -// Although most of this code can deal with arbitrary ELF files of -// either word size, the public ElfReader interface only examines -// files loaded into the current address space, which must all match -// __WORDSIZE. This code cannot handle ELF files with a non-native -// byte ordering. -// -// TODO(chatham): It would be nice if we could accomplish this task -// without using malloc(), so we could use it as the process is dying. - -#ifndef _GNU_SOURCE -#define _GNU_SOURCE // needed for pread() -#endif - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -// TODO(saugustine): Add support for compressed debug. -// Also need to add configure tests for zlib. -//#include "zlib.h" - -#include "third_party/musl/include/elf.h" -#include "elf_reader.h" -#include "common/using_std_string.h" - -// EM_AARCH64 is not defined by elf.h of GRTE v3 on x86. -// TODO(dougkwan): Remove this when v17 is retired. -#if !defined(EM_AARCH64) -#define EM_AARCH64 183 /* ARM AARCH64 */ -#endif - -// Map Linux macros to their Apple equivalents. -#if __APPLE__ -#ifndef __LITTLE_ENDIAN -#define __LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__ -#endif // __LITTLE_ENDIAN -#ifndef __BIG_ENDIAN -#define __BIG_ENDIAN __ORDER_BIG_ENDIAN__ -#endif // __BIG_ENDIAN -#ifndef __BYTE_ORDER -#define __BYTE_ORDER __BYTE_ORDER__ -#endif // __BYTE_ORDER -#endif // __APPLE__ - -// TODO(dthomson): Can be removed once all Java code is using the Google3 -// launcher. We need to avoid processing PLT functions as it causes memory -// fragmentation in malloc, which is fixed in tcmalloc - and if the Google3 -// launcher is used the JVM will then use tcmalloc. b/13735638 -//DEFINE_bool(elfreader_process_dynsyms, true, -// "Activate PLT function processing"); - -using std::vector; - -namespace { - -// The lowest bit of an ARM symbol value is used to indicate a Thumb address. -const int kARMThumbBitOffset = 0; - -// Converts an ARM Thumb symbol value to a true aligned address value. -template -T AdjustARMThumbSymbolValue(const T& symbol_table_value) { - return symbol_table_value & ~(1 << kARMThumbBitOffset); -} - -// Names of PLT-related sections. -const char kElfPLTRelSectionName[] = ".rel.plt"; // Use Rel struct. -const char kElfPLTRelaSectionName[] = ".rela.plt"; // Use Rela struct. -const char kElfPLTSectionName[] = ".plt"; -const char kElfDynSymSectionName[] = ".dynsym"; - -const int kX86PLTCodeSize = 0x10; // Size of one x86 PLT function in bytes. -const int kARMPLTCodeSize = 0xc; -const int kAARCH64PLTCodeSize = 0x10; - -const int kX86PLT0Size = 0x10; // Size of the special PLT0 entry. -const int kARMPLT0Size = 0x14; -const int kAARCH64PLT0Size = 0x20; - -// Suffix for PLT functions when it needs to be explicitly identified as such. -const char kPLTFunctionSuffix[] = "@plt"; - -} // namespace - -namespace dwarf2reader { - -template class ElfReaderImpl; - -// 32-bit and 64-bit ELF files are processed exactly the same, except -// for various field sizes. Elf32 and Elf64 encompass all of the -// differences between the two formats, and all format-specific code -// in this file is templated on one of them. -class Elf32 { - public: - typedef Elf32_Ehdr Ehdr; - typedef Elf32_Shdr Shdr; - typedef Elf32_Phdr Phdr; - typedef Elf32_Word Word; - typedef Elf32_Sym Sym; - typedef Elf32_Rel Rel; - typedef Elf32_Rela Rela; - - // What should be in the EI_CLASS header. - static const int kElfClass = ELFCLASS32; - - // Given a symbol pointer, return the binding type (eg STB_WEAK). - static char Bind(const Elf32_Sym *sym) { - return ELF32_ST_BIND(sym->st_info); - } - // Given a symbol pointer, return the symbol type (eg STT_FUNC). - static char Type(const Elf32_Sym *sym) { - return ELF32_ST_TYPE(sym->st_info); - } - - // Extract the symbol index from the r_info field of a relocation. - static int r_sym(const Elf32_Word r_info) { - return ELF32_R_SYM(r_info); - } -}; - - -class Elf64 { - public: - typedef Elf64_Ehdr Ehdr; - typedef Elf64_Shdr Shdr; - typedef Elf64_Phdr Phdr; - typedef Elf64_Word Word; - typedef Elf64_Sym Sym; - typedef Elf64_Rel Rel; - typedef Elf64_Rela Rela; - - // What should be in the EI_CLASS header. - static const int kElfClass = ELFCLASS64; - - static char Bind(const Elf64_Sym *sym) { - return ELF64_ST_BIND(sym->st_info); - } - static char Type(const Elf64_Sym *sym) { - return ELF64_ST_TYPE(sym->st_info); - } - static int r_sym(const Elf64_Xword r_info) { - return ELF64_R_SYM(r_info); - } -}; - - -// ElfSectionReader mmaps a section of an ELF file ("section" is ELF -// terminology). The ElfReaderImpl object providing the section header -// must exist for the lifetime of this object. -// -// The motivation for mmaping individual sections of the file is that -// many Google executables are large enough when unstripped that we -// have to worry about running out of virtual address space. -// -// For compressed sections we have no choice but to allocate memory. -template -class ElfSectionReader { - public: - ElfSectionReader(const char *name, const string &path, int fd, - const typename ElfArch::Shdr §ion_header) - : contents_aligned_(NULL), - contents_(NULL), - header_(section_header) { - // Back up to the beginning of the page we're interested in. - const size_t additional = header_.sh_offset % getpagesize(); - const size_t offset_aligned = header_.sh_offset - additional; - section_size_ = header_.sh_size; - size_aligned_ = section_size_ + additional; - // If the section has been stripped or is empty, do not attempt - // to process its contents. - if (header_.sh_type == SHT_NOBITS || header_.sh_size == 0) - return; - contents_aligned_ = mmap(NULL, size_aligned_, PROT_READ, MAP_SHARED, - fd, offset_aligned); - // Set where the offset really should begin. - contents_ = reinterpret_cast(contents_aligned_) + - (header_.sh_offset - offset_aligned); - - // Check for and handle any compressed contents. - //if (strncmp(name, ".zdebug_", strlen(".zdebug_")) == 0) - // DecompressZlibContents(); - // TODO(saugustine): Add support for proposed elf-section flag - // "SHF_COMPRESS". - } - - ~ElfSectionReader() { - if (contents_aligned_ != NULL) - munmap(contents_aligned_, size_aligned_); - else - delete[] contents_; - } - - // Return the section header for this section. - typename ElfArch::Shdr const &header() const { return header_; } - - // Return memory at the given offset within this section. - const char *GetOffset(typename ElfArch::Word bytes) const { - return contents_ + bytes; - } - - const char *contents() const { return contents_; } - size_t section_size() const { return section_size_; } - - private: - // page-aligned file contents - void *contents_aligned_; - // contents as usable by the client. For non-compressed sections, - // pointer within contents_aligned_ to where the section data - // begins; for compressed sections, pointer to the decompressed - // data. - char *contents_; - // size of contents_aligned_ - size_t size_aligned_; - // size of contents. - size_t section_size_; - const typename ElfArch::Shdr header_; -}; - -// An iterator over symbols in a given section. It handles walking -// through the entries in the specified section and mapping symbol -// entries to their names in the appropriate string table (in -// another section). -template -class SymbolIterator { - public: - SymbolIterator(ElfReaderImpl *reader, - typename ElfArch::Word section_type) - : symbol_section_(reader->GetSectionByType(section_type)), - string_section_(NULL), - num_symbols_in_section_(0), - symbol_within_section_(0) { - - // If this section type doesn't exist, leave - // num_symbols_in_section_ as zero, so this iterator is already - // done(). - if (symbol_section_ != NULL) { - num_symbols_in_section_ = symbol_section_->header().sh_size / - symbol_section_->header().sh_entsize; - - // Symbol sections have sh_link set to the section number of - // the string section containing the symbol names. - string_section_ = reader->GetSection(symbol_section_->header().sh_link); - } - } - - // Return true iff we have passed all symbols in this section. - bool done() const { - return symbol_within_section_ >= num_symbols_in_section_; - } - - // Advance to the next symbol in this section. - // REQUIRES: !done() - void Next() { ++symbol_within_section_; } - - // Return a pointer to the current symbol. - // REQUIRES: !done() - const typename ElfArch::Sym *GetSymbol() const { - return reinterpret_cast( - symbol_section_->GetOffset(symbol_within_section_ * - symbol_section_->header().sh_entsize)); - } - - // Return the name of the current symbol, NULL if it has none. - // REQUIRES: !done() - const char *GetSymbolName() const { - int name_offset = GetSymbol()->st_name; - if (name_offset == 0) - return NULL; - return string_section_->GetOffset(name_offset); - } - - int GetCurrentSymbolIndex() const { - return symbol_within_section_; - } - - private: - const ElfSectionReader *const symbol_section_; - const ElfSectionReader *string_section_; - int num_symbols_in_section_; - int symbol_within_section_; -}; - - -// Copied from strings/strutil.h. Per chatham, -// this library should not depend on strings. - -static inline bool MyHasSuffixString(const string& str, const string& suffix) { - int len = str.length(); - int suflen = suffix.length(); - return (suflen <= len) && (str.compare(len-suflen, suflen, suffix) == 0); -} - - -// ElfReader loads an ELF binary and can provide information about its -// contents. It is most useful for matching addresses to function -// names. It does not understand debugging formats (eg dwarf2), so it -// can't print line numbers. It takes a path to an elf file and a -// readable file descriptor for that file, which it does not assume -// ownership of. -template -class ElfReaderImpl { - public: - explicit ElfReaderImpl(const string &path, int fd) - : path_(path), - fd_(fd), - section_headers_(NULL), - program_headers_(NULL), - opd_section_(NULL), - base_for_text_(0), - plts_supported_(false), - plt_code_size_(0), - plt0_size_(0), - visited_relocation_entries_(false) { - string error; - is_dwp_ = MyHasSuffixString(path, ".dwp"); - ParseHeaders(fd, path); - // Currently we need some extra information for PowerPC64 binaries - // including a way to read the .opd section for function descriptors and a - // way to find the linked base for function symbols. - if (header_.e_machine == EM_PPC64) { - // "opd_section_" must always be checked for NULL before use. - opd_section_ = GetSectionInfoByName(".opd", &opd_info_); - for (unsigned int k = 0u; k < GetNumSections(); ++k) { - const char *name = GetSectionName(section_headers_[k].sh_name); - if (strncmp(name, ".text", strlen(".text")) == 0) { - base_for_text_ = - section_headers_[k].sh_addr - section_headers_[k].sh_offset; - break; - } - } - } - // Turn on PLTs. - if (header_.e_machine == EM_386 || header_.e_machine == EM_X86_64) { - plt_code_size_ = kX86PLTCodeSize; - plt0_size_ = kX86PLT0Size; - plts_supported_ = true; - } else if (header_.e_machine == EM_ARM) { - plt_code_size_ = kARMPLTCodeSize; - plt0_size_ = kARMPLT0Size; - plts_supported_ = true; - } else if (header_.e_machine == EM_AARCH64) { - plt_code_size_ = kAARCH64PLTCodeSize; - plt0_size_ = kAARCH64PLT0Size; - plts_supported_ = true; - } - } - - ~ElfReaderImpl() { - for (unsigned int i = 0u; i < sections_.size(); ++i) - delete sections_[i]; - delete [] section_headers_; - delete [] program_headers_; - } - - // Examine the headers of the file and return whether the file looks - // like an ELF file for this architecture. Takes an already-open - // file descriptor for the candidate file, reading in the prologue - // to see if the ELF file appears to match the current - // architecture. If error is non-NULL, it will be set with a reason - // in case of failure. - static bool IsArchElfFile(int fd, string *error) { - unsigned char header[EI_NIDENT]; - if (pread(fd, header, sizeof(header), 0) != sizeof(header)) { - if (error != NULL) *error = "Could not read header"; - return false; - } - - if (memcmp(header, ELFMAG, SELFMAG) != 0) { - if (error != NULL) *error = "Missing ELF magic"; - return false; - } - - if (header[EI_CLASS] != ElfArch::kElfClass) { - if (error != NULL) *error = "Different word size"; - return false; - } - - int endian = 0; - if (header[EI_DATA] == ELFDATA2LSB) - endian = __LITTLE_ENDIAN; - else if (header[EI_DATA] == ELFDATA2MSB) - endian = __BIG_ENDIAN; - if (endian != __BYTE_ORDER) { - if (error != NULL) *error = "Different byte order"; - return false; - } - - return true; - } - - // Return true if we can use this symbol in Address-to-Symbol map. - bool CanUseSymbol(const char *name, const typename ElfArch::Sym *sym) { - // For now we only save FUNC and NOTYPE symbols. For now we just - // care about functions, but some functions written in assembler - // don't have a proper ELF type attached to them, so we store - // NOTYPE symbols as well. The remaining significant type is - // OBJECT (eg global variables), which represent about 25% of - // the symbols in a typical google3 binary. - if (ElfArch::Type(sym) != STT_FUNC && - ElfArch::Type(sym) != STT_NOTYPE) { - return false; - } - - // Target specific filtering. - switch (header_.e_machine) { - case EM_AARCH64: - case EM_ARM: - // Filter out '$x' special local symbols used by tools - return name[0] != '$' || ElfArch::Bind(sym) != STB_LOCAL; - case EM_X86_64: - // Filter out read-only constants like .LC123. - return name[0] != '.' || ElfArch::Bind(sym) != STB_LOCAL; - default: - return true; - } - } - - // Iterate over the symbols in a section, either SHT_DYNSYM or - // SHT_SYMTAB. Add all symbols to the given SymbolMap. - /* - void GetSymbolPositions(SymbolMap *symbols, - typename ElfArch::Word section_type, - uint64 mem_offset, - uint64 file_offset) { - // This map is used to filter out "nested" functions. - // See comment below. - AddrToSymMap addr_to_sym_map; - for (SymbolIterator it(this, section_type); - !it.done(); it.Next()) { - const char *name = it.GetSymbolName(); - if (name == NULL) - continue; - const typename ElfArch::Sym *sym = it.GetSymbol(); - if (CanUseSymbol(name, sym)) { - const int sec = sym->st_shndx; - - // We don't support special section indices. The most common - // is SHN_ABS, for absolute symbols used deep in the bowels of - // glibc. Also ignore any undefined symbols. - if (sec == SHN_UNDEF || - (sec >= SHN_LORESERVE && sec <= SHN_HIRESERVE)) { - continue; - } - - const typename ElfArch::Shdr& hdr = section_headers_[sec]; - - // Adjust for difference between where we expected to mmap - // this section, and where it was actually mmapped. - const int64 expected_base = hdr.sh_addr - hdr.sh_offset; - const int64 real_base = mem_offset - file_offset; - const int64 adjust = real_base - expected_base; - - uint64 start = sym->st_value + adjust; - - // Adjust function symbols for PowerPC64 by dereferencing and adjusting - // the function descriptor to get the function address. - if (header_.e_machine == EM_PPC64 && ElfArch::Type(sym) == STT_FUNC) { - const uint64 opd_addr = - AdjustPPC64FunctionDescriptorSymbolValue(sym->st_value); - // Only adjust the returned value if the function address was found. - if (opd_addr != sym->st_value) { - const int64 adjust_function_symbols = - real_base - base_for_text_; - start = opd_addr + adjust_function_symbols; - } - } - - addr_to_sym_map.push_back(std::make_pair(start, sym)); - } - } - std::sort(addr_to_sym_map.begin(), addr_to_sym_map.end(), &AddrToSymSorter); - addr_to_sym_map.erase(std::unique(addr_to_sym_map.begin(), - addr_to_sym_map.end(), &AddrToSymEquals), - addr_to_sym_map.end()); - - // Squeeze out any "nested functions". - // Nested functions are not allowed in C, but libc plays tricks. - // - // For example, here is disassembly of /lib64/tls/libc-2.3.5.so: - // 0x00000000000aa380 : cmpl $0x0,0x2781b9(%rip) - // 0x00000000000aa387 : jne 0xaa39b - // 0x00000000000aa389 <__read_nocancel+0>: mov $0x0,%rax - // 0x00000000000aa390 <__read_nocancel+7>: syscall - // 0x00000000000aa392 <__read_nocancel+9>: cmp $0xfffffffffffff001,%rax - // 0x00000000000aa398 <__read_nocancel+15>: jae 0xaa3ef - // 0x00000000000aa39a <__read_nocancel+17>: retq - // 0x00000000000aa39b : sub $0x28,%rsp - // 0x00000000000aa39f : mov %rdi,0x8(%rsp) - // ... - // Without removing __read_nocancel, symbolizer will return NULL - // given e.g. 0xaa39f (because the lower bound is __read_nocancel, - // but 0xaa39f is beyond its end. - if (addr_to_sym_map.empty()) { - return; - } - const ElfSectionReader *const symbol_section = - this->GetSectionByType(section_type); - const ElfSectionReader *const string_section = - this->GetSection(symbol_section->header().sh_link); - - typename AddrToSymMap::iterator curr = addr_to_sym_map.begin(); - // Always insert the first symbol. - symbols->AddSymbol(string_section->GetOffset(curr->second->st_name), - curr->first, curr->second->st_size); - typename AddrToSymMap::iterator prev = curr++; - for (; curr != addr_to_sym_map.end(); ++curr) { - const uint64 prev_addr = prev->first; - const uint64 curr_addr = curr->first; - const typename ElfArch::Sym *const prev_sym = prev->second; - const typename ElfArch::Sym *const curr_sym = curr->second; - if (prev_addr + prev_sym->st_size <= curr_addr || - // The next condition is true if two symbols overlap like this: - // - // Previous symbol |----------------------------| - // Current symbol |-------------------------------| - // - // These symbols are not found in google3 codebase, but in - // jdk1.6.0_01_gg1/jre/lib/i386/server/libjvm.so. - // - // 0619e040 00000046 t CardTableModRefBS::write_region_work() - // 0619e070 00000046 t CardTableModRefBS::write_ref_array_work() - // - // We allow overlapped symbols rather than ignore these. - // Due to the way SymbolMap::GetSymbolAtPosition() works, - // lookup for any address in [curr_addr, curr_addr + its size) - // (e.g. 0619e071) will produce the current symbol, - // which is the desired outcome. - prev_addr + prev_sym->st_size < curr_addr + curr_sym->st_size) { - const char *name = string_section->GetOffset(curr_sym->st_name); - symbols->AddSymbol(name, curr_addr, curr_sym->st_size); - prev = curr; - } else { - // Current symbol is "nested" inside previous one like this: - // - // Previous symbol |----------------------------| - // Current symbol |---------------------| - // - // This happens within glibc, e.g. __read_nocancel is nested - // "inside" __read. Ignore "inner" symbol. - //DCHECK_LE(curr_addr + curr_sym->st_size, - // prev_addr + prev_sym->st_size); - ; - } - } - } -*/ - - void VisitSymbols(typename ElfArch::Word section_type, - ElfReader::SymbolSink *sink) { - VisitSymbols(section_type, sink, -1, -1, false); - } - - void VisitSymbols(typename ElfArch::Word section_type, - ElfReader::SymbolSink *sink, - int symbol_binding, - int symbol_type, - bool get_raw_symbol_values) { - for (SymbolIterator it(this, section_type); - !it.done(); it.Next()) { - const char *name = it.GetSymbolName(); - if (!name) continue; - const typename ElfArch::Sym *sym = it.GetSymbol(); - if ((symbol_binding < 0 || ElfArch::Bind(sym) == symbol_binding) && - (symbol_type < 0 || ElfArch::Type(sym) == symbol_type)) { - typename ElfArch::Sym symbol = *sym; - // Add a PLT symbol in addition to the main undefined symbol. - // Only do this for SHT_DYNSYM, because PLT symbols are dynamic. - int symbol_index = it.GetCurrentSymbolIndex(); - // TODO(dthomson): Can be removed once all Java code is using the - // Google3 launcher. - if (section_type == SHT_DYNSYM && - static_cast(symbol_index) < symbols_plt_offsets_.size() && - symbols_plt_offsets_[symbol_index] != 0) { - string plt_name = string(name) + kPLTFunctionSuffix; - if (plt_function_names_[symbol_index].empty()) { - plt_function_names_[symbol_index] = plt_name; - } else if (plt_function_names_[symbol_index] != plt_name) { - ; - } - sink->AddSymbol(plt_function_names_[symbol_index].c_str(), - symbols_plt_offsets_[it.GetCurrentSymbolIndex()], - plt_code_size_); - } - if (!get_raw_symbol_values) - AdjustSymbolValue(&symbol); - sink->AddSymbol(name, symbol.st_value, symbol.st_size); - } - } - } - - void VisitRelocationEntries() { - if (visited_relocation_entries_) { - return; - } - visited_relocation_entries_ = true; - - if (!plts_supported_) { - return; - } - // First determine if PLTs exist. If not, then there is nothing to do. - ElfReader::SectionInfo plt_section_info; - const char* plt_section = - GetSectionInfoByName(kElfPLTSectionName, &plt_section_info); - if (!plt_section) { - return; - } - if (plt_section_info.size == 0) { - return; - } - - // The PLTs could be referenced by either a Rel or Rela (Rel with Addend) - // section. - ElfReader::SectionInfo rel_section_info; - ElfReader::SectionInfo rela_section_info; - const char* rel_section = - GetSectionInfoByName(kElfPLTRelSectionName, &rel_section_info); - const char* rela_section = - GetSectionInfoByName(kElfPLTRelaSectionName, &rela_section_info); - - const typename ElfArch::Rel* rel = - reinterpret_cast(rel_section); - const typename ElfArch::Rela* rela = - reinterpret_cast(rela_section); - - if (!rel_section && !rela_section) { - return; - } - - // Use either Rel or Rela section, depending on which one exists. - size_t section_size = rel_section ? rel_section_info.size - : rela_section_info.size; - size_t entry_size = rel_section ? sizeof(typename ElfArch::Rel) - : sizeof(typename ElfArch::Rela); - - // Determine the number of entries in the dynamic symbol table. - ElfReader::SectionInfo dynsym_section_info; - const char* dynsym_section = - GetSectionInfoByName(kElfDynSymSectionName, &dynsym_section_info); - // The dynsym section might not exist, or it might be empty. In either case - // there is nothing to be done so return. - if (!dynsym_section || dynsym_section_info.size == 0) { - return; - } - size_t num_dynamic_symbols = - dynsym_section_info.size / dynsym_section_info.entsize; - symbols_plt_offsets_.resize(num_dynamic_symbols, 0); - - // TODO(dthomson): Can be removed once all Java code is using the - // Google3 launcher. - // Make storage room for PLT function name strings. - plt_function_names_.resize(num_dynamic_symbols); - - for (size_t i = 0; i < section_size / entry_size; ++i) { - // Determine symbol index from the |r_info| field. - int sym_index = ElfArch::r_sym(rel_section ? rel[i].r_info - : rela[i].r_info); - if (static_cast(sym_index) >= symbols_plt_offsets_.size()) { - continue; - } - symbols_plt_offsets_[sym_index] = - plt_section_info.addr + plt0_size_ + i * plt_code_size_; - } - } - - // Return an ElfSectionReader for the first section of the given - // type by iterating through all section headers. Returns NULL if - // the section type is not found. - const ElfSectionReader *GetSectionByType( - typename ElfArch::Word section_type) { - for (unsigned int k = 0u; k < GetNumSections(); ++k) { - if (section_headers_[k].sh_type == section_type) { - return GetSection(k); - } - } - return NULL; - } - - // Return the name of section "shndx". Returns NULL if the section - // is not found. - const char *GetSectionNameByIndex(int shndx) { - return GetSectionName(section_headers_[shndx].sh_name); - } - - // Return a pointer to section "shndx", and store the size in - // "size". Returns NULL if the section is not found. - const char *GetSectionContentsByIndex(int shndx, size_t *size) { - const ElfSectionReader *section = GetSection(shndx); - if (section != NULL) { - *size = section->section_size(); - return section->contents(); - } - return NULL; - } - - // Return a pointer to the first section of the given name by - // iterating through all section headers, and store the size in - // "size". Returns NULL if the section name is not found. - const char *GetSectionContentsByName(const string §ion_name, - size_t *size) { - for (unsigned int k = 0u; k < GetNumSections(); ++k) { - // When searching for sections in a .dwp file, the sections - // we're looking for will always be at the end of the section - // table, so reverse the direction of iteration. - int shndx = is_dwp_ ? GetNumSections() - k - 1 : k; - const char *name = GetSectionName(section_headers_[shndx].sh_name); - if (name != NULL && ElfReader::SectionNamesMatch(section_name, name)) { - const ElfSectionReader *section = GetSection(shndx); - if (section == NULL) { - return NULL; - } else { - *size = section->section_size(); - return section->contents(); - } - } - } - return NULL; - } - - // This is like GetSectionContentsByName() but it returns a lot of extra - // information about the section. - const char *GetSectionInfoByName(const string §ion_name, - ElfReader::SectionInfo *info) { - for (unsigned int k = 0u; k < GetNumSections(); ++k) { - // When searching for sections in a .dwp file, the sections - // we're looking for will always be at the end of the section - // table, so reverse the direction of iteration. - int shndx = is_dwp_ ? GetNumSections() - k - 1 : k; - const char *name = GetSectionName(section_headers_[shndx].sh_name); - if (name != NULL && ElfReader::SectionNamesMatch(section_name, name)) { - const ElfSectionReader *section = GetSection(shndx); - if (section == NULL) { - return NULL; - } else { - info->type = section->header().sh_type; - info->flags = section->header().sh_flags; - info->addr = section->header().sh_addr; - info->offset = section->header().sh_offset; - info->size = section->header().sh_size; - info->link = section->header().sh_link; - info->info = section->header().sh_info; - info->addralign = section->header().sh_addralign; - info->entsize = section->header().sh_entsize; - return section->contents(); - } - } - } - return NULL; - } - - // p_vaddr of the first PT_LOAD segment (if any), or 0 if no PT_LOAD - // segments are present. This is the address an ELF image was linked - // (by static linker) to be loaded at. Usually (but not always) 0 for - // shared libraries and position-independent executables. - uint64 VaddrOfFirstLoadSegment() const { - // Relocatable objects (of type ET_REL) do not have LOAD segments. - if (header_.e_type == ET_REL) { - return 0; - } - for (int i = 0; i < GetNumProgramHeaders(); ++i) { - if (program_headers_[i].p_type == PT_LOAD) { - return program_headers_[i].p_vaddr; - } - } - return 0; - } - - // According to the LSB ("ELF special sections"), sections with debug - // info are prefixed by ".debug". The names are not specified, but they - // look like ".debug_line", ".debug_info", etc. - bool HasDebugSections() { - // Debug sections are likely to be near the end, so reverse the - // direction of iteration. - for (int k = GetNumSections() - 1; k >= 0; --k) { - const char *name = GetSectionName(section_headers_[k].sh_name); - if (strncmp(name, ".debug", strlen(".debug")) == 0) return true; - if (strncmp(name, ".zdebug", strlen(".zdebug")) == 0) return true; - } - return false; - } - - bool IsDynamicSharedObject() const { - return header_.e_type == ET_DYN; - } - - // Return the number of sections. - uint64_t GetNumSections() const { - if (HasManySections()) - return first_section_header_.sh_size; - return header_.e_shnum; - } - - private: - typedef vector > AddrToSymMap; - - static bool AddrToSymSorter(const typename AddrToSymMap::value_type& lhs, - const typename AddrToSymMap::value_type& rhs) { - return lhs.first < rhs.first; - } - - static bool AddrToSymEquals(const typename AddrToSymMap::value_type& lhs, - const typename AddrToSymMap::value_type& rhs) { - return lhs.first == rhs.first; - } - - // Does this ELF file have too many sections to fit in the program header? - bool HasManySections() const { - return header_.e_shnum == SHN_UNDEF; - } - - // Return the number of program headers. - int GetNumProgramHeaders() const { - if (HasManySections() && header_.e_phnum == 0xffff && - first_section_header_.sh_info != 0) - return first_section_header_.sh_info; - return header_.e_phnum; - } - - // Return the index of the string table. - int GetStringTableIndex() const { - if (HasManySections()) { - if (header_.e_shstrndx == 0xffff) - return first_section_header_.sh_link; - else if (header_.e_shstrndx >= GetNumSections()) - return 0; - } - return header_.e_shstrndx; - } - - // Given an offset into the section header string table, return the - // section name. - const char *GetSectionName(typename ElfArch::Word sh_name) { - const ElfSectionReader *shstrtab = - GetSection(GetStringTableIndex()); - if (shstrtab != NULL) { - return shstrtab->GetOffset(sh_name); - } - return NULL; - } - - // Return an ElfSectionReader for the given section. The reader will - // be freed when this object is destroyed. - const ElfSectionReader *GetSection(int num) { - const char *name; - // Hard-coding the name for the section-name string table prevents - // infinite recursion. - if (num == GetStringTableIndex()) - name = ".shstrtab"; - else - name = GetSectionNameByIndex(num); - ElfSectionReader *& reader = sections_[num]; - if (reader == NULL) - reader = new ElfSectionReader(name, path_, fd_, - section_headers_[num]); - return reader; - } - - // Parse out the overall header information from the file and assert - // that it looks sane. This contains information like the magic - // number and target architecture. - bool ParseHeaders(int fd, const string &path) { - // Read in the global ELF header. - if (pread(fd, &header_, sizeof(header_), 0) != sizeof(header_)) { - return false; - } - - // Must be an executable, dynamic shared object or relocatable object - if (header_.e_type != ET_EXEC && - header_.e_type != ET_DYN && - header_.e_type != ET_REL) { - return false; - } - // Need a section header. - if (header_.e_shoff == 0) { - return false; - } - - if (header_.e_shnum == SHN_UNDEF) { - // The number of sections in the program header is only a 16-bit value. In - // the event of overflow (greater than SHN_LORESERVE sections), e_shnum - // will read SHN_UNDEF and the true number of section header table entries - // is found in the sh_size field of the first section header. - // See: http://www.sco.com/developers/gabi/2003-12-17/ch4.sheader.html - if (pread(fd, &first_section_header_, sizeof(first_section_header_), - header_.e_shoff) != sizeof(first_section_header_)) { - return false; - } - } - - // Dynamically allocate enough space to store the section headers - // and read them out of the file. - const int section_headers_size = - GetNumSections() * sizeof(*section_headers_); - section_headers_ = new typename ElfArch::Shdr[section_headers_size]; - if (pread(fd, section_headers_, section_headers_size, header_.e_shoff) != - section_headers_size) { - return false; - } - - // Dynamically allocate enough space to store the program headers - // and read them out of the file. - //const int program_headers_size = - // GetNumProgramHeaders() * sizeof(*program_headers_); - program_headers_ = new typename ElfArch::Phdr[GetNumProgramHeaders()]; - - // Presize the sections array for efficiency. - sections_.resize(GetNumSections(), NULL); - return true; - } - - // Given the "value" of a function descriptor return the address of the - // function (i.e. the dereferenced value). Otherwise return "value". - uint64 AdjustPPC64FunctionDescriptorSymbolValue(uint64 value) { - if (opd_section_ != NULL && - opd_info_.addr <= value && - value < opd_info_.addr + opd_info_.size) { - uint64 offset = value - opd_info_.addr; - return (*reinterpret_cast(opd_section_ + offset)); - } - return value; - } - - void AdjustSymbolValue(typename ElfArch::Sym* sym) { - switch (header_.e_machine) { - case EM_ARM: - // For ARM architecture, if the LSB of the function symbol offset is set, - // it indicates a Thumb function. This bit should not be taken literally. - // Clear it. - if (ElfArch::Type(sym) == STT_FUNC) - sym->st_value = AdjustARMThumbSymbolValue(sym->st_value); - break; - case EM_386: - // No adjustment needed for Intel x86 architecture. However, explicitly - // define this case as we use it quite often. - break; - case EM_PPC64: - // PowerPC64 currently has function descriptors as part of the ABI. - // Function symbols need to be adjusted accordingly. - if (ElfArch::Type(sym) == STT_FUNC) - sym->st_value = AdjustPPC64FunctionDescriptorSymbolValue(sym->st_value); - break; - default: - break; - } - } - - friend class SymbolIterator; - - // The file we're reading. - const string path_; - // Open file descriptor for path_. Not owned by this object. - const int fd_; - - // The global header of the ELF file. - typename ElfArch::Ehdr header_; - - // The header of the first section. This may be used to supplement the ELF - // file header. - typename ElfArch::Shdr first_section_header_; - - // Array of GetNumSections() section headers, allocated when we read - // in the global header. - typename ElfArch::Shdr *section_headers_; - - // Array of GetNumProgramHeaders() program headers, allocated when we read - // in the global header. - typename ElfArch::Phdr *program_headers_; - - // An array of pointers to ElfSectionReaders. Sections are - // mmaped as they're needed and not released until this object is - // destroyed. - vector*> sections_; - - // For PowerPC64 we need to keep track of function descriptors when looking up - // values for funtion symbols values. Function descriptors are kept in the - // .opd section and are dereferenced to find the function address. - ElfReader::SectionInfo opd_info_; - const char *opd_section_; // Must be checked for NULL before use. - int64 base_for_text_; - - // Read PLT-related sections for the current architecture. - bool plts_supported_; - // Code size of each PLT function for the current architecture. - size_t plt_code_size_; - // Size of the special first entry in the .plt section that calls the runtime - // loader resolution routine, and that all other entries jump to when doing - // lazy symbol binding. - size_t plt0_size_; - - // Maps a dynamic symbol index to a PLT offset. - // The vector entry index is the dynamic symbol index. - std::vector symbols_plt_offsets_; - - // Container for PLT function name strings. These strings are passed by - // reference to SymbolSink::AddSymbol() so they need to be stored somewhere. - std::vector plt_function_names_; - - bool visited_relocation_entries_; - - // True if this is a .dwp file. - bool is_dwp_; -}; - -ElfReader::ElfReader(const string &path) - : path_(path), fd_(-1), impl32_(NULL), impl64_(NULL) { - // linux 2.6.XX kernel can show deleted files like this: - // /var/run/nscd/dbYLJYaE (deleted) - // and the kernel-supplied vdso and vsyscall mappings like this: - // [vdso] - // [vsyscall] - if (MyHasSuffixString(path, " (deleted)")) - return; - if (path == "[vdso]") - return; - if (path == "[vsyscall]") - return; - - fd_ = open(path.c_str(), O_RDONLY); -} - -ElfReader::~ElfReader() { - if (fd_ != -1) - close(fd_); - if (impl32_ != NULL) - delete impl32_; - if (impl64_ != NULL) - delete impl64_; -} - - -// The only word-size specific part of this file is IsNativeElfFile(). -#if __WORDSIZE == 32 -#define NATIVE_ELF_ARCH Elf32 -#elif __WORDSIZE == 64 -#define NATIVE_ELF_ARCH Elf64 -#else -#error "Invalid word size" -#endif - -template -static bool IsElfFile(const int fd, const string &path) { - if (fd < 0) - return false; - if (!ElfReaderImpl::IsArchElfFile(fd, NULL)) { - // No error message here. IsElfFile gets called many times. - return false; - } - return true; -} - -bool ElfReader::IsNativeElfFile() const { - return IsElfFile(fd_, path_); -} - -bool ElfReader::IsElf32File() const { - return IsElfFile(fd_, path_); -} - -bool ElfReader::IsElf64File() const { - return IsElfFile(fd_, path_); -} - -/* -void ElfReader::AddSymbols(SymbolMap *symbols, - uint64 mem_offset, uint64 file_offset, - uint64 length) { - if (fd_ < 0) - return; - // TODO(chatham): Actually use the information about file offset and - // the length of the mapped section. On some machines the data - // section gets mapped as executable, and we'll end up reading the - // file twice and getting some of the offsets wrong. - if (IsElf32File()) { - GetImpl32()->GetSymbolPositions(symbols, SHT_SYMTAB, - mem_offset, file_offset); - GetImpl32()->GetSymbolPositions(symbols, SHT_DYNSYM, - mem_offset, file_offset); - } else if (IsElf64File()) { - GetImpl64()->GetSymbolPositions(symbols, SHT_SYMTAB, - mem_offset, file_offset); - GetImpl64()->GetSymbolPositions(symbols, SHT_DYNSYM, - mem_offset, file_offset); - } -} -*/ - -void ElfReader::VisitSymbols(ElfReader::SymbolSink *sink) { - VisitSymbols(sink, -1, -1); -} - -void ElfReader::VisitSymbols(ElfReader::SymbolSink *sink, - int symbol_binding, - int symbol_type) { - VisitSymbols(sink, symbol_binding, symbol_type, false); -} - -void ElfReader::VisitSymbols(ElfReader::SymbolSink *sink, - int symbol_binding, - int symbol_type, - bool get_raw_symbol_values) { - if (IsElf32File()) { - GetImpl32()->VisitRelocationEntries(); - GetImpl32()->VisitSymbols(SHT_SYMTAB, sink, symbol_binding, symbol_type, - get_raw_symbol_values); - GetImpl32()->VisitSymbols(SHT_DYNSYM, sink, symbol_binding, symbol_type, - get_raw_symbol_values); - } else if (IsElf64File()) { - GetImpl64()->VisitRelocationEntries(); - GetImpl64()->VisitSymbols(SHT_SYMTAB, sink, symbol_binding, symbol_type, - get_raw_symbol_values); - GetImpl64()->VisitSymbols(SHT_DYNSYM, sink, symbol_binding, symbol_type, - get_raw_symbol_values); - } -} - -uint64 ElfReader::VaddrOfFirstLoadSegment() { - if (IsElf32File()) { - return GetImpl32()->VaddrOfFirstLoadSegment(); - } else if (IsElf64File()) { - return GetImpl64()->VaddrOfFirstLoadSegment(); - } else { - return 0; - } -} - -const char *ElfReader::GetSectionName(int shndx) { - if (shndx < 0 || static_cast(shndx) >= GetNumSections()) return NULL; - if (IsElf32File()) { - return GetImpl32()->GetSectionNameByIndex(shndx); - } else if (IsElf64File()) { - return GetImpl64()->GetSectionNameByIndex(shndx); - } else { - return NULL; - } -} - -uint64 ElfReader::GetNumSections() { - if (IsElf32File()) { - return GetImpl32()->GetNumSections(); - } else if (IsElf64File()) { - return GetImpl64()->GetNumSections(); - } else { - return 0; - } -} - -const char *ElfReader::GetSectionByIndex(int shndx, size_t *size) { - if (IsElf32File()) { - return GetImpl32()->GetSectionContentsByIndex(shndx, size); - } else if (IsElf64File()) { - return GetImpl64()->GetSectionContentsByIndex(shndx, size); - } else { - return NULL; - } -} - -const char *ElfReader::GetSectionByName(const string §ion_name, - size_t *size) { - if (IsElf32File()) { - return GetImpl32()->GetSectionContentsByName(section_name, size); - } else if (IsElf64File()) { - return GetImpl64()->GetSectionContentsByName(section_name, size); - } else { - return NULL; - } -} - -const char *ElfReader::GetSectionInfoByName(const string §ion_name, - SectionInfo *info) { - if (IsElf32File()) { - return GetImpl32()->GetSectionInfoByName(section_name, info); - } else if (IsElf64File()) { - return GetImpl64()->GetSectionInfoByName(section_name, info); - } else { - return NULL; - } -} - -bool ElfReader::SectionNamesMatch(const string &name, const string &sh_name) { - if ((name.find(".debug_", 0) == 0) && (sh_name.find(".zdebug_", 0) == 0)) { - const string name_suffix(name, strlen(".debug_")); - const string sh_name_suffix(sh_name, strlen(".zdebug_")); - return name_suffix == sh_name_suffix; - } - return name == sh_name; -} - -bool ElfReader::IsDynamicSharedObject() { - if (IsElf32File()) { - return GetImpl32()->IsDynamicSharedObject(); - } else if (IsElf64File()) { - return GetImpl64()->IsDynamicSharedObject(); - } else { - return false; - } -} - -ElfReaderImpl *ElfReader::GetImpl32() { - if (impl32_ == NULL) { - impl32_ = new ElfReaderImpl(path_, fd_); - } - return impl32_; -} - -ElfReaderImpl *ElfReader::GetImpl64() { - if (impl64_ == NULL) { - impl64_ = new ElfReaderImpl(path_, fd_); - } - return impl64_; -} - -// Return true if file is an ELF binary of ElfArch, with unstripped -// debug info (debug_only=true) or symbol table (debug_only=false). -// Otherwise, return false. -template -static bool IsNonStrippedELFBinaryImpl(const string &path, const int fd, - bool debug_only) { - if (!ElfReaderImpl::IsArchElfFile(fd, NULL)) return false; - ElfReaderImpl elf_reader(path, fd); - return debug_only ? - elf_reader.HasDebugSections() - : (elf_reader.GetSectionByType(SHT_SYMTAB) != NULL); -} - -// Helper for the IsNon[Debug]StrippedELFBinary functions. -static bool IsNonStrippedELFBinaryHelper(const string &path, - bool debug_only) { - const int fd = open(path.c_str(), O_RDONLY); - if (fd == -1) { - return false; - } - - if (IsNonStrippedELFBinaryImpl(path, fd, debug_only) || - IsNonStrippedELFBinaryImpl(path, fd, debug_only)) { - close(fd); - return true; - } - close(fd); - return false; -} - -bool ElfReader::IsNonStrippedELFBinary(const string &path) { - return IsNonStrippedELFBinaryHelper(path, false); -} - -bool ElfReader::IsNonDebugStrippedELFBinary(const string &path) { - return IsNonStrippedELFBinaryHelper(path, true); -} -} // namespace dwarf2reader diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.h deleted file mode 100644 index 07477341fd92..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/elf_reader.h +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright 2005 Google Inc. All Rights Reserved. -// Author: chatham@google.com (Andrew Chatham) -// Author: satorux@google.com (Satoru Takabayashi) -// -// ElfReader handles reading in ELF. It can extract symbols from the -// current process, which may be used to symbolize stack traces -// without having to make a potentially dangerous call to fork(). -// -// ElfReader dynamically allocates memory, so it is not appropriate to -// use once the address space might be corrupted, such as during -// process death. -// -// ElfReader supports both 32-bit and 64-bit ELF binaries. - -#ifndef COMMON_DWARF_ELF_READER_H__ -#define COMMON_DWARF_ELF_READER_H__ - -#include -#include - -#include "common/dwarf/types.h" - -using std::string; -using std::vector; -using std::pair; - -namespace dwarf2reader { - -class SymbolMap; -class Elf32; -class Elf64; -template -class ElfReaderImpl; - -class ElfReader { - public: - explicit ElfReader(const string &path); - ~ElfReader(); - - // Parse the ELF prologue of this file and return whether it was - // successfully parsed and matches the word size and byte order of - // the current process. - bool IsNativeElfFile() const; - - // Similar to IsNativeElfFile but checks if it's a 32-bit ELF file. - bool IsElf32File() const; - - // Similar to IsNativeElfFile but checks if it's a 64-bit ELF file. - bool IsElf64File() const; - - // Checks if it's an ELF file of type ET_DYN (shared object file). - bool IsDynamicSharedObject(); - - // Add symbols in the given ELF file into the provided SymbolMap, - // assuming that the file has been loaded into the specified - // offset. - // - // The remaining arguments are typically taken from a - // ProcMapsIterator (base/sysinfo.h) and describe which portions of - // the ELF file are mapped into which parts of memory: - // - // mem_offset - position at which the segment is mapped into memory - // file_offset - offset in the file where the mapping begins - // length - length of the mapped segment - void AddSymbols(SymbolMap *symbols, - uint64 mem_offset, uint64 file_offset, - uint64 length); - - class SymbolSink { - public: - virtual ~SymbolSink() {} - virtual void AddSymbol(const char *name, uint64 address, uint64 size) = 0; - }; - - // Like AddSymbols above, but with no address correction. - // Processes any SHT_SYMTAB section, followed by any SHT_DYNSYM section. - void VisitSymbols(SymbolSink *sink); - - // Like VisitSymbols above, but for a specific symbol binding/type. - // A negative value for the binding and type parameters means any - // binding or type. - void VisitSymbols(SymbolSink *sink, int symbol_binding, int symbol_type); - - // Like VisitSymbols above but can optionally export raw symbol values instead - // of adjusted ones. - void VisitSymbols(SymbolSink *sink, int symbol_binding, int symbol_type, - bool get_raw_symbol_values); - - // p_vaddr of the first PT_LOAD segment (if any), or 0 if no PT_LOAD - // segments are present. This is the address an ELF image was linked - // (by static linker) to be loaded at. Usually (but not always) 0 for - // shared libraries and position-independent executables. - uint64 VaddrOfFirstLoadSegment(); - - // Return the name of section "shndx". Returns NULL if the section - // is not found. - const char *GetSectionName(int shndx); - - // Return the number of sections in the given ELF file. - uint64 GetNumSections(); - - // Get section "shndx" from the given ELF file. On success, return - // the pointer to the section and store the size in "size". - // On error, return NULL. The returned section data is only valid - // until the ElfReader gets destroyed. - const char *GetSectionByIndex(int shndx, size_t *size); - - // Get section with "section_name" (ex. ".text", ".symtab") in the - // given ELF file. On success, return the pointer to the section - // and store the size in "size". On error, return NULL. The - // returned section data is only valid until the ElfReader gets - // destroyed. - const char *GetSectionByName(const string §ion_name, size_t *size); - - // This is like GetSectionByName() but it returns a lot of extra information - // about the section. The SectionInfo structure is almost identical to - // the typedef struct Elf64_Shdr defined in , but is redefined - // here so that the many short macro names in don't have to be - // added to our already cluttered namespace. - struct SectionInfo { - uint32 type; // Section type (SHT_xxx constant from elf.h). - uint64 flags; // Section flags (SHF_xxx constants from elf.h). - uint64 addr; // Section virtual address at execution. - uint64 offset; // Section file offset. - uint64 size; // Section size in bytes. - uint32 link; // Link to another section. - uint32 info; // Additional section information. - uint64 addralign; // Section alignment. - uint64 entsize; // Entry size if section holds a table. - }; - const char *GetSectionInfoByName(const string §ion_name, - SectionInfo *info); - - // Check if "path" is an ELF binary that has not been stripped of symbol - // tables. This function supports both 32-bit and 64-bit ELF binaries. - static bool IsNonStrippedELFBinary(const string &path); - - // Check if "path" is an ELF binary that has not been stripped of debug - // info. Unlike IsNonStrippedELFBinary, this function will return - // false for binaries passed through "strip -S". - static bool IsNonDebugStrippedELFBinary(const string &path); - - // Match a requested section name with the section name as it - // appears in the elf-file, adjusting for compressed debug section - // names. For example, returns true if name == ".debug_abbrev" and - // sh_name == ".zdebug_abbrev" - static bool SectionNamesMatch(const string &name, const string &sh_name); - - private: - // Lazily initialize impl32_ and return it. - ElfReaderImpl *GetImpl32(); - // Ditto for impl64_. - ElfReaderImpl *GetImpl64(); - - // Path of the file we're reading. - const string path_; - // Read-only file descriptor for the file. May be -1 if there was an - // error during open. - int fd_; - ElfReaderImpl *impl32_; - ElfReaderImpl *impl64_; -}; - -} // namespace dwarf2reader - -#endif // COMMON_DWARF_ELF_READER_H__ diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build b/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build index e1ccc65aca92..27df0e540be2 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/moz.build @@ -9,7 +9,6 @@ HOST_SOURCES += [ 'bytereader.cc', 'dwarf2diehandler.cc', 'dwarf2reader.cc', - 'elf_reader.cc', 'functioninfo.cc', ] HOST_CXXFLAGS += [ @@ -27,9 +26,4 @@ HOST_CXXFLAGS += [ '-funsigned-char', ] -if CONFIG['OS_ARCH'] == 'Darwin': - HOST_CXXFLAGS += [ - '-stdlib=libc++', - ] - include('/toolkit/crashreporter/crashreporter.mozbuild') diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf/types.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf/types.h index 59dda3160085..61ca4579a9b3 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf/types.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf/types.h @@ -45,7 +45,11 @@ typedef unsigned short uint16; typedef unsigned int uint32; typedef unsigned long long uint64; -typedef intptr_t intptr; -typedef uintptr_t uintptr; +#ifdef __PTRDIFF_TYPE__ +typedef __PTRDIFF_TYPE__ intptr; +typedef unsigned __PTRDIFF_TYPE__ uintptr; +#else +#error "Can't find pointer-sized integral types." +#endif #endif // _COMMON_DWARF_TYPES_H__ diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.cc index 479e39b22125..afe22252b175 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.cc @@ -43,7 +43,6 @@ #include #endif #include -#include #include #include @@ -141,7 +140,7 @@ DwarfCUToModule::FileContext::~FileContext() { } void DwarfCUToModule::FileContext::AddSectionToSectionMap( - const string& name, const uint8_t *contents, uint64 length) { + const string& name, const char* contents, uint64 length) { section_map_[name] = std::make_pair(contents, length); } @@ -417,8 +416,7 @@ string DwarfCUToModule::GenericDIEHandler::ComputeQualifiedName() { // If this DIE was marked as a declaration, record its names in the // specification table. - if ((declaration_ && qualified_name) || - (unqualified_name && enclosing_name)) { + if (declaration_ && qualified_name || (unqualified_name && enclosing_name)) { Specification spec; if (qualified_name) { spec.qualified_name = *qualified_name; @@ -816,7 +814,7 @@ void DwarfCUToModule::ReadSourceLines(uint64 offset) { cu_context_->reporter->MissingSection(".debug_line"); return; } - const uint8_t *section_start = map_entry->second.first; + const char *section_start = map_entry->second.first; uint64 section_length = map_entry->second.second; if (offset >= section_length) { cu_context_->reporter->BadLineInfoOffset(offset); diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.h b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.h index fca92710e6f7..fd9c380d9d8b 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.h +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module.h @@ -39,8 +39,6 @@ #ifndef COMMON_LINUX_DWARF_CU_TO_MODULE_H__ #define COMMON_LINUX_DWARF_CU_TO_MODULE_H__ -#include - #include #include "common/language.h" @@ -86,7 +84,7 @@ class DwarfCUToModule: public dwarf2reader::RootDIEHandler { // Add CONTENTS of size LENGTH to the section map as NAME. void AddSectionToSectionMap(const string& name, - const uint8_t *contents, + const char* contents, uint64 length); // Clear the section map for testing. @@ -142,7 +140,7 @@ class DwarfCUToModule: public dwarf2reader::RootDIEHandler { // mappings, given a pointer to some DWARF line number data // PROGRAM, and an overestimate of its size. Add no zero-length // lines to LINES. - virtual void ReadProgram(const uint8_t *program, uint64 length, + virtual void ReadProgram(const char *program, uint64 length, Module *module, vector *lines) = 0; }; diff --git a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc index 619e90a2ee5b..d5c4f590695b 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/dwarf_cu_to_module_unittest.cc @@ -31,8 +31,6 @@ // dwarf_cu_to_module.cc: Unit tests for google_breakpad::DwarfCUToModule. -#include - #include #include #include @@ -67,7 +65,7 @@ using ::testing::ValuesIn; class MockLineToModuleHandler: public DwarfCUToModule::LineToModuleHandler { public: MOCK_METHOD1(StartCompilationUnit, void(const string& compilation_dir)); - MOCK_METHOD4(ReadProgram, void(const uint8_t *program, uint64 length, + MOCK_METHOD4(ReadProgram, void(const char* program, uint64 length, Module *module, vector *lines)); }; @@ -113,7 +111,7 @@ class CUFixtureBase { public: explicit AppendLinesFunctor( const vector *lines) : lines_(lines) { } - void operator()(const uint8_t *program, uint64 length, + void operator()(const char *program, uint64 length, Module *module, vector *lines) { lines->insert(lines->end(), lines_->begin(), lines_->end()); } @@ -287,7 +285,7 @@ class CUFixtureBase { // Mock line program reader. MockLineToModuleHandler line_reader_; AppendLinesFunctor appender_; - static const uint8_t dummy_line_program_[]; + static const char dummy_line_program_[]; static const size_t dummy_line_size_; MockWarningReporter reporter_; @@ -304,7 +302,7 @@ class CUFixtureBase { bool functions_filled_; }; -const uint8_t CUFixtureBase::dummy_line_program_[] = "lots of fun data"; +const char CUFixtureBase::dummy_line_program_[] = "lots of fun data"; const size_t CUFixtureBase::dummy_line_size_ = sizeof(CUFixtureBase::dummy_line_program_); @@ -377,7 +375,7 @@ void CUFixtureBase::ProcessStrangeAttributes( handler->ProcessAttributeReference((DwarfAttribute) 0xf7f7480f, (DwarfForm) 0x829e038a, 0x50fddef44734fdecULL); - static const uint8_t buffer[10] = "frobynode"; + static const char buffer[10] = "frobynode"; handler->ProcessAttributeBuffer((DwarfAttribute) 0xa55ffb51, (DwarfForm) 0x2f43b041, buffer, sizeof(buffer)); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc index cd99bee66103..4222ce30281b 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -65,7 +64,6 @@ #include "common/linux/elfutils-inl.h" #include "common/linux/elf_symbols_to_module.h" #include "common/linux/file_id.h" -#include "common/memory.h" #include "common/module.h" #include "common/scoped_ptr.h" #ifndef NO_STABS_SUPPORT @@ -89,18 +87,14 @@ using google_breakpad::DwarfLineToModule; using google_breakpad::ElfClass; using google_breakpad::ElfClass32; using google_breakpad::ElfClass64; -using google_breakpad::FileID; using google_breakpad::FindElfSectionByName; using google_breakpad::GetOffset; using google_breakpad::IsValidElf; -using google_breakpad::kDefaultBuildIdSize; using google_breakpad::Module; -using google_breakpad::PageAllocator; #ifndef NO_STABS_SUPPORT using google_breakpad::StabsToModule; #endif using google_breakpad::scoped_ptr; -using google_breakpad::wasteful_vector; // Define AARCH64 ELF architecture if host machine does not include this define. #ifndef EM_AARCH64 @@ -232,7 +226,7 @@ class DumperLineToModule: public DwarfCUToModule::LineToModuleHandler { void StartCompilationUnit(const string& compilation_dir) { compilation_dir_ = compilation_dir; } - void ReadProgram(const uint8_t *program, uint64 length, + void ReadProgram(const char* program, uint64 length, Module* module, std::vector* lines) { DwarfLineToModule handler(module, compilation_dir_, lines); dwarf2reader::LineInfo parser(program, length, byte_reader_, &handler); @@ -270,8 +264,8 @@ bool LoadDwarf(const string& dwarf_filename, string name = GetOffset(elf_header, section_names->sh_offset) + section->sh_name; - const uint8_t *contents = GetOffset(elf_header, - section->sh_offset); + const char* contents = GetOffset(elf_header, + section->sh_offset); file_context.AddSectionToSectionMap(name, contents, section->sh_size); } @@ -280,7 +274,7 @@ bool LoadDwarf(const string& dwarf_filename, dwarf2reader::SectionMap::const_iterator debug_info_entry = file_context.section_map().find(".debug_info"); assert(debug_info_entry != file_context.section_map().end()); - const std::pair& debug_info_section = + const std::pair& debug_info_section = debug_info_entry->second; // This should never have been called if the file doesn't have a // .debug_info section. @@ -294,8 +288,7 @@ bool LoadDwarf(const string& dwarf_filename, // Make a Dwarf2Handler that drives the DIEHandler. dwarf2reader::DIEDispatcher die_dispatcher(&root_handler); // Make a DWARF parser for the compilation unit at OFFSET. - dwarf2reader::CompilationUnit reader(dwarf_filename, - file_context.section_map(), + dwarf2reader::CompilationUnit reader(file_context.section_map(), offset, &byte_reader, &die_dispatcher); @@ -358,8 +351,8 @@ bool LoadDwarfCFI(const string& dwarf_filename, dwarf2reader::ENDIANNESS_BIG : dwarf2reader::ENDIANNESS_LITTLE; // Find the call frame information and its size. - const uint8_t *cfi = - GetOffset(elf_header, section->sh_offset); + const char* cfi = + GetOffset(elf_header, section->sh_offset); size_t cfi_size = section->sh_size; // Plug together the parser, handler, and their entourages. @@ -492,13 +485,12 @@ bool IsSameFile(const char* left_abspath, const string& right_path) { // Read the .gnu_debuglink and get the debug file name. If anything goes // wrong, return an empty string. -string ReadDebugLink(const uint8_t *debuglink, +string ReadDebugLink(const char* debuglink, const size_t debuglink_size, const bool big_endian, const string& obj_file, const std::vector& debug_dirs) { - // Include '\0' + CRC32 (4 bytes). - size_t debuglink_len = strlen(reinterpret_cast(debuglink)) + 5; + size_t debuglink_len = strlen(debuglink) + 5; // Include '\0' + CRC32. debuglink_len = 4 * ((debuglink_len + 3) / 4); // Round up to 4 bytes. // Sanity check. @@ -519,8 +511,7 @@ string ReadDebugLink(const uint8_t *debuglink, std::vector::const_iterator it; for (it = debug_dirs.begin(); it < debug_dirs.end(); ++it) { const string& debug_dir = *it; - debuglink_path = debug_dir + "/" + - reinterpret_cast(debuglink); + debuglink_path = debug_dir + "/" + debuglink; // There is the annoying case of /path/to/foo.so having foo.so as the // debug link file name. Thus this may end up opening /path/to/foo.so again, @@ -742,61 +733,32 @@ bool LoadSymbols(const string& obj_file, } // See if there are export symbols available. - const Shdr* symtab_section = - FindElfSectionByName(".symtab", SHT_SYMTAB, - sections, names, names_end, - elf_header->e_shnum); - const Shdr* strtab_section = - FindElfSectionByName(".strtab", SHT_STRTAB, - sections, names, names_end, - elf_header->e_shnum); - if (symtab_section && strtab_section) { - info->LoadedSection(".symtab"); + const Shdr* dynsym_section = + FindElfSectionByName(".dynsym", SHT_DYNSYM, + sections, names, names_end, + elf_header->e_shnum); + const Shdr* dynstr_section = + FindElfSectionByName(".dynstr", SHT_STRTAB, + sections, names, names_end, + elf_header->e_shnum); + if (dynsym_section && dynstr_section) { + info->LoadedSection(".dynsym"); - const uint8_t* symtab = + const uint8_t* dynsyms = GetOffset(elf_header, - symtab_section->sh_offset); - const uint8_t* strtab = + dynsym_section->sh_offset); + const uint8_t* dynstrs = GetOffset(elf_header, - strtab_section->sh_offset); + dynstr_section->sh_offset); bool result = - ELFSymbolsToModule(symtab, - symtab_section->sh_size, - strtab, - strtab_section->sh_size, + ELFSymbolsToModule(dynsyms, + dynsym_section->sh_size, + dynstrs, + dynstr_section->sh_size, big_endian, ElfClass::kAddrSize, module); found_usable_info = found_usable_info || result; - } else { - // Look in dynsym only if full symbol table was not available. - const Shdr* dynsym_section = - FindElfSectionByName(".dynsym", SHT_DYNSYM, - sections, names, names_end, - elf_header->e_shnum); - const Shdr* dynstr_section = - FindElfSectionByName(".dynstr", SHT_STRTAB, - sections, names, names_end, - elf_header->e_shnum); - if (dynsym_section && dynstr_section) { - info->LoadedSection(".dynsym"); - - const uint8_t* dynsyms = - GetOffset(elf_header, - dynsym_section->sh_offset); - const uint8_t* dynstrs = - GetOffset(elf_header, - dynstr_section->sh_offset); - bool result = - ELFSymbolsToModule(dynsyms, - dynsym_section->sh_size, - dynstrs, - dynstr_section->sh_size, - big_endian, - ElfClass::kAddrSize, - module); - found_usable_info = found_usable_info || result; - } } } @@ -882,9 +844,9 @@ bool LoadSymbols(const string& obj_file, names_end, elf_header->e_shnum); if (gnu_debuglink_section) { if (!info->debug_dirs().empty()) { - const uint8_t *debuglink_contents = - GetOffset(elf_header, - gnu_debuglink_section->sh_offset); + const char* debuglink_contents = + GetOffset(elf_header, + gnu_debuglink_section->sh_offset); string debuglink_file = ReadDebugLink(debuglink_contents, gnu_debuglink_section->sh_size, @@ -935,6 +897,25 @@ const char* ElfArchitecture(const typename ElfClass::Ehdr* elf_header) { } } +// Format the Elf file identifier in IDENTIFIER as a UUID with the +// dashes removed. +string FormatIdentifier(unsigned char identifier[16]) { + char identifier_str[40]; + google_breakpad::FileID::ConvertIdentifierToString( + identifier, + identifier_str, + sizeof(identifier_str)); + string id_no_dash; + for (int i = 0; identifier_str[i] != '\0'; ++i) + if (identifier_str[i] != '-') + id_no_dash += identifier_str[i]; + // Add an extra "0" by the end. PDB files on Windows have an 'age' + // number appended to the end of the file identifier; this isn't + // really used or necessary on other platforms, but be consistent. + id_no_dash += '0'; + return id_no_dash; +} + // Return the non-directory portion of FILENAME: the portion after the // last slash, or the whole filename if there are no slashes. string BaseFileName(const string &filename) { @@ -977,12 +958,19 @@ bool SanitizeDebugFile(const typename ElfClass::Ehdr* debug_elf_header, } template -bool InitModuleForElfClass(const typename ElfClass::Ehdr* elf_header, - const string& obj_filename, - scoped_ptr& module) { - PageAllocator allocator; - wasteful_vector identifier(&allocator, kDefaultBuildIdSize); - if (!FileID::ElfFileIdentifierFromMappedFile(elf_header, identifier)) { +bool ReadSymbolDataElfClass(const typename ElfClass::Ehdr* elf_header, + const string& obj_filename, + const std::vector& debug_dirs, + const DumpOptions& options, + Module** out_module) { + typedef typename ElfClass::Ehdr Ehdr; + typedef typename ElfClass::Shdr Shdr; + + *out_module = NULL; + + unsigned char identifier[16]; + if (!google_breakpad::FileID::ElfFileIdentifierFromMappedFile(elf_header, + identifier)) { fprintf(stderr, "%s: unable to generate file identifier\n", obj_filename.c_str()); return false; @@ -995,41 +983,17 @@ bool InitModuleForElfClass(const typename ElfClass::Ehdr* elf_header, return false; } - string name = BaseFileName(obj_filename); - string os = "Linux"; - // Add an extra "0" at the end. PDB files on Windows have an 'age' - // number appended to the end of the file identifier; this isn't - // really used or necessary on other platforms, but be consistent. - string id = FileID::ConvertIdentifierToUUIDString(identifier) + "0"; - // This is just the raw Build ID in hex. - string code_id = FileID::ConvertIdentifierToString(identifier); - - module.reset(new Module(name, os, architecture, id, code_id)); - - return true; -} - -template -bool ReadSymbolDataElfClass(const typename ElfClass::Ehdr* elf_header, - const string& obj_filename, - const std::vector& debug_dirs, - const DumpOptions& options, - Module** out_module) { - typedef typename ElfClass::Ehdr Ehdr; - - *out_module = NULL; - - scoped_ptr module; - if (!InitModuleForElfClass(elf_header, obj_filename, module)) { - return false; - } - // Figure out what endianness this file is. bool big_endian; if (!ElfEndianness(elf_header, &big_endian)) return false; + string name = BaseFileName(obj_filename); + string os = "Linux"; + string id = FormatIdentifier(identifier); + LoadSymbolsInfo info(debug_dirs); + scoped_ptr module(new Module(name, os, architecture, id)); if (!LoadSymbols(obj_filename, big_endian, elf_header, !debug_dirs.empty(), &info, options, module.get())) { @@ -1044,9 +1008,7 @@ bool ReadSymbolDataElfClass(const typename ElfClass::Ehdr* elf_header, if (!LoadELF(debuglink_file, &debug_map_wrapper, reinterpret_cast(&debug_elf_header)) || !SanitizeDebugFile(debug_elf_header, debuglink_file, - obj_filename, - module->architecture().c_str(), - big_endian)) { + obj_filename, architecture, big_endian)) { return false; } @@ -1104,45 +1066,6 @@ bool WriteSymbolFile(const string &obj_file, return result; } -// Read the selected object file's debugging information, and write out the -// header only to |stream|. Return true on success; if an error occurs, report -// it and return false. -bool WriteSymbolFileHeader(const string& obj_file, - std::ostream &sym_stream) { - MmapWrapper map_wrapper; - void* elf_header = NULL; - if (!LoadELF(obj_file, &map_wrapper, &elf_header)) { - fprintf(stderr, "Could not load ELF file: %s\n", obj_file.c_str()); - return false; - } - - if (!IsValidElf(elf_header)) { - fprintf(stderr, "Not a valid ELF file: %s\n", obj_file.c_str()); - return false; - } - - int elfclass = ElfClass(elf_header); - scoped_ptr module; - if (elfclass == ELFCLASS32) { - if (!InitModuleForElfClass( - reinterpret_cast(elf_header), obj_file, module)) { - fprintf(stderr, "Failed to load ELF module: %s\n", obj_file.c_str()); - return false; - } - } else if (elfclass == ELFCLASS64) { - if (!InitModuleForElfClass( - reinterpret_cast(elf_header), obj_file, module)) { - fprintf(stderr, "Failed to load ELF module: %s\n", obj_file.c_str()); - return false; - } - } else { - fprintf(stderr, "Unsupported module file: %s\n", obj_file.c_str()); - return false; - } - - return module->Write(sym_stream, ALL_SYMBOL_DATA); -} - bool ReadSymbolData(const string& obj_file, const std::vector& debug_dirs, const DumpOptions& options, diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.h b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.h index 1f204cbadab9..636bb72f73e2 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.h @@ -67,12 +67,6 @@ bool WriteSymbolFile(const string &obj_file, const DumpOptions& options, std::ostream &sym_stream); -// Read the selected object file's debugging information, and write out the -// header only to |stream|. Return true on success; if an error occurs, report -// it and return false. -bool WriteSymbolFileHeader(const string& obj_file, - std::ostream &sym_stream); - // As above, but simply return the debugging information in MODULE // instead of writing it to a stream. The caller owns the resulting // Module object and must delete it when finished. diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols_unittest.cc index bb7b20076e6d..3f86dbe6a347 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols_unittest.cc @@ -40,8 +40,6 @@ #include #include "breakpad_googletest_includes.h" -#include "common/linux/elf_gnu_compat.h" -#include "common/linux/elfutils.h" #include "common/linux/dump_symbols.h" #include "common/linux/synth_elf.h" #include "common/module.h" @@ -56,7 +54,6 @@ bool ReadSymbolDataInternal(const uint8_t* obj_file, Module** module); using google_breakpad::synth_elf::ELF; -using google_breakpad::synth_elf::Notes; using google_breakpad::synth_elf::StringTable; using google_breakpad::synth_elf::SymbolTable; using google_breakpad::test_assembler::kLittleEndian; @@ -64,9 +61,7 @@ using google_breakpad::test_assembler::Section; using std::stringstream; using std::vector; using ::testing::Test; -using ::testing::Types; -template class DumpSymbols : public Test { public: void GetElfContents(ELF& elf) { @@ -83,11 +78,7 @@ class DumpSymbols : public Test { uint8_t* elfdata; }; -typedef Types ElfClasses; - -TYPED_TEST_CASE(DumpSymbols, ElfClasses); - -TYPED_TEST(DumpSymbols, Invalid) { +TEST_F(DumpSymbols, Invalid) { Elf32_Ehdr header; memset(&header, 0, sizeof(header)); Module* module; @@ -99,8 +90,8 @@ TYPED_TEST(DumpSymbols, Invalid) { &module)); } -TYPED_TEST(DumpSymbols, SimplePublic) { - ELF elf(TypeParam::kMachine, TypeParam::kClass, kLittleEndian); +TEST_F(DumpSymbols, SimplePublic32) { + ELF elf(EM_386, ELFCLASS32, kLittleEndian); // Zero out text section for simplicity. Section text(kLittleEndian); text.Append(4096, 0); @@ -108,11 +99,8 @@ TYPED_TEST(DumpSymbols, SimplePublic) { // Add a public symbol. StringTable table(kLittleEndian); - SymbolTable syms(kLittleEndian, TypeParam::kAddrSize, table); - syms.AddSymbol("superfunc", - (typename TypeParam::Addr)0x1000, - (typename TypeParam::Addr)0x10, - // ELF32_ST_INFO works for 32-or 64-bit. + SymbolTable syms(kLittleEndian, 4, table); + syms.AddSymbol("superfunc", (uint32_t)0x1000, (uint32_t)0x10, ELF32_ST_INFO(STB_GLOBAL, STT_FUNC), SHN_UNDEF + 1); int index = elf.AddSection(".dynstr", table, SHT_STRTAB); @@ -121,14 +109,14 @@ TYPED_TEST(DumpSymbols, SimplePublic) { SHF_ALLOC, // flags 0, // addr index, // link - sizeof(typename TypeParam::Sym)); // entsize + sizeof(Elf32_Sym)); // entsize elf.Finish(); - this->GetElfContents(elf); + GetElfContents(elf); Module* module; DumpOptions options(ALL_SYMBOL_DATA, true); - EXPECT_TRUE(ReadSymbolDataInternal(this->elfdata, + EXPECT_TRUE(ReadSymbolDataInternal(elfdata, "foo", vector(), options, @@ -136,40 +124,24 @@ TYPED_TEST(DumpSymbols, SimplePublic) { stringstream s; module->Write(s, ALL_SYMBOL_DATA); - const string expected = - string("MODULE Linux ") + TypeParam::kMachineName - + " 000000000000000000000000000000000 foo\n" - "INFO CODE_ID 00000000000000000000000000000000\n" - "PUBLIC 1000 0 superfunc\n"; - EXPECT_EQ(expected, s.str()); + EXPECT_EQ("MODULE Linux x86 000000000000000000000000000000000 foo\n" + "PUBLIC 1000 0 superfunc\n", + s.str()); delete module; } -TYPED_TEST(DumpSymbols, SimpleBuildID) { - ELF elf(TypeParam::kMachine, TypeParam::kClass, kLittleEndian); +TEST_F(DumpSymbols, SimplePublic64) { + ELF elf(EM_X86_64, ELFCLASS64, kLittleEndian); // Zero out text section for simplicity. Section text(kLittleEndian); text.Append(4096, 0); elf.AddSection(".text", text, SHT_PROGBITS); - // Add a Build ID - const uint8_t kExpectedIdentifierBytes[] = - {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13}; - Notes notes(kLittleEndian); - notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, - sizeof(kExpectedIdentifierBytes)); - elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE); - // Add a public symbol. StringTable table(kLittleEndian); - SymbolTable syms(kLittleEndian, TypeParam::kAddrSize, table); - syms.AddSymbol("superfunc", - (typename TypeParam::Addr)0x1000, - (typename TypeParam::Addr)0x10, - // ELF32_ST_INFO works for 32-or 64-bit. - ELF32_ST_INFO(STB_GLOBAL, STT_FUNC), + SymbolTable syms(kLittleEndian, 8, table); + syms.AddSymbol("superfunc", (uint64_t)0x1000, (uint64_t)0x10, + ELF64_ST_INFO(STB_GLOBAL, STT_FUNC), SHN_UNDEF + 1); int index = elf.AddSection(".dynstr", table, SHT_STRTAB); elf.AddSection(".dynsym", syms, @@ -177,14 +149,14 @@ TYPED_TEST(DumpSymbols, SimpleBuildID) { SHF_ALLOC, // flags 0, // addr index, // link - sizeof(typename TypeParam::Sym)); // entsize + sizeof(Elf64_Sym)); // entsize elf.Finish(); - this->GetElfContents(elf); + GetElfContents(elf); Module* module; DumpOptions options(ALL_SYMBOL_DATA, true); - EXPECT_TRUE(ReadSymbolDataInternal(this->elfdata, + EXPECT_TRUE(ReadSymbolDataInternal(elfdata, "foo", vector(), options, @@ -192,13 +164,9 @@ TYPED_TEST(DumpSymbols, SimpleBuildID) { stringstream s; module->Write(s, ALL_SYMBOL_DATA); - const string expected = - string("MODULE Linux ") + TypeParam::kMachineName - + " 030201000504070608090A0B0C0D0E0F0 foo\n" - "INFO CODE_ID 000102030405060708090A0B0C0D0E0F10111213\n" - "PUBLIC 1000 0 superfunc\n"; - EXPECT_EQ(expected, s.str()); - delete module; + EXPECT_EQ("MODULE Linux x86_64 000000000000000000000000000000000 foo\n" + "PUBLIC 1000 0 superfunc\n", + s.str()); } } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.h b/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.h index f34ba83142d3..dccdc235e290 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/elfutils.h @@ -49,13 +49,9 @@ struct ElfClass32 { typedef Elf32_Shdr Shdr; typedef Elf32_Half Half; typedef Elf32_Off Off; - typedef Elf32_Sym Sym; typedef Elf32_Word Word; - static const int kClass = ELFCLASS32; - static const uint16_t kMachine = EM_386; static const size_t kAddrSize = sizeof(Elf32_Addr); - static constexpr const char* kMachineName = "x86"; }; struct ElfClass64 { @@ -66,13 +62,9 @@ struct ElfClass64 { typedef Elf64_Shdr Shdr; typedef Elf64_Half Half; typedef Elf64_Off Off; - typedef Elf64_Sym Sym; typedef Elf64_Word Word; - static const int kClass = ELFCLASS64; - static const uint16_t kMachine = EM_X86_64; static const size_t kAddrSize = sizeof(Elf64_Addr); - static constexpr const char* kMachineName = "x86_64"; }; bool IsValidElf(const void* elf_header); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc index 311e0302092c..00b37313afd9 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.cc @@ -39,20 +39,15 @@ #include #include -#include #include "common/linux/elf_gnu_compat.h" #include "common/linux/elfutils.h" #include "common/linux/linux_libc_support.h" #include "common/linux/memory_mapped_file.h" -#include "common/using_std_string.h" #include "third_party/lss/linux_syscall_support.h" namespace google_breakpad { -// Used in a few places for backwards-compatibility. -const size_t kMDGUIDSize = sizeof(MDGUID); - FileID::FileID(const char* path) : path_(path) {} // ELF note name and desc are 32-bits word padded. @@ -63,7 +58,7 @@ FileID::FileID(const char* path) : path_(path) {} template static bool ElfClassBuildIDNoteIdentifier(const void *section, size_t length, - wasteful_vector& identifier) { + uint8_t identifier[kMDGUIDSize]) { typedef typename ElfClass::Nhdr Nhdr; const void* section_end = reinterpret_cast(section) + length; @@ -81,19 +76,21 @@ static bool ElfClassBuildIDNoteIdentifier(const void *section, size_t length, return false; } - const uint8_t* build_id = reinterpret_cast(note_header) + + const char* build_id = reinterpret_cast(note_header) + sizeof(Nhdr) + NOTE_PADDING(note_header->n_namesz); - identifier.insert(identifier.end(), - build_id, - build_id + note_header->n_descsz); + // Copy as many bits of the build ID as will fit + // into the GUID space. + my_memset(identifier, 0, kMDGUIDSize); + memcpy(identifier, build_id, + std::min(kMDGUIDSize, (size_t)note_header->n_descsz)); return true; } // Attempt to locate a .note.gnu.build-id section in an ELF binary -// and copy it into |identifier|. -static bool FindElfBuildIDNote(const void* elf_mapped_base, - wasteful_vector& identifier) { +// and copy as many bytes of it as will fit into |identifier|. +static bool FindElfBuildIDNote(const void *elf_mapped_base, + uint8_t identifier[kMDGUIDSize]) { void* note_section; size_t note_size; int elfclass; @@ -119,10 +116,8 @@ static bool FindElfBuildIDNote(const void* elf_mapped_base, // Attempt to locate the .text section of an ELF binary and generate // a simple hash by XORing the first page worth of bytes into |identifier|. -static bool HashElfTextSection(const void* elf_mapped_base, - wasteful_vector& identifier) { - identifier.resize(kMDGUIDSize); - +static bool HashElfTextSection(const void *elf_mapped_base, + uint8_t identifier[kMDGUIDSize]) { void* text_section; size_t text_size; if (!FindElfSection(elf_mapped_base, ".text", SHT_PROGBITS, @@ -131,9 +126,7 @@ static bool HashElfTextSection(const void* elf_mapped_base, return false; } - // Only provide |kMDGUIDSize| bytes to keep identifiers produced by this - // function backwards-compatible. - my_memset(&identifier[0], 0, kMDGUIDSize); + my_memset(identifier, 0, kMDGUIDSize); const uint8_t* ptr = reinterpret_cast(text_section); const uint8_t* ptr_end = ptr + std::min(text_size, static_cast(4096)); while (ptr < ptr_end) { @@ -146,7 +139,7 @@ static bool HashElfTextSection(const void* elf_mapped_base, // static bool FileID::ElfFileIdentifierFromMappedFile(const void* base, - wasteful_vector& identifier) { + uint8_t identifier[kMDGUIDSize]) { // Look for a build id note first. if (FindElfBuildIDNote(base, identifier)) return true; @@ -155,7 +148,7 @@ bool FileID::ElfFileIdentifierFromMappedFile(const void* base, return HashElfTextSection(base, identifier); } -bool FileID::ElfFileIdentifier(wasteful_vector& identifier) { +bool FileID::ElfFileIdentifier(uint8_t identifier[kMDGUIDSize]) { MemoryMappedFile mapped_file(path_.c_str(), 0); if (!mapped_file.data()) // Should probably check if size >= ElfW(Ehdr)? return false; @@ -163,26 +156,13 @@ bool FileID::ElfFileIdentifier(wasteful_vector& identifier) { return ElfFileIdentifierFromMappedFile(mapped_file.data(), identifier); } -// These three functions are not ever called in an unsafe context, so it's OK -// to allocate memory and use libc. -static string bytes_to_hex_string(const uint8_t* bytes, size_t count) { - string result; - for (unsigned int idx = 0; idx < count; ++idx) { - char buf[3]; - snprintf(buf, sizeof(buf), "%02X", bytes[idx]); - result.append(buf); - } - return result; -} - // static -string FileID::ConvertIdentifierToUUIDString( - const wasteful_vector& identifier) { - uint8_t identifier_swapped[kMDGUIDSize] = { 0 }; +void FileID::ConvertIdentifierToString(const uint8_t identifier[kMDGUIDSize], + char* buffer, int buffer_length) { + uint8_t identifier_swapped[kMDGUIDSize]; // Endian-ness swap to match dump processor expectation. - memcpy(identifier_swapped, &identifier[0], - std::min(kMDGUIDSize, identifier.size())); + memcpy(identifier_swapped, identifier, kMDGUIDSize); uint32_t* data1 = reinterpret_cast(identifier_swapped); *data1 = htonl(*data1); uint16_t* data2 = reinterpret_cast(identifier_swapped + 4); @@ -190,13 +170,22 @@ string FileID::ConvertIdentifierToUUIDString( uint16_t* data3 = reinterpret_cast(identifier_swapped + 6); *data3 = htons(*data3); - return bytes_to_hex_string(identifier_swapped, kMDGUIDSize); -} + int buffer_idx = 0; + for (unsigned int idx = 0; + (buffer_idx < buffer_length) && (idx < kMDGUIDSize); + ++idx) { + int hi = (identifier_swapped[idx] >> 4) & 0x0F; + int lo = (identifier_swapped[idx]) & 0x0F; -// static -string FileID::ConvertIdentifierToString( - const wasteful_vector& identifier) { - return bytes_to_hex_string(&identifier[0], identifier.size()); + if (idx == 4 || idx == 6 || idx == 8 || idx == 10) + buffer[buffer_idx++] = '-'; + + buffer[buffer_idx++] = (hi >= 10) ? 'A' + hi - 10 : '0' + hi; + buffer[buffer_idx++] = (lo >= 10) ? 'A' + lo - 10 : '0' + lo; + } + + // NULL terminate + buffer[(buffer_idx < buffer_length) ? buffer_idx : buffer_idx - 1] = 0; } } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.h b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.h index a1d2fd6ed6b1..2642722a6305 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id.h @@ -37,15 +37,10 @@ #include #include "common/linux/guid_creator.h" -#include "common/memory.h" namespace google_breakpad { -// GNU binutils' ld defaults to 'sha1', which is 160 bits == 20 bytes, -// so this is enough to fit that, which most binaries will use. -// This is just a sensible default for auto_wasteful_vector so most -// callers can get away with stack allocation. -static const size_t kDefaultBuildIdSize = 20; +static const size_t kMDGUIDSize = sizeof(MDGUID); class FileID { public: @@ -53,29 +48,25 @@ class FileID { ~FileID() {} // Load the identifier for the elf file path specified in the constructor into - // |identifier|. - // + // |identifier|. Return false if the identifier could not be created for the + // file. // The current implementation will look for a .note.gnu.build-id // section and use that as the file id, otherwise it falls back to // XORing the first 4096 bytes of the .text section to generate an identifier. - bool ElfFileIdentifier(wasteful_vector& identifier); + bool ElfFileIdentifier(uint8_t identifier[kMDGUIDSize]); // Load the identifier for the elf file mapped into memory at |base| into - // |identifier|. Return false if the identifier could not be created for this + // |identifier|. Return false if the identifier could not be created for the // file. - static bool ElfFileIdentifierFromMappedFile( - const void* base, - wasteful_vector& identifier); + static bool ElfFileIdentifierFromMappedFile(const void* base, + uint8_t identifier[kMDGUIDSize]); - // Convert the |identifier| data to a string. The string will - // be formatted as a UUID in all uppercase without dashes. - // (e.g., 22F065BBFC9C49F780FE26A7CEBD7BCE). - static std::string ConvertIdentifierToUUIDString( - const wasteful_vector& identifier); - - // Convert the entire |identifier| data to a hex string. - static std::string ConvertIdentifierToString( - const wasteful_vector& identifier); + // Convert the |identifier| data to a NULL terminated string. The string will + // be formatted as a UUID (e.g., 22F065BB-FC9C-49F7-80FE-26A7CEBD7BCE). + // The |buffer| should be at least 37 bytes long to receive all of the data + // and termination. Shorter buffers will contain truncated data. + static void ConvertIdentifierToString(const uint8_t identifier[kMDGUIDSize], + char* buffer, int buffer_length); private: // Storage for the path specified diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id_unittest.cc index 3a8193034887..760eae8260d6 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/file_id_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/file_id_unittest.cc @@ -33,7 +33,6 @@ #include #include -#include #include "common/linux/elf_gnu_compat.h" #include "common/linux/elfutils.h" @@ -46,11 +45,13 @@ #include "breakpad_googletest_includes.h" using namespace google_breakpad; +using google_breakpad::ElfClass32; +using google_breakpad::ElfClass64; +using google_breakpad::SafeReadLink; using google_breakpad::synth_elf::ELF; using google_breakpad::synth_elf::Notes; using google_breakpad::test_assembler::kLittleEndian; using google_breakpad::test_assembler::Section; -using std::vector; using ::testing::Types; namespace { @@ -63,8 +64,6 @@ void PopulateSection(Section* section, int size, int prime_number) { section->Append(1, (i % prime_number) % 256); } -typedef wasteful_vector id_vector; - } // namespace #ifndef __ANDROID__ @@ -88,20 +87,19 @@ TEST(FileIDStripTest, StripSelf) { sprintf(cmdline, "strip \"%s\"", templ.c_str()); ASSERT_EQ(0, system(cmdline)) << "Failed to execute: " << cmdline; - PageAllocator allocator; - id_vector identifier1(&allocator, kDefaultBuildIdSize); - id_vector identifier2(&allocator, kDefaultBuildIdSize); - + uint8_t identifier1[sizeof(MDGUID)]; + uint8_t identifier2[sizeof(MDGUID)]; FileID fileid1(exe_name); EXPECT_TRUE(fileid1.ElfFileIdentifier(identifier1)); FileID fileid2(templ.c_str()); EXPECT_TRUE(fileid2.ElfFileIdentifier(identifier2)); - - string identifier_string1 = - FileID::ConvertIdentifierToUUIDString(identifier1); - string identifier_string2 = - FileID::ConvertIdentifierToUUIDString(identifier2); - EXPECT_EQ(identifier_string1, identifier_string2); + char identifier_string1[37]; + char identifier_string2[37]; + FileID::ConvertIdentifierToString(identifier1, identifier_string1, + 37); + FileID::ConvertIdentifierToString(identifier2, identifier_string2, + 37); + EXPECT_STREQ(identifier_string1, identifier_string2); } #endif // !__ANDROID__ @@ -118,22 +116,8 @@ public: elfdata = &elfdata_v[0]; } - id_vector make_vector() { - return id_vector(&allocator, kDefaultBuildIdSize); - } - - template - string get_file_id(const uint8_t (&data)[N]) { - id_vector expected_identifier(make_vector()); - expected_identifier.insert(expected_identifier.end(), - &data[0], - data + N); - return FileID::ConvertIdentifierToUUIDString(expected_identifier); - } - vector elfdata_v; uint8_t* elfdata; - PageAllocator allocator; }; typedef Types ElfClasses; @@ -141,8 +125,10 @@ typedef Types ElfClasses; TYPED_TEST_CASE(FileIDTest, ElfClasses); TYPED_TEST(FileIDTest, ElfClass) { + uint8_t identifier[sizeof(MDGUID)]; const char expected_identifier_string[] = - "80808080808000000000008080808080"; + "80808080-8080-0000-0000-008080808080"; + char identifier_string[sizeof(expected_identifier_string)]; const size_t kTextSectionSize = 128; ELF elf(EM_386, TypeParam::kClass, kLittleEndian); @@ -154,106 +140,58 @@ TYPED_TEST(FileIDTest, ElfClass) { elf.Finish(); this->GetElfContents(elf); - id_vector identifier(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier)); - string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); - EXPECT_EQ(expected_identifier_string, identifier_string); + FileID::ConvertIdentifierToString(identifier, identifier_string, + sizeof(identifier_string)); + EXPECT_STREQ(expected_identifier_string, identifier_string); } TYPED_TEST(FileIDTest, BuildID) { - const uint8_t kExpectedIdentifierBytes[] = + const uint8_t kExpectedIdentifier[sizeof(MDGUID)] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13}; - const string expected_identifier_string = - this->get_file_id(kExpectedIdentifierBytes); + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; + char expected_identifier_string[] = + "00000000-0000-0000-0000-000000000000"; + FileID::ConvertIdentifierToString(kExpectedIdentifier, + expected_identifier_string, + sizeof(expected_identifier_string)); + + uint8_t identifier[sizeof(MDGUID)]; + char identifier_string[sizeof(expected_identifier_string)]; ELF elf(EM_386, TypeParam::kClass, kLittleEndian); Section text(kLittleEndian); text.Append(4096, 0); elf.AddSection(".text", text, SHT_PROGBITS); Notes notes(kLittleEndian); - notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, - sizeof(kExpectedIdentifierBytes)); + notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifier, + sizeof(kExpectedIdentifier)); elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE); elf.Finish(); this->GetElfContents(elf); - id_vector identifier(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier)); - EXPECT_EQ(sizeof(kExpectedIdentifierBytes), identifier.size()); - string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); - EXPECT_EQ(expected_identifier_string, identifier_string); -} - -// Test that a build id note with fewer bytes than usual is handled. -TYPED_TEST(FileIDTest, BuildIDShort) { - const uint8_t kExpectedIdentifierBytes[] = - {0x00, 0x01, 0x02, 0x03}; - const string expected_identifier_string = - this->get_file_id(kExpectedIdentifierBytes); - - ELF elf(EM_386, TypeParam::kClass, kLittleEndian); - Section text(kLittleEndian); - text.Append(4096, 0); - elf.AddSection(".text", text, SHT_PROGBITS); - Notes notes(kLittleEndian); - notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, - sizeof(kExpectedIdentifierBytes)); - elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE); - elf.Finish(); - this->GetElfContents(elf); - - id_vector identifier(this->make_vector()); - EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, - identifier)); - EXPECT_EQ(sizeof(kExpectedIdentifierBytes), identifier.size()); - - string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); - EXPECT_EQ(expected_identifier_string, identifier_string); -} - -// Test that a build id note with more bytes than usual is handled. -TYPED_TEST(FileIDTest, BuildIDLong) { - const uint8_t kExpectedIdentifierBytes[] = - {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F}; - const string expected_identifier_string = - this->get_file_id(kExpectedIdentifierBytes); - - ELF elf(EM_386, TypeParam::kClass, kLittleEndian); - Section text(kLittleEndian); - text.Append(4096, 0); - elf.AddSection(".text", text, SHT_PROGBITS); - Notes notes(kLittleEndian); - notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, - sizeof(kExpectedIdentifierBytes)); - elf.AddSection(".note.gnu.build-id", notes, SHT_NOTE); - elf.Finish(); - this->GetElfContents(elf); - - id_vector identifier(this->make_vector()); - EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, - identifier)); - EXPECT_EQ(sizeof(kExpectedIdentifierBytes), identifier.size()); - - string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); - EXPECT_EQ(expected_identifier_string, identifier_string); + FileID::ConvertIdentifierToString(identifier, identifier_string, + sizeof(identifier_string)); + EXPECT_STREQ(expected_identifier_string, identifier_string); } TYPED_TEST(FileIDTest, BuildIDPH) { - const uint8_t kExpectedIdentifierBytes[] = + const uint8_t kExpectedIdentifier[sizeof(MDGUID)] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13}; - const string expected_identifier_string = - this->get_file_id(kExpectedIdentifierBytes); + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F}; + char expected_identifier_string[] = + "00000000-0000-0000-0000-000000000000"; + FileID::ConvertIdentifierToString(kExpectedIdentifier, + expected_identifier_string, + sizeof(expected_identifier_string)); + + uint8_t identifier[sizeof(MDGUID)]; + char identifier_string[sizeof(expected_identifier_string)]; ELF elf(EM_386, TypeParam::kClass, kLittleEndian); Section text(kLittleEndian); @@ -262,25 +200,31 @@ TYPED_TEST(FileIDTest, BuildIDPH) { Notes notes(kLittleEndian); notes.AddNote(0, "Linux", reinterpret_cast("\0x42\0x02\0\0"), 4); - notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifierBytes, - sizeof(kExpectedIdentifierBytes)); + notes.AddNote(NT_GNU_BUILD_ID, "GNU", kExpectedIdentifier, + sizeof(kExpectedIdentifier)); int note_idx = elf.AddSection(".note", notes, SHT_NOTE); elf.AddSegment(note_idx, note_idx, PT_NOTE); elf.Finish(); this->GetElfContents(elf); - id_vector identifier(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier)); - EXPECT_EQ(sizeof(kExpectedIdentifierBytes), identifier.size()); - string identifier_string = FileID::ConvertIdentifierToUUIDString(identifier); - EXPECT_EQ(expected_identifier_string, identifier_string); + FileID::ConvertIdentifierToString(identifier, identifier_string, + sizeof(identifier_string)); + EXPECT_STREQ(expected_identifier_string, identifier_string); } // Test to make sure two files with different text sections produce // different hashes when not using a build id. TYPED_TEST(FileIDTest, UniqueHashes) { + char identifier_string_1[] = + "00000000-0000-0000-0000-000000000000"; + char identifier_string_2[] = + "00000000-0000-0000-0000-000000000000"; + uint8_t identifier_1[sizeof(MDGUID)]; + uint8_t identifier_2[sizeof(MDGUID)]; + { ELF elf1(EM_386, TypeParam::kClass, kLittleEndian); Section foo_1(kLittleEndian); @@ -293,11 +237,10 @@ TYPED_TEST(FileIDTest, UniqueHashes) { this->GetElfContents(elf1); } - id_vector identifier_1(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier_1)); - string identifier_string_1 = - FileID::ConvertIdentifierToUUIDString(identifier_1); + FileID::ConvertIdentifierToString(identifier_1, identifier_string_1, + sizeof(identifier_string_1)); { ELF elf2(EM_386, TypeParam::kClass, kLittleEndian); @@ -311,28 +254,10 @@ TYPED_TEST(FileIDTest, UniqueHashes) { this->GetElfContents(elf2); } - id_vector identifier_2(this->make_vector()); EXPECT_TRUE(FileID::ElfFileIdentifierFromMappedFile(this->elfdata, identifier_2)); - string identifier_string_2 = - FileID::ConvertIdentifierToUUIDString(identifier_2); + FileID::ConvertIdentifierToString(identifier_2, identifier_string_2, + sizeof(identifier_string_2)); - EXPECT_NE(identifier_string_1, identifier_string_2); -} - -TYPED_TEST(FileIDTest, ConvertIdentifierToString) { - const uint8_t kIdentifierBytes[] = - {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F}; - const char* kExpected = - "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"; - - id_vector identifier(this->make_vector()); - identifier.insert(identifier.end(), - kIdentifierBytes, - kIdentifierBytes + sizeof(kIdentifierBytes)); - ASSERT_EQ(kExpected, - FileID::ConvertIdentifierToString(identifier)); + EXPECT_STRNE(identifier_string_1, identifier_string_2); } diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc index 702526af7537..4492fe84542c 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.cc @@ -72,9 +72,7 @@ bool HTTPUpload::SendRequest(const string &url, // We may have been linked statically; if curl_easy_init is in the // current binary, no need to search for a dynamic version. void* curl_lib = dlopen(NULL, RTLD_NOW); - if (!CheckCurlLib(curl_lib)) { - fprintf(stderr, - "Failed to open curl lib from binary, use libcurl.so instead\n"); + if (!curl_lib || dlsym(curl_lib, "curl_easy_init") == NULL) { dlerror(); // Clear dlerror before attempting to open libraries. dlclose(curl_lib); curl_lib = NULL; @@ -115,10 +113,6 @@ bool HTTPUpload::SendRequest(const string &url, *(void**) (&curl_easy_setopt) = dlsym(curl_lib, "curl_easy_setopt"); (*curl_easy_setopt)(curl, CURLOPT_URL, url.c_str()); (*curl_easy_setopt)(curl, CURLOPT_USERAGENT, kUserAgent); - // Support multithread by disabling timeout handling, would get SIGSEGV with - // Curl_resolv_timeout in stack trace otherwise. - // See https://curl.haxx.se/libcurl/c/threadsafe.html - (*curl_easy_setopt)(curl, CURLOPT_NOSIGNAL, 1); // Set proxy information if necessary. if (!proxy.empty()) (*curl_easy_setopt)(curl, CURLOPT_PROXY, proxy.c_str()); @@ -203,13 +197,6 @@ bool HTTPUpload::SendRequest(const string &url, return err_code == CURLE_OK; } -// static -bool HTTPUpload::CheckCurlLib(void* curl_lib) { - return curl_lib && - dlsym(curl_lib, "curl_easy_init") && - dlsym(curl_lib, "curl_easy_setopt"); -} - // static bool HTTPUpload::CheckParameters(const map ¶meters) { for (map::const_iterator pos = parameters.begin(); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.h b/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.h index bc1d5d5700b6..4f0e452f469d 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/http_upload.h @@ -74,9 +74,6 @@ class HTTPUpload { // any quote (") characters. Returns true if so. static bool CheckParameters(const map ¶meters); - // Checks the curl_lib parameter points to a valid curl lib. - static bool CheckCurlLib(void* curl_lib); - // No instances of this class should be created. // Disallow all constructors, destructors, and operator=. HTTPUpload(); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/ignore_ret.h b/toolkit/crashreporter/google-breakpad/src/common/linux/ignore_ret.h index efd274c20c74..f60384bbada0 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/ignore_ret.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/ignore_ret.h @@ -35,6 +35,6 @@ // the call fails, IGNORE_RET() can be used to mark the return code as ignored. // This avoids spurious compiler warnings. -#define IGNORE_RET(x) do { if (x) {} } while (0) +#define IGNORE_RET(x) do { if (x); } while (0) #endif // COMMON_LINUX_IGNORE_RET_H_ diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.h b/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.h index 25905ad8ffd0..de84a63b4059 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/libcurl_wrapper.h @@ -43,7 +43,7 @@ namespace google_breakpad { class LibcurlWrapper { public: LibcurlWrapper(); - virtual ~LibcurlWrapper(); + ~LibcurlWrapper(); virtual bool Init(); virtual bool SetProxy(const string& proxy_host, const string& proxy_userpwd); diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc index 4e938269f260..592b66c8d646 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/memory_mapped_file.cc @@ -87,7 +87,18 @@ bool MemoryMappedFile::Map(const char* path, size_t offset) { return true; } +#if defined(__x86_64__) || defined(__aarch64__) || \ + (defined(__mips__) && _MIPS_SIM == _ABI64) void* data = sys_mmap(NULL, file_len, PROT_READ, MAP_PRIVATE, fd, offset); +#else + if ((offset & 4095) != 0) { + // Not page aligned. + sys_close(fd); + return false; + } + void* data = sys_mmap2( + NULL, file_len, PROT_READ, MAP_PRIVATE, fd, offset >> 12); +#endif sys_close(fd); if (data == MAP_FAILED) { return false; diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.cc deleted file mode 100644 index bbd3181e16ad..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.cc +++ /dev/null @@ -1,155 +0,0 @@ -// Copyright (c) 2011 Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// symbol_upload.cc: implemented google_breakpad::sym_upload::Start, a helper -// function for linux symbol upload tool. - -#include "common/linux/http_upload.h" -#include "common/linux/symbol_upload.h" - -#include -#include - -#include -#include - -namespace google_breakpad { -namespace sym_upload { - -void TokenizeByChar(const string &source_string, int c, - std::vector *results) { - assert(results); - string::size_type cur_pos = 0, next_pos = 0; - while ((next_pos = source_string.find(c, cur_pos)) != string::npos) { - if (next_pos != cur_pos) - results->push_back(source_string.substr(cur_pos, next_pos - cur_pos)); - cur_pos = next_pos + 1; - } - if (cur_pos < source_string.size() && next_pos != cur_pos) - results->push_back(source_string.substr(cur_pos)); -} - -//============================================================================= -// Parse out the module line which have 5 parts. -// MODULE -bool ModuleDataForSymbolFile(const string &file, - std::vector *module_parts) { - assert(module_parts); - const size_t kModulePartNumber = 5; - FILE* fp = fopen(file.c_str(), "r"); - if (fp) { - char buffer[1024]; - if (fgets(buffer, sizeof(buffer), fp)) { - string line(buffer); - string::size_type line_break_pos = line.find_first_of('\n'); - if (line_break_pos == string::npos) { - assert(0 && "The file is invalid!"); - fclose(fp); - return false; - } - line.resize(line_break_pos); - const char kDelimiter = ' '; - TokenizeByChar(line, kDelimiter, module_parts); - if (module_parts->size() != kModulePartNumber) - module_parts->clear(); - } - fclose(fp); - } - - return module_parts->size() == kModulePartNumber; -} - -//============================================================================= -string CompactIdentifier(const string &uuid) { - std::vector components; - TokenizeByChar(uuid, '-', &components); - string result; - for (size_t i = 0; i < components.size(); ++i) - result += components[i]; - return result; -} - -//============================================================================= -void Start(Options *options) { - std::map parameters; - options->success = false; - std::vector module_parts; - if (!ModuleDataForSymbolFile(options->symbolsPath, &module_parts)) { - fprintf(stderr, "Failed to parse symbol file!\n"); - return; - } - - string compacted_id = CompactIdentifier(module_parts[3]); - - // Add parameters - if (!options->version.empty()) - parameters["version"] = options->version; - - // MODULE - // 0 1 2 3 4 - parameters["os"] = module_parts[1]; - parameters["cpu"] = module_parts[2]; - parameters["debug_file"] = module_parts[4]; - parameters["code_file"] = module_parts[4]; - parameters["debug_identifier"] = compacted_id; - - std::map files; - files["symbol_file"] = options->symbolsPath; - - string response, error; - long response_code; - bool success = HTTPUpload::SendRequest(options->uploadURLStr, - parameters, - files, - options->proxy, - options->proxy_user_pwd, - "", - &response, - &response_code, - &error); - - if (!success) { - printf("Failed to send symbol file: %s\n", error.c_str()); - printf("Response code: %ld\n", response_code); - printf("Response:\n"); - printf("%s\n", response.c_str()); - } else if (response_code == 0) { - printf("Failed to send symbol file: No response code\n"); - } else if (response_code != 200) { - printf("Failed to send symbol file: Response code %ld\n", response_code); - printf("Response:\n"); - printf("%s\n", response.c_str()); - } else { - printf("Successfully sent the symbol file.\n"); - } - options->success = success; -} - -} // namespace sym_upload -} // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.h b/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.h deleted file mode 100644 index 0a469692ac84..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/symbol_upload.h +++ /dev/null @@ -1,59 +0,0 @@ -// -*- mode: c++ -*- - -// Copyright (c) 2011 Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// symbol_upload.h: helper functions for linux symbol upload tool. - -#ifndef COMMON_LINUX_SYMBOL_UPLOAD_H_ -#define COMMON_LINUX_SYMBOL_UPLOAD_H_ - -#include - -#include "common/using_std_string.h" - -namespace google_breakpad { -namespace sym_upload { - -typedef struct { - string symbolsPath; - string uploadURLStr; - string proxy; - string proxy_user_pwd; - string version; - bool success; -} Options; - -// Starts upload to symbol server with options. -void Start(Options* options); - -} // namespace sym_upload -} // namespace google_breakpad - -#endif // COMMON_LINUX_SYMBOL_UPLOAD_H_ diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.cc index 98e81dab7523..b978550f85e5 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.cc @@ -213,10 +213,8 @@ void ELF::Finish() { SymbolTable::SymbolTable(Endianness endianness, size_t addr_size, StringTable& table) : Section(endianness), + addr_size_(addr_size), table_(table) { -#ifndef NDEBUG - addr_size_ = addr_size; -#endif assert(addr_size_ == 4 || addr_size_ == 8); } diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.h b/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.h index 1d2a20ca22b4..330ceae8edb5 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.h +++ b/toolkit/crashreporter/google-breakpad/src/common/linux/synth_elf.h @@ -173,9 +173,7 @@ class SymbolTable : public Section { uint64_t size, unsigned info, uint16_t shndx); private: -#ifndef NDEBUG size_t addr_size_; -#endif StringTable& table_; }; diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/Breakpad.xcconfig b/toolkit/crashreporter/google-breakpad/src/common/mac/Breakpad.xcconfig index f09136908109..672be2cee555 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/Breakpad.xcconfig +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/Breakpad.xcconfig @@ -27,6 +27,12 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +ARCHS = $(ARCHS_STANDARD_32_64_BIT) +SDKROOT = macosx10.5 + +GCC_VERSION = 4.2 +GCC_VERSION[sdk=macosx10.4][arch=*] = 4.0 + GCC_C_LANGUAGE_STANDARD = c99 GCC_WARN_CHECK_SWITCH_STATEMENTS = YES @@ -35,10 +41,7 @@ GCC_WARN_64_TO_32_BIT_CONVERSION = NO GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES GCC_WARN_ABOUT_RETURN_TYPE = YES GCC_WARN_MISSING_PARENTHESES = YES - -// Once https://bugs.chromium.org/p/google-breakpad/issues/detail?id=697 -// is fixed this should be reenabled. -//GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES +GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES GCC_WARN_ABOUT_MISSING_NEWLINE = YES GCC_WARN_SIGN_COMPARE = YES GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES @@ -48,5 +51,6 @@ GCC_WARN_UNUSED_VARIABLE = YES GCC_TREAT_WARNINGS_AS_ERRORS = YES DEBUG_INFORMATION_FORMAT = dwarf-with-dsym +DEBUG_INFORMATION_FORMAT[sdk=macosx10.4][arch=*] = stabs ALWAYS_SEARCH_USER_PATHS = NO diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/HTTPMultipartUpload.m b/toolkit/crashreporter/google-breakpad/src/common/mac/HTTPMultipartUpload.m index 9ac886d53ea2..2ed1b6322651 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/HTTPMultipartUpload.m +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/HTTPMultipartUpload.m @@ -30,65 +30,6 @@ #import "HTTPMultipartUpload.h" #import "GTMDefines.h" -// As -[NSString stringByAddingPercentEscapesUsingEncoding:] has been -// deprecated with iOS 9.0 / OS X 10.11 SDKs, this function re-implements it -// using -[NSString stringByAddingPercentEncodingWithAllowedCharacters:] when -// using those SDKs. -static NSString *PercentEncodeNSString(NSString *key) { -#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_9_0) && \ - __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0) || \ - (defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - defined(MAC_OS_X_VERSION_10_11) && \ - MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11) - return [key stringByAddingPercentEncodingWithAllowedCharacters: - [NSCharacterSet URLQueryAllowedCharacterSet]]; -#else - return [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; -#endif -} - -// As -[NSURLConnection sendSynchronousRequest:returningResponse:error:] has -// been deprecated with iOS 9.0 / OS X 10.11 SDKs, this function re-implements -// it using -[NSURLSession dataTaskWithRequest:completionHandler:] when using -// those SDKs. -static NSData *SendSynchronousNSURLRequest(NSURLRequest *req, - NSURLResponse **out_response, - NSError **out_error) { -#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && defined(__IPHONE_9_0) && \ - __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_9_0) || \ - (defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \ - defined(MAC_OS_X_VERSION_10_11) && \ - MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11) - __block NSData* result = nil; - __block NSError* error = nil; - __block NSURLResponse* response = nil; - dispatch_semaphore_t wait_semaphone = dispatch_semaphore_create(0); - [[[NSURLSession sharedSession] - dataTaskWithRequest:req - completionHandler:^(NSData *data, - NSURLResponse *resp, - NSError *err) { - if (out_error) - error = [err retain]; - if (out_response) - response = [resp retain]; - if (err == nil) - result = [data retain]; - dispatch_semaphore_signal(wait_semaphone); - }] resume]; - dispatch_semaphore_wait(wait_semaphone, DISPATCH_TIME_FOREVER); - dispatch_release(wait_semaphone); - if (out_error) - *out_error = [error autorelease]; - if (out_response) - *out_response = [response autorelease]; - return [result autorelease]; -#else - return [NSURLConnection sendSynchronousRequest:req - returningResponse:out_response - error:out_error]; -#endif -} @interface HTTPMultipartUpload(PrivateMethods) - (NSString *)multipartBoundary; // Each of the following methods will append the starting multipart boundary, @@ -111,7 +52,8 @@ static NSData *SendSynchronousNSURLRequest(NSURLRequest *req, //============================================================================= - (NSData *)formDataForKey:(NSString *)key value:(NSString *)value { - NSString *escaped = PercentEncodeNSString(key); + NSString *escaped = + [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString *fmt = @"--%@\r\nContent-Disposition: form-data; name=\"%@\"\r\n\r\n%@\r\n"; NSString *form = [NSString stringWithFormat:fmt, boundary_, escaped, value]; @@ -122,7 +64,8 @@ static NSData *SendSynchronousNSURLRequest(NSURLRequest *req, //============================================================================= - (NSData *)formDataForFileContents:(NSData *)contents name:(NSString *)name { NSMutableData *data = [NSMutableData data]; - NSString *escaped = PercentEncodeNSString(name); + NSString *escaped = + [name stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString *fmt = @"--%@\r\nContent-Disposition: form-data; name=\"%@\"; " "filename=\"minidump.dmp\"\r\nContent-Type: application/octet-stream\r\n\r\n"; NSString *pre = [NSString stringWithFormat:fmt, boundary_, escaped]; @@ -253,7 +196,9 @@ static NSData *SendSynchronousNSURLRequest(NSURLRequest *req, [[req HTTPBody] writeToURL:[req URL] options:0 error:error]; } else { NSURLResponse *response = nil; - data = SendSynchronousNSURLRequest(req, &response, error); + data = [NSURLConnection sendSynchronousRequest:req + returningResponse:&response + error:error]; response_ = (NSHTTPURLResponse *)[response retain]; } [req release]; diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.cc b/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.cc index b20a05586823..4dcdb73e8771 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.cc @@ -41,7 +41,6 @@ #include #include #include -#include #include #include #include @@ -317,7 +316,7 @@ class DumpSymbols::DumperLineToModule: compilation_dir_ = compilation_dir; } - void ReadProgram(const uint8_t *program, uint64 length, + void ReadProgram(const char *program, uint64 length, Module *module, vector *lines) { DwarfLineToModule handler(module, compilation_dir_, lines); dwarf2reader::LineInfo parser(program, length, byte_reader_, &handler); @@ -328,65 +327,6 @@ class DumpSymbols::DumperLineToModule: dwarf2reader::ByteReader *byte_reader_; // WEAK }; -bool DumpSymbols::CreateEmptyModule(scoped_ptr& module) { - // Select an object file, if SetArchitecture hasn't been called to set one - // explicitly. - if (!selected_object_file_) { - // If there's only one architecture, that's the one. - if (object_files_.size() == 1) - selected_object_file_ = &object_files_[0]; - else { - // Look for an object file whose architecture matches our own. - const NXArchInfo *local_arch = NXGetLocalArchInfo(); - if (!SetArchitecture(local_arch->cputype, local_arch->cpusubtype)) { - fprintf(stderr, "%s: object file contains more than one" - " architecture, none of which match the current" - " architecture; specify an architecture explicitly" - " with '-a ARCH' to resolve the ambiguity\n", - object_filename_.c_str()); - return false; - } - } - } - - assert(selected_object_file_); - - // Find the name of the selected file's architecture, to appear in - // the MODULE record and in error messages. - const NXArchInfo *selected_arch_info = - google_breakpad::BreakpadGetArchInfoFromCpuType( - selected_object_file_->cputype, selected_object_file_->cpusubtype); - - const char *selected_arch_name = selected_arch_info->name; - if (strcmp(selected_arch_name, "i386") == 0) - selected_arch_name = "x86"; - - // Produce a name to use in error messages that includes the - // filename, and the architecture, if there is more than one. - selected_object_name_ = object_filename_; - if (object_files_.size() > 1) { - selected_object_name_ += ", architecture "; - selected_object_name_ + selected_arch_name; - } - - // Compute a module name, to appear in the MODULE record. - string module_name = object_filename_; - module_name = basename(&module_name[0]); - - // Choose an identifier string, to appear in the MODULE record. - string identifier = Identifier(); - if (identifier.empty()) - return false; - identifier += "0"; - - // Create a module to hold the debugging information. - module.reset(new Module(module_name, - "mac", - selected_arch_name, - identifier)); - return true; -} - bool DumpSymbols::ReadDwarf(google_breakpad::Module *module, const mach_o::Reader &macho_reader, const mach_o::SectionMap &dwarf_sections, @@ -406,7 +346,7 @@ bool DumpSymbols::ReadDwarf(google_breakpad::Module *module, it != dwarf_sections.end(); ++it) { file_context.AddSectionToSectionMap( it->first, - it->second.contents.start, + reinterpret_cast(it->second.contents.start), it->second.contents.Size()); } @@ -414,7 +354,7 @@ bool DumpSymbols::ReadDwarf(google_breakpad::Module *module, dwarf2reader::SectionMap::const_iterator debug_info_entry = file_context.section_map().find("__debug_info"); assert(debug_info_entry != file_context.section_map().end()); - const std::pair& debug_info_section = + const std::pair& debug_info_section = debug_info_entry->second; // There had better be a __debug_info section! if (!debug_info_section.first) { @@ -437,8 +377,7 @@ bool DumpSymbols::ReadDwarf(google_breakpad::Module *module, // Make a Dwarf2Handler that drives our DIEHandler. dwarf2reader::DIEDispatcher die_dispatcher(&root_handler); // Make a DWARF parser for the compilation unit at OFFSET. - dwarf2reader::CompilationUnit dwarf_reader(selected_object_name_, - file_context.section_map(), + dwarf2reader::CompilationUnit dwarf_reader(file_context.section_map(), offset, &byte_reader, &die_dispatcher); @@ -485,7 +424,7 @@ bool DumpSymbols::ReadCFI(google_breakpad::Module *module, } // Find the call frame information and its size. - const uint8_t *cfi = section.contents.start; + const char *cfi = reinterpret_cast(section.contents.start); size_t cfi_size = section.contents.Size(); // Plug together the parser, handler, and their entourages. @@ -595,9 +534,61 @@ bool DumpSymbols::LoadCommandDumper::SymtabCommand(const ByteBuffer &entries, } bool DumpSymbols::ReadSymbolData(Module** out_module) { - scoped_ptr module; - if (!CreateEmptyModule(module)) + // Select an object file, if SetArchitecture hasn't been called to set one + // explicitly. + if (!selected_object_file_) { + // If there's only one architecture, that's the one. + if (object_files_.size() == 1) + selected_object_file_ = &object_files_[0]; + else { + // Look for an object file whose architecture matches our own. + const NXArchInfo *local_arch = NXGetLocalArchInfo(); + if (!SetArchitecture(local_arch->cputype, local_arch->cpusubtype)) { + fprintf(stderr, "%s: object file contains more than one" + " architecture, none of which match the current" + " architecture; specify an architecture explicitly" + " with '-a ARCH' to resolve the ambiguity\n", + object_filename_.c_str()); + return false; + } + } + } + + assert(selected_object_file_); + + // Find the name of the selected file's architecture, to appear in + // the MODULE record and in error messages. + const NXArchInfo *selected_arch_info = + google_breakpad::BreakpadGetArchInfoFromCpuType( + selected_object_file_->cputype, selected_object_file_->cpusubtype); + + const char *selected_arch_name = selected_arch_info->name; + if (strcmp(selected_arch_name, "i386") == 0) + selected_arch_name = "x86"; + + // Produce a name to use in error messages that includes the + // filename, and the architecture, if there is more than one. + selected_object_name_ = object_filename_; + if (object_files_.size() > 1) { + selected_object_name_ += ", architecture "; + selected_object_name_ + selected_arch_name; + } + + // Compute a module name, to appear in the MODULE record. + string module_name = object_filename_; + module_name = basename(&module_name[0]); + + // Choose an identifier string, to appear in the MODULE record. + string identifier = Identifier(); + if (identifier.empty()) return false; + identifier += "0"; + + // Create a module to hold the debugging information. + scoped_ptr module(new Module(module_name, + "mac", + selected_arch_name, + identifier)); // Parse the selected object file. mach_o::Reader::Reporter reporter(selected_object_name_); @@ -632,15 +623,4 @@ bool DumpSymbols::WriteSymbolFile(std::ostream &stream) { return false; } -// Read the selected object file's debugging information, and write out the -// header only to |stream|. Return true on success; if an error occurs, report -// it and return false. -bool DumpSymbols::WriteSymbolFileHeader(std::ostream &stream) { - scoped_ptr module; - if (!CreateEmptyModule(module)) - return false; - - return module->Write(stream, symbol_data_); -} - } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h b/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h index 9463f7dc0ce5..b09928c95fbc 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/dump_syms.h @@ -112,11 +112,6 @@ class DumpSymbols { // return false. bool WriteSymbolFile(std::ostream &stream); - // Read the selected object file's debugging information, and write out the - // header only to |stream|. Return true on success; if an error occurs, report - // it and return false. - bool WriteSymbolFileHeader(std::ostream &stream); - // As above, but simply return the debugging information in module // instead of writing it to a stream. The caller owns the resulting // module object and must delete it when finished. @@ -135,10 +130,6 @@ class DumpSymbols { // Return an identifier string for the file this DumpSymbols is dumping. std::string Identifier(); - - // Creates an empty module object. - bool CreateEmptyModule(scoped_ptr& module); - // Read debugging information from |dwarf_sections|, which was taken from // |macho_reader|, and add it to |module|. On success, return true; // on failure, report the problem and return false. diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/macho_reader.cc b/toolkit/crashreporter/google-breakpad/src/common/mac/macho_reader.cc index 52f3c411beb7..6d7207ce4bf3 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/macho_reader.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/macho_reader.cc @@ -181,15 +181,15 @@ void Reader::Reporter::LoadCommandRegionTruncated() { void Reader::Reporter::LoadCommandsOverrun(size_t claimed, size_t i, LoadCommandType type) { - fprintf(stderr, "%s: file's header claims there are %zu" - " load commands, but load command #%zu", + fprintf(stderr, "%s: file's header claims there are %ld" + " load commands, but load command #%ld", filename_.c_str(), claimed, i); if (type) fprintf(stderr, ", of type %d,", type); fprintf(stderr, " extends beyond the end of the load command region\n"); } void Reader::Reporter::LoadCommandTooShort(size_t i, LoadCommandType type) { - fprintf(stderr, "%s: the contents of load command #%zu, of type %d," + fprintf(stderr, "%s: the contents of load command #%ld, of type %d," " extend beyond the size given in the load command's header\n", filename_.c_str(), i, type); } diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build b/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build index 6d6df28e21bf..4db2ea620066 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/moz.build @@ -29,7 +29,6 @@ if CONFIG['MOZ_CRASHREPORTER']: HOST_CXXFLAGS += [ '-O2', '-g', - '-stdlib=libc++', ] HostLibrary('host_breakpad_mac_common_s') diff --git a/toolkit/crashreporter/google-breakpad/src/common/mac/testing/GTMSenTestCase.m b/toolkit/crashreporter/google-breakpad/src/common/mac/testing/GTMSenTestCase.m index 162f01e97cab..5607c3162582 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/mac/testing/GTMSenTestCase.m +++ b/toolkit/crashreporter/google-breakpad/src/common/mac/testing/GTMSenTestCase.m @@ -26,6 +26,10 @@ #import "GTMObjC2Runtime.h" #import "GTMUnitTestDevLog.h" +#if !GTM_IPHONE_SDK +#import "GTMGarbageCollection.h" +#endif // !GTM_IPHONE_SDK + #if GTM_IPHONE_SDK && !GTM_IPHONE_USE_SENTEST #import @@ -426,3 +430,71 @@ static int MethodSort(id a, id b, void *context) { } @end + +// Leak detection +#if !GTM_IPHONE_DEVICE && !GTM_SUPPRESS_RUN_LEAKS_HOOK +// Don't want to get leaks on the iPhone Device as the device doesn't +// have 'leaks'. The simulator does though. + +// COV_NF_START +// We don't have leak checking on by default, so this won't be hit. +static void _GTMRunLeaks(void) { + // This is an atexit handler. It runs leaks for us to check if we are + // leaking anything in our tests. + const char* cExclusionsEnv = getenv("GTM_LEAKS_SYMBOLS_TO_IGNORE"); + NSMutableString *exclusions = [NSMutableString string]; + if (cExclusionsEnv) { + NSString *exclusionsEnv = [NSString stringWithUTF8String:cExclusionsEnv]; + NSArray *exclusionsArray = [exclusionsEnv componentsSeparatedByString:@","]; + NSString *exclusion; + NSCharacterSet *wcSet = [NSCharacterSet whitespaceCharacterSet]; + GTM_FOREACH_OBJECT(exclusion, exclusionsArray) { + exclusion = [exclusion stringByTrimmingCharactersInSet:wcSet]; + [exclusions appendFormat:@"-exclude \"%@\" ", exclusion]; + } + } + // Clearing out DYLD_ROOT_PATH because iPhone Simulator framework libraries + // are different from regular OS X libraries and leaks will fail to run + // because of missing symbols. Also capturing the output of leaks and then + // pipe rather than a direct pipe, because otherwise if leaks failed, + // the system() call will still be successful. Bug: + // http://code.google.com/p/google-toolbox-for-mac/issues/detail?id=56 + NSString *string + = [NSString stringWithFormat: + @"LeakOut=`DYLD_ROOT_PATH='' /usr/bin/leaks %@%d` &&" + @"echo \"$LeakOut\"|/usr/bin/sed -e 's/Leak: /Leaks:0: warning: Leak /'", + exclusions, getpid()]; + int ret = system([string UTF8String]); + if (ret) { + fprintf(stderr, + "%s:%d: Error: Unable to run leaks. 'system' returned: %d\n", + __FILE__, __LINE__, ret); + fflush(stderr); + } +} +// COV_NF_END + +static __attribute__((constructor)) void _GTMInstallLeaks(void) { + BOOL checkLeaks = YES; +#if !GTM_IPHONE_SDK + checkLeaks = GTMIsGarbageCollectionEnabled() ? NO : YES; +#endif // !GTM_IPHONE_SDK + if (checkLeaks) { + checkLeaks = getenv("GTM_ENABLE_LEAKS") ? YES : NO; + if (checkLeaks) { + // COV_NF_START + // We don't have leak checking on by default, so this won't be hit. + fprintf(stderr, "Leak Checking Enabled\n"); + fflush(stderr); + int ret = atexit(&_GTMRunLeaks); + // To avoid unused variable warning when _GTMDevAssert is stripped. + (void)ret; + _GTMDevAssert(ret == 0, + @"Unable to install _GTMRunLeaks as an atexit handler (%d)", + errno); + // COV_NF_END + } + } +} + +#endif // !GTM_IPHONE_DEVICE && !GTM_SUPPRESS_RUN_LEAKS_HOOK diff --git a/toolkit/crashreporter/google-breakpad/src/common/memory.h b/toolkit/crashreporter/google-breakpad/src/common/memory.h index 9158b50c8b85..d6aa137d35c0 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/memory.h +++ b/toolkit/crashreporter/google-breakpad/src/common/memory.h @@ -44,6 +44,7 @@ #ifdef __APPLE__ #define sys_mmap mmap +#define sys_mmap2 mmap #define sys_munmap munmap #define MAP_ANONYMOUS MAP_ANON #else @@ -63,8 +64,7 @@ class PageAllocator { : page_size_(getpagesize()), last_(NULL), current_page_(NULL), - page_offset_(0), - pages_allocated_(0) { + page_offset_(0) { } ~PageAllocator() { @@ -112,12 +112,16 @@ class PageAllocator { return false; } - unsigned long pages_allocated() { return pages_allocated_; } - private: uint8_t *GetNPages(size_t num_pages) { +#if defined(__x86_64__) || defined(__aarch64__) || defined(__aarch64__) || \ + ((defined(__mips__) && _MIPS_SIM == _ABI64)) void *a = sys_mmap(NULL, page_size_ * num_pages, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); +#else + void *a = sys_mmap2(NULL, page_size_ * num_pages, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); +#endif if (a == MAP_FAILED) return NULL; @@ -132,8 +136,6 @@ class PageAllocator { header->num_pages = num_pages; last_ = header; - pages_allocated_ += num_pages; - return reinterpret_cast(a); } @@ -155,7 +157,6 @@ class PageAllocator { PageHeader *last_; uint8_t *current_page_; size_t page_offset_; - unsigned long pages_allocated_; }; // Wrapper to use with STL containers @@ -164,30 +165,12 @@ struct PageStdAllocator : public std::allocator { typedef typename std::allocator::pointer pointer; typedef typename std::allocator::size_type size_type; - explicit PageStdAllocator(PageAllocator& allocator) : allocator_(allocator), - stackdata_(NULL), - stackdata_size_(0) - {} - + explicit PageStdAllocator(PageAllocator& allocator): allocator_(allocator) {} template PageStdAllocator(const PageStdAllocator& other) - : allocator_(other.allocator_), - stackdata_(nullptr), - stackdata_size_(0) - {} - - explicit PageStdAllocator(PageAllocator& allocator, - pointer stackdata, - size_type stackdata_size) : allocator_(allocator), - stackdata_(stackdata), - stackdata_size_(stackdata_size) - {} + : allocator_(other.allocator_) {} inline pointer allocate(size_type n, const void* = 0) { - const size_type size = sizeof(T) * n; - if (size <= stackdata_size_) { - return stackdata_; - } - return static_cast(allocator_.Alloc(size)); + return static_cast(allocator_.Alloc(sizeof(T) * n)); } inline void deallocate(pointer, size_type) { @@ -205,8 +188,6 @@ struct PageStdAllocator : public std::allocator { template friend struct PageStdAllocator; PageAllocator& allocator_; - pointer stackdata_; - size_type stackdata_size_; }; // A wasteful vector is a std::vector, except that it allocates memory from a @@ -219,24 +200,6 @@ class wasteful_vector : public std::vector > { : std::vector >(PageStdAllocator(*allocator)) { std::vector >::reserve(size_hint); } - protected: - wasteful_vector(PageStdAllocator allocator) - : std::vector >(allocator) {} -}; - -// auto_wasteful_vector allocates space on the stack for N entries to avoid -// using the PageAllocator for small data, while still allowing for larger data. -template -class auto_wasteful_vector : public wasteful_vector { - T stackdata_[N]; - public: - auto_wasteful_vector(PageAllocator* allocator) - : wasteful_vector( - PageStdAllocator(*allocator, - &stackdata_[0], - sizeof(stackdata_))) { - std::vector >::reserve(N); - } }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/common/memory_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/memory_unittest.cc index 8d2494c2327d..1e511ca56ea7 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/memory_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/memory_unittest.cc @@ -38,13 +38,11 @@ typedef testing::Test PageAllocatorTest; TEST(PageAllocatorTest, Setup) { PageAllocator allocator; - EXPECT_EQ(0U, allocator.pages_allocated()); } TEST(PageAllocatorTest, SmallObjects) { PageAllocator allocator; - EXPECT_EQ(0U, allocator.pages_allocated()); for (unsigned i = 1; i < 1024; ++i) { uint8_t *p = reinterpret_cast(allocator.Alloc(i)); ASSERT_FALSE(p == NULL); @@ -55,10 +53,8 @@ TEST(PageAllocatorTest, SmallObjects) { TEST(PageAllocatorTest, LargeObject) { PageAllocator allocator; - EXPECT_EQ(0U, allocator.pages_allocated()); uint8_t *p = reinterpret_cast(allocator.Alloc(10000)); ASSERT_FALSE(p == NULL); - EXPECT_EQ(3U, allocator.pages_allocated()); for (unsigned i = 1; i < 10; ++i) { uint8_t *p = reinterpret_cast(allocator.Alloc(i)); ASSERT_FALSE(p == NULL); @@ -79,7 +75,6 @@ TEST(WastefulVectorTest, Setup) { TEST(WastefulVectorTest, Simple) { PageAllocator allocator_; - EXPECT_EQ(0U, allocator_.pages_allocated()); wasteful_vector v(&allocator_); for (unsigned i = 0; i < 256; ++i) { @@ -89,7 +84,6 @@ TEST(WastefulVectorTest, Simple) { } ASSERT_FALSE(v.empty()); ASSERT_EQ(v.size(), 256u); - EXPECT_EQ(1U, allocator_.pages_allocated()); for (unsigned i = 0; i < 256; ++i) ASSERT_EQ(v[i], i); } @@ -97,28 +91,7 @@ TEST(WastefulVectorTest, Simple) { TEST(WastefulVectorTest, UsesPageAllocator) { PageAllocator allocator_; wasteful_vector v(&allocator_); - EXPECT_EQ(1U, allocator_.pages_allocated()); v.push_back(1); ASSERT_TRUE(allocator_.OwnsPointer(&v[0])); } - -TEST(WastefulVectorTest, AutoWastefulVector) { - PageAllocator allocator_; - EXPECT_EQ(0U, allocator_.pages_allocated()); - - auto_wasteful_vector v(&allocator_); - EXPECT_EQ(0U, allocator_.pages_allocated()); - - v.push_back(1); - EXPECT_EQ(0U, allocator_.pages_allocated()); - EXPECT_FALSE(allocator_.OwnsPointer(&v[0])); - - v.resize(4); - EXPECT_EQ(0U, allocator_.pages_allocated()); - EXPECT_FALSE(allocator_.OwnsPointer(&v[0])); - - v.resize(10); - EXPECT_EQ(1U, allocator_.pages_allocated()); - EXPECT_TRUE(allocator_.OwnsPointer(&v[0])); -} diff --git a/toolkit/crashreporter/google-breakpad/src/common/module.cc b/toolkit/crashreporter/google-breakpad/src/common/module.cc index e701f1b59f7c..ca52f9fc80c8 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/module.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/module.cc @@ -49,13 +49,11 @@ using std::hex; Module::Module(const string &name, const string &os, - const string &architecture, const string &id, - const string &code_id /* = "" */) : + const string &architecture, const string &id) : name_(name), os_(os), architecture_(architecture), id_(id), - code_id_(code_id), load_address_(0) { } Module::~Module() { @@ -260,10 +258,6 @@ bool Module::Write(std::ostream &stream, SymbolData symbol_data) { if (!stream.good()) return ReportError(); - if (!code_id_.empty()) { - stream << "INFO CODE_ID " << code_id_ << endl; - } - if (symbol_data != ONLY_CFI) { AssignSourceIds(); diff --git a/toolkit/crashreporter/google-breakpad/src/common/module.h b/toolkit/crashreporter/google-breakpad/src/common/module.h index 305f94579df1..299bc3857e02 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/module.h +++ b/toolkit/crashreporter/google-breakpad/src/common/module.h @@ -186,7 +186,7 @@ class Module { // Create a new module with the given name, operating system, // architecture, and ID string. Module(const string &name, const string &os, const string &architecture, - const string &id, const string &code_id = ""); + const string &id); ~Module(); // Set the module's load address to LOAD_ADDRESS; addresses given @@ -292,7 +292,6 @@ class Module { string os() const { return os_; } string architecture() const { return architecture_; } string identifier() const { return id_; } - string code_identifier() const { return code_id_; } private: // Report an error that has occurred writing the symbol file, using @@ -305,7 +304,7 @@ class Module { static bool WriteRuleMap(const RuleMap &rule_map, std::ostream &stream); // Module header entries. - string name_, os_, architecture_, id_, code_id_; + string name_, os_, architecture_, id_; // The module's nominal load address. Addresses for functions and // lines are absolute, assuming the module is loaded at this diff --git a/toolkit/crashreporter/google-breakpad/src/common/module_unittest.cc b/toolkit/crashreporter/google-breakpad/src/common/module_unittest.cc index 3789f9ec5ec8..bf72736d9026 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/module_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/module_unittest.cc @@ -64,7 +64,6 @@ static Module::Function *generate_duplicate_function(const string &name) { #define MODULE_OS "os-name" #define MODULE_ARCH "architecture" #define MODULE_ID "id-string" -#define MODULE_CODE_ID "code-id-string" TEST(Write, Header) { stringstream s; @@ -75,16 +74,6 @@ TEST(Write, Header) { contents.c_str()); } -TEST(Write, HeaderCodeId) { - stringstream s; - Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID, MODULE_CODE_ID); - m.Write(s, ALL_SYMBOL_DATA); - string contents = s.str(); - EXPECT_STREQ("MODULE os-name architecture id-string name with spaces\n" - "INFO CODE_ID code-id-string\n", - contents.c_str()); -} - TEST(Write, OneLineFunc) { stringstream s; Module m(MODULE_NAME, MODULE_OS, MODULE_ARCH, MODULE_ID); diff --git a/toolkit/crashreporter/google-breakpad/src/common/moz.build b/toolkit/crashreporter/google-breakpad/src/common/moz.build index 7bb6e9b6d621..f5ee9fab6ebb 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/moz.build +++ b/toolkit/crashreporter/google-breakpad/src/common/moz.build @@ -43,10 +43,6 @@ if CONFIG['OS_ARCH'] != 'WINNT': 'module.cc', 'string_conversion.cc', ] - if CONFIG['OS_ARCH'] == 'Darwin': - HOST_CXXFLAGS += [ - '-stdlib=libc++', - ] HOST_CXXFLAGS += [ '-O2', '-g', diff --git a/toolkit/crashreporter/google-breakpad/src/common/stdio_wrapper.h b/toolkit/crashreporter/google-breakpad/src/common/stdio_wrapper.h deleted file mode 100644 index a3dd50aab66c..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/common/stdio_wrapper.h +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) 2016, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#ifndef GOOGLE_BREAKPAD_COMMON_STDIO_WRAPPER_H -#define GOOGLE_BREAKPAD_COMMON_STDIO_WRAPPER_H - -#include - -#if defined(_MSC_VER) && MSC_VER < 1900 -#include - -#define snprintf _snprintf -typedef SSIZE_T ssize_t; -#endif - - -#endif // GOOGLE_BREAKPAD_COMMON_STDIO_WRAPPER_H diff --git a/toolkit/crashreporter/google-breakpad/src/common/windows/omap.cc b/toolkit/crashreporter/google-breakpad/src/common/windows/omap.cc index 554a57c2db14..67b9206559cf 100644 --- a/toolkit/crashreporter/google-breakpad/src/common/windows/omap.cc +++ b/toolkit/crashreporter/google-breakpad/src/common/windows/omap.cc @@ -210,7 +210,7 @@ bool FindAndLoadOmapTable(const wchar_t* name, reinterpret_cast(&table->at(0)), &count_read))) { fprintf(stderr, "IDiaEnumDebugStreamData::Next failed while reading " - "data from stream \"%ws\"\n", name); + "data from stream \"%ws\"\n"); return false; } diff --git a/toolkit/crashreporter/google-breakpad/src/config.h.in b/toolkit/crashreporter/google-breakpad/src/config.h.in index ee6a67ad95df..1db015930932 100644 --- a/toolkit/crashreporter/google-breakpad/src/config.h.in +++ b/toolkit/crashreporter/google-breakpad/src/config.h.in @@ -3,9 +3,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_A_OUT_H -/* define if the compiler supports basic C++11 syntax */ -#undef HAVE_CXX11 - /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h index d8828043ff38..c936e1e683e3 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/breakpad_types.h @@ -40,12 +40,6 @@ #ifndef GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ #define GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ -#if (defined(_INTTYPES_H) || defined(_INTTYPES_H_)) && \ - !defined(__STDC_FORMAT_MACROS) -#error "inttypes.h has already been included before this header file, but " -#error "without __STDC_FORMAT_MACROS defined." -#endif - #ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS #endif /* __STDC_FORMAT_MACROS */ diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h index f4e2b5891c34..6cbe3023f9c1 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_cpu_mips.h @@ -157,20 +157,4 @@ enum MDMIPSRegisterNumbers { MD_CONTEXT_MIPS_FLOATING_POINT \ MD_CONTEXT_MIPS_DSP) -/** - * Breakpad defines for MIPS64 - */ -#define MD_CONTEXT_MIPS64 0x00080000 -#define MD_CONTEXT_MIPS64_INTEGER (MD_CONTEXT_MIPS64 | 0x00000002) -#define MD_CONTEXT_MIPS64_FLOATING_POINT (MD_CONTEXT_MIPS64 | 0x00000004) -#define MD_CONTEXT_MIPS64_DSP (MD_CONTEXT_MIPS64 | 0x00000008) - -#define MD_CONTEXT_MIPS64_FULL (MD_CONTEXT_MIPS64_INTEGER | \ - MD_CONTEXT_MIPS64_FLOATING_POINT | \ - MD_CONTEXT_MIPS64_DSP) - -#define MD_CONTEXT_MIPS64_ALL (MD_CONTEXT_MIPS64_INTEGER | \ - MD_CONTEXT_MIPS64_FLOATING_POINT \ - MD_CONTEXT_MIPS64_DSP) - #endif // GOOGLE_BREAKPAD_COMMON_MINIDUMP_CPU_MIPS_H__ diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h index 6fa3fba444e7..e4cd59edd5f1 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_exception_win32.h @@ -100,9 +100,6 @@ typedef enum { /* STATUS_STACK_BUFFER_OVERRUN */ MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION = 0xc0000374, /* STATUS_HEAP_CORRUPTION */ - MD_EXCEPTION_OUT_OF_MEMORY = 0xe0000008, - /* Exception thrown by Chromium allocators to indicate OOM. - See base/process/memory.h in Chromium for rationale. */ MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION = 0xe06d7363 /* Per http://support.microsoft.com/kb/185294, generated by Visual C++ compiler */ diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_format.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_format.h index 251e503df953..17a5abba33f4 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_format.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_format.h @@ -328,10 +328,6 @@ typedef enum { MD_MEMORY_INFO_LIST_STREAM = 16, /* MDRawMemoryInfoList */ MD_THREAD_INFO_LIST_STREAM = 17, MD_HANDLE_OPERATION_LIST_STREAM = 18, - MD_TOKEN_STREAM = 19, - MD_JAVASCRIPT_DATA_STREAM = 20, - MD_SYSTEM_MEMORY_INFO_STREAM = 21, - MD_PROCESS_VM_COUNTERS_STREAM = 22, MD_LAST_RESERVED_STREAM = 0x0000ffff, /* Breakpad extension types. 0x4767 = "Gg" */ @@ -453,26 +449,15 @@ static const size_t MDCVInfoPDB70_minsize = offsetof(MDCVInfoPDB70, #define MD_CVINFOPDB70_SIGNATURE 0x53445352 /* cvSignature = 'SDSR' */ -/* - * Modern ELF toolchains insert a "build id" into the ELF headers that - * usually contains a hash of some ELF headers + sections to uniquely - * identify a binary. - * - * https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/compiling-build-id.html - * https://sourceware.org/binutils/docs-2.26/ld/Options.html#index-g_t_002d_002dbuild_002did-292 - */ typedef struct { - uint32_t cv_signature; - uint8_t build_id[1]; /* Bytes of build id from GNU_BUILD_ID ELF note. - * This is variable-length, but usually 20 bytes - * as the binutils ld default is a SHA-1 hash. */ + uint32_t data1[2]; + uint32_t data2; + uint32_t data3; + uint32_t data4; + uint32_t data5[3]; + uint8_t extra[2]; } MDCVInfoELF; -static const size_t MDCVInfoELF_minsize = offsetof(MDCVInfoELF, - build_id[0]); - -#define MD_CVINFOELF_SIGNATURE 0x4270454c /* cvSignature = 'BpEL' */ - /* In addition to the two CodeView record formats above, used for linking * to external pdb files, it is possible for debugging data to be carried * directly in the CodeView record itself. These signature values will @@ -653,7 +638,6 @@ typedef enum { MD_CPU_ARCHITECTURE_SPARC = 0x8001, /* Breakpad-defined value for SPARC */ MD_CPU_ARCHITECTURE_PPC64 = 0x8002, /* Breakpad-defined value for PPC64 */ MD_CPU_ARCHITECTURE_ARM64 = 0x8003, /* Breakpad-defined value for ARM64 */ - MD_CPU_ARCHITECTURE_MIPS64 = 0x8004, /* Breakpad-defined value for MIPS64 */ MD_CPU_ARCHITECTURE_UNKNOWN = 0xffff /* PROCESSOR_ARCHITECTURE_UNKNOWN */ } MDCPUArchitecture; @@ -721,41 +705,6 @@ typedef struct { /* MAX_PATH from windef.h */ #define MD_MAX_PATH 260 -/* For MDXStateConfigFeatureMscInfo.features */ -typedef struct { - uint32_t offset; - uint32_t size; -} MDXStateFeature; - -/* For MDXStateConfigFeatureMscInfo.enabled_features from winnt.h */ -typedef enum { - MD_XSTATE_LEGACY_FLOATING_POINT = 0, /* XSTATE_LEGACY_FLOATING_POINT */ - MD_XSTATE_LEGACY_SSE = 1, /* XSTATE_LEGACY_SSE */ - MD_XSTATE_GSSE = 2, /* XSTATE_GSSE */ - MD_XSTATE_AVX = MD_XSTATE_GSSE, /* XSTATE_AVX */ - MD_XSTATE_MPX_BNDREGS = 3, /* XSTATE_MPX_BNDREGS */ - MD_XSTATE_MPX_BNDCSR = 4, /* XSTATE_MPX_BNDCSR */ - MD_XSTATE_AVX512_KMASK = 5, /* XSTATE_AVX512_KMASK */ - MD_XSTATE_AVX512_ZMM_H = 6, /* XSTATE_AVX512_ZMM_H */ - MD_XSTATE_AVX512_ZMM = 7, /* XSTATE_AVX512_ZMM */ - MD_XSTATE_IPT = 8, /* XSTATE_IPT */ - MD_XSTATE_LWP = 62 /* XSTATE_LWP */ -} MDXStateFeatureFlag; - -/* MAXIMUM_XSTATE_FEATURES from winnt.h */ -#define MD_MAXIMUM_XSTATE_FEATURES 64 - -/* For MDRawMiscInfo.xstate_data */ -typedef struct { - uint32_t size_of_info; - uint32_t context_size; - /* An entry in the features array is valid only if the corresponding bit in - * the enabled_features flag is set. */ - uint64_t enabled_features; - MDXStateFeature features[MD_MAXIMUM_XSTATE_FEATURES]; -} MDXStateConfigFeatureMscInfo; - - /* The miscellaneous information stream contains a variety * of small pieces of information. A member is valid if * it's within the available size and its corresponding @@ -816,22 +765,9 @@ typedef struct { * MD_MISCINFO_FLAGS1_BUILDSTRING. */ uint16_t build_string[MD_MAX_PATH]; /* UTF-16-encoded, 0-terminated */ uint16_t dbg_bld_str[40]; /* UTF-16-encoded, 0-terminated */ - - /* The following fields are not present in MINIDUMP_MISC_INFO_4 but are - * in MINIDUMP_MISC_INFO_5. When this struct is populated, these values - * may not be set. Use flags1 and size_of_info to determine whether these - * values are present. */ - - /* The following field has its own flags for establishing the validity of - * the structure's contents.*/ - MDXStateConfigFeatureMscInfo xstate_data; - - /* The following field is only valid if flags1 contains - * MD_MISCINFO_FLAGS1_PROCESS_COOKIE. */ - uint32_t process_cookie; } MDRawMiscInfo; /* MINIDUMP_MISC_INFO, MINIDUMP_MISC_INFO_2, * MINIDUMP_MISC_INFO_3, MINIDUMP_MISC_INFO_4, - * MINIDUMP_MISC_INFO_5, MINIDUMP_MISC_INFO_N */ + * MINIDUMP_MISC_INFO_N */ static const size_t MD_MISCINFO_SIZE = offsetof(MDRawMiscInfo, processor_max_mhz); @@ -839,14 +775,7 @@ static const size_t MD_MISCINFO2_SIZE = offsetof(MDRawMiscInfo, process_integrity_level); static const size_t MD_MISCINFO3_SIZE = offsetof(MDRawMiscInfo, build_string[0]); -static const size_t MD_MISCINFO4_SIZE = - offsetof(MDRawMiscInfo, xstate_data); -/* Version 5 of the MDRawMiscInfo structure is not a multiple of 8 in size and - * yet it contains some 8-bytes sized fields. This causes many compilers to - * round the structure size up to a multiple of 8 by adding padding at the end. - * The following hack is thus required for matching the proper on-disk size. */ -static const size_t MD_MISCINFO5_SIZE = - offsetof(MDRawMiscInfo, process_cookie) + sizeof(uint32_t); +static const size_t MD_MISCINFO4_SIZE = sizeof(MDRawMiscInfo); /* For (MDRawMiscInfo).flags1. These values indicate which fields in the * MDRawMiscInfoStructure are valid. */ @@ -867,8 +796,6 @@ typedef enum { /* MINIDUMP_MISC3_PROTECTED_PROCESS */ MD_MISCINFO_FLAGS1_BUILDSTRING = 0x00000100, /* MINIDUMP_MISC4_BUILDSTRING */ - MD_MISCINFO_FLAGS1_PROCESS_COOKIE = 0x00000200, - /* MINIDUMP_MISC5_PROCESS_COOKIE */ } MDMiscInfoFlags1; /* diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_size.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_size.h index fae57923cc4b..918544b66238 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_size.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/common/minidump_size.h @@ -75,12 +75,6 @@ class minidump_size { static size_t size() { return MDCVInfoPDB70_minsize; } }; -template<> -class minidump_size { - public: - static size_t size() { return MDCVInfoELF_minsize; } -}; - template<> class minidump_size { public: diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h index c59142315b9a..21f595e7b2c3 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/call_stack.h @@ -45,7 +45,6 @@ #ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__ #define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__ -#include #include namespace google_breakpad { @@ -62,24 +61,15 @@ class CallStack { // Resets the CallStack to its initial empty state void Clear(); - + const vector* frames() const { return &frames_; } - // Set the TID associated with this call stack. - void set_tid(uint32_t tid) { tid_ = tid; } - - uint32_t tid() const { return tid_; } - private: // Stackwalker is responsible for building the frames_ vector. friend class Stackwalker; // Storage for pushed frames. vector frames_; - - // The TID associated with this call stack. Default to 0 if it's not - // available. - uint32_t tid_; }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_module.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_module.h index b139907c44c4..4e8928243ca2 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_module.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_module.h @@ -86,14 +86,7 @@ class CodeModule { // ownership of. The new CodeModule may be of a different concrete class // than the CodeModule being copied, but will behave identically to the // copied CodeModule as far as the CodeModule interface is concerned. - virtual CodeModule* Copy() const = 0; - - // Getter and setter for shrink_down_delta. This is used when the address - // range for a module is shrunk down due to address range conflicts with - // other modules. The base_address and size fields are not updated and they - // should always reflect the original values (reported in the minidump). - virtual uint64_t shrink_down_delta() const = 0; - virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) = 0; + virtual const CodeModule* Copy() const = 0; }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_modules.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_modules.h index 509137cbbe99..a38579af6d1f 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_modules.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/code_modules.h @@ -35,12 +35,7 @@ #ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ #define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__ -#include - -#include - #include "google_breakpad/common/breakpad_types.h" -#include "processor/linked_ptr.h" namespace google_breakpad { @@ -96,14 +91,6 @@ class CodeModules { // returns objects in may differ between a copy and the original CodeModules // object. virtual const CodeModules* Copy() const = 0; - - // Returns a vector of all modules which address ranges needed to be shrunk - // down due to address range conflicts with other modules. - virtual std::vector > - GetShrunkRangeModules() const = 0; - - // Returns true, if module address range shrink is enabled. - virtual bool IsModuleShrinkEnabled() const = 0; }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/microdump.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/microdump.h index 0e2cb74944d9..abdaecb19ab4 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/microdump.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/microdump.h @@ -58,9 +58,6 @@ class MicrodumpModules : public BasicCodeModules { public: // Takes over ownership of |module|. void Add(const CodeModule* module); - - // Enables/disables module address range shrink. - void SetEnableModuleShrink(bool is_enabled); }; // MicrodumpContext carries a CPU-specific context. @@ -69,9 +66,6 @@ class MicrodumpContext : public DumpContext { public: virtual void SetContextARM(MDRawContextARM* arm); virtual void SetContextARM64(MDRawContextARM64* arm64); - virtual void SetContextX86(MDRawContextX86* x86); - virtual void SetContextMIPS(MDRawContextMIPS* mips32); - virtual void SetContextMIPS64(MDRawContextMIPS* mips64); }; // This class provides access to microdump memory regions. diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h index c8c3cd4815c1..2b5025e4ff55 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/minidump.h @@ -151,8 +151,6 @@ class MinidumpStream : public MinidumpObject { // that implements MinidumpStream can compare expected_size to a // known size as an integrity check. virtual bool Read(uint32_t expected_size) = 0; - - DISALLOW_COPY_AND_ASSIGN(MinidumpStream); }; @@ -193,8 +191,6 @@ class MinidumpContext : public DumpContext { // for access to data about the minidump file itself, such as whether // it should be byte-swapped. Minidump* minidump_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpContext); }; @@ -362,8 +358,6 @@ class MinidumpThreadList : public MinidumpStream { // The list of threads. MinidumpThreads* threads_; uint32_t thread_count_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpThreadList); }; @@ -398,14 +392,7 @@ class MinidumpModule : public MinidumpObject, virtual string debug_file() const; virtual string debug_identifier() const; virtual string version() const; - virtual CodeModule* Copy() const; - - // Getter and setter for shrink_down_delta. This is used when the address - // range for a module is shrunk down due to address range conflicts with - // other modules. The base_address and size fields are not updated and they - // should always reflect the original values (reported in the minidump). - virtual uint64_t shrink_down_delta() const; - virtual void SetShrinkDownDelta(uint64_t shrink_down_delta); + virtual const CodeModule* Copy() const; // The CodeView record, which contains information to locate the module's // debugging information (pdb). This is returned as uint8_t* because @@ -514,13 +501,6 @@ class MinidumpModuleList : public MinidumpStream, virtual const MinidumpModule* GetModuleAtIndex(unsigned int index) const; virtual const CodeModules* Copy() const; - // Returns a vector of all modules which address ranges needed to be shrunk - // down due to address range conflicts with other modules. - virtual vector > GetShrunkRangeModules() const; - - // Returns true, if module address range shrink is enabled. - virtual bool IsModuleShrinkEnabled() const; - // Print a human-readable representation of the object to stdout. void Print(); @@ -545,8 +525,6 @@ class MinidumpModuleList : public MinidumpStream, MinidumpModules *modules_; uint32_t module_count_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpModuleList); }; @@ -609,8 +587,6 @@ class MinidumpMemoryList : public MinidumpStream { // The list of regions. MemoryRegions *regions_; uint32_t region_count_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpMemoryList); }; @@ -650,8 +626,6 @@ class MinidumpException : public MinidumpStream { MDRawExceptionStream exception_; MinidumpContext* context_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpException); }; // MinidumpAssertion wraps MDRawAssertionInfo, which contains information @@ -692,8 +666,6 @@ class MinidumpAssertion : public MinidumpStream { string expression_; string function_; string file_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpAssertion); }; @@ -747,8 +719,6 @@ class MinidumpSystemInfo : public MinidumpStream { // A string identifying the CPU vendor, if known. const string* cpu_vendor_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpSystemInfo); }; @@ -782,8 +752,6 @@ class MinidumpMiscInfo : public MinidumpStream { string daylight_name_; string build_string_; string dbg_bld_str_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpMiscInfo); }; @@ -816,8 +784,6 @@ class MinidumpBreakpadInfo : public MinidumpStream { bool Read(uint32_t expected_size_); MDRawBreakpadInfo breakpad_info_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpBreakpadInfo); }; // MinidumpMemoryInfo wraps MDRawMemoryInfo, which provides information @@ -888,8 +854,6 @@ class MinidumpMemoryInfoList : public MinidumpStream { MinidumpMemoryInfos* infos_; uint32_t info_count_; - - DISALLOW_COPY_AND_ASSIGN(MinidumpMemoryInfoList); }; // MinidumpLinuxMaps wraps information about a single mapped memory region @@ -1097,9 +1061,6 @@ class Minidump { // Print a human-readable representation of the object to stdout. void Print(); - // Is the OS Android. - bool IsAndroid(); - private: // MinidumpStreamInfo is used in the MinidumpStreamMap. It lets // the Minidump object locate interesting streams quickly, and @@ -1160,8 +1121,6 @@ class Minidump { // construction or after a failed Read(); true following a successful // Read(). bool valid_; - - DISALLOW_COPY_AND_ASSIGN(Minidump); }; diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/process_state.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/process_state.h index 9f12b0c69970..728656f2bd7c 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/process_state.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/process_state.h @@ -39,10 +39,8 @@ #include "common/using_std_string.h" #include "google_breakpad/common/breakpad_types.h" -#include "google_breakpad/processor/code_modules.h" -#include "google_breakpad/processor/minidump.h" #include "google_breakpad/processor/system_info.h" -#include "processor/linked_ptr.h" +#include "google_breakpad/processor/minidump.h" namespace google_breakpad { @@ -111,9 +109,6 @@ class ProcessState { } const SystemInfo* system_info() const { return &system_info_; } const CodeModules* modules() const { return modules_; } - const vector >* shrunk_range_modules() const { - return &shrunk_range_modules_; - } const vector* modules_without_symbols() const { return &modules_without_symbols_; } @@ -177,10 +172,6 @@ class ProcessState { // ProcessState. const CodeModules *modules_; - // The modules which virtual address ranges were shrunk down due to - // virtual address conflicts. - vector > shrunk_range_modules_; - // The modules that didn't have symbols when the report was processed. vector modules_without_symbols_; diff --git a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/system_info.h b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/system_info.h index 8d2f60be48b8..9583d9e89c73 100644 --- a/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/system_info.h +++ b/toolkit/crashreporter/google-breakpad/src/google_breakpad/processor/system_info.h @@ -44,7 +44,7 @@ namespace google_breakpad { struct SystemInfo { public: SystemInfo() : os(), os_short(), os_version(), cpu(), cpu_info(), - cpu_count(0), gl_version(), gl_vendor(), gl_renderer() {} + cpu_count(0) {} // Resets the SystemInfo object to its default values. void Clear() { @@ -54,9 +54,6 @@ struct SystemInfo { cpu.clear(); cpu_info.clear(); cpu_count = 0; - gl_version.clear(); - gl_vendor.clear(); - gl_renderer.clear(); } // A string identifying the operating system, such as "Windows NT", @@ -94,11 +91,6 @@ struct SystemInfo { // The number of processors in the system. Will be greater than one for // multi-core systems. int cpu_count; - - // The GPU information. Currently only populated in microdumps. - string gl_version; - string gl_vendor; - string gl_renderer; }; } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_module.h b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_module.h index 0f7b3e4316dd..3fe782bbeabc 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_module.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_module.h @@ -57,7 +57,6 @@ class BasicCodeModule : public CodeModule { explicit BasicCodeModule(const CodeModule *that) : base_address_(that->base_address()), size_(that->size()), - shrink_down_delta_(that->shrink_down_delta()), code_file_(that->code_file()), code_identifier_(that->code_identifier()), debug_file_(that->debug_file()), @@ -65,19 +64,18 @@ class BasicCodeModule : public CodeModule { version_(that->version()) {} BasicCodeModule(uint64_t base_address, uint64_t size, - const string &code_file, - const string &code_identifier, - const string &debug_file, - const string &debug_identifier, - const string &version) - : base_address_(base_address), - size_(size), - shrink_down_delta_(0), - code_file_(code_file), - code_identifier_(code_identifier), - debug_file_(debug_file), - debug_identifier_(debug_identifier), - version_(version) + const string &code_file, + const string &code_identifier, + const string &debug_file, + const string &debug_identifier, + const string &version) + : base_address_(base_address), + size_(size), + code_file_(code_file), + code_identifier_(code_identifier), + debug_file_(debug_file), + debug_identifier_(debug_identifier), + version_(version) {} virtual ~BasicCodeModule() {} @@ -85,21 +83,16 @@ class BasicCodeModule : public CodeModule { // members. virtual uint64_t base_address() const { return base_address_; } virtual uint64_t size() const { return size_; } - virtual uint64_t shrink_down_delta() const { return shrink_down_delta_; } - virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) { - shrink_down_delta_ = shrink_down_delta; - } virtual string code_file() const { return code_file_; } virtual string code_identifier() const { return code_identifier_; } virtual string debug_file() const { return debug_file_; } virtual string debug_identifier() const { return debug_identifier_; } virtual string version() const { return version_; } - virtual CodeModule* Copy() const { return new BasicCodeModule(this); } + virtual const CodeModule* Copy() const { return new BasicCodeModule(this); } private: uint64_t base_address_; uint64_t size_; - uint64_t shrink_down_delta_; string code_file_; string code_identifier_; string debug_file_; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.cc b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.cc index 48d971677cda..40b45a8bf887 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.cc @@ -38,8 +38,6 @@ #include -#include - #include "google_breakpad/processor/code_module.h" #include "processor/linked_ptr.h" #include "processor/logging.h" @@ -47,66 +45,51 @@ namespace google_breakpad { -using std::vector; - BasicCodeModules::BasicCodeModules(const CodeModules *that) - : main_address_(0), map_() { + : main_address_(0), + map_(new RangeMap >()) { BPLOG_IF(ERROR, !that) << "BasicCodeModules::BasicCodeModules requires " "|that|"; assert(that); - map_.SetEnableShrinkDown(that->IsModuleShrinkEnabled()); - const CodeModule *main_module = that->GetMainModule(); if (main_module) main_address_ = main_module->base_address(); unsigned int count = that->module_count(); - for (unsigned int i = 0; i < count; ++i) { + for (unsigned int module_sequence = 0; + module_sequence < count; + ++module_sequence) { // Make a copy of the module and insert it into the map. Use // GetModuleAtIndex because ordering is unimportant when slurping the // entire list, and GetModuleAtIndex may be faster than // GetModuleAtSequence. - linked_ptr module(that->GetModuleAtIndex(i)->Copy()); - if (!map_.StoreRange(module->base_address(), module->size(), module)) { - BPLOG(ERROR) << "Module " << module->code_file() - << " could not be stored"; + linked_ptr module( + that->GetModuleAtIndex(module_sequence)->Copy()); + if (!map_->StoreRange(module->base_address(), module->size(), module)) { + BPLOG(ERROR) << "Module " << module->code_file() << + " could not be stored"; } } - - // Report modules with shrunk ranges. - for (unsigned int i = 0; i < count; ++i) { - linked_ptr module(that->GetModuleAtIndex(i)->Copy()); - uint64_t delta = 0; - if (map_.RetrieveRange(module->base_address() + module->size() - 1, - &module, NULL /* base */, &delta, NULL /* size */) && - delta > 0) { - BPLOG(INFO) << "The range for module " << module->code_file() - << " was shrunk down by " << HexString(delta) << " bytes."; - linked_ptr shrunk_range_module(module->Copy()); - shrunk_range_module->SetShrinkDownDelta(delta); - shrunk_range_modules_.push_back(shrunk_range_module); - } - } - - // TODO(ivanpe): Report modules with conflicting ranges. The list of such - // modules should be copied from |that|. } -BasicCodeModules::BasicCodeModules() : main_address_(0), map_() { } +BasicCodeModules::BasicCodeModules() + : main_address_(0), + map_(new RangeMap >()) { +} BasicCodeModules::~BasicCodeModules() { + delete map_; } unsigned int BasicCodeModules::module_count() const { - return map_.GetCount(); + return map_->GetCount(); } const CodeModule* BasicCodeModules::GetModuleForAddress( uint64_t address) const { linked_ptr module; - if (!map_.RetrieveRange(address, &module, NULL /* base */, NULL /* delta */, - NULL /* size */)) { + if (!map_->RetrieveRange(address, &module, NULL, NULL)) { BPLOG(INFO) << "No module at " << HexString(address); return NULL; } @@ -121,8 +104,7 @@ const CodeModule* BasicCodeModules::GetMainModule() const { const CodeModule* BasicCodeModules::GetModuleAtSequence( unsigned int sequence) const { linked_ptr module; - if (!map_.RetrieveRangeAtIndex(sequence, &module, NULL /* base */, - NULL /* delta */, NULL /* size */)) { + if (!map_->RetrieveRangeAtIndex(sequence, &module, NULL, NULL)) { BPLOG(ERROR) << "RetrieveRangeAtIndex failed for sequence " << sequence; return NULL; } @@ -143,13 +125,4 @@ const CodeModules* BasicCodeModules::Copy() const { return new BasicCodeModules(this); } -vector > -BasicCodeModules::GetShrunkRangeModules() const { - return shrunk_range_modules_; -} - -bool BasicCodeModules::IsModuleShrinkEnabled() const { - return map_.IsShrinkDownEnabled(); -} - } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.h b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.h index 50f8a03d817a..ace569b8a7ad 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_code_modules.h @@ -41,16 +41,13 @@ #ifndef PROCESSOR_BASIC_CODE_MODULES_H__ #define PROCESSOR_BASIC_CODE_MODULES_H__ -#include - -#include - #include "google_breakpad/processor/code_modules.h" -#include "processor/linked_ptr.h" -#include "processor/range_map.h" namespace google_breakpad { +template class linked_ptr; +template class RangeMap; + class BasicCodeModules : public CodeModules { public: // Creates a new BasicCodeModules object given any existing CodeModules @@ -69,9 +66,6 @@ class BasicCodeModules : public CodeModules { virtual const CodeModule* GetModuleAtSequence(unsigned int sequence) const; virtual const CodeModule* GetModuleAtIndex(unsigned int index) const; virtual const CodeModules* Copy() const; - virtual std::vector > - GetShrunkRangeModules() const; - virtual bool IsModuleShrinkEnabled() const; protected: BasicCodeModules(); @@ -81,11 +75,7 @@ class BasicCodeModules : public CodeModules { // The map used to contain each CodeModule, keyed by each CodeModule's // address range. - RangeMap > map_; - - // A vector of all CodeModules that were shrunk downs due to - // address range conflicts. - std::vector > shrunk_range_modules_; + RangeMap > *map_; private: // Disallow copy constructor and assignment operator. diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver.cc b/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver.cc index aa66e15995cc..10dcb2763e89 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver.cc @@ -203,16 +203,15 @@ void BasicSourceLineResolver::Module::LookupAddress(StackFrame *frame) const { MemAddr function_base; MemAddr function_size; MemAddr public_address; - if (functions_.RetrieveNearestRange(address, &func, &function_base, - NULL /* delta */, &function_size) && + if (functions_.RetrieveNearestRange(address, &func, + &function_base, &function_size) && address >= function_base && address - function_base < function_size) { frame->function_name = func->name; frame->function_base = frame->module->base_address() + function_base; linked_ptr line; MemAddr line_base; - if (func->lines.RetrieveRange(address, &line, &line_base, NULL /* delta */, - NULL /* size */)) { + if (func->lines.RetrieveRange(address, &line, &line_base, NULL)) { FileMap::const_iterator it = files_.find(line->source_file_id); if (it != files_.end()) { frame->source_file_name = files_.find(line->source_file_id)->second; @@ -257,8 +256,8 @@ WindowsFrameInfo *BasicSourceLineResolver::Module::FindWindowsFrameInfo( // comparison in an overflow-friendly way. linked_ptr function; MemAddr function_base, function_size; - if (functions_.RetrieveNearestRange(address, &function, &function_base, - NULL /* delta */, &function_size) && + if (functions_.RetrieveNearestRange(address, &function, + &function_base, &function_size) && address >= function_base && address - function_base < function_size) { result->parameter_size = function->parameter_size; result->valid |= WindowsFrameInfo::VALID_PARAMETER_SIZE; @@ -287,8 +286,8 @@ CFIFrameInfo *BasicSourceLineResolver::Module::FindCFIFrameInfo( // provides an initial set of register recovery rules. Then, walk // forward from the initial rule's starting address to frame's // instruction address, applying delta rules. - if (!cfi_initial_rules_.RetrieveRange(address, &initial_rules, &initial_base, - NULL /* delta */, &initial_size)) { + if (!cfi_initial_rules_.RetrieveRange(address, &initial_rules, + &initial_base, &initial_size)) { return NULL; } @@ -483,7 +482,7 @@ bool SymbolParseHelper::ParseFile(char *file_line, long *index, } *filename = tokens[1]; - if (!*filename) { + if (!filename) { return false; } @@ -596,7 +595,7 @@ bool SymbolParseHelper::ParsePublicSymbol(char *public_line, *stack_param_size < 0) { return false; } - *name = tokens[2]; + *name = tokens[2]; return true; } diff --git a/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc index a75044c74b75..7d4cd5c50bc1 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/basic_source_line_resolver_unittest.cc @@ -68,11 +68,9 @@ class TestCodeModule : public CodeModule { virtual string debug_file() const { return ""; } virtual string debug_identifier() const { return ""; } virtual string version() const { return ""; } - virtual CodeModule* Copy() const { + virtual const CodeModule* Copy() const { return new TestCodeModule(code_file_); } - virtual uint64_t shrink_down_delta() const { return 0; } - virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) {} private: string code_file_; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc b/toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc index 925f084690a3..e3276716c819 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/call_stack.cc @@ -48,7 +48,6 @@ void CallStack::Clear() { ++iterator) { delete *iterator; } - tid_ = 0; } } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/processor/disassembler_x86.cc b/toolkit/crashreporter/google-breakpad/src/processor/disassembler_x86.cc index 559022404f6e..9eba848d8c72 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/disassembler_x86.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/disassembler_x86.cc @@ -27,6 +27,7 @@ #include "processor/disassembler_x86.h" #include +#include namespace google_breakpad { diff --git a/toolkit/crashreporter/google-breakpad/src/processor/dump_context.cc b/toolkit/crashreporter/google-breakpad/src/processor/dump_context.cc index 762d4fe21d7a..49fb77b15fca 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/dump_context.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/dump_context.cc @@ -34,14 +34,17 @@ #include "google_breakpad/processor/dump_context.h" #include +#include #ifdef _WIN32 #include +#if defined(_MSC_VER) && _MSC_VER < 1900 +#define snprintf _snprintf +#endif #else // _WIN32 #include #endif // _WIN32 -#include "common/stdio_wrapper.h" #include "processor/logging.h" namespace google_breakpad { @@ -131,8 +134,7 @@ const MDRawContextARM64* DumpContext::GetContextARM64() const { } const MDRawContextMIPS* DumpContext::GetContextMIPS() const { - if ((GetContextCPU() != MD_CONTEXT_MIPS) && - (GetContextCPU() != MD_CONTEXT_MIPS64)) { + if (GetContextCPU() != MD_CONTEXT_MIPS) { BPLOG(ERROR) << "DumpContext cannot get MIPS context"; return NULL; } @@ -173,7 +175,6 @@ bool DumpContext::GetInstructionPointer(uint64_t* ip) const { *ip = GetContextX86()->eip; break; case MD_CONTEXT_MIPS: - case MD_CONTEXT_MIPS64: *ip = GetContextMIPS()->epc; break; default: @@ -217,7 +218,6 @@ bool DumpContext::GetStackPointer(uint64_t* sp) const { *sp = GetContextX86()->esp; break; case MD_CONTEXT_MIPS: - case MD_CONTEXT_MIPS64: *sp = GetContextMIPS()->iregs[MD_CONTEXT_MIPS_REG_SP]; break; default: @@ -295,7 +295,6 @@ void DumpContext::FreeContext() { break; case MD_CONTEXT_MIPS: - case MD_CONTEXT_MIPS64: delete context_.ctx_mips; break; @@ -602,8 +601,7 @@ void DumpContext::Print() { break; } - case MD_CONTEXT_MIPS: - case MD_CONTEXT_MIPS64: { + case MD_CONTEXT_MIPS: { const MDRawContextMIPS* context_mips = GetContextMIPS(); printf("MDRawContextMIPS\n"); printf(" context_flags = 0x%x\n", diff --git a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.cc b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.cc index 63056c438e5a..a196da79ab78 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.cc @@ -54,18 +54,14 @@ namespace { -// Prefixes for memory mapping names. -constexpr char kHeapPrefix[] = "[heap"; -constexpr char kStackPrefix[] = "[stack"; - // This function in libc is called if the program was compiled with // -fstack-protector and a function's stack canary changes. -constexpr char kStackCheckFailureFunction[] = "__stack_chk_fail"; +const char kStackCheckFailureFunction[] = "__stack_chk_fail"; // This function in libc is called if the program was compiled with // -D_FORTIFY_SOURCE=2, a function like strcpy() is called, and the runtime // can determine that the call would overflow the target buffer. -constexpr char kBoundsCheckFailureFunction[] = "__chk_fail"; +const char kBoundsCheckFailureFunction[] = "__chk_fail"; #ifndef _WIN32 const unsigned int MAX_INSTRUCTION_LEN = 15; @@ -235,10 +231,21 @@ bool ExploitabilityLinux::EndedOnIllegalWrite(uint64_t instruction_ptr) { MAX_OBJDUMP_BUFFER_LEN, objdump_output_buffer); + // Put buffer data into stream to output line-by-line. + std::stringstream objdump_stream; + objdump_stream.str(string(objdump_output_buffer)); string line; - if (!GetObjdumpInstructionLine(objdump_output_buffer, &line)) { - return false; - } + + // Pipe each output line into the string until the string contains + // the first instruction from objdump. + // Loop until the line shows the first instruction or there are no lines left. + do { + if (!getline(objdump_stream, line)) { + BPLOG(INFO) << "Objdump instructions not found"; + return false; + } + } while (line.find("0:") == string::npos); + // This first instruction contains the above substring. // Convert objdump instruction line into the operation and operands. string instruction = ""; @@ -392,33 +399,6 @@ bool ExploitabilityLinux::CalculateAddress(const string &address_expression, return true; } -// static -bool ExploitabilityLinux::GetObjdumpInstructionLine( - const char *objdump_output_buffer, - string *instruction_line) { - // Put buffer data into stream to output line-by-line. - std::stringstream objdump_stream; - objdump_stream.str(string(objdump_output_buffer)); - - // Pipe each output line into the string until the string contains the first - // instruction from objdump. All lines before the "<.data>:" section are - // skipped. Loop until the line shows the first instruction or there are no - // lines left. - bool data_section_seen = false; - do { - if (!getline(objdump_stream, *instruction_line)) { - BPLOG(INFO) << "Objdump instructions not found"; - return false; - } - if (instruction_line->find("<.data>:") != string::npos) { - data_section_seen = true; - } - } while (!data_section_seen || instruction_line->find("0:") == string::npos); - // This first instruction contains the above substring. - - return true; -} - bool ExploitabilityLinux::TokenizeObjdumpInstruction(const string &line, string *operation, string *dest, @@ -543,9 +523,9 @@ bool ExploitabilityLinux::StackPointerOffStack(uint64_t stack_ptr) { // Checks if the stack pointer maps to a valid mapping and if the mapping // is not the stack. If the mapping has no name, it is inconclusive whether // it is off the stack. - return !linux_maps || (linux_maps->GetPathname().compare("") && - linux_maps->GetPathname().compare( - 0, strlen(kStackPrefix), kStackPrefix)); + return !linux_maps || + (linux_maps->GetPathname().compare("") && + linux_maps->GetPathname().compare("[stack]")); } bool ExploitabilityLinux::ExecutableStackOrHeap() { @@ -555,10 +535,9 @@ bool ExploitabilityLinux::ExecutableStackOrHeap() { const MinidumpLinuxMaps *linux_maps = linux_maps_list->GetLinuxMapsAtIndex(i); // Check for executable stack or heap for each mapping. - if (linux_maps && (!linux_maps->GetPathname().compare( - 0, strlen(kStackPrefix), kStackPrefix) || - !linux_maps->GetPathname().compare( - 0, strlen(kHeapPrefix), kHeapPrefix)) && + if (linux_maps && + (!linux_maps->GetPathname().compare("[stack]") || + !linux_maps->GetPathname().compare("[heap]")) && linux_maps->IsExecutable()) { return true; } diff --git a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.h b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.h index e3ff13b6e07d..93c5082fb3c2 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_linux.h @@ -86,13 +86,6 @@ class ExploitabilityLinux : public Exploitability { const unsigned int MAX_OBJDUMP_BUFFER_LEN, char *objdump_output_buffer); - // Parses the objdump output given in |objdump_output_buffer| and extracts - // the line of the first instruction into |instruction_line|. Returns true - // when the instruction line is successfully extracted. - static bool GetObjdumpInstructionLine( - const char *objdump_output_buffer, - string *instruction_line); - // Tokenizes out the operation and operands from a line of instruction // disassembled by objdump. This method modifies the pointers to match the // tokens of the instruction, and returns if the tokenizing was a success. diff --git a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_unittest.cc index 528ee5f21376..700f9e58cc59 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/exploitability_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/exploitability_unittest.cc @@ -47,10 +47,9 @@ namespace google_breakpad { class ExploitabilityLinuxTest : public ExploitabilityLinux { public: - using ExploitabilityLinux::CalculateAddress; using ExploitabilityLinux::DisassembleBytes; - using ExploitabilityLinux::GetObjdumpInstructionLine; using ExploitabilityLinux::TokenizeObjdumpInstruction; + using ExploitabilityLinux::CalculateAddress; }; class ExploitabilityLinuxTestMinidumpContext : public MinidumpContext { @@ -161,8 +160,6 @@ TEST(ExploitabilityTest, TestLinuxEngine) { ExploitabilityFor("linux_inside_module_exe_region2.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_INTERESTING, ExploitabilityFor("linux_stack_pointer_in_stack.dmp")); - ASSERT_EQ(google_breakpad::EXPLOITABILITY_INTERESTING, - ExploitabilityFor("linux_stack_pointer_in_stack_alt_name.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, ExploitabilityFor("linux_stack_pointer_in_module.dmp")); ASSERT_EQ(google_breakpad::EXPLOITABILITY_HIGH, @@ -197,54 +194,11 @@ TEST(ExploitabilityLinuxUtilsTest, DisassembleBytesTest) { std::stringstream objdump_stream; objdump_stream.str(string(buffer)); string line = ""; - while (line.find("<.data>") == string::npos) - getline(objdump_stream, line); - getline(objdump_stream, line); + while ((line.find("0:") == string::npos) && getline(objdump_stream, line)) { + } ASSERT_EQ(line, " 0:\tc7 00 05 00 00 00 \tmov DWORD PTR [rax],0x5"); } -TEST(ExploitabilityLinuxUtilsTest, GetObjdumpInstructionLine) { - string disassebly = - "\n" - "/tmp/breakpad_mem_region-raw_bytes-tMmMo0: file format binary\n" - "// Trying to confuse the parser 0:\n" - "\n" - "Disassembly of section .data:\n" - "\n" - "0000000000000000 <.data>:\n" - " 0:\tc7 00 01 00 00 00 \tmov DWORD PTR [rax],0x1\n" - " 6:\t5d \tpop rbp\n" - " 7:\tc3 \tret \n" - " 8:\t55 \tpush rbp\n" - " 9:\t48 89 e5 \tmov rbp,rsp\n" - " c:\t53 \tpush rbx\n" - " d:\t48 \trex.W\n" - " e:\t81 \t.byte 0x81\n"; - string line; - EXPECT_TRUE(ExploitabilityLinuxTest::GetObjdumpInstructionLine( - disassebly.c_str(), &line)); - EXPECT_EQ(" 0:\tc7 00 01 00 00 00 \tmov DWORD PTR [rax],0x1", line); - - // There is no "0:" after "<.data>:". Expected to return false. - disassebly = - "\n" - "/tmp/breakpad_mem_region-raw_bytes-tMmMo0: file format binary\n" - "// Trying to confuse the parser 0:\n" - "\n" - "Disassembly of section .data:\n" - "\n" - " 0:\tc7 00 01 00 00 00 \tmov DWORD PTR [rax],0x1\n" - " 6:\t5d \tpop rbp\n" - " 7:\tc3 \tret \n" - " 8:\t55 \tpush rbp\n" - " 9:\t48 89 e5 \tmov rbp,rsp\n" - " d:\t48 \trex.W\n" - "0000000000000000 <.data>:\n" - " c:\t53 \tpush rbx\n"; - EXPECT_FALSE(ExploitabilityLinuxTest::GetObjdumpInstructionLine( - disassebly.c_str(), &line)); -} - TEST(ExploitabilityLinuxUtilsTest, TokenizeObjdumpInstructionTest) { ASSERT_FALSE(ExploitabilityLinuxTest::TokenizeObjdumpInstruction("", NULL, @@ -283,17 +237,17 @@ TEST(ExploitabilityLinuxUtilsTest, CalculateAddressTest) { MDRawContextAMD64 raw_context; raw_context.rdx = 12345; ExploitabilityLinuxTestMinidumpContext context(raw_context); - ASSERT_EQ(context.GetContextAMD64()->rdx, 12345U); + ASSERT_EQ(context.GetContextAMD64()->rdx, 12345); ASSERT_FALSE(ExploitabilityLinuxTest::CalculateAddress("", context, NULL)); uint64_t write_address = 0; ASSERT_TRUE(ExploitabilityLinuxTest::CalculateAddress("rdx-0x4D2", context, &write_address)); - ASSERT_EQ(write_address, 11111U); + ASSERT_EQ(write_address, 11111); ASSERT_TRUE(ExploitabilityLinuxTest::CalculateAddress("rdx+0x4D2", context, &write_address)); - ASSERT_EQ(write_address, 13579U); + ASSERT_EQ(write_address, 13579); ASSERT_FALSE(ExploitabilityLinuxTest::CalculateAddress("rdx+rax", context, &write_address)); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc index c7215228e94c..72632f84f920 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/fast_source_line_resolver_unittest.cc @@ -79,11 +79,9 @@ class TestCodeModule : public CodeModule { virtual string debug_file() const { return ""; } virtual string debug_identifier() const { return ""; } virtual string version() const { return ""; } - virtual CodeModule* Copy() const { + virtual const CodeModule* Copy() const { return new TestCodeModule(code_file_); } - virtual uint64_t shrink_down_delta() const { return 0; } - virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) {} private: string code_file_; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/logging.cc b/toolkit/crashreporter/google-breakpad/src/processor/logging.cc index c1eebbc22331..8bb95a695aa9 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/logging.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/logging.cc @@ -35,16 +35,20 @@ #include #include +#include #include #include #include -#include "common/stdio_wrapper.h" #include "common/using_std_string.h" #include "processor/logging.h" #include "processor/pathname_stripper.h" +#ifdef _WIN32 +#define snprintf _snprintf +#endif + namespace google_breakpad { LogStream::LogStream(std::ostream &stream, Severity severity, diff --git a/toolkit/crashreporter/google-breakpad/src/processor/microdump.cc b/toolkit/crashreporter/google-breakpad/src/processor/microdump.cc index 4af62f56f0c6..6a51a9971a92 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/microdump.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/microdump.cc @@ -54,16 +54,11 @@ static const char kMicrodumpBegin[] = "-----BEGIN BREAKPAD MICRODUMP-----"; static const char kMicrodumpEnd[] = "-----END BREAKPAD MICRODUMP-----"; static const char kOsKey[] = ": O "; static const char kCpuKey[] = ": C "; -static const char kGpuKey[] = ": G "; static const char kMmapKey[] = ": M "; static const char kStackKey[] = ": S "; static const char kStackFirstLineKey[] = ": S 0 "; static const char kArmArchitecture[] = "arm"; static const char kArm64Architecture[] = "arm64"; -static const char kX86Architecture[] = "x86"; -static const char kMipsArchitecture[] = "mips"; -static const char kMips64Architecture[] = "mips64"; -static const char kGpuUnknown[] = "UNKNOWN"; template T HexStrToL(const string& str) { @@ -104,15 +99,12 @@ namespace google_breakpad { void MicrodumpModules::Add(const CodeModule* module) { linked_ptr module_ptr(module); - if (!map_.StoreRange(module->base_address(), module->size(), module_ptr)) { + if (!map_->StoreRange(module->base_address(), module->size(), module_ptr)) { BPLOG(ERROR) << "Module " << module->code_file() << " could not be stored"; } } -void MicrodumpModules::SetEnableModuleShrink(bool is_enabled) { - map_.SetEnableShrinkDown(is_enabled); -} // // MicrodumpContext @@ -130,24 +122,6 @@ void MicrodumpContext::SetContextARM64(MDRawContextARM64* arm64) { valid_ = true; } -void MicrodumpContext::SetContextX86(MDRawContextX86* x86) { - DumpContext::SetContextFlags(MD_CONTEXT_X86); - DumpContext::SetContextX86(x86); - valid_ = true; -} - -void MicrodumpContext::SetContextMIPS(MDRawContextMIPS* mips32) { - DumpContext::SetContextFlags(MD_CONTEXT_MIPS); - DumpContext::SetContextMIPS(mips32); - valid_ = true; -} - -void MicrodumpContext::SetContextMIPS64(MDRawContextMIPS* mips64) { - DumpContext::SetContextFlags(MD_CONTEXT_MIPS64); - DumpContext::SetContextMIPS(mips64); - valid_ = true; -} - // // MicrodumpMemoryRegion @@ -230,13 +204,14 @@ Microdump::Microdump(const string& contents) in_microdump = true; continue; } - if (!in_microdump) { - continue; - } if (line.find(kMicrodumpEnd) != string::npos) { break; } + if (!in_microdump) { + continue; + } + size_t pos; if ((pos = line.find(kOsKey)) != string::npos) { string os_str(line, pos + strlen(kOsKey)); @@ -265,7 +240,6 @@ Microdump::Microdump(const string& contents) } else if (os_id == "A") { system_info_->os = "Android"; system_info_->os_short = "android"; - modules_->SetEnableModuleShrink(true); } // OS line also contains release and version for future use. @@ -299,9 +273,8 @@ Microdump::Microdump(const string& contents) std::vector cpu_state_raw = ParseHexBuf(cpu_state_str); if (strcmp(arch.c_str(), kArmArchitecture) == 0) { if (cpu_state_raw.size() != sizeof(MDRawContextARM)) { - std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() - << " bytes instead of " << sizeof(MDRawContextARM) - << std::endl; + std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() << + " bytes instead of " << sizeof(MDRawContextARM) << std::endl; continue; } MDRawContextARM* arm = new MDRawContextARM(); @@ -309,55 +282,16 @@ Microdump::Microdump(const string& contents) context_->SetContextARM(arm); } else if (strcmp(arch.c_str(), kArm64Architecture) == 0) { if (cpu_state_raw.size() != sizeof(MDRawContextARM64)) { - std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() - << " bytes instead of " << sizeof(MDRawContextARM64) - << std::endl; + std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() << + " bytes instead of " << sizeof(MDRawContextARM64) << std::endl; continue; } MDRawContextARM64* arm = new MDRawContextARM64(); memcpy(arm, &cpu_state_raw[0], cpu_state_raw.size()); context_->SetContextARM64(arm); - } else if (strcmp(arch.c_str(), kX86Architecture) == 0) { - if (cpu_state_raw.size() != sizeof(MDRawContextX86)) { - std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() - << " bytes instead of " << sizeof(MDRawContextX86) - << std::endl; - continue; - } - MDRawContextX86* x86 = new MDRawContextX86(); - memcpy(x86, &cpu_state_raw[0], cpu_state_raw.size()); - context_->SetContextX86(x86); - } else if (strcmp(arch.c_str(), kMipsArchitecture) == 0) { - if (cpu_state_raw.size() != sizeof(MDRawContextMIPS)) { - std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() - << " bytes instead of " << sizeof(MDRawContextMIPS) - << std::endl; - continue; - } - MDRawContextMIPS* mips32 = new MDRawContextMIPS(); - memcpy(mips32, &cpu_state_raw[0], cpu_state_raw.size()); - context_->SetContextMIPS(mips32); - } else if (strcmp(arch.c_str(), kMips64Architecture) == 0) { - if (cpu_state_raw.size() != sizeof(MDRawContextMIPS)) { - std::cerr << "Malformed CPU context. Got " << cpu_state_raw.size() - << " bytes instead of " << sizeof(MDRawContextMIPS) - << std::endl; - continue; - } - MDRawContextMIPS* mips64 = new MDRawContextMIPS(); - memcpy(mips64, &cpu_state_raw[0], cpu_state_raw.size()); - context_->SetContextMIPS64(mips64); } else { std::cerr << "Unsupported architecture: " << arch << std::endl; } - } else if ((pos = line.find(kGpuKey)) != string::npos) { - string gpu_str(line, pos + strlen(kGpuKey)); - if (strcmp(gpu_str.c_str(), kGpuUnknown) != 0) { - std::istringstream gpu_tokens(gpu_str); - std::getline(gpu_tokens, system_info_->gl_version, '|'); - std::getline(gpu_tokens, system_info_->gl_vendor, '|'); - std::getline(gpu_tokens, system_info_->gl_renderer, '|'); - } } else if ((pos = line.find(kMmapKey)) != string::npos) { string mmap_line(line, pos + strlen(kMmapKey)); std::istringstream mmap_tokens(mmap_line); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/microdump_processor_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/microdump_processor_unittest.cc index af897f7dacb9..e667c386122a 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/microdump_processor_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/microdump_processor_unittest.cc @@ -86,8 +86,8 @@ class MicrodumpProcessorTest : public ::testing::Test { return processor.Process(microdump_contents, state); } - void AnalyzeDump(const string& microdump_file_name, bool omit_symbols, - int expected_cpu_count, ProcessState* state) { + void AnalyzeDump(const string& microdump_file_name, ProcessState* state, + bool omit_symbols) { string symbols_file = omit_symbols ? "" : files_path_ + "symbols/microdump"; string microdump_file_path = files_path_ + microdump_file_name; string microdump_contents; @@ -101,7 +101,7 @@ class MicrodumpProcessorTest : public ::testing::Test { ASSERT_EQ(0, state->requesting_thread()); ASSERT_EQ(1U, state->threads()->size()); - ASSERT_EQ(expected_cpu_count, state->system_info()->cpu_count); + ASSERT_EQ(2, state->system_info()->cpu_count); ASSERT_EQ("android", state->system_info()->os_short); ASSERT_EQ("Android", state->system_info()->os); } @@ -125,8 +125,7 @@ TEST_F(MicrodumpProcessorTest, TestProcess_Invalid) { TEST_F(MicrodumpProcessorTest, TestProcess_MissingSymbols) { ProcessState state; - AnalyzeDump("microdump-arm64.dmp", true /* omit_symbols */, - 2 /* expected_cpu_count */, &state); + AnalyzeDump("microdump-arm64.dmp", &state, true /* omit_symbols */); ASSERT_EQ(8U, state.modules()->module_count()); ASSERT_EQ("arm64", state.system_info()->cpu); @@ -156,15 +155,10 @@ TEST_F(MicrodumpProcessorTest, TestProcess_UnsupportedArch) { TEST_F(MicrodumpProcessorTest, TestProcessArm) { ProcessState state; - AnalyzeDump("microdump-arm.dmp", false /* omit_symbols */, - 2 /* expected_cpu_count*/, &state); + AnalyzeDump("microdump-arm.dmp", &state, false /* omit_symbols */); ASSERT_EQ(6U, state.modules()->module_count()); ASSERT_EQ("arm", state.system_info()->cpu); - ASSERT_EQ("OpenGL ES 3.0 V@104.0 AU@ (GIT@Id3510ff6dc)", - state.system_info()->gl_version); - ASSERT_EQ("Qualcomm", state.system_info()->gl_vendor); - ASSERT_EQ("Adreno (TM) 330", state.system_info()->gl_renderer); ASSERT_EQ("OS VERSION INFO", state.system_info()->os_version); ASSERT_EQ(8U, state.threads()->at(0)->frames()->size()); ASSERT_EQ("MicrodumpWriterTest_Setup_Test::TestBody", @@ -179,8 +173,7 @@ TEST_F(MicrodumpProcessorTest, TestProcessArm) { TEST_F(MicrodumpProcessorTest, TestProcessArm64) { ProcessState state; - AnalyzeDump("microdump-arm64.dmp", false /* omit_symbols */, - 2 /* expected_cpu_count*/, &state); + AnalyzeDump("microdump-arm64.dmp", &state, false /* omit_symbols */); ASSERT_EQ(8U, state.modules()->module_count()); ASSERT_EQ("arm64", state.system_info()->cpu); @@ -196,75 +189,6 @@ TEST_F(MicrodumpProcessorTest, TestProcessArm64) { state.threads()->at(0)->frames()->at(7)->module->code_file()); } -TEST_F(MicrodumpProcessorTest, TestProcessX86) { - ProcessState state; - AnalyzeDump("microdump-x86.dmp", false /* omit_symbols */, - 4 /* expected_cpu_count */, &state); - - ASSERT_EQ(124U, state.modules()->module_count()); - ASSERT_EQ("x86", state.system_info()->cpu); - ASSERT_EQ("asus/WW_Z00A/Z00A:5.0/LRX21V/2.19.40.22_20150627_5104_user:user/" - "release-keys", state.system_info()->os_version); - ASSERT_EQ(56U, state.threads()->at(0)->frames()->size()); - ASSERT_EQ("libc.so", - state.threads()->at(0)->frames()->at(0)->module->debug_file()); - // TODO(mmandlis): Get symbols for the test X86 microdump and test function - // names. -} - -TEST_F(MicrodumpProcessorTest, TestProcessMultiple) { - ProcessState state; - AnalyzeDump("microdump-multiple.dmp", false /* omit_symbols */, - 6 /* expected_cpu_count */, &state); - ASSERT_EQ(156U, state.modules()->module_count()); - ASSERT_EQ("arm", state.system_info()->cpu); - ASSERT_EQ("lge/p1_tmo_us/p1:6.0/MRA58K/1603210524c8d:user/release-keys", - state.system_info()->os_version); - ASSERT_EQ(5U, state.threads()->at(0)->frames()->size()); -} - -TEST_F(MicrodumpProcessorTest, TestProcessMips) { - ProcessState state; - AnalyzeDump("microdump-mips32.dmp", false /* omit_symbols */, - 2 /* expected_cpu_count */, &state); - - ASSERT_EQ(7U, state.modules()->module_count()); - ASSERT_EQ("mips", state.system_info()->cpu); - ASSERT_EQ("3.0.8-g893bf16 #7 SMP PREEMPT Fri Jul 10 15:20:59 PDT 2015", - state.system_info()->os_version); - ASSERT_EQ(4U, state.threads()->at(0)->frames()->size()); - - ASSERT_EQ("blaTest", - state.threads()->at(0)->frames()->at(0)->function_name); - ASSERT_EQ("Crash", - state.threads()->at(0)->frames()->at(1)->function_name); - ASSERT_EQ("main", - state.threads()->at(0)->frames()->at(2)->function_name); - ASSERT_EQ("crash_example", - state.threads()->at(0)->frames()->at(0)->module->debug_file()); -} - -TEST_F(MicrodumpProcessorTest, TestProcessMips64) { - ProcessState state; - AnalyzeDump("microdump-mips64.dmp", false /* omit_symbols */, - 1 /* expected_cpu_count */, &state); - - ASSERT_EQ(8U, state.modules()->module_count()); - ASSERT_EQ("mips64", state.system_info()->cpu); - ASSERT_EQ("3.10.0-gf185e20 #112 PREEMPT Mon Oct 5 11:12:49 PDT 2015", - state.system_info()->os_version); - ASSERT_EQ(4U, state.threads()->at(0)->frames()->size()); - - ASSERT_EQ("blaTest", - state.threads()->at(0)->frames()->at(0)->function_name); - ASSERT_EQ("Crash", - state.threads()->at(0)->frames()->at(1)->function_name); - ASSERT_EQ("main", - state.threads()->at(0)->frames()->at(2)->function_name); - ASSERT_EQ("crash_example", - state.threads()->at(0)->frames()->at(0)->module->debug_file()); -} - } // namespace int main(int argc, char* argv[]) { diff --git a/toolkit/crashreporter/google-breakpad/src/processor/minidump.cc b/toolkit/crashreporter/google-breakpad/src/processor/minidump.cc index 1e1d386df902..f22400268dce 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/minidump.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/minidump.cc @@ -38,16 +38,19 @@ #include #include #include +#include #include #include #ifdef _WIN32 #include +#if defined(_MSC_VER) && _MSC_VER < 1900 +#define snprintf _snprintf +#endif #else // _WIN32 #include #endif // _WIN32 -#include #include #include #include @@ -57,7 +60,6 @@ #include "processor/range_map-inl.h" #include "common/scoped_ptr.h" -#include "common/stdio_wrapper.h" #include "google_breakpad/processor/dump_context.h" #include "processor/basic_code_module.h" #include "processor/basic_code_modules.h" @@ -163,10 +165,19 @@ static void Swap(uint128_struct* value) { } // Swapping signed integers +static inline void Swap(int16_t* value) { + Swap(reinterpret_cast(value)); +} + static inline void Swap(int32_t* value) { Swap(reinterpret_cast(value)); } +static inline void Swap(int64_t* value) { + Swap(reinterpret_cast(value)); +} + + static inline void Swap(MDLocationDescriptor* location_descriptor) { Swap(&location_descriptor->data_size); Swap(&location_descriptor->rva); @@ -197,21 +208,6 @@ static inline void Swap(MDSystemTime* system_time) { Swap(&system_time->milliseconds); } -static inline void Swap(MDXStateFeature* xstate_feature) { - Swap(&xstate_feature->offset); - Swap(&xstate_feature->size); -} - -static inline void Swap(MDXStateConfigFeatureMscInfo* xstate_feature_info) { - Swap(&xstate_feature_info->size_of_info); - Swap(&xstate_feature_info->context_size); - Swap(&xstate_feature_info->enabled_features); - - for (size_t i = 0; i < MD_MAXIMUM_XSTATE_FEATURES; i++) { - Swap(&xstate_feature_info->features[i]); - } -} - static inline void Swap(uint16_t* data, size_t size_in_bytes) { size_t data_length = size_in_bytes / sizeof(data[0]); for (size_t i = 0; i < data_length; i++) { @@ -1025,8 +1021,7 @@ bool MinidumpContext::Read(uint32_t expected_size) { break; } - case MD_CONTEXT_MIPS: - case MD_CONTEXT_MIPS64: { + case MD_CONTEXT_MIPS: { if (expected_size != sizeof(MDRawContextMIPS)) { BPLOG(ERROR) << "MinidumpContext MIPS size mismatch, " << expected_size @@ -1174,11 +1169,6 @@ bool MinidumpContext::CheckAgainstSystemInfo(uint32_t context_cpu_type) { if (system_info_cpu_type == MD_CPU_ARCHITECTURE_MIPS) return_value = true; break; - - case MD_CONTEXT_MIPS64: - if (system_info_cpu_type == MD_CPU_ARCHITECTURE_MIPS64) - return_value = true; - break; } BPLOG_IF(ERROR, !return_value) << "MinidumpContext CPU " << @@ -1195,7 +1185,7 @@ bool MinidumpContext::CheckAgainstSystemInfo(uint32_t context_cpu_type) { // -uint32_t MinidumpMemoryRegion::max_bytes_ = 2 * 1024 * 1024; // 2MB +uint32_t MinidumpMemoryRegion::max_bytes_ = 1024 * 1024; // 1MB MinidumpMemoryRegion::MinidumpMemoryRegion(Minidump* minidump) @@ -1869,30 +1859,11 @@ string MinidumpModule::code_identifier() const { break; } - case MD_OS_ANDROID: - case MD_OS_LINUX: { - // If ELF CodeView data is present, return the debug id. - if (cv_record_ && cv_record_signature_ == MD_CVINFOELF_SIGNATURE) { - const MDCVInfoELF* cv_record_elf = - reinterpret_cast(&(*cv_record_)[0]); - assert(cv_record_elf->cv_signature == MD_CVINFOELF_SIGNATURE); - - for (unsigned int build_id_index = 0; - build_id_index < (cv_record_->size() - MDCVInfoELF_minsize); - ++build_id_index) { - char hexbyte[3]; - snprintf(hexbyte, sizeof(hexbyte), "%02x", - cv_record_elf->build_id[build_id_index]); - identifier += hexbyte; - } - break; - } - // Otherwise fall through to the case below. - } - case MD_OS_MAC_OS_X: case MD_OS_IOS: case MD_OS_SOLARIS: + case MD_OS_ANDROID: + case MD_OS_LINUX: case MD_OS_NACL: case MD_OS_PS3: { // TODO(mmentovai): support uuid extension if present, otherwise fall @@ -1943,13 +1914,6 @@ string MinidumpModule::debug_file() const { // GetCVRecord guarantees pdb_file_name is null-terminated. file = reinterpret_cast(cv_record_20->pdb_file_name); - } else if (cv_record_signature_ == MD_CVINFOELF_SIGNATURE) { - // It's actually an MDCVInfoELF structure. - assert(reinterpret_cast(&(*cv_record_)[0])-> - cv_signature == MD_CVINFOELF_SIGNATURE); - - // For MDCVInfoELF, the debug file is the code file. - file = *name_; } // If there's a CodeView record but it doesn't match a known signature, @@ -2001,25 +1965,6 @@ string MinidumpModule::debug_file() const { return file; } -static string guid_and_age_to_debug_id(const MDGUID& guid, - uint32_t age) { - char identifier_string[41]; - snprintf(identifier_string, sizeof(identifier_string), - "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%x", - guid.data1, - guid.data2, - guid.data3, - guid.data4[0], - guid.data4[1], - guid.data4[2], - guid.data4[3], - guid.data4[4], - guid.data4[5], - guid.data4[6], - guid.data4[7], - age); - return identifier_string; -} string MinidumpModule::debug_identifier() const { if (!valid_) { @@ -2042,8 +1987,22 @@ string MinidumpModule::debug_identifier() const { // Use the same format that the MS symbol server uses in filesystem // hierarchies. - identifier = guid_and_age_to_debug_id(cv_record_70->signature, - cv_record_70->age); + char identifier_string[41]; + snprintf(identifier_string, sizeof(identifier_string), + "%08X%04X%04X%02X%02X%02X%02X%02X%02X%02X%02X%x", + cv_record_70->signature.data1, + cv_record_70->signature.data2, + cv_record_70->signature.data3, + cv_record_70->signature.data4[0], + cv_record_70->signature.data4[1], + cv_record_70->signature.data4[2], + cv_record_70->signature.data4[3], + cv_record_70->signature.data4[4], + cv_record_70->signature.data4[5], + cv_record_70->signature.data4[6], + cv_record_70->signature.data4[7], + cv_record_70->age); + identifier = identifier_string; } else if (cv_record_signature_ == MD_CVINFOPDB20_SIGNATURE) { // It's actually an MDCVInfoPDB20 structure. const MDCVInfoPDB20* cv_record_20 = @@ -2056,22 +2015,6 @@ string MinidumpModule::debug_identifier() const { snprintf(identifier_string, sizeof(identifier_string), "%08X%x", cv_record_20->signature, cv_record_20->age); identifier = identifier_string; - } else if (cv_record_signature_ == MD_CVINFOELF_SIGNATURE) { - // It's actually an MDCVInfoELF structure. - const MDCVInfoELF* cv_record_elf = - reinterpret_cast(&(*cv_record_)[0]); - assert(cv_record_elf->cv_signature == MD_CVINFOELF_SIGNATURE); - - // For backwards-compatibility, stuff as many bytes as will fit into - // a MDGUID and use the MS symbol server format as MDCVInfoPDB70 does - // with age = 0. Historically Breakpad would do this during dump - // writing to fit the build id data into a MDCVInfoPDB70 struct. - // The full build id is available by calling code_identifier. - MDGUID guid = {0}; - memcpy(&guid, &cv_record_elf->build_id, - std::min(cv_record_->size() - MDCVInfoELF_minsize, - sizeof(MDGUID))); - identifier = guid_and_age_to_debug_id(guid, 0); } } @@ -2124,21 +2067,11 @@ string MinidumpModule::version() const { } -CodeModule* MinidumpModule::Copy() const { +const CodeModule* MinidumpModule::Copy() const { return new BasicCodeModule(this); } -uint64_t MinidumpModule::shrink_down_delta() const { - return 0; -} - -void MinidumpModule::SetShrinkDownDelta(uint64_t shrink_down_delta) { - // Not implemented - assert(false); -} - - const uint8_t* MinidumpModule::GetCVRecord(uint32_t* size) { if (!module_valid_) { BPLOG(ERROR) << "Invalid MinidumpModule for GetCVRecord"; @@ -2240,15 +2173,6 @@ const uint8_t* MinidumpModule::GetCVRecord(uint32_t* size) { "0-terminated"; return NULL; } - } else if (signature == MD_CVINFOELF_SIGNATURE) { - // Now that the structure type is known, recheck the size. - if (MDCVInfoELF_minsize > module_.cv_record.data_size) { - BPLOG(ERROR) << "MinidumpModule CodeViewELF record size mismatch, " << - MDCVInfoELF_minsize << " > " << - module_.cv_record.data_size; - return NULL; - } - // There's nothing to swap in CVInfoELF, it's just raw bytes. } // If the signature doesn't match something above, it's not something @@ -2449,20 +2373,6 @@ void MinidumpModule::Print() { cv_record_20->age); printf(" (cv_record).pdb_file_name = \"%s\"\n", cv_record_20->pdb_file_name); - } else if (cv_record_signature_ == MD_CVINFOELF_SIGNATURE) { - const MDCVInfoELF* cv_record_elf = - reinterpret_cast(cv_record); - assert(cv_record_elf->cv_signature == MD_CVINFOELF_SIGNATURE); - - printf(" (cv_record).cv_signature = 0x%x\n", - cv_record_elf->cv_signature); - printf(" (cv_record).build_id = "); - for (unsigned int build_id_index = 0; - build_id_index < (cv_record_size - MDCVInfoELF_minsize); - ++build_id_index) { - printf("%02x", cv_record_elf->build_id[build_id_index]); - } - printf("\n"); } else { printf(" (cv_record) = "); for (unsigned int cv_byte_index = 0; @@ -2522,7 +2432,6 @@ MinidumpModuleList::MinidumpModuleList(Minidump* minidump) range_map_(new RangeMap()), modules_(NULL), module_count_(0) { - range_map_->SetEnableShrinkDown(minidump_->IsAndroid()); } @@ -2698,8 +2607,7 @@ const MinidumpModule* MinidumpModuleList::GetModuleForAddress( } unsigned int module_index; - if (!range_map_->RetrieveRange(address, &module_index, NULL /* base */, - NULL /* delta */, NULL /* size */)) { + if (!range_map_->RetrieveRange(address, &module_index, NULL, NULL)) { BPLOG(INFO) << "MinidumpModuleList has no module at " << HexString(address); return NULL; @@ -2735,9 +2643,7 @@ const MinidumpModule* MinidumpModuleList::GetModuleAtSequence( } unsigned int module_index; - if (!range_map_->RetrieveRangeAtIndex(sequence, &module_index, - NULL /* base */, NULL /* delta */, - NULL /* size */)) { + if (!range_map_->RetrieveRangeAtIndex(sequence, &module_index, NULL, NULL)) { BPLOG(ERROR) << "MinidumpModuleList has no module at sequence " << sequence; return NULL; } @@ -2767,14 +2673,6 @@ const CodeModules* MinidumpModuleList::Copy() const { return new BasicCodeModules(this); } -vector > -MinidumpModuleList::GetShrunkRangeModules() const { - return vector >(); -} - -bool MinidumpModuleList::IsModuleShrinkEnabled() const { - return range_map_->IsShrinkDownEnabled(); -} void MinidumpModuleList::Print() { if (!valid_) { @@ -2960,8 +2858,7 @@ MinidumpMemoryRegion* MinidumpMemoryList::GetMemoryRegionForAddress( } unsigned int region_index; - if (!range_map_->RetrieveRange(address, ®ion_index, NULL /* base */, - NULL /* delta */, NULL /* size */)) { + if (!range_map_->RetrieveRange(address, ®ion_index, NULL, NULL)) { BPLOG(INFO) << "MinidumpMemoryList has no memory region at " << HexString(address); return NULL; @@ -3523,25 +3420,15 @@ MinidumpMiscInfo::MinidumpMiscInfo(Minidump* minidump) bool MinidumpMiscInfo::Read(uint32_t expected_size) { valid_ = false; - size_t padding = 0; if (expected_size != MD_MISCINFO_SIZE && expected_size != MD_MISCINFO2_SIZE && expected_size != MD_MISCINFO3_SIZE && - expected_size != MD_MISCINFO4_SIZE && - expected_size != MD_MISCINFO5_SIZE) { - if (expected_size > MD_MISCINFO5_SIZE) { - // Only read the part of the misc info structure we know how to handle - BPLOG(INFO) << "MinidumpMiscInfo size larger than expected " - << expected_size << ", skipping over the unknown part"; - padding = expected_size - MD_MISCINFO5_SIZE; - expected_size = MD_MISCINFO5_SIZE; - } else { - BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << expected_size - << " != " << MD_MISCINFO_SIZE << ", " << MD_MISCINFO2_SIZE - << ", " << MD_MISCINFO3_SIZE << ", " << MD_MISCINFO4_SIZE - << ", " << MD_MISCINFO5_SIZE << ")"; - return false; - } + expected_size != MD_MISCINFO4_SIZE) { + BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << expected_size + << " != " << MD_MISCINFO_SIZE << ", " << MD_MISCINFO2_SIZE + << ", " << MD_MISCINFO3_SIZE << ", " << MD_MISCINFO4_SIZE + << ")"; + return false; } if (!minidump_->ReadBytes(&misc_info_, expected_size)) { @@ -3549,20 +3436,6 @@ bool MinidumpMiscInfo::Read(uint32_t expected_size) { return false; } - if (padding != 0) { - off_t saved_position = minidump_->Tell(); - if (saved_position == -1) { - BPLOG(ERROR) << "MinidumpMiscInfo could not tell the current position"; - return false; - } - - if (!minidump_->SeekSet(saved_position + padding)) { - BPLOG(ERROR) << "MinidumpMiscInfo could not seek past the miscellaneous " - << "info structure"; - return false; - } - } - if (minidump_->swap()) { // Swap version 1 fields Swap(&misc_info_.size_of_info); @@ -3592,14 +3465,9 @@ bool MinidumpMiscInfo::Read(uint32_t expected_size) { // Do not swap UTF-16 strings. The swap is done as part of the // conversion to UTF-8 (code follows below). } - if (misc_info_.size_of_info > MD_MISCINFO4_SIZE) { - // Swap version 5 fields - Swap(&misc_info_.xstate_data); - Swap(&misc_info_.process_cookie); - } } - if (expected_size + padding != misc_info_.size_of_info) { + if (expected_size != misc_info_.size_of_info) { BPLOG(ERROR) << "MinidumpMiscInfo size mismatch, " << expected_size << " != " << misc_info_.size_of_info; return false; @@ -3749,35 +3617,6 @@ void MinidumpMiscInfo::Print() { printf(" dbg_bld_str = (invalid)\n"); } } - if (misc_info_.size_of_info > MD_MISCINFO4_SIZE) { - // Print version 5 fields - if (misc_info_.flags1 & MD_MISCINFO_FLAGS1_PROCESS_COOKIE) { - printf(" xstate_data.size_of_info = %d\n", - misc_info_.xstate_data.size_of_info); - printf(" xstate_data.context_size = %d\n", - misc_info_.xstate_data.context_size); - printf(" xstate_data.enabled_features = 0x%" PRIx64 "\n", - misc_info_.xstate_data.enabled_features); - for (size_t i = 0; i < MD_MAXIMUM_XSTATE_FEATURES; i++) { - if (misc_info_.xstate_data.enabled_features & (1 << i)) { - printf(" xstate_data.features[%02zu] = { %d, %d }\n", i, - misc_info_.xstate_data.features[i].offset, - misc_info_.xstate_data.features[i].size); - } - } - if (misc_info_.xstate_data.enabled_features == 0) { - printf(" xstate_data.features[] = (empty)\n"); - } - printf(" process_cookie = %d\n", - misc_info_.process_cookie); - } else { - printf(" xstate_data.size_of_info = (invalid)\n"); - printf(" xstate_data.context_size = (invalid)\n"); - printf(" xstate_data.enabled_features = (invalid)\n"); - printf(" xstate_data.features[] = (invalid)\n"); - printf(" process_cookie = (invalid)\n"); - } - } printf("\n"); } @@ -4123,8 +3962,7 @@ const MinidumpMemoryInfo* MinidumpMemoryInfoList::GetMemoryInfoForAddress( } unsigned int info_index; - if (!range_map_->RetrieveRange(address, &info_index, NULL /* base */, - NULL /* delta */, NULL /* size */)) { + if (!range_map_->RetrieveRange(address, &info_index, NULL, NULL)) { BPLOG(INFO) << "MinidumpMemoryInfoList has no memory info at " << HexString(address); return NULL; @@ -4383,9 +4221,6 @@ bool Minidump::GetContextCPUFlagsFromSystemInfo(uint32_t *context_cpu_flags) { case MD_CPU_ARCHITECTURE_MIPS: *context_cpu_flags = MD_CONTEXT_MIPS; break; - case MD_CPU_ARCHITECTURE_MIPS64: - *context_cpu_flags = MD_CONTEXT_MIPS64; - break; case MD_CPU_ARCHITECTURE_ALPHA: *context_cpu_flags = MD_CONTEXT_ALPHA; break; @@ -4624,24 +4459,6 @@ MinidumpLinuxMapsList *Minidump::GetLinuxMapsList() { return GetStream(&linux_maps_list); } -bool Minidump::IsAndroid() { - // Save the current stream position - off_t saved_position = Tell(); - if (saved_position == -1) { - return false; - } - const MDRawSystemInfo* system_info = - GetSystemInfo() ? GetSystemInfo()->system_info() : NULL; - - // Restore position and return - if (!SeekSet(saved_position)) { - BPLOG(ERROR) << "Couldn't seek back to saved position"; - return false; - } - - return system_info && system_info->platform_id == MD_OS_ANDROID; -} - static const char* get_stream_name(uint32_t stream_type) { switch (stream_type) { case MD_UNUSED_STREAM: @@ -4682,14 +4499,6 @@ static const char* get_stream_name(uint32_t stream_type) { return "MD_THREAD_INFO_LIST_STREAM"; case MD_HANDLE_OPERATION_LIST_STREAM: return "MD_HANDLE_OPERATION_LIST_STREAM"; - case MD_TOKEN_STREAM: - return "MD_TOKEN_STREAM"; - case MD_JAVASCRIPT_DATA_STREAM: - return "MD_JAVASCRIPT_DATA_STREAM"; - case MD_SYSTEM_MEMORY_INFO_STREAM: - return "MD_SYSTEM_MEMORY_INFO_STREAM"; - case MD_PROCESS_VM_COUNTERS_STREAM: - return "MD_PROCESS_VM_COUNTERS_STREAM"; case MD_LAST_RESERVED_STREAM: return "MD_LAST_RESERVED_STREAM"; case MD_BREAKPAD_INFO_STREAM: @@ -4755,7 +4564,7 @@ void Minidump::Print() { iterator != stream_map_->end(); ++iterator) { uint32_t stream_type = iterator->first; - const MinidumpStreamInfo& info = iterator->second; + MinidumpStreamInfo info = iterator->second; printf(" stream type 0x%x (%s) at index %d\n", stream_type, get_stream_name(stream_type), info.stream_index); @@ -4912,7 +4721,7 @@ bool Minidump::SeekToStreamType(uint32_t stream_type, return false; } - const MinidumpStreamInfo& info = iterator->second; + MinidumpStreamInfo info = iterator->second; if (info.stream_index >= header_.stream_count) { BPLOG(ERROR) << "SeekToStreamType: type " << stream_type << " out of range: " << diff --git a/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc b/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc index 33b4a1284bd4..3a20dfa5bfaf 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor.cc @@ -30,11 +30,11 @@ #include "google_breakpad/processor/minidump_processor.h" #include +#include #include #include "common/scoped_ptr.h" -#include "common/stdio_wrapper.h" #include "common/using_std_string.h" #include "google_breakpad/processor/call_stack.h" #include "google_breakpad/processor/minidump.h" @@ -126,20 +126,8 @@ ProcessResult MinidumpProcessor::Process( // Put a copy of the module list into ProcessState object. This is not // necessarily a MinidumpModuleList, but it adheres to the CodeModules // interface, which is all that ProcessState needs to expose. - if (module_list) { + if (module_list) process_state->modules_ = module_list->Copy(); - process_state->shrunk_range_modules_ = - process_state->modules_->GetShrunkRangeModules(); - for (unsigned int i = 0; - i < process_state->shrunk_range_modules_.size(); - i++) { - linked_ptr module = - process_state->shrunk_range_modules_[i]; - BPLOG(INFO) << "The range for module " << module->code_file() - << " was shrunk down by " << HexString( - module->shrink_down_delta()) << " bytes. "; - } - } MinidumpMemoryList *memory_list = dump->GetMemoryList(); if (memory_list) { @@ -279,7 +267,6 @@ ProcessResult MinidumpProcessor::Process( // one bad thread. BPLOG(ERROR) << "No stackwalker for " << thread_string; } - stack->set_tid(thread_id); process_state->threads_.push_back(stack.release()); process_state->thread_memory_regions_.push_back(thread_memory); } @@ -537,10 +524,6 @@ bool MinidumpProcessor::GetCPUInfo(Minidump *dump, SystemInfo *info) { info->cpu = "mips"; break; } - case MD_CPU_ARCHITECTURE_MIPS64: { - info->cpu = "mips64"; - break; - } default: { // Assign the numeric architecture ID into the CPU string. @@ -758,19 +741,6 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { BPLOG(INFO) << "Unknown exception reason " << reason; break; } - } else if (raw_system_info->processor_architecture == - MD_CPU_ARCHITECTURE_X86 || - raw_system_info->processor_architecture == - MD_CPU_ARCHITECTURE_AMD64) { - switch (exception_flags) { - case MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT: - reason.append("EXC_I386_GPFLT"); - break; - default: - reason.append(flags_string); - BPLOG(INFO) << "Unknown exception reason " << reason; - break; - } } else { reason.append(flags_string); BPLOG(INFO) << "Unknown exception reason " << reason; @@ -821,26 +791,25 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { } break; } - case MD_CPU_ARCHITECTURE_AMD64: case MD_CPU_ARCHITECTURE_X86: { switch (exception_flags) { case MD_EXCEPTION_CODE_MAC_X86_INVALID_OPERATION: reason.append("EXC_I386_INVOP"); break; case MD_EXCEPTION_CODE_MAC_X86_INVALID_TASK_STATE_SEGMENT: - reason.append("EXC_I386_INVTSSFLT"); + reason.append("EXC_INVTSSFLT"); break; case MD_EXCEPTION_CODE_MAC_X86_SEGMENT_NOT_PRESENT: - reason.append("EXC_I386_SEGNPFLT"); + reason.append("EXC_SEGNPFLT"); break; case MD_EXCEPTION_CODE_MAC_X86_STACK_FAULT: - reason.append("EXC_I386_STKFLT"); + reason.append("EXC_STKFLT"); break; case MD_EXCEPTION_CODE_MAC_X86_GENERAL_PROTECTION_FAULT: - reason.append("EXC_I386_GPFLT"); + reason.append("EXC_GPFLT"); break; case MD_EXCEPTION_CODE_MAC_X86_ALIGNMENT_FAULT: - reason.append("EXC_I386_ALIGNFLT"); + reason.append("EXC_ALIGNFLT"); break; default: reason.append(flags_string); @@ -893,7 +862,6 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { } break; } - case MD_CPU_ARCHITECTURE_AMD64: case MD_CPU_ARCHITECTURE_X86: { switch (exception_flags) { case MD_EXCEPTION_CODE_MAC_X86_DIV: @@ -994,7 +962,6 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { } break; } - case MD_CPU_ARCHITECTURE_AMD64: case MD_CPU_ARCHITECTURE_X86: { switch (exception_flags) { case MD_EXCEPTION_CODE_MAC_X86_SGL: @@ -1186,9 +1153,6 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, uint64_t *address) { case MD_EXCEPTION_CODE_WIN_HEAP_CORRUPTION: reason = "EXCEPTION_HEAP_CORRUPTION"; break; - case MD_EXCEPTION_OUT_OF_MEMORY: - reason = "Out of Memory"; - break; case MD_EXCEPTION_CODE_WIN_UNHANDLED_CPP_EXCEPTION: reason = "Unhandled C++ Exception"; break; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc index d43c1fc97a7e..69e1f42e65d5 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/minidump_processor_unittest.cc @@ -414,7 +414,6 @@ TEST_F(MinidumpProcessorTest, TestBasicProcessing) { ASSERT_EQ(state.crash_reason(), "EXCEPTION_ACCESS_VIOLATION_WRITE"); ASSERT_EQ(state.crash_address(), 0x45U); ASSERT_EQ(state.threads()->size(), size_t(1)); - EXPECT_EQ((*state.threads())[0]->tid(), 3060U); ASSERT_EQ(state.requesting_thread(), 0); EXPECT_EQ(1171480435U, state.time_date_stamp()); EXPECT_EQ(1171480435U, state.process_create_time()); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/minidump_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/minidump_unittest.cc index d29e9f4e5e15..bb7dac642c80 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/minidump_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/minidump_unittest.cc @@ -63,7 +63,6 @@ using google_breakpad::SynthMinidump::Dump; using google_breakpad::SynthMinidump::Exception; using google_breakpad::SynthMinidump::Memory; using google_breakpad::SynthMinidump::Module; -using google_breakpad::SynthMinidump::Section; using google_breakpad::SynthMinidump::Stream; using google_breakpad::SynthMinidump::String; using google_breakpad::SynthMinidump::SystemInfo; @@ -91,15 +90,7 @@ TEST_F(MinidumpTest, TestMinidumpFromFile) { const MDRawHeader* header = minidump.header(); ASSERT_NE(header, (MDRawHeader*)NULL); ASSERT_EQ(header->signature, uint32_t(MD_HEADER_SIGNATURE)); - - MinidumpModuleList *md_module_list = minidump.GetModuleList(); - ASSERT_TRUE(md_module_list != NULL); - const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0); - ASSERT_TRUE(md_module != NULL); - ASSERT_EQ("c:\\test_app.exe", md_module->code_file()); - ASSERT_EQ("c:\\test_app.pdb", md_module->debug_file()); - ASSERT_EQ("45D35F6C2d000", md_module->code_identifier()); - ASSERT_EQ("5A9832E5287241C1838ED98914E9B7FF1", md_module->debug_identifier()); + //TODO: add more checks here } TEST_F(MinidumpTest, TestMinidumpFromStream) { @@ -394,61 +385,44 @@ TEST(Dump, ThreadMissingContext) { ASSERT_EQ(reinterpret_cast(NULL), md_context); } -static const MDVSFixedFileInfo fixed_file_info = { - 0xb2fba33a, // signature - 0x33d7a728, // struct_version - 0x31afcb20, // file_version_hi - 0xe51cdab1, // file_version_lo - 0xd1ea6907, // product_version_hi - 0x03032857, // product_version_lo - 0x11bf71d7, // file_flags_mask - 0x5fb8cdbf, // file_flags - 0xe45d0d5d, // file_os - 0x107d9562, // file_type - 0x5a8844d4, // file_subtype - 0xa8d30b20, // file_date_hi - 0x651c3e4e // file_date_lo -}; - TEST(Dump, OneModule) { + static const MDVSFixedFileInfo fixed_file_info = { + 0xb2fba33a, // signature + 0x33d7a728, // struct_version + 0x31afcb20, // file_version_hi + 0xe51cdab1, // file_version_lo + 0xd1ea6907, // product_version_hi + 0x03032857, // product_version_lo + 0x11bf71d7, // file_flags_mask + 0x5fb8cdbf, // file_flags + 0xe45d0d5d, // file_os + 0x107d9562, // file_type + 0x5a8844d4, // file_subtype + 0xa8d30b20, // file_date_hi + 0x651c3e4e // file_date_lo + }; + Dump dump(0, kBigEndian); String module_name(dump, "single module"); - Section cv_info(dump); - cv_info - .D32(MD_CVINFOPDB70_SIGNATURE) // signature - // signature, a MDGUID - .D32(0xabcd1234) - .D16(0xf00d) - .D16(0xbeef) - .Append("\x01\x02\x03\x04\x05\x06\x07\x08") - .D32(1) // age - .AppendCString("c:\\foo\\file.pdb"); // pdb_file_name - - String csd_version(dump, "Windows 9000"); - SystemInfo system_info(dump, SystemInfo::windows_x86, csd_version); - Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd, module_name, 0xb1054d2a, 0x34571371, fixed_file_info, // from synth_minidump_unittest_data.h - &cv_info, nullptr); + NULL, NULL); dump.Add(&module); dump.Add(&module_name); - dump.Add(&cv_info); - dump.Add(&system_info); - dump.Add(&csd_version); dump.Finish(); - + string contents; ASSERT_TRUE(dump.GetContents(&contents)); istringstream minidump_stream(contents); Minidump minidump(minidump_stream); ASSERT_TRUE(minidump.Read()); - ASSERT_EQ(2U, minidump.GetDirectoryEntryCount()); + ASSERT_EQ(1U, minidump.GetDirectoryEntryCount()); - const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(1); + const MDRawDirectory *dir = minidump.GetDirectoryEntryAtIndex(0); ASSERT_TRUE(dir != NULL); EXPECT_EQ((uint32_t) MD_MODULE_LIST_STREAM, dir->stream_type); @@ -461,10 +435,6 @@ TEST(Dump, OneModule) { ASSERT_EQ(0xa90206ca83eb2852ULL, md_module->base_address()); ASSERT_EQ(0xada542bd, md_module->size()); ASSERT_EQ("single module", md_module->code_file()); - ASSERT_EQ("c:\\foo\\file.pdb", md_module->debug_file()); - // time_date_stamp and size_of_image concatenated - ASSERT_EQ("B1054D2Aada542bd", md_module->code_identifier()); - ASSERT_EQ("ABCD1234F00DBEEF01020304050607081", md_module->debug_identifier()); const MDRawModule *md_raw_module = md_module->module(); ASSERT_TRUE(md_raw_module != NULL); @@ -474,231 +444,6 @@ TEST(Dump, OneModule) { sizeof(fixed_file_info)) == 0); } -// Test that a module with a MDCVInfoELF CV record is handled properly. -TEST(Dump, OneModuleCVELF) { - Dump dump(0, kLittleEndian); - String module_name(dump, "elf module"); - Section cv_info(dump); - cv_info - .D32(MD_CVINFOELF_SIGNATURE) // signature - // build_id - .Append("\x5f\xa9\xcd\xb4\x10\x53\xdf\x1b\x86\xfa\xb7\x33\xb4\xdf" - "\x37\x38\xce\xa3\x4a\x87"); - - const MDRawSystemInfo linux_x86 = { - MD_CPU_ARCHITECTURE_X86, // processor_architecture - 6, // processor_level - 0xd08, // processor_revision - 1, // number_of_processors - 0, // product_type - 0, // major_version - 0, // minor_version - 0, // build_number - MD_OS_LINUX, // platform_id - 0xdeadbeef, // csd_version_rva - 0x100, // suite_mask - 0, // reserved2 - { // cpu - { // x86_cpu_info - { 0x756e6547, 0x49656e69, 0x6c65746e }, // vendor_id - 0x6d8, // version_information - 0xafe9fbff, // feature_information - 0xffffffff // amd_extended_cpu_features - } - } - }; - String csd_version(dump, "Literally Linux"); - SystemInfo system_info(dump, linux_x86, csd_version); - - Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd, - module_name, - 0xb1054d2a, - 0x34571371, - fixed_file_info, // from synth_minidump_unittest_data.h - &cv_info, nullptr); - - dump.Add(&module); - dump.Add(&module_name); - dump.Add(&cv_info); - dump.Add(&system_info); - dump.Add(&csd_version); - dump.Finish(); - - string contents; - ASSERT_TRUE(dump.GetContents(&contents)); - istringstream minidump_stream(contents); - Minidump minidump(minidump_stream); - ASSERT_TRUE(minidump.Read()); - - MinidumpModuleList *md_module_list = minidump.GetModuleList(); - ASSERT_TRUE(md_module_list != NULL); - ASSERT_EQ(1U, md_module_list->module_count()); - - const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0); - ASSERT_TRUE(md_module != NULL); - ASSERT_EQ(0xa90206ca83eb2852ULL, md_module->base_address()); - ASSERT_EQ(0xada542bd, md_module->size()); - ASSERT_EQ("elf module", md_module->code_file()); - // debug_file == code_file - ASSERT_EQ("elf module", md_module->debug_file()); - // just the build_id, directly - ASSERT_EQ("5fa9cdb41053df1b86fab733b4df3738cea34a87", - md_module->code_identifier()); - // build_id truncted to GUID length and treated as such, with zero - // age appended - ASSERT_EQ("B4CDA95F53101BDF86FAB733B4DF37380", md_module->debug_identifier()); - - const MDRawModule *md_raw_module = md_module->module(); - ASSERT_TRUE(md_raw_module != NULL); - ASSERT_EQ(0xb1054d2aU, md_raw_module->time_date_stamp); - ASSERT_EQ(0x34571371U, md_raw_module->checksum); - ASSERT_TRUE(memcmp(&md_raw_module->version_info, &fixed_file_info, - sizeof(fixed_file_info)) == 0); -} - -// Test that a build_id that's shorter than a GUID is handled properly. -TEST(Dump, CVELFShort) { - Dump dump(0, kLittleEndian); - String module_name(dump, "elf module"); - Section cv_info(dump); - cv_info - .D32(MD_CVINFOELF_SIGNATURE) // signature - // build_id, shorter than a GUID - .Append("\x5f\xa9\xcd\xb4"); - - const MDRawSystemInfo linux_x86 = { - MD_CPU_ARCHITECTURE_X86, // processor_architecture - 6, // processor_level - 0xd08, // processor_revision - 1, // number_of_processors - 0, // product_type - 0, // major_version - 0, // minor_version - 0, // build_number - MD_OS_LINUX, // platform_id - 0xdeadbeef, // csd_version_rva - 0x100, // suite_mask - 0, // reserved2 - { // cpu - { // x86_cpu_info - { 0x756e6547, 0x49656e69, 0x6c65746e }, // vendor_id - 0x6d8, // version_information - 0xafe9fbff, // feature_information - 0xffffffff // amd_extended_cpu_features - } - } - }; - String csd_version(dump, "Literally Linux"); - SystemInfo system_info(dump, linux_x86, csd_version); - - Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd, - module_name, - 0xb1054d2a, - 0x34571371, - fixed_file_info, // from synth_minidump_unittest_data.h - &cv_info, nullptr); - - dump.Add(&module); - dump.Add(&module_name); - dump.Add(&cv_info); - dump.Add(&system_info); - dump.Add(&csd_version); - dump.Finish(); - - string contents; - ASSERT_TRUE(dump.GetContents(&contents)); - istringstream minidump_stream(contents); - Minidump minidump(minidump_stream); - ASSERT_TRUE(minidump.Read()); - ASSERT_EQ(2U, minidump.GetDirectoryEntryCount()); - - MinidumpModuleList *md_module_list = minidump.GetModuleList(); - ASSERT_TRUE(md_module_list != NULL); - ASSERT_EQ(1U, md_module_list->module_count()); - - const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0); - ASSERT_TRUE(md_module != NULL); - // just the build_id, directly - ASSERT_EQ("5fa9cdb4", md_module->code_identifier()); - // build_id expanded to GUID length and treated as such, with zero - // age appended - ASSERT_EQ("B4CDA95F0000000000000000000000000", md_module->debug_identifier()); -} - -// Test that a build_id that's very long is handled properly. -TEST(Dump, CVELFLong) { - Dump dump(0, kLittleEndian); - String module_name(dump, "elf module"); - Section cv_info(dump); - cv_info - .D32(MD_CVINFOELF_SIGNATURE) // signature - // build_id, lots of bytes - .Append("\x5f\xa9\xcd\xb4\x10\x53\xdf\x1b\x86\xfa\xb7\x33\xb4\xdf" - "\x37\x38\xce\xa3\x4a\x87\x01\x02\x03\x04\x05\x06\x07\x08" - "\x09\x0a\x0b\x0c\x0d\x0e\x0f"); - - - const MDRawSystemInfo linux_x86 = { - MD_CPU_ARCHITECTURE_X86, // processor_architecture - 6, // processor_level - 0xd08, // processor_revision - 1, // number_of_processors - 0, // product_type - 0, // major_version - 0, // minor_version - 0, // build_number - MD_OS_LINUX, // platform_id - 0xdeadbeef, // csd_version_rva - 0x100, // suite_mask - 0, // reserved2 - { // cpu - { // x86_cpu_info - { 0x756e6547, 0x49656e69, 0x6c65746e }, // vendor_id - 0x6d8, // version_information - 0xafe9fbff, // feature_information - 0xffffffff // amd_extended_cpu_features - } - } - }; - String csd_version(dump, "Literally Linux"); - SystemInfo system_info(dump, linux_x86, csd_version); - - Module module(dump, 0xa90206ca83eb2852ULL, 0xada542bd, - module_name, - 0xb1054d2a, - 0x34571371, - fixed_file_info, // from synth_minidump_unittest_data.h - &cv_info, nullptr); - - dump.Add(&module); - dump.Add(&module_name); - dump.Add(&cv_info); - dump.Add(&system_info); - dump.Add(&csd_version); - dump.Finish(); - - string contents; - ASSERT_TRUE(dump.GetContents(&contents)); - istringstream minidump_stream(contents); - Minidump minidump(minidump_stream); - ASSERT_TRUE(minidump.Read()); - ASSERT_EQ(2U, minidump.GetDirectoryEntryCount()); - - MinidumpModuleList *md_module_list = minidump.GetModuleList(); - ASSERT_TRUE(md_module_list != NULL); - ASSERT_EQ(1U, md_module_list->module_count()); - - const MinidumpModule *md_module = md_module_list->GetModuleAtIndex(0); - ASSERT_TRUE(md_module != NULL); - // just the build_id, directly - ASSERT_EQ( - "5fa9cdb41053df1b86fab733b4df3738cea34a870102030405060708090a0b0c0d0e0f", - md_module->code_identifier()); - // build_id truncated to GUID length and treated as such, with zero - // age appended. - ASSERT_EQ("B4CDA95F53101BDF86FAB733B4DF37380", md_module->debug_identifier()); -} - TEST(Dump, OneSystemInfo) { Dump dump(0, kLittleEndian); String csd_version(dump, "Petulant Pierogi"); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux.cc b/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux.cc index 3c0dea25d218..0cd3772e0afe 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux.cc @@ -12,7 +12,6 @@ #include #include -#include "common/using_std_string.h" #include "processor/logging.h" #if defined(OS_ANDROID) && !defined(__LP64__) @@ -26,7 +25,7 @@ namespace google_breakpad { -bool ParseProcMaps(const string& input, +bool ParseProcMaps(const std::string& input, std::vector* regions_out) { std::vector regions; @@ -34,8 +33,8 @@ bool ParseProcMaps(const string& input, // this point in time. // Split the string by newlines. - std::vector lines; - string l = ""; + std::vector lines; + std::string l = ""; for (size_t i = 0; i < input.size(); i++) { if (input[i] != '\n' && input[i] != '\r') { l.push_back(input[i]); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux_unittest.cc index 466f23455e29..1ff4b031d9e9 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/proc_maps_linux_unittest.cc @@ -3,7 +3,6 @@ // found in the LICENSE file. #include "breakpad_googletest_includes.h" -#include "common/using_std_string.h" #include "google_breakpad/processor/proc_maps_linux.h" namespace { @@ -228,7 +227,7 @@ TEST(ProcMapsTest, ParseProcMapsEmptyString) { // - File name has whitespaces. TEST(ProcMapsTest, ParseProcMapsWeirdCorrectInput) { std::vector regions; - const string kContents = + const std::string kContents = "00400000-0040b000 r-xp 00000000 fc:00 2106562 " " /bin/cat\r\n" "7f53b7dad000-7f53b7f62000 r-xp 00000000 fc:00 263011 " diff --git a/toolkit/crashreporter/google-breakpad/src/processor/processor.gyp b/toolkit/crashreporter/google-breakpad/src/processor/processor.gyp index 083a3237f2d2..fb3d7cde802c 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/processor.gyp +++ b/toolkit/crashreporter/google-breakpad/src/processor/processor.gyp @@ -28,7 +28,6 @@ { 'includes': [ - '../build/common.gypi', 'processor_tools.gypi', ], 'targets': [ @@ -43,6 +42,8 @@ 'basic_code_modules.h', 'basic_source_line_resolver.cc', 'basic_source_line_resolver_types.h', + 'binarystream.cc', + 'binarystream.h', 'call_stack.cc', 'cfi_frame_info-inl.h', 'cfi_frame_info.cc', @@ -77,7 +78,6 @@ 'pathname_stripper.h', 'postfix_evaluator-inl.h', 'postfix_evaluator.h', - 'proc_maps_linux.cc', 'process_state.cc', 'range_map-inl.h', 'range_map.h', @@ -143,6 +143,7 @@ 'sources': [ 'address_map_unittest.cc', 'basic_source_line_resolver_unittest.cc', + 'binarystream_unittest.cc', 'cfi_frame_info_unittest.cc', 'contained_range_map_unittest.cc', 'disassembler_x86_unittest.cc', @@ -154,14 +155,12 @@ 'minidump_unittest.cc', 'pathname_stripper_unittest.cc', 'postfix_evaluator_unittest.cc', - 'range_map_shrink_down_unittest.cc', 'range_map_unittest.cc', 'stackwalker_address_list_unittest.cc', 'stackwalker_amd64_unittest.cc', 'stackwalker_arm64_unittest.cc', 'stackwalker_arm_unittest.cc', 'stackwalker_mips_unittest.cc', - 'stackwalker_mips64_unittest.cc', 'stackwalker_unittest_utils.h', 'stackwalker_x86_unittest.cc', 'static_address_map_unittest.cc', diff --git a/toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h b/toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h index 9fe74c502903..55dae8396d4a 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/range_map-inl.h @@ -40,45 +40,26 @@ #include #include "processor/range_map.h" -#include "processor/linked_ptr.h" #include "processor/logging.h" namespace google_breakpad { -template -void RangeMap::SetEnableShrinkDown( - bool enable_shrink_down) { - enable_shrink_down_ = enable_shrink_down; -} - -template -bool RangeMap::IsShrinkDownEnabled() const { - return enable_shrink_down_; -} template bool RangeMap::StoreRange(const AddressType &base, const AddressType &size, const EntryType &entry) { - return StoreRangeInternal(base, 0 /* delta */, size, entry); -} - -template -bool RangeMap::StoreRangeInternal( - const AddressType &base, const AddressType &delta, - const AddressType &size, const EntryType &entry) { - AddressType high = base + (size - 1); + AddressType high = base + size - 1; // Check for undersize or overflow. if (size <= 0 || high < base) { // The processor will hit this case too frequently with common symbol // files in the size == 0 case, which is more suited to a DEBUG channel. // Filter those out since there's no DEBUG channel at the moment. - BPLOG_IF(INFO, size != 0) << "StoreRangeInternal failed, " - << HexString(base) << "+" << HexString(size) - << ", " << HexString(high) - << ", delta: " << HexString(delta); + BPLOG_IF(INFO, size != 0) << "StoreRange failed, " << HexString(base) << + "+" << HexString(size) << ", " << + HexString(high); return false; } @@ -90,80 +71,53 @@ bool RangeMap::StoreRangeInternal( if (iterator_base != iterator_high) { // Some other range begins in the space used by this range. It may be // contained within the space used by this range, or it may extend lower. - // If enable_shrink_down_ is true, shrink the current range down, otherwise - // this is an error. - if (enable_shrink_down_) { - AddressType additional_delta = iterator_base->first - base + 1; - return StoreRangeInternal(base + additional_delta, - delta + additional_delta, - size - additional_delta, entry); - } else { - // The processor hits this case too frequently with common symbol files. - // This is most appropriate for a DEBUG channel, but since none exists - // now simply comment out this logging. - // AddressType other_base = iterator_base->second.base(); - // AddressType other_size = iterator_base->first - other_base + 1; - // BPLOG(INFO) << "StoreRangeInternal failed, an existing range is " - // << "overlapping with the new range: new " - // << HexString(base) << "+" << HexString(size) - // << ", existing " << HexString(other_base) << "+" - // << HexString(other_size); - return false; - } + // Regardless, it is an error. + // The processor hits this case too frequently with common symbol files. + // This is most appropriate for a DEBUG channel, but since none exists now + // simply comment out this logging. + // + // AddressType other_base = iterator_base->second.base(); + // AddressType other_size = iterator_base->first - other_base + 1; + // BPLOG(INFO) << "StoreRange failed, an existing range is contained by or " + // "extends lower than the new range: new " << + // HexString(base) << "+" << HexString(size) << + // ", existing " << HexString(other_base) << "+" << + // HexString(other_size); + + return false; } if (iterator_high != map_.end()) { if (iterator_high->second.base() <= high) { // The range above this one overlaps with this one. It may fully // contain this range, or it may begin within this range and extend - // higher. If enable_shrink_down_ is true, shrink the other range down, - // otherwise this is an error. - if (enable_shrink_down_ && iterator_high->first > high) { - // Shrink the other range down. - AddressType other_high = iterator_high->first; - AddressType additional_delta = - high - iterator_high->second.base() + 1; - EntryType other_entry; - AddressType other_base = AddressType(); - AddressType other_size = AddressType(); - AddressType other_delta = AddressType(); - RetrieveRange(other_high, &other_entry, &other_base, &other_delta, - &other_size); - map_.erase(iterator_high); - map_.insert(MapValue(other_high, - Range(other_base + additional_delta, - other_delta + additional_delta, - other_entry))); - // Retry to store this range. - return StoreRangeInternal(base, delta, size, entry); - } else { - // The processor hits this case too frequently with common symbol files. - // This is most appropriate for a DEBUG channel, but since none exists - // now simply comment out this logging. - // - // AddressType other_base = iterator_high->second.base(); - // AddressType other_size = iterator_high->first - other_base + 1; - // BPLOG(INFO) << "StoreRangeInternal failed, an existing range " - // << "contains or extends higher than the new range: new " - // << HexString(base) << "+" << HexString(size) - // << ", existing " << HexString(other_base) << "+" - // << HexString(other_size); - return false; - } + // higher. Regardless, it's an error. + // The processor hits this case too frequently with common symbol files. + // This is most appropriate for a DEBUG channel, but since none exists now + // simply comment out this logging. + // + // AddressType other_base = iterator_high->second.base(); + // AddressType other_size = iterator_high->first - other_base + 1; + // BPLOG(INFO) << "StoreRange failed, an existing range contains or " + // "extends higher than the new range: new " << + // HexString(base) << "+" << HexString(size) << + // ", existing " << HexString(other_base) << "+" << + // HexString(other_size); + return false; } } // Store the range in the map by its high address, so that lower_bound can // be used to quickly locate a range by address. - map_.insert(MapValue(high, Range(base, delta, entry))); + map_.insert(MapValue(high, Range(base, entry))); return true; } template bool RangeMap::RetrieveRange( - const AddressType &address, EntryType *entry, AddressType *entry_base, - AddressType *entry_delta, AddressType *entry_size) const { + const AddressType &address, EntryType *entry, + AddressType *entry_base, AddressType *entry_size) const { BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRange requires |entry|"; assert(entry); @@ -182,8 +136,6 @@ bool RangeMap::RetrieveRange( *entry = iterator->second.entry(); if (entry_base) *entry_base = iterator->second.base(); - if (entry_delta) - *entry_delta = iterator->second.delta(); if (entry_size) *entry_size = iterator->first - iterator->second.base() + 1; @@ -193,13 +145,13 @@ bool RangeMap::RetrieveRange( template bool RangeMap::RetrieveNearestRange( - const AddressType &address, EntryType *entry, AddressType *entry_base, - AddressType *entry_delta, AddressType *entry_size) const { + const AddressType &address, EntryType *entry, + AddressType *entry_base, AddressType *entry_size) const { BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveNearestRange requires |entry|"; assert(entry); // If address is within a range, RetrieveRange can handle it. - if (RetrieveRange(address, entry, entry_base, entry_delta, entry_size)) + if (RetrieveRange(address, entry, entry_base, entry_size)) return true; // upper_bound gives the first element whose key is greater than address, @@ -215,8 +167,6 @@ bool RangeMap::RetrieveNearestRange( *entry = iterator->second.entry(); if (entry_base) *entry_base = iterator->second.base(); - if (entry_delta) - *entry_delta = iterator->second.delta(); if (entry_size) *entry_size = iterator->first - iterator->second.base() + 1; @@ -226,8 +176,8 @@ bool RangeMap::RetrieveNearestRange( template bool RangeMap::RetrieveRangeAtIndex( - int index, EntryType *entry, AddressType *entry_base, - AddressType *entry_delta, AddressType *entry_size) const { + int index, EntryType *entry, + AddressType *entry_base, AddressType *entry_size) const { BPLOG_IF(ERROR, !entry) << "RangeMap::RetrieveRangeAtIndex requires |entry|"; assert(entry); @@ -245,8 +195,6 @@ bool RangeMap::RetrieveRangeAtIndex( *entry = iterator->second.entry(); if (entry_base) *entry_base = iterator->second.base(); - if (entry_delta) - *entry_delta = iterator->second.delta(); if (entry_size) *entry_size = iterator->first - iterator->second.base() + 1; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/range_map.h b/toolkit/crashreporter/google-breakpad/src/processor/range_map.h index d90a67327faa..2572e4927d85 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/range_map.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/range_map.h @@ -52,56 +52,40 @@ template class RangeMapSerializer; template class RangeMap { public: - RangeMap() : enable_shrink_down_(false), map_() {} - - // |enable_shrink_down| tells whether overlapping ranges can be shrunk down. - // If true, then adding a new range that overlaps with an existing one can - // be a successful operation. The range which ends at the higher address - // will be shrunk down by moving its start position to a higher address so - // that it does not overlap anymore. - void SetEnableShrinkDown(bool enable_shrink_down); - bool IsShrinkDownEnabled() const; + RangeMap() : map_() {} // Inserts a range into the map. Returns false for a parameter error, // or if the location of the range would conflict with a range already - // stored in the map. If enable_shrink_down is true and there is an overlap - // between the current range and some other range (already in the map), - // shrink down the range which ends at a higher address. - bool StoreRange(const AddressType &base, const AddressType &size, + // stored in the map. + bool StoreRange(const AddressType &base, + const AddressType &size, const EntryType &entry); - // Locates the range encompassing the supplied address. If there is no such - // range, returns false. entry_base, entry_delta, and entry_size, if - // non-NULL, are set to the base, delta, and size of the entry's range. - // A positive entry delta (> 0) indicates that there was an overlap and the - // entry was shrunk down (original start address was increased by delta). + // Locates the range encompassing the supplied address. If there is + // no such range, returns false. entry_base and entry_size, if non-NULL, + // are set to the base and size of the entry's range. bool RetrieveRange(const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_delta, - AddressType *entry_size) const; + AddressType *entry_base, AddressType *entry_size) const; // Locates the range encompassing the supplied address, if one exists. // If no range encompasses the supplied address, locates the nearest range // to the supplied address that is lower than the address. Returns false - // if no range meets these criteria. entry_base, entry_delta, and entry_size, - // if non-NULL, are set to the base, delta, and size of the entry's range. - // A positive entry delta (> 0) indicates that there was an overlap and the - // entry was shrunk down (original start address was increased by delta). + // if no range meets these criteria. entry_base and entry_size, if + // non-NULL, are set to the base and size of the entry's range. bool RetrieveNearestRange(const AddressType &address, EntryType *entry, - AddressType *entry_base, AddressType *entry_delta, - AddressType *entry_size) const; + AddressType *entry_base, AddressType *entry_size) + const; // Treating all ranges as a list ordered by the address spaces that they // occupy, locates the range at the index specified by index. Returns - // false if index is larger than the number of ranges stored. entry_base, - // entry_delta, and entry_size, if non-NULL, are set to the base, delta, and - // size of the entry's range. - // A positive entry delta (> 0) indicates that there was an overlap and the - // entry was shrunk down (original start address was increased by delta). + // false if index is larger than the number of ranges stored. entry_base + // and entry_size, if non-NULL, are set to the base and size of the entry's + // range. // // RetrieveRangeAtIndex is not optimized for speedy operation. bool RetrieveRangeAtIndex(int index, EntryType *entry, - AddressType *entry_base, AddressType *entry_delta, - AddressType *entry_size) const; + AddressType *entry_base, AddressType *entry_size) + const; // Returns the number of ranges stored in the RangeMap. int GetCount() const; @@ -115,19 +99,12 @@ class RangeMap { friend class ModuleComparer; friend class RangeMapSerializer; - // Same a StoreRange() with the only exception that the |delta| can be - // passed in. - bool StoreRangeInternal(const AddressType &base, const AddressType &delta, - const AddressType &size, const EntryType &entry); - class Range { public: - Range(const AddressType &base, const AddressType &delta, - const EntryType &entry) - : base_(base), delta_(delta), entry_(entry) {} + Range(const AddressType &base, const EntryType &entry) + : base_(base), entry_(entry) {} AddressType base() const { return base_; } - AddressType delta() const { return delta_; } EntryType entry() const { return entry_; } private: @@ -135,9 +112,6 @@ class RangeMap { // be stored, because RangeMap uses it as the key to the map. const AddressType base_; - // The delta when the range is shrunk down. - const AddressType delta_; - // The entry corresponding to a range. const EntryType entry_; }; @@ -147,9 +121,6 @@ class RangeMap { typedef typename AddressToRangeMap::const_iterator MapConstIterator; typedef typename AddressToRangeMap::value_type MapValue; - // Whether overlapping ranges can be shrunk down. - bool enable_shrink_down_; - // Maps the high address of each range to a EntryType. AddressToRangeMap map_; }; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/range_map_shrink_down_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/range_map_shrink_down_unittest.cc deleted file mode 100644 index 8dd0e709b119..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/processor/range_map_shrink_down_unittest.cc +++ /dev/null @@ -1,355 +0,0 @@ -// Copyright (c) 2016, Google Inc. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - -// range_map_shrink_down_unittest.cc: Unit tests for RangeMap that specifically -// test shrink down when ranges overlap. -// -// Author: Ivan Penkov - -#include -#include - -#include "processor/range_map-inl.h" - -#include "breakpad_googletest_includes.h" -#include "common/scoped_ptr.h" -#include "processor/linked_ptr.h" -#include "processor/logging.h" - -namespace { - -using google_breakpad::linked_ptr; -using google_breakpad::scoped_ptr; -using google_breakpad::RangeMap; - -// A CountedObject holds an int. A global (not thread safe!) count of -// allocated CountedObjects is maintained to help test memory management. -class CountedObject { - public: - explicit CountedObject(int id) : id_(id) { ++count_; } - ~CountedObject() { --count_; } - - static int count() { return count_; } - int id() const { return id_; } - - private: - static int count_; - int id_; -}; - -int CountedObject::count_; - -typedef int AddressType; -typedef RangeMap> TestMap; - -// Same range cannot be stored wice. -TEST(RangeMap, TestShinkDown_SameRange) { - TestMap range_map; - range_map.SetEnableShrinkDown(true); - linked_ptr object_1(new CountedObject(1)); - EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, - object_1)); - - // Same range cannot be stored wice. - linked_ptr object_2(new CountedObject(2)); - EXPECT_FALSE(range_map.StoreRange(0 /* base address */, 100 /* size */, - object_2)); -} - -// If a range is completely contained by another range, then the larger range -// should be shrinked down. -TEST(RangeMap, TestShinkDown_CompletelyContained) { - TestMap range_map; - range_map.SetEnableShrinkDown(true); - // Larger range is added first. - linked_ptr object_1(new CountedObject(1)); - EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, - object_1)); - // Smaller (contained) range is added second. - linked_ptr object_2(new CountedObject(2)); - EXPECT_TRUE(range_map.StoreRange(10 /* base address */, 80 /* size */, - object_2)); - linked_ptr object; - AddressType retrieved_base = AddressType(); - AddressType retrieved_delta = AddressType(); - AddressType retrieved_size = AddressType(); - // The first range contains the second, so the first range should have been - // shrunk to [90, 99]. Range [0, 9] should be free. - EXPECT_FALSE(range_map.RetrieveRange(0, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_FALSE(range_map.RetrieveRange(9, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_TRUE(range_map.RetrieveRange(90, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(1, object->id()); - EXPECT_EQ(90, retrieved_base); - EXPECT_EQ(90, retrieved_delta); - EXPECT_EQ(10, retrieved_size); - // Validate the properties of the smaller range (should be untouched). - EXPECT_TRUE(range_map.RetrieveRange(10, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(2, object->id()); - EXPECT_EQ(10, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(80, retrieved_size); -} - -// Same as the previous test, however the larger range is added second. -TEST(RangeMap, TestShinkDown_CompletelyContained_LargerAddedSecond) { - TestMap range_map; - range_map.SetEnableShrinkDown(true); - // Smaller (contained) range is added first. - linked_ptr object_1(new CountedObject(1)); - EXPECT_TRUE(range_map.StoreRange(10 /* base address */, 80 /* size */, - object_1)); - // Larger range is added second. - linked_ptr object_2(new CountedObject(2)); - EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, - object_2)); - linked_ptr object; - AddressType retrieved_base = AddressType(); - AddressType retrieved_delta = AddressType(); - AddressType retrieved_size = AddressType(); - // The second range contains the first, so the second range should have been - // shrunk to [90, 99]. Range [0, 9] should be free. - EXPECT_FALSE(range_map.RetrieveRange(0, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_FALSE(range_map.RetrieveRange(9, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_TRUE(range_map.RetrieveRange(90, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(2, object->id()); - EXPECT_EQ(90, retrieved_base); - EXPECT_EQ(90, retrieved_delta); - EXPECT_EQ(10, retrieved_size); - // Validate the properties of the smaller range (should be untouched). - EXPECT_TRUE(range_map.RetrieveRange(10, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(1, object->id()); - EXPECT_EQ(10, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(80, retrieved_size); -} - -TEST(RangeMap, TestShinkDown_PartialOverlap_AtBeginning) { - TestMap range_map; - range_map.SetEnableShrinkDown(true); - linked_ptr object_1(new CountedObject(1)); - EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, - object_1)); - - // Partial overlap at the beginning of the new range. - linked_ptr object_2(new CountedObject(2)); - EXPECT_TRUE(range_map.StoreRange(90 /* base address */, 110 /* size */, - object_2)); - - linked_ptr object; - AddressType retrieved_base = AddressType(); - AddressType retrieved_delta = AddressType(); - AddressType retrieved_size = AddressType(); - // The second range is supposed to be shrunk down so the following address - // should resize in the first range. - EXPECT_TRUE(range_map.RetrieveRange(99, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(1, object->id()); - EXPECT_EQ(0, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(100, retrieved_size); - // Validate the properties of the shrunk down range. - EXPECT_TRUE(range_map.RetrieveRange(100, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(2, object->id()); - EXPECT_EQ(100, retrieved_base); - EXPECT_EQ(10, retrieved_delta); - EXPECT_EQ(100, retrieved_size); -} - -TEST(RangeMap, TestShinkDown_PartialOverlap_AtEnd) { - TestMap range_map; - range_map.SetEnableShrinkDown(true); - linked_ptr object_1(new CountedObject(1)); - EXPECT_TRUE(range_map.StoreRange(50 /* base address */, 50 /* size */, - object_1)); - - // Partial overlap at the end of the new range. - linked_ptr object_2(new CountedObject(2)); - EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 70 /* size */, - object_2)); - - linked_ptr object; - AddressType retrieved_base = AddressType(); - AddressType retrieved_delta = AddressType(); - AddressType retrieved_size = AddressType(); - // The first range is supposed to be shrunk down so the following address - // should resize in the first range. - EXPECT_TRUE(range_map.RetrieveRange(69, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(2, object->id()); - EXPECT_EQ(0, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(70, retrieved_size); - // Validate the properties of the shrunk down range. - EXPECT_TRUE(range_map.RetrieveRange(70, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(1, object->id()); - EXPECT_EQ(70, retrieved_base); - EXPECT_EQ(20, retrieved_delta); - EXPECT_EQ(30, retrieved_size); -} - -// A new range is overlapped at both ends. The new range and the range -// that overlaps at the end should be shrink. The range that overlaps at the -// beginning should be left untouched. -TEST(RangeMap, TestShinkDown_OverlapAtBothEnds) { - TestMap range_map; - range_map.SetEnableShrinkDown(true); - // This should overlap object_3 at the beginning. - linked_ptr object_1(new CountedObject(1)); - EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 100 /* size */, - object_1)); - - // This should overlap object_3 at the end. - linked_ptr object_2(new CountedObject(2)); - EXPECT_TRUE(range_map.StoreRange(100 /* base address */, 100 /* size */, - object_2)); - - // This should be overlapped on both ends by object_1 and object_2. - linked_ptr object_3(new CountedObject(3)); - EXPECT_TRUE(range_map.StoreRange(50 /* base address */, 100 /* size */, - object_3)); - - linked_ptr object; - AddressType retrieved_base = AddressType(); - AddressType retrieved_delta = AddressType(); - AddressType retrieved_size = AddressType(); - // The first range should be intact. - EXPECT_TRUE(range_map.RetrieveRange(0, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(1, object->id()); - EXPECT_EQ(0, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(100, retrieved_size); - // The second range should be shrunk down by 50. - EXPECT_TRUE(range_map.RetrieveRange(150, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(2, object->id()); - EXPECT_EQ(150, retrieved_base); - EXPECT_EQ(50, retrieved_delta); - EXPECT_EQ(50, retrieved_size); - // The third range (in the middle) should be shrunk down by 50. - EXPECT_TRUE(range_map.RetrieveRange(100, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(3, object->id()); - EXPECT_EQ(100, retrieved_base); - EXPECT_EQ(50, retrieved_delta); - EXPECT_EQ(50, retrieved_size); -} - -TEST(RangeMap, TestShinkDown_MultipleConflicts) { - TestMap range_map; - range_map.SetEnableShrinkDown(true); - // This should overlap with object_3. - linked_ptr object_1(new CountedObject(1)); - EXPECT_TRUE(range_map.StoreRange(10 /* base address */, 90 /* size */, - object_1)); - - // This should also overlap with object_3 but after object_1. - linked_ptr object_2(new CountedObject(2)); - EXPECT_TRUE(range_map.StoreRange(100 /* base address */, 100 /* size */, - object_2)); - - // This should be overlapped on both object_1 and object_2. Since - // object_3 ends with the higher address it must be shrunk. - linked_ptr object_3(new CountedObject(3)); - EXPECT_TRUE(range_map.StoreRange(0 /* base address */, 300 /* size */, - object_3)); - - linked_ptr object; - AddressType retrieved_base = AddressType(); - AddressType retrieved_delta = AddressType(); - AddressType retrieved_size = AddressType(); - // The first range should be intact. - EXPECT_TRUE(range_map.RetrieveRange(99, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(1, object->id()); - EXPECT_EQ(10, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(90, retrieved_size); - // The second range should be intact. - EXPECT_TRUE(range_map.RetrieveRange(199, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(2, object->id()); - EXPECT_EQ(100, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(100, retrieved_size); - // The third range should be shrunk down by 200. - EXPECT_TRUE(range_map.RetrieveRange(299, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(3, object->id()); - EXPECT_EQ(200, retrieved_base); - EXPECT_EQ(200, retrieved_delta); - EXPECT_EQ(100, retrieved_size); -} - -// Adding two ranges without overlap should succeed and the ranges should -// be left intact. -TEST(RangeMap, TestShinkDown_NoConflicts) { - TestMap range_map; - range_map.SetEnableShrinkDown(true); - // Adding range 1. - linked_ptr object_1(new CountedObject(1)); - EXPECT_TRUE(range_map.StoreRange(10 /* base address */, 90 /* size */, - object_1)); - - // Adding range 2 - no overlap with range 1. - linked_ptr object_2(new CountedObject(2)); - EXPECT_TRUE(range_map.StoreRange(110 /* base address */, 90 /* size */, - object_2)); - - linked_ptr object; - AddressType retrieved_base = AddressType(); - AddressType retrieved_delta = AddressType(); - AddressType retrieved_size = AddressType(); - // The first range should be intact. - EXPECT_TRUE(range_map.RetrieveRange(99, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(1, object->id()); - EXPECT_EQ(10, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(90, retrieved_size); - // The second range should be intact. - EXPECT_TRUE(range_map.RetrieveRange(199, &object, &retrieved_base, - &retrieved_delta, &retrieved_size)); - EXPECT_EQ(2, object->id()); - EXPECT_EQ(110, retrieved_base); - EXPECT_EQ(0, retrieved_delta); - EXPECT_EQ(90, retrieved_size); -} - -} // namespace diff --git a/toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc index 31b89e5de30f..bf9b7279ad26 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/range_map_unittest.cc @@ -166,10 +166,8 @@ static bool RetrieveTest(TestMap *range_map, const RangeTest *range_test) { linked_ptr object; AddressType retrieved_base = AddressType(); AddressType retrieved_size = AddressType(); - AddressType retrieved_delta = AddressType(); bool retrieved = range_map->RetrieveRange(address, &object, &retrieved_base, - &retrieved_delta, &retrieved_size); bool observed_result = retrieved && object->id() == range_test->id; @@ -211,12 +209,10 @@ static bool RetrieveTest(TestMap *range_map, const RangeTest *range_test) { linked_ptr nearest_object; AddressType nearest_base = AddressType(); - AddressType nearest_delta = AddressType(); AddressType nearest_size = AddressType(); bool retrieved_nearest = range_map->RetrieveNearestRange(address, &nearest_object, &nearest_base, - &nearest_delta, &nearest_size); // When checking one greater than the high side, RetrieveNearestRange @@ -278,8 +274,7 @@ static bool RetrieveIndexTest(TestMap *range_map, int set) { int object_count = range_map->GetCount(); for (int object_index = 0; object_index < object_count; ++object_index) { AddressType base; - if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, - NULL /* delta */, NULL /* size */)) { + if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, NULL)) { fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d, " "expected success, observed failure\n", set, object_index); @@ -319,8 +314,7 @@ static bool RetrieveIndexTest(TestMap *range_map, int set) { // Make sure that RetrieveRangeAtIndex doesn't allow lookups at indices that // are too high. - if (range_map->RetrieveRangeAtIndex(object_count, &object, NULL /* base */, - NULL /* delta */, NULL /* size */)) { + if (range_map->RetrieveRangeAtIndex(object_count, &object, NULL, NULL)) { fprintf(stderr, "FAILED: RetrieveRangeAtIndex set %d index %d (too large), " "expected failure, observed success\n", set, object_count); @@ -349,8 +343,7 @@ static bool RetriveAtIndexTest2() { int object_count = range_map->GetCount(); for (int object_index = 0; object_index < object_count; ++object_index) { AddressType base; - if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, - NULL /* delta */, NULL /* size */)) { + if (!range_map->RetrieveRangeAtIndex(object_index, &object, &base, NULL)) { fprintf(stderr, "FAILED: RetrieveAtIndexTest2 index %d, " "expected success, observed failure\n", object_index); return false; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalk_common.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalk_common.cc index 704039f34843..3a6e17feca87 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalk_common.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalk_common.cc @@ -35,13 +35,13 @@ #include "processor/stackwalk_common.h" #include +#include #include #include #include #include -#include "common/stdio_wrapper.h" #include "common/using_std_string.h" #include "google_breakpad/processor/call_stack.h" #include "google_breakpad/processor/code_module.h" @@ -112,10 +112,10 @@ static string StripSeparator(const string &original) { } // PrintStackContents prints the stack contents of the current frame to stdout. -static void PrintStackContents(const string &indent, +static void PrintStackContents(const std::string &indent, const StackFrame *frame, const StackFrame *prev_frame, - const string &cpu, + const std::string &cpu, const MemoryRegion *memory, const CodeModules* modules, SourceLineResolverInterface *resolver) { @@ -181,7 +181,7 @@ static void PrintStackContents(const string &indent, // Print data in hex. const int kBytesPerRow = 16; - string data_as_string; + std::string data_as_string; for (int i = 0; i < kBytesPerRow; ++i, ++address) { uint8_t value = 0; if (address < stack_end && @@ -546,7 +546,7 @@ static void PrintStack(const CallStack *stack, sequence = PrintRegister64("pc", frame_arm64->context.iregs[32], sequence); } - } else if ((cpu == "mips") || (cpu == "mips64")) { + } else if (cpu == "mips") { const StackFrameMIPS* frame_mips = reinterpret_cast(frame); @@ -607,7 +607,7 @@ static void PrintStack(const CallStack *stack, // Print stack contents. if (output_stack_contents && frame_index + 1 < frame_count) { - const string indent(" "); + const std::string indent(" "); PrintStackContents(indent, frame, stack->frames()->at(frame_index + 1), cpu, memory, modules, resolver); } @@ -803,20 +803,6 @@ void PrintProcessState(const ProcessState& process_state, process_state.system_info()->cpu_count != 1 ? "s" : ""); printf("\n"); - // Print GPU information - string gl_version = process_state.system_info()->gl_version; - string gl_vendor = process_state.system_info()->gl_vendor; - string gl_renderer = process_state.system_info()->gl_renderer; - printf("GPU:"); - if (!gl_version.empty() || !gl_vendor.empty() || !gl_renderer.empty()) { - printf(" %s\n", gl_version.c_str()); - printf(" %s\n", gl_vendor.c_str()); - printf(" %s\n", gl_renderer.c_str()); - } else { - printf(" UNKNOWN\n"); - } - printf("\n"); - // Print crash information. if (process_state.crashed()) { printf("Crash reason: %s\n", process_state.crash_reason().c_str()); @@ -879,7 +865,6 @@ void PrintProcessStateMachineReadable(const ProcessState& process_state) { // Print OS and CPU information. // OS|{OS Name}|{OS Version} // CPU|{CPU Name}|{CPU Info}|{Number of CPUs} - // GPU|{GPU version}|{GPU vendor}|{GPU renderer} printf("OS%c%s%c%s\n", kOutputSeparator, StripSeparator(process_state.system_info()->os).c_str(), kOutputSeparator, @@ -891,12 +876,6 @@ void PrintProcessStateMachineReadable(const ProcessState& process_state) { StripSeparator(process_state.system_info()->cpu_info).c_str(), kOutputSeparator, process_state.system_info()->cpu_count); - printf("GPU%c%s%c%s%c%s\n", kOutputSeparator, - StripSeparator(process_state.system_info()->gl_version).c_str(), - kOutputSeparator, - StripSeparator(process_state.system_info()->gl_vendor).c_str(), - kOutputSeparator, - StripSeparator(process_state.system_info()->gl_renderer).c_str()); int requesting_thread = process_state.requesting_thread(); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc index 98cb0b5be841..94b66334fe3d 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker.cc @@ -234,7 +234,6 @@ Stackwalker* Stackwalker::StackwalkerForCPU( break; case MD_CONTEXT_MIPS: - case MD_CONTEXT_MIPS64: cpu_stackwalker = new StackwalkerMIPS(system_info, context->GetContextMIPS(), memory, modules, frame_symbolizer); diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.cc index 440724a1e3b8..f252a33b7157 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.cc @@ -147,29 +147,6 @@ StackFrameAMD64* StackwalkerAMD64::GetCallerByCFIFrameInfo( return frame.release(); } -bool StackwalkerAMD64::IsEndOfStack(uint64_t caller_rip, uint64_t caller_rsp, - uint64_t callee_rsp) { - // Treat an instruction address of 0 as end-of-stack. - if (caller_rip == 0) { - return true; - } - - // If the new stack pointer is at a lower address than the old, then - // that's clearly incorrect. Treat this as end-of-stack to enforce - // progress and avoid infinite loops. - if (caller_rsp < callee_rsp) { - return true; - } - - return false; -} - -// Returns true if `ptr` is not in x86-64 canonical form. -// https://en.wikipedia.org/wiki/X86-64#Virtual_address_space_details -static bool is_non_canonical(uint64_t ptr) { - return ptr > 0x7FFFFFFFFFFF && ptr < 0xFFFF800000000000; -} - StackFrameAMD64* StackwalkerAMD64::GetCallerByFramePointerRecovery( const vector& frames) { StackFrameAMD64* last_frame = static_cast(frames.back()); @@ -192,28 +169,14 @@ StackFrameAMD64* StackwalkerAMD64::GetCallerByFramePointerRecovery( // %caller_rip = *(%callee_rbp + 8) // %caller_rbp = *(%callee_rbp) - // If rbp is not 8-byte aligned it can't be a frame pointer. - if (last_rbp % 8 != 0) { - return NULL; - } - uint64_t caller_rip, caller_rbp; if (memory_->GetMemoryAtAddress(last_rbp + 8, &caller_rip) && memory_->GetMemoryAtAddress(last_rbp, &caller_rbp)) { uint64_t caller_rsp = last_rbp + 16; - // If the recovered rip is not a canonical address it can't be - // the return address, so rbp must not have been a frame pointer. - if (is_non_canonical(caller_rip)) { - return NULL; - } - // Simple sanity check that the stack is growing downwards as expected. - if (IsEndOfStack(caller_rip, caller_rsp, last_rsp) || - caller_rbp < last_rbp) { - // Reached end-of-stack or stack is not growing downwards. + if (caller_rbp < last_rbp || caller_rsp < last_rsp) return NULL; - } StackFrameAMD64* frame = new StackFrameAMD64(); frame->trust = StackFrame::FRAME_TRUST_FP; @@ -321,11 +284,15 @@ StackFrame* StackwalkerAMD64::GetCallerFrame(const CallStack* stack, new_frame->context.rbp = static_cast(new_frame->context.rbp); } - if (IsEndOfStack(new_frame->context.rip, new_frame->context.rsp, - last_frame->context.rsp)) { - // Reached end-of-stack. + // Treat an instruction address of 0 as end-of-stack. + if (new_frame->context.rip == 0) + return NULL; + + // If the new stack pointer is at a lower address than the old, then + // that's clearly incorrect. Treat this as end-of-stack to enforce + // progress and avoid infinite loops. + if (new_frame->context.rsp <= last_frame->context.rsp) return NULL; - } // new_frame->context.rip is the return address, which is the instruction // after the CALL that caused us to arrive at the callee. Set diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.h b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.h index 67c455104832..8f3dbd528024 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64.h @@ -78,14 +78,6 @@ class StackwalkerAMD64 : public Stackwalker { StackFrameAMD64* GetCallerByCFIFrameInfo(const vector &frames, CFIFrameInfo* cfi_frame_info); - // Checks whether end-of-stack is reached. An instruction address of 0 is an - // end-of-stack marker. If the stack pointer of the caller is at a lower - // address than the stack pointer of the callee, then that's clearly incorrect - // and it is treated as end-of-stack to enforce progress and avoid infinite - // loops. - bool IsEndOfStack(uint64_t caller_rip, uint64_t caller_rsp, - uint64_t callee_rsp); - // Assumes a traditional frame layout where the frame pointer has not been // omitted. The expectation is that caller's %rbp is pushed to the stack // after the return address of the callee, and that the callee's %rsp can diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64_unittest.cc index 935bef866bcd..a54198bfd0af 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_amd64_unittest.cc @@ -72,8 +72,8 @@ class StackwalkerAMD64Fixture { : stack_section(kLittleEndian), // Give the two modules reasonable standard locations and names // for tests to play with. - module1(0x00007400c0000000ULL, 0x10000, "module1", "version1"), - module2(0x00007500b0000000ULL, 0x10000, "module2", "version2") { + module1(0x40000000c0000000ULL, 0x10000, "module1", "version1"), + module2(0x50000000b0000000ULL, 0x10000, "module2", "version2") { // Identify the system as a Linux system. system_info.os = "Linux"; system_info.os_short = "linux"; @@ -149,7 +149,7 @@ TEST_F(SanityCheck, NoResolver) { // provide any call frame information, so trying to reconstruct the // context frame's caller should fail. So there's no need for us to // provide stack contents. - raw_context.rip = 0x00007400c0000200ULL; + raw_context.rip = 0x40000000c0000200ULL; raw_context.rbp = 0x8000000080000000ULL; StackFrameSymbolizer frame_symbolizer(NULL, NULL); @@ -176,7 +176,7 @@ TEST_F(GetContextFrame, Simple) { // provide any call frame information, so trying to reconstruct the // context frame's caller should fail. So there's no need for us to // provide stack contents. - raw_context.rip = 0x00007400c0000200ULL; + raw_context.rip = 0x40000000c0000200ULL; raw_context.rbp = 0x8000000080000000ULL; StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); @@ -200,7 +200,7 @@ TEST_F(GetContextFrame, Simple) { // The stackwalker should be able to produce the context frame even // without stack memory present. TEST_F(GetContextFrame, NoStackMemory) { - raw_context.rip = 0x00007400c0000200ULL; + raw_context.rip = 0x40000000c0000200ULL; raw_context.rbp = 0x8000000080000000ULL; StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); @@ -230,23 +230,23 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) { // Force scanning through three frames to ensure that the // stack pointer is set properly in scan-recovered frames. stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address1 = 0x00007500b0000100ULL; - uint64_t return_address2 = 0x00007500b0000900ULL; + uint64_t return_address1 = 0x50000000b0000100ULL; + uint64_t return_address2 = 0x50000000b0000900ULL; Label frame1_sp, frame2_sp, frame1_rbp; stack_section // frame 0 .Append(16, 0) // space - .D64(0x00007400b0000000ULL) // junk that's not - .D64(0x00007500d0000000ULL) // a return address + .D64(0x40000000b0000000ULL) // junk that's not + .D64(0x50000000d0000000ULL) // a return address .D64(return_address1) // actual return address // frame 1 .Mark(&frame1_sp) .Append(16, 0) // space - .D64(0x00007400b0000000ULL) // more junk - .D64(0x00007500d0000000ULL) + .D64(0x40000000b0000000ULL) // more junk + .D64(0x50000000d0000000ULL) .Mark(&frame1_rbp) .D64(stack_section.start()) // This is in the right place to be @@ -260,7 +260,7 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) { RegionFromSection(); - raw_context.rip = 0x00007400c0000200ULL; + raw_context.rip = 0x40000000c0000200ULL; raw_context.rbp = frame1_rbp.Value(); raw_context.rsp = stack_section.start().Value(); @@ -308,18 +308,18 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { // it is only considered a valid return address if it // lies within a function's bounds. stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address = 0x00007500b0000110ULL; + uint64_t return_address = 0x50000000b0000110ULL; Label frame1_sp, frame1_rbp; stack_section // frame 0 .Append(16, 0) // space - .D64(0x00007400b0000000ULL) // junk that's not - .D64(0x00007500b0000000ULL) // a return address + .D64(0x40000000b0000000ULL) // junk that's not + .D64(0x50000000b0000000ULL) // a return address - .D64(0x00007400c0001000ULL) // a couple of plausible addresses - .D64(0x00007500b000aaaaULL) // that are not within functions + .D64(0x40000000c0001000ULL) // a couple of plausible addresses + .D64(0x50000000b000aaaaULL) // that are not within functions .D64(return_address) // actual return address // frame 1 @@ -328,7 +328,7 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { .Mark(&frame1_rbp); RegionFromSection(); - raw_context.rip = 0x00007400c0000200ULL; + raw_context.rip = 0x40000000c0000200ULL; raw_context.rbp = frame1_rbp.Value(); raw_context.rsp = stack_section.start().Value(); @@ -355,7 +355,7 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust); ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); EXPECT_EQ("platypus", frame0->function_name); - EXPECT_EQ(0x00007400c0000100ULL, frame0->function_base); + EXPECT_EQ(0x40000000c0000100ULL, frame0->function_base); StackFrameAMD64 *frame1 = static_cast(frames->at(1)); EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust); @@ -367,240 +367,7 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp); EXPECT_EQ(frame1_rbp.Value(), frame1->context.rbp); EXPECT_EQ("echidna", frame1->function_name); - EXPECT_EQ(0x00007500b0000100ULL, frame1->function_base); -} - -// StackwalkerAMD64::GetCallerByFramePointerRecovery should never return an -// instruction pointer of 0 because IP of 0 is an end of stack marker and the -// stack walk may be terminated prematurely. Instead it should return NULL -// so that the stack walking code can proceed to stack scanning. -TEST_F(GetCallerFrame, GetCallerByFramePointerRecovery) { - MockCodeModule user32_dll(0x00007ff9cb8a0000ULL, 0x14E000, "user32.dll", - "version1"); - SetModuleSymbols(&user32_dll, // user32.dll - "PUBLIC fa60 0 DispatchMessageWorker\n" - "PUBLIC fee0 0 UserCallWinProcCheckWow\n" - "PUBLIC 1cdb0 0 _fnHkINLPMSG\n" - "STACK CFI INIT fa60 340 .cfa: $rsp .ra: .cfa 8 - ^\n" - "STACK CFI fa60 .cfa: $rsp 128 +\n" - "STACK CFI INIT fee0 49f .cfa: $rsp .ra: .cfa 8 - ^\n" - "STACK CFI fee0 .cfa: $rsp 240 +\n" - "STACK CFI INIT 1cdb0 9f .cfa: $rsp .ra: .cfa 8 - ^\n" - "STACK CFI 1cdb0 .cfa: $rsp 80 +\n"); - - // Create some modules with some stock debugging information. - MockCodeModules local_modules; - local_modules.Add(&user32_dll); - - Label frame0_rsp; - Label frame0_rbp; - Label frame1_rsp; - Label frame2_rsp; - - stack_section.start() = 0x00000099abf0f238ULL; - stack_section - .Mark(&frame0_rsp) - .D64(0x00007ff9cb8b00dcULL) - .Mark(&frame1_rsp) - .D64(0x0000000000000000ULL) - .D64(0x0000000000000001ULL) - .D64(0x00000099abf0f308ULL) - .D64(0x00007ff9cb8bce3aULL) // Stack residue from execution of - // user32!_fnHkINLPMSG+0x8a - .D64(0x000000000000c2e0ULL) - .D64(0x00000099abf0f328ULL) - .D64(0x0000000100000001ULL) - .D64(0x0000000000000000ULL) - .D64(0x0000000000000000ULL) - .D64(0x0000000000000000ULL) - .D64(0x0000000000000000ULL) - .D64(0x0000000000000000ULL) - .D64(0x0000000000000000ULL) - .D64(0x00007ff9ccad53e4ULL) - .D64(0x0000000000000048ULL) - .D64(0x0000000000000001ULL) - .D64(0x00000099abf0f5e0ULL) - .D64(0x00000099b61f7388ULL) - .D64(0x0000000000000030ULL) - .D64(0xffffff66540f0a1fULL) - .D64(0xffffff6649e08c77ULL) - .D64(0x00007ff9cb8affb4ULL) // Return address in - // user32!UserCallWinProcCheckWow+0xd4 - .D64(0x0000000000000000ULL) - .D64(0x00000099abf0f368ULL) - .D64(0x0000000000000000ULL) - .D64(0x0000000000000000ULL) - .D64(0x0000000000000000ULL) - .D64(0x00000099a8150fd8ULL) - .D64(0x00000099abf0f3e8ULL) - .D64(0x00007ff9cb8afc07ULL) // Return address in - // user32!DispatchMessageWorker+0x1a7 - .Mark(&frame2_rsp) - .Append(256, 0) - .Mark(&frame0_rbp) // The following are expected by - // GetCallerByFramePointerRecovery. - .D64(0xfffffffffffffffeULL) // %caller_rbp = *(%callee_rbp) - .D64(0x0000000000000000ULL) // %caller_rip = *(%callee_rbp + 8) - .D64(0x00000099a3e31040ULL) // %caller_rsp = *(%callee_rbp + 16) - .Append(256, 0); - - RegionFromSection(); - raw_context.rip = 0x00000099a8150fd8ULL; // IP in context frame is guarbage - raw_context.rsp = frame0_rsp.Value(); - raw_context.rbp = frame0_rbp.Value(); - - StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); - StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, - &local_modules, &frame_symbolizer); - vector modules_without_symbols; - vector modules_with_corrupt_symbols; - ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols, - &modules_with_corrupt_symbols)); - ASSERT_EQ(0U, modules_without_symbols.size()); - ASSERT_EQ(0U, modules_with_corrupt_symbols.size()); - frames = call_stack.frames(); - - ASSERT_EQ(3U, frames->size()); - - { // To avoid reusing locals by mistake - StackFrameAMD64 *frame = static_cast(frames->at(0)); - EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame->trust); - ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame->context_validity); - EXPECT_EQ("", frame->function_name); - EXPECT_EQ(0x00000099a8150fd8ULL, frame->instruction); - EXPECT_EQ(0x00000099a8150fd8ULL, frame->context.rip); - EXPECT_EQ(frame0_rsp.Value(), frame->context.rsp); - EXPECT_EQ(frame0_rbp.Value(), frame->context.rbp); - } - - { // To avoid reusing locals by mistake - StackFrameAMD64 *frame = static_cast(frames->at(1)); - EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame->trust); - ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP | - StackFrameAMD64::CONTEXT_VALID_RSP | - StackFrameAMD64::CONTEXT_VALID_RBP), - frame->context_validity); - EXPECT_EQ("UserCallWinProcCheckWow", frame->function_name); - EXPECT_EQ(140710838468828ULL, frame->instruction + 1); - EXPECT_EQ(140710838468828ULL, frame->context.rip); - EXPECT_EQ(frame1_rsp.Value(), frame->context.rsp); - EXPECT_EQ(&user32_dll, frame->module); - } - - { // To avoid reusing locals by mistake - StackFrameAMD64 *frame = static_cast(frames->at(2)); - EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame->trust); - ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP | - StackFrameAMD64::CONTEXT_VALID_RSP | - StackFrameAMD64::CONTEXT_VALID_RBP), - frame->context_validity); - EXPECT_EQ("DispatchMessageWorker", frame->function_name); - EXPECT_EQ(140710838467591ULL, frame->instruction + 1); - EXPECT_EQ(140710838467591ULL, frame->context.rip); - EXPECT_EQ(frame2_rsp.Value(), frame->context.rsp); - EXPECT_EQ(&user32_dll, frame->module); - } -} - -// Don't use frame pointer recovery if %rbp is not 8-byte aligned, which -// indicates that it's not being used as a frame pointer. -TEST_F(GetCallerFrame, FramePointerNotAligned) { - stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address1 = 0x00007500b0000100ULL; - Label frame0_rbp, not_frame1_rbp, frame1_sp; - stack_section - // frame 0 - .Align(8, 0) - .Append(2, 0) // mis-align the frame pointer - .Mark(&frame0_rbp) - .D64(not_frame1_rbp) // not the previous frame pointer - .D64(0x00007500b0000a00ULL) // plausible but wrong return address - .Align(8, 0) - .D64(return_address1) // return address - // frame 1 - .Mark(&frame1_sp) - .Mark(¬_frame1_rbp) - .Append(32, 0); // end of stack - - - RegionFromSection(); - - raw_context.rip = 0x00007400c0000200ULL; - raw_context.rbp = frame0_rbp.Value(); - raw_context.rsp = stack_section.start().Value(); - - StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); - StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, - &frame_symbolizer); - vector modules_without_symbols; - vector modules_with_corrupt_symbols; - ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols, - &modules_with_corrupt_symbols)); - frames = call_stack.frames(); - ASSERT_EQ(2U, frames->size()); - - StackFrameAMD64 *frame0 = static_cast(frames->at(0)); - EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust); - ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); - EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context))); - - StackFrameAMD64 *frame1 = static_cast(frames->at(1)); - EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust); - ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP | - StackFrameAMD64::CONTEXT_VALID_RSP), - frame1->context_validity); - EXPECT_EQ(return_address1, frame1->context.rip); - EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp); -} - -// Don't use frame pointer recovery if the recovered %rip is not -// a canonical x86-64 address. -TEST_F(GetCallerFrame, NonCanonicalInstructionPointerFromFramePointer) { - stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address1 = 0x00007500b0000100ULL; - Label frame0_rbp, frame1_sp, not_frame1_bp; - stack_section - // frame 0 - .Align(8, 0) - .Mark(&frame0_rbp) - .D64(not_frame1_bp) // some junk on the stack - .D64(0xDADADADADADADADA) // not the return address - .D64(return_address1) // return address - // frame 1 - .Mark(&frame1_sp) - .Append(16, 0) - .Mark(¬_frame1_bp) - .Append(32, 0); // end of stack - - - RegionFromSection(); - - raw_context.rip = 0x00007400c0000200ULL; - raw_context.rbp = frame0_rbp.Value(); - raw_context.rsp = stack_section.start().Value(); - - StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); - StackwalkerAMD64 walker(&system_info, &raw_context, &stack_region, &modules, - &frame_symbolizer); - vector modules_without_symbols; - vector modules_with_corrupt_symbols; - ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols, - &modules_with_corrupt_symbols)); - frames = call_stack.frames(); - ASSERT_EQ(2U, frames->size()); - - StackFrameAMD64 *frame0 = static_cast(frames->at(0)); - EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust); - ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); - EXPECT_EQ(0, memcmp(&raw_context, &frame0->context, sizeof(raw_context))); - - StackFrameAMD64 *frame1 = static_cast(frames->at(1)); - EXPECT_EQ(StackFrame::FRAME_TRUST_SCAN, frame1->trust); - ASSERT_EQ((StackFrameAMD64::CONTEXT_VALID_RIP | - StackFrameAMD64::CONTEXT_VALID_RSP), - frame1->context_validity); - EXPECT_EQ(return_address1, frame1->context.rip); - EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp); + EXPECT_EQ(0x50000000b0000100ULL, frame1->function_base); } // Test that set_max_frames_scanned prevents using stack scanning @@ -610,23 +377,23 @@ TEST_F(GetCallerFrame, ScanningNotAllowed) { // only addresses located within loaded modules are // considered valid return addresses. stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address1 = 0x00007500b0000100ULL; - uint64_t return_address2 = 0x00007500b0000900ULL; + uint64_t return_address1 = 0x50000000b0000100ULL; + uint64_t return_address2 = 0x50000000b0000900ULL; Label frame1_sp, frame2_sp, frame1_rbp; stack_section // frame 0 .Append(16, 0) // space - .D64(0x00007400b0000000ULL) // junk that's not - .D64(0x00007500d0000000ULL) // a return address + .D64(0x40000000b0000000ULL) // junk that's not + .D64(0x50000000d0000000ULL) // a return address .D64(return_address1) // actual return address // frame 1 .Mark(&frame1_sp) .Append(16, 0) // space - .D64(0x00007400b0000000ULL) // more junk - .D64(0x00007500d0000000ULL) + .D64(0x40000000b0000000ULL) // more junk + .D64(0x50000000d0000000ULL) .Mark(&frame1_rbp) .D64(stack_section.start()) // This is in the right place to be @@ -640,7 +407,7 @@ TEST_F(GetCallerFrame, ScanningNotAllowed) { RegionFromSection(); - raw_context.rip = 0x00007400c0000200ULL; + raw_context.rip = 0x40000000c0000200ULL; raw_context.rbp = frame1_rbp.Value(); raw_context.rsp = stack_section.start().Value(); @@ -671,18 +438,18 @@ TEST_F(GetCallerFrame, CallerPushedRBP) { // %rbp directly below the return address, assume that it is indeed the // next frame's %rbp. stack_section.start() = 0x8000000080000000ULL; - uint64_t return_address = 0x00007500b0000110ULL; + uint64_t return_address = 0x50000000b0000110ULL; Label frame0_rbp, frame1_sp, frame1_rbp; stack_section // frame 0 .Append(16, 0) // space - .D64(0x00007400b0000000ULL) // junk that's not - .D64(0x00007500b0000000ULL) // a return address + .D64(0x40000000b0000000ULL) // junk that's not + .D64(0x50000000b0000000ULL) // a return address - .D64(0x00007400c0001000ULL) // a couple of plausible addresses - .D64(0x00007500b000aaaaULL) // that are not within functions + .D64(0x40000000c0001000ULL) // a couple of plausible addresses + .D64(0x50000000b000aaaaULL) // that are not within functions .Mark(&frame0_rbp) .D64(frame1_rbp) // caller-pushed %rbp @@ -693,7 +460,7 @@ TEST_F(GetCallerFrame, CallerPushedRBP) { .Mark(&frame1_rbp); // end of stack RegionFromSection(); - raw_context.rip = 0x00007400c0000200ULL; + raw_context.rip = 0x40000000c0000200ULL; raw_context.rbp = frame0_rbp.Value(); raw_context.rsp = stack_section.start().Value(); @@ -721,7 +488,7 @@ TEST_F(GetCallerFrame, CallerPushedRBP) { ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); EXPECT_EQ(frame0_rbp.Value(), frame0->context.rbp); EXPECT_EQ("sasquatch", frame0->function_name); - EXPECT_EQ(0x00007400c0000100ULL, frame0->function_base); + EXPECT_EQ(0x40000000c0000100ULL, frame0->function_base); StackFrameAMD64 *frame1 = static_cast(frames->at(1)); EXPECT_EQ(StackFrame::FRAME_TRUST_FP, frame1->trust); @@ -733,7 +500,7 @@ TEST_F(GetCallerFrame, CallerPushedRBP) { EXPECT_EQ(frame1_sp.Value(), frame1->context.rsp); EXPECT_EQ(frame1_rbp.Value(), frame1->context.rbp); EXPECT_EQ("yeti", frame1->function_name); - EXPECT_EQ(0x00007500b0000100ULL, frame1->function_base); + EXPECT_EQ(0x50000000b0000100ULL, frame1->function_base); } struct CFIFixture: public StackwalkerAMD64Fixture { @@ -764,7 +531,7 @@ struct CFIFixture: public StackwalkerAMD64Fixture { // Provide some distinctive values for the caller's registers. expected.rsp = 0x8000000080000000ULL; - expected.rip = 0x00007400c0005510ULL; + expected.rip = 0x40000000c0005510ULL; expected.rbp = 0x68995b1de4700266ULL; expected.rbx = 0x5a5beeb38de23be8ULL; expected.r12 = 0xed1b02e8cc0fc79cULL; @@ -801,7 +568,7 @@ struct CFIFixture: public StackwalkerAMD64Fixture { EXPECT_EQ(StackFrame::FRAME_TRUST_CONTEXT, frame0->trust); ASSERT_EQ(StackFrameAMD64::CONTEXT_VALID_ALL, frame0->context_validity); EXPECT_EQ("enchiridion", frame0->function_name); - EXPECT_EQ(0x00007400c0004000ULL, frame0->function_base); + EXPECT_EQ(0x40000000c0004000ULL, frame0->function_base); StackFrameAMD64 *frame1 = static_cast(frames->at(1)); EXPECT_EQ(StackFrame::FRAME_TRUST_CFI, frame1->trust); @@ -834,9 +601,9 @@ class CFI: public CFIFixture, public Test { }; TEST_F(CFI, At4000) { Label frame1_rsp = expected.rsp; stack_section - .D64(0x00007400c0005510ULL) // return address + .D64(0x40000000c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x00007400c0004000ULL; + raw_context.rip = 0x40000000c0004000ULL; CheckWalk(); } @@ -844,9 +611,9 @@ TEST_F(CFI, At4001) { Label frame1_rsp = expected.rsp; stack_section .D64(0x5a5beeb38de23be8ULL) // saved %rbx - .D64(0x00007400c0005510ULL) // return address + .D64(0x40000000c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x00007400c0004001ULL; + raw_context.rip = 0x40000000c0004001ULL; raw_context.rbx = 0xbe0487d2f9eafe29ULL; // callee's (distinct) %rbx value CheckWalk(); } @@ -855,9 +622,9 @@ TEST_F(CFI, At4002) { Label frame1_rsp = expected.rsp; stack_section .D64(0x5a5beeb38de23be8ULL) // saved %rbx - .D64(0x00007400c0005510ULL) // return address + .D64(0x40000000c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x00007400c0004002ULL; + raw_context.rip = 0x40000000c0004002ULL; raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0xb0118de918a4bceaULL; // callee's (distinct) %r12 value CheckWalk(); @@ -870,9 +637,9 @@ TEST_F(CFI, At4003) { .D64(0x1d20ad8acacbe930ULL) // saved %r13 .D64(0x319e68b49e3ace0fULL) // garbage .D64(0x5a5beeb38de23be8ULL) // saved %rbx - .D64(0x00007400c0005510ULL) // return address + .D64(0x40000000c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x00007400c0004003ULL; + raw_context.rip = 0x40000000c0004003ULL; raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0x89d04fa804c87a43ULL; // callee's (distinct) %r12 raw_context.r13 = 0x5118e02cbdb24b03ULL; // callee's (distinct) %r13 @@ -887,9 +654,9 @@ TEST_F(CFI, At4004) { .D64(0x1d20ad8acacbe930ULL) // saved %r13 .D64(0x319e68b49e3ace0fULL) // garbage .D64(0x5a5beeb38de23be8ULL) // saved %rbx - .D64(0x00007400c0005510ULL) // return address + .D64(0x40000000c0005510ULL) // return address .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x00007400c0004004ULL; + raw_context.rip = 0x40000000c0004004ULL; raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0x89d04fa804c87a43ULL; // callee's (distinct) %r12 raw_context.r13 = 0x5118e02cbdb24b03ULL; // callee's (distinct) %r13 @@ -905,10 +672,10 @@ TEST_F(CFI, At4005) { .D64(0x5a5beeb38de23be8ULL) // saved %rbx .D64(0xaa95fa054aedfbaeULL) // garbage .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x00007400c0004005ULL; + raw_context.rip = 0x40000000c0004005ULL; raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0x46b1b8868891b34aULL; // callee's %r12 - raw_context.r13 = 0x00007400c0005510ULL; // return address + raw_context.r13 = 0x40000000c0005510ULL; // return address CheckWalk(); } @@ -923,10 +690,10 @@ TEST_F(CFI, At4006) { .D64(0x5a5beeb38de23be8ULL) // saved %rbx .D64(0xf015ee516ad89eabULL) // garbage .Mark(&frame1_rsp); // This effectively sets stack_section.start(). - raw_context.rip = 0x00007400c0004006ULL; + raw_context.rip = 0x40000000c0004006ULL; raw_context.rbp = frame0_rbp.Value(); raw_context.rbx = 0xed1b02e8cc0fc79cULL; // saved %r12 raw_context.r12 = 0x26e007b341acfebdULL; // callee's %r12 - raw_context.r13 = 0x00007400c0005510ULL; // return address + raw_context.r13 = 0x40000000c0005510ULL; // return address CheckWalk(); } diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips.cc index db55d460c06d..7db342192323 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips.cc @@ -53,25 +53,14 @@ StackwalkerMIPS::StackwalkerMIPS(const SystemInfo* system_info, MemoryRegion* memory, const CodeModules* modules, StackFrameSymbolizer* resolver_helper) -: Stackwalker(system_info, memory, modules, resolver_helper), - context_(context) { - if (context_->context_flags & MD_CONTEXT_MIPS64 ) { - if ((memory_ && memory_->GetBase() + memory_->GetSize() - 1) - > 0xffffffffffffffff) { - BPLOG(ERROR) << "Memory out of range for stackwalking mips64: " - << HexString(memory_->GetBase()) - << "+" - << HexString(memory_->GetSize()); - memory_ = NULL; - } - } else { - if ((memory_ && memory_->GetBase() + memory_->GetSize() - 1) > 0xffffffff) { - BPLOG(ERROR) << "Memory out of range for stackwalking mips32: " - << HexString(memory_->GetBase()) - << "+" - << HexString(memory_->GetSize()); - memory_ = NULL; - } + : Stackwalker(system_info, memory, modules, resolver_helper), + context_(context) { + if (memory_ && memory_->GetBase() + memory_->GetSize() - 1 > 0xffffffff) { + BPLOG(ERROR) << "Memory out of range for stackwalking: " + << HexString(memory_->GetBase()) + << "+" + << HexString(memory_->GetSize()); + memory_ = NULL; } } @@ -107,143 +96,73 @@ StackFrameMIPS* StackwalkerMIPS::GetCallerByCFIFrameInfo( CFIFrameInfo* cfi_frame_info) { StackFrameMIPS* last_frame = static_cast(frames.back()); - if (context_->context_flags & MD_CONTEXT_MIPS) { - uint32_t sp = 0, pc = 0; + uint32_t sp = 0, pc = 0; - // Populate a dictionary with the valid register values in last_frame. - CFIFrameInfo::RegisterValueMap callee_registers; - // Use the STACK CFI data to recover the caller's register values. - CFIFrameInfo::RegisterValueMap caller_registers; + // Populate a dictionary with the valid register values in last_frame. + CFIFrameInfo::RegisterValueMap callee_registers; + // Use the STACK CFI data to recover the caller's register values. + CFIFrameInfo::RegisterValueMap caller_registers; - for (int i = 0; kRegisterNames[i]; ++i) { - caller_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; - callee_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; - } - - if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_, - &caller_registers)) { - return NULL; - } - - CFIFrameInfo::RegisterValueMap::const_iterator entry = - caller_registers.find(".cfa"); - - if (entry != caller_registers.end()) { - sp = entry->second; - caller_registers["$sp"] = entry->second; - } - - entry = caller_registers.find(".ra"); - if (entry != caller_registers.end()) { - caller_registers["$ra"] = entry->second; - pc = entry->second - 2 * sizeof(pc); - } - caller_registers["$pc"] = pc; - // Construct a new stack frame given the values the CFI recovered. - scoped_ptr frame(new StackFrameMIPS()); - - for (int i = 0; kRegisterNames[i]; ++i) { - CFIFrameInfo::RegisterValueMap::const_iterator caller_entry = - caller_registers.find(kRegisterNames[i]); - - if (caller_entry != caller_registers.end()) { - // The value of this register is recovered; fill the context with the - // value from caller_registers. - frame->context.iregs[i] = caller_entry->second; - frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); - } else if (((i >= INDEX_MIPS_REG_S0 && i <= INDEX_MIPS_REG_S7) || - (i > INDEX_MIPS_REG_GP && i < INDEX_MIPS_REG_RA)) && - (last_frame->context_validity & - StackFrameMIPS::RegisterValidFlag(i))) { - // If the STACK CFI data doesn't mention some callee-save register, and - // it is valid in the callee, assume the callee has not yet changed it. - // Calee-save registers according to the MIPS o32 ABI specification are: - // $s0 to $s7 - // $sp, $s8 - frame->context.iregs[i] = last_frame->context.iregs[i]; - frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); - } - } - - frame->context.epc = caller_registers["$pc"]; - frame->instruction = caller_registers["$pc"]; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = caller_registers["$ra"]; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; - - frame->trust = StackFrame::FRAME_TRUST_CFI; - - return frame.release(); - } else { - uint64_t sp = 0, pc = 0; - - // Populate a dictionary with the valid register values in last_frame. - CFIFrameInfo::RegisterValueMap callee_registers; - // Use the STACK CFI data to recover the caller's register values. - CFIFrameInfo::RegisterValueMap caller_registers; - - for (int i = 0; kRegisterNames[i]; ++i) { - caller_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; - callee_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; - } - - if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_, - &caller_registers)) { - return NULL; - } - - CFIFrameInfo::RegisterValueMap::const_iterator entry = - caller_registers.find(".cfa"); - - if (entry != caller_registers.end()) { - sp = entry->second; - caller_registers["$sp"] = entry->second; - } - - entry = caller_registers.find(".ra"); - if (entry != caller_registers.end()) { - caller_registers["$ra"] = entry->second; - pc = entry->second - 2 * sizeof(pc); - } - caller_registers["$pc"] = pc; - // Construct a new stack frame given the values the CFI recovered. - scoped_ptr frame(new StackFrameMIPS()); - - for (int i = 0; kRegisterNames[i]; ++i) { - CFIFrameInfo::RegisterValueMap::const_iterator caller_entry = - caller_registers.find(kRegisterNames[i]); - - if (caller_entry != caller_registers.end()) { - // The value of this register is recovered; fill the context with the - // value from caller_registers. - frame->context.iregs[i] = caller_entry->second; - frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); - } else if (((i >= INDEX_MIPS_REG_S0 && i <= INDEX_MIPS_REG_S7) || - (i >= INDEX_MIPS_REG_GP && i < INDEX_MIPS_REG_RA)) && - (last_frame->context_validity & - StackFrameMIPS::RegisterValidFlag(i))) { - // If the STACK CFI data doesn't mention some callee-save register, and - // it is valid in the callee, assume the callee has not yet changed it. - // Calee-save registers according to the MIPS o32 ABI specification are: - // $s0 to $s7 - // $sp, $s8 - frame->context.iregs[i] = last_frame->context.iregs[i]; - frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); - } - } - - frame->context.epc = caller_registers["$pc"]; - frame->instruction = caller_registers["$pc"]; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = caller_registers["$ra"]; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; - - frame->trust = StackFrame::FRAME_TRUST_CFI; - - return frame.release(); + for (int i = 0; kRegisterNames[i]; ++i) { + caller_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; + callee_registers[kRegisterNames[i]] = last_frame->context.iregs[i]; } + + if (!cfi_frame_info->FindCallerRegs(callee_registers, *memory_, + &caller_registers)) { + return NULL; + } + + CFIFrameInfo::RegisterValueMap::const_iterator entry = + caller_registers.find(".cfa"); + + if (entry != caller_registers.end()) { + sp = entry->second; + caller_registers["$sp"] = entry->second; + } + + entry = caller_registers.find(".ra"); + if (entry != caller_registers.end()) { + caller_registers["$ra"] = entry->second; + pc = entry->second - 2 * sizeof(pc); + } + caller_registers["$pc"] = pc; + // Construct a new stack frame given the values the CFI recovered. + scoped_ptr frame(new StackFrameMIPS()); + + for (int i = 0; kRegisterNames[i]; ++i) { + CFIFrameInfo::RegisterValueMap::const_iterator caller_entry = + caller_registers.find(kRegisterNames[i]); + + if (caller_entry != caller_registers.end()) { + // The value of this register is recovered; fill the context with the + // value from caller_registers. + frame->context.iregs[i] = caller_entry->second; + frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); + } else if (((i >= INDEX_MIPS_REG_S0 && i <= INDEX_MIPS_REG_S7) || + (i > INDEX_MIPS_REG_GP && i < INDEX_MIPS_REG_RA)) && + (last_frame->context_validity & + StackFrameMIPS::RegisterValidFlag(i))) { + // If the STACK CFI data doesn't mention some callee-save register, and + // it is valid in the callee, assume the callee has not yet changed it. + // Calee-save registers according to the MIPS o32 ABI specification are: + // $s0 to $s7 + // $sp, $s8 + frame->context.iregs[i] = last_frame->context.iregs[i]; + frame->context_validity |= StackFrameMIPS::RegisterValidFlag(i); + } + } + + frame->context.epc = caller_registers["$pc"]; + frame->instruction = caller_registers["$pc"]; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = caller_registers["$ra"]; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; + + frame->trust = StackFrame::FRAME_TRUST_CFI; + + return frame.release(); } StackFrame* StackwalkerMIPS::GetCallerFrame(const CallStack* stack, @@ -285,7 +204,7 @@ StackFrame* StackwalkerMIPS::GetCallerFrame(const CallStack* stack, last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]) { return NULL; } - + return new_frame.release(); } @@ -296,20 +215,19 @@ StackFrameMIPS* StackwalkerMIPS::GetCallerByStackScan( StackFrameMIPS* last_frame = static_cast(frames.back()); - if (context_->context_flags & MD_CONTEXT_MIPS) { - uint32_t last_sp = last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]; - uint32_t caller_pc, caller_sp, caller_fp; + uint32_t last_sp = last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]; + uint32_t caller_pc, caller_sp, caller_fp; - // Return address cannot be obtained directly. - // Force stackwalking. + // Return address cannot be obtained directly. + // Force stackwalking. - // We cannot use frame pointer to get the return address. - // We'll scan the stack for a - // return address. This can happen if last_frame is executing code - // for a module for which we don't have symbols. - int count = kMaxFrameStackSize / sizeof(caller_pc); + // We cannot use frame pointer to get the return address. + // We'll scan the stack for a + // return address. This can happen if last_frame is executing code + // for a module for which we don't have symbols. + int count = kMaxFrameStackSize / sizeof(caller_pc); - if (frames.size() > 1) { + if (frames.size() > 1) { // In case of mips32 ABI stack frame of a nonleaf function // must have minimum stack frame assigned for 4 arguments (4 words). // Move stack pointer for 4 words to avoid reporting non-existing frames @@ -317,131 +235,65 @@ StackFrameMIPS* StackwalkerMIPS::GetCallerByStackScan( // There is no way of knowing if topmost frame belongs to a leaf or // a nonleaf function. last_sp += kMinArgsOnStack * sizeof(caller_pc); - // Adjust 'count' so that return address is scanned only in limits + // Adjust 'count' so that return address is scanned only in limits // of one stack frame. count -= kMinArgsOnStack; - } - - do { - // Scanning for return address from stack pointer of the last frame. - if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc, count)) { - // If we can't find an instruction pointer even with stack scanning, - // give up. - BPLOG(ERROR) << " ScanForReturnAddress failed "; - return NULL; - } - // Get $fp stored in the stack frame. - if (!memory_->GetMemoryAtAddress(caller_sp - sizeof(caller_pc), - &caller_fp)) { - BPLOG(INFO) << " GetMemoryAtAddress for fp failed " ; - return NULL; - } - - count = count - (caller_sp - last_sp) / sizeof(caller_pc); - // Now scan the next address in the stack. - last_sp = caller_sp + sizeof(caller_pc); - } while ((caller_fp - caller_sp >= kMaxFrameStackSize) && count > 0); - - if (!count) { - BPLOG(INFO) << " No frame found " ; - return NULL; - } - - // ScanForReturnAddress found a reasonable return address. Advance - // $sp to the location above the one where the return address was - // found. - caller_sp += sizeof(caller_pc); - // caller_pc is actually containing $ra value; - // $pc is two instructions before $ra, - // so the caller_pc needs to be decremented accordingly. - caller_pc -= 2 * sizeof(caller_pc); - - // Create a new stack frame (ownership will be transferred to the caller) - // and fill it in. - StackFrameMIPS* frame = new StackFrameMIPS(); - frame->trust = StackFrame::FRAME_TRUST_SCAN; - frame->context = last_frame->context; - frame->context.epc = caller_pc; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; - frame->instruction = caller_pc; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_SP] = caller_sp; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_SP; - frame->context.iregs[MD_CONTEXT_MIPS_REG_FP] = caller_fp; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_FP; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = - caller_pc + 2 * sizeof(caller_pc); - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; - - return frame; - } else { - uint64_t last_sp = last_frame->context.iregs[MD_CONTEXT_MIPS_REG_SP]; - uint64_t caller_pc, caller_sp, caller_fp; - - // Return address cannot be obtained directly. - // Force stackwalking. - - // We cannot use frame pointer to get the return address. - // We'll scan the stack for a - // return address. This can happen if last_frame is executing code - // for a module for which we don't have symbols. - int count = kMaxFrameStackSize / sizeof(caller_pc); - - do { - // Scanning for return address from stack pointer of the last frame. - if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc, count)) { - // If we can't find an instruction pointer even with stack scanning, - // give up. - BPLOG(ERROR) << " ScanForReturnAddress failed "; - return NULL; - } - // Get $fp stored in the stack frame. - if (!memory_->GetMemoryAtAddress(caller_sp - sizeof(caller_pc), - &caller_fp)) { - BPLOG(INFO) << " GetMemoryAtAddress for fp failed " ; - return NULL; - } - - count = count - (caller_sp - last_sp) / sizeof(caller_pc); - // Now scan the next address in the stack. - last_sp = caller_sp + sizeof(caller_pc); - } while ((caller_fp - caller_sp >= kMaxFrameStackSize) && count > 0); - - if (!count) { - BPLOG(INFO) << " No frame found " ; - return NULL; - } - - // ScanForReturnAddress found a reasonable return address. Advance - // $sp to the location above the one where the return address was - // found. - caller_sp += sizeof(caller_pc); - // caller_pc is actually containing $ra value; - // $pc is two instructions before $ra, - // so the caller_pc needs to be decremented accordingly. - caller_pc -= 2 * sizeof(caller_pc); - - // Create a new stack frame (ownership will be transferred to the caller) - // and fill it in. - StackFrameMIPS* frame = new StackFrameMIPS(); - frame->trust = StackFrame::FRAME_TRUST_SCAN; - frame->context = last_frame->context; - frame->context.epc = caller_pc; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; - frame->instruction = caller_pc; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_SP] = caller_sp; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_SP; - frame->context.iregs[MD_CONTEXT_MIPS_REG_FP] = caller_fp; - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_FP; - - frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = - caller_pc + 2 * sizeof(caller_pc); - frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; - - return frame; } + + do { + // Scanning for return address from stack pointer of the last frame. + if (!ScanForReturnAddress(last_sp, &caller_sp, &caller_pc, count)) { + // If we can't find an instruction pointer even with stack scanning, + // give up. + BPLOG(ERROR) << " ScanForReturnAddress failed "; + return NULL; + } + // Get $fp stored in the stack frame. + if (!memory_->GetMemoryAtAddress(caller_sp - sizeof(caller_pc), + &caller_fp)) { + BPLOG(INFO) << " GetMemoryAtAddress for fp failed " ; + return NULL; + } + + count = count - (caller_sp - last_sp) / sizeof(caller_pc); + // Now scan the next address in the stack. + last_sp = caller_sp + sizeof(caller_pc); + } while ((caller_fp - caller_sp >= kMaxFrameStackSize) && count > 0); + + if (!count) { + BPLOG(INFO) << " No frame found " ; + return NULL; + } + + // ScanForReturnAddress found a reasonable return address. Advance + // $sp to the location above the one where the return address was + // found. + caller_sp += sizeof(caller_pc); + // caller_pc is actually containing $ra value; + // $pc is two instructions before $ra, + // so the caller_pc needs to be decremented accordingly. + caller_pc -= 2 * sizeof(caller_pc); + + + // Create a new stack frame (ownership will be transferred to the caller) + // and fill it in. + StackFrameMIPS* frame = new StackFrameMIPS(); + frame->trust = StackFrame::FRAME_TRUST_SCAN; + frame->context = last_frame->context; + frame->context.epc = caller_pc; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_PC; + frame->instruction = caller_pc; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_SP] = caller_sp; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_SP; + frame->context.iregs[MD_CONTEXT_MIPS_REG_FP] = caller_fp; + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_FP; + + frame->context.iregs[MD_CONTEXT_MIPS_REG_RA] = + caller_pc + 2 * sizeof(caller_pc); + frame->context_validity |= StackFrameMIPS::CONTEXT_VALID_RA; + + return frame; } } // namespace google_breakpad diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips_unittest.cc index 5398c2b330f6..ed4be4f5b161 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_mips_unittest.cc @@ -145,7 +145,6 @@ class StackwalkerMIPSFixture { class SanityCheck: public StackwalkerMIPSFixture, public Test { }; TEST_F(SanityCheck, NoResolver) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; stack_section.start() = 0x80000000; stack_section.D32(0).D32(0x0); RegionFromSection(); @@ -174,7 +173,6 @@ TEST_F(SanityCheck, NoResolver) { class GetContextFrame: public StackwalkerMIPSFixture, public Test { }; TEST_F(GetContextFrame, Simple) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; stack_section.start() = 0x80000000; stack_section.D32(0).D32(0x0); RegionFromSection(); @@ -201,7 +199,6 @@ TEST_F(GetContextFrame, Simple) { // The stackwalker should be able to produce the context frame even // without stack memory present. TEST_F(GetContextFrame, NoStackMemory) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; raw_context.epc = 0x00400020; raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000; @@ -225,7 +222,6 @@ TEST_F(GetContextFrame, NoStackMemory) { class GetCallerFrame: public StackwalkerMIPSFixture, public Test { }; TEST_F(GetCallerFrame, ScanWithoutSymbols) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; // When the stack walker resorts to scanning the stack, // only addresses located within loaded modules are // considered valid return addresses. @@ -302,7 +298,6 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) { } TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; // During stack scanning, if a potential return address // is located within a loaded module that has symbols, // it is only considered a valid return address if it @@ -371,7 +366,6 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { } TEST_F(GetCallerFrame, CheckStackFrameSizeLimit) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; // If the stackwalker resorts to stack scanning, it will scan only // 1024 bytes of stack which correspondes to maximum size of stack frame. stack_section.start() = 0x80000000; @@ -443,7 +437,6 @@ TEST_F(GetCallerFrame, CheckStackFrameSizeLimit) { // Test that set_max_frames_scanned prevents using stack scanning // to find caller frames. TEST_F(GetCallerFrame, ScanningNotAllowed) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; // When the stack walker resorts to scanning the stack, // only fixed number of frames are allowed to be scanned out from stack stack_section.start() = 0x80000000; @@ -653,7 +646,6 @@ class CFI: public CFIFixture, public Test { }; // TODO(gordanac): add CFI tests TEST_F(CFI, At4004) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; Label frame1_sp = expected.iregs[MD_CONTEXT_MIPS_REG_SP]; stack_section // frame0 @@ -668,7 +660,6 @@ TEST_F(CFI, At4004) { // Check that we reject rules that would cause the stack pointer to // move in the wrong direction. TEST_F(CFI, RejectBackwards) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; raw_context.epc = 0x40005000; raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000; raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = 0x00405510; @@ -688,7 +679,6 @@ TEST_F(CFI, RejectBackwards) { // Check that we reject rules whose expressions' evaluation fails. TEST_F(CFI, RejectBadExpressions) { - raw_context.context_flags = raw_context.context_flags | MD_CONTEXT_MIPS_FULL; raw_context.epc = 0x00407000; raw_context.iregs[MD_CONTEXT_MIPS_REG_SP] = 0x80000000; raw_context.iregs[MD_CONTEXT_MIPS_REG_RA] = 0x00405510; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_unittest_utils.h b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_unittest_utils.h index ee22a8fe1c1d..73ceb199fe8a 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_unittest_utils.h +++ b/toolkit/crashreporter/google-breakpad/src/processor/stackwalker_unittest_utils.h @@ -48,7 +48,6 @@ #include "google_breakpad/processor/memory_region.h" #include "google_breakpad/processor/symbol_supplier.h" #include "google_breakpad/processor/system_info.h" -#include "processor/linked_ptr.h" class MockMemoryRegion: public google_breakpad::MemoryRegion { public: @@ -115,11 +114,9 @@ class MockCodeModule: public google_breakpad::CodeModule { string debug_file() const { return code_file_; } string debug_identifier() const { return code_file_; } string version() const { return version_; } - google_breakpad::CodeModule *Copy() const { + const google_breakpad::CodeModule *Copy() const { abort(); // Tests won't use this. } - virtual uint64_t shrink_down_delta() const { return 0; } - virtual void SetShrinkDownDelta(uint64_t shrink_down_delta) {} private: uint64_t base_address_; @@ -129,11 +126,11 @@ class MockCodeModule: public google_breakpad::CodeModule { }; class MockCodeModules: public google_breakpad::CodeModules { - public: + public: typedef google_breakpad::CodeModule CodeModule; typedef google_breakpad::CodeModules CodeModules; - void Add(const MockCodeModule *module) { + void Add(const MockCodeModule *module) { modules_.push_back(module); } @@ -160,19 +157,9 @@ class MockCodeModules: public google_breakpad::CodeModules { return modules_.at(index); } - CodeModules *Copy() const { abort(); } // Tests won't use this + const CodeModules *Copy() const { abort(); } // Tests won't use this. - virtual std::vector > - GetShrunkRangeModules() const { - return std::vector >(); - } - - // Returns true, if module address range shrink is enabled. - bool IsModuleShrinkEnabled() const { - return false; - } - - private: + private: typedef std::vector ModuleVector; ModuleVector modules_; }; diff --git a/toolkit/crashreporter/google-breakpad/src/processor/static_map_unittest.cc b/toolkit/crashreporter/google-breakpad/src/processor/static_map_unittest.cc index 393d43d5c530..97b1e61a9373 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/static_map_unittest.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/static_map_unittest.cc @@ -180,7 +180,7 @@ class TestValidMap : public ::testing::Test { void TearDown() { for (int i = 0;i < kNumberTestCases; ++i) - ::operator delete(map_data[i]); + delete map_data[i]; } diff --git a/toolkit/crashreporter/google-breakpad/src/processor/symbolic_constants_win.cc b/toolkit/crashreporter/google-breakpad/src/processor/symbolic_constants_win.cc index a6ee26a2601d..333aa04174da 100644 --- a/toolkit/crashreporter/google-breakpad/src/processor/symbolic_constants_win.cc +++ b/toolkit/crashreporter/google-breakpad/src/processor/symbolic_constants_win.cc @@ -33,18 +33,17 @@ // // Author: Ben Wagner +#include #include -#include "common/stdio_wrapper.h" -#include "common/using_std_string.h" #include "google_breakpad/common/breakpad_types.h" #include "google_breakpad/common/minidump_exception_win32.h" #include "processor/symbolic_constants_win.h" namespace google_breakpad { -string NTStatusToString(uint32_t ntstatus) { - string reason; +std::string NTStatusToString(uint32_t ntstatus) { + std::string reason; // The content of this switch was created from ntstatus.h in the 8.1 SDK with // // egrep '#define [A-Z_0-9]+\s+\(\(NTSTATUS\)0xC[0-9A-F]+L\)' ntstatus.h @@ -6407,7 +6406,7 @@ string NTStatusToString(uint32_t ntstatus) { break; default: { char reason_string[11]; - snprintf(reason_string, sizeof(reason_string), "0x%08x", ntstatus); + std::snprintf(reason_string, sizeof(reason_string), "0x%08x", ntstatus); reason = reason_string; break; } diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdis.h b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdis.h index 83a88612a3cc..94103396f65a 100644 --- a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdis.h +++ b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdis.h @@ -1,6 +1,10 @@ #ifndef LIBDISASM_H #define LIBDISASM_H +#ifdef WIN32 +#include +#endif + #include /* 'NEW" types diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdisasm.gyp b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdisasm.gyp index 5c8dc458677e..c48ac824f25b 100644 --- a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdisasm.gyp +++ b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/libdisasm.gyp @@ -27,9 +27,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. { - 'includes': [ - '../../build/common.gypi', - ], 'targets': [ { 'target_name': 'libdisasm', diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/x86_disasm.c b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/x86_disasm.c index 1b82f4e66712..51a213a46e33 100644 --- a/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/x86_disasm.c +++ b/toolkit/crashreporter/google-breakpad/src/third_party/libdisasm/x86_disasm.c @@ -35,7 +35,7 @@ unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len, if ( offset >= buf_len ) { /* another caller screwup ;) */ - x86_report_error(report_disasm_bounds, (void*)(long)(buf_rva+offset)); + x86_report_error(report_disasm_bounds, (void*)(long)buf_rva+offset); return 0; } @@ -53,13 +53,13 @@ unsigned int x86_disasm( unsigned char *buf, unsigned int buf_len, /* check and see if we had an invalid instruction */ if (! size ) { - x86_report_error(report_invalid_insn, (void*)(long)(buf_rva+offset)); + x86_report_error(report_invalid_insn, (void*)(long)buf_rva+offset ); return 0; } /* check if we overran the end of the buffer */ if ( size > len ) { - x86_report_error( report_insn_bounds, (void*)(long)(buf_rva + offset)); + x86_report_error( report_insn_bounds, (void*)(long)buf_rva + offset ); MAKE_INVALID( insn, bytes ); return 0; } diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h index 162a27e7777b..93fdad751b4c 100644 --- a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h +++ b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h @@ -82,13 +82,12 @@ #ifndef SYS_LINUX_SYSCALL_SUPPORT_H #define SYS_LINUX_SYSCALL_SUPPORT_H -/* We currently only support x86-32, x86-64, ARM, MIPS, PPC, s390 and s390x - * on Linux. +/* We currently only support x86-32, x86-64, ARM, MIPS, and PPC on Linux. * Porting to other related platforms should not be difficult. */ #if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) || \ defined(__mips__) || defined(__PPC__) || defined(__ARM_EABI__) || \ - defined(__aarch64__) || defined(__s390__)) \ + defined(__aarch64__)) \ && (defined(__linux) || defined(__ANDROID__)) #ifndef SYS_CPLUSPLUS @@ -257,7 +256,7 @@ struct kernel_rusage { }; #if defined(__i386__) || defined(__ARM_EABI__) || defined(__ARM_ARCH_3__) \ - || defined(__PPC__) || (defined(__s390__) && !defined(__s390x__)) + || defined(__PPC__) /* include/asm-{arm,i386,mips,ppc}/signal.h */ struct kernel_old_sigaction { @@ -322,7 +321,7 @@ struct kernel_sockaddr { char sa_data[14]; }; -/* include/asm-{arm,aarch64,i386,mips,ppc,s390}/stat.h */ +/* include/asm-{arm,aarch64,i386,mips,ppc}/stat.h */ #ifdef __mips__ #if _MIPS_SIM == _MIPS_SIM_ABI64 struct kernel_stat { @@ -395,7 +394,7 @@ struct kernel_stat64 { }; #endif -/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc,s390}/stat.h */ +/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc}/stat.h */ #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) struct kernel_stat { /* The kernel headers suggest that st_dev and st_rdev should be 32bit @@ -512,53 +511,9 @@ struct kernel_stat { unsigned int __unused4; unsigned int __unused5; }; -#elif defined(__s390x__) -struct kernel_stat { - unsigned long st_dev; - unsigned long st_ino; - unsigned long st_nlink; - unsigned int st_mode; - unsigned int st_uid; - unsigned int st_gid; - unsigned int __pad1; - unsigned long st_rdev; - unsigned long st_size; - unsigned long st_atime_; - unsigned long st_atime_nsec_; - unsigned long st_mtime_; - unsigned long st_mtime_nsec_; - unsigned long st_ctime_; - unsigned long st_ctime_nsec_; - unsigned long st_blksize; - long st_blocks; - unsigned long __unused[3]; -}; -#elif defined(__s390__) -struct kernel_stat { - unsigned short st_dev; - unsigned short __pad1; - unsigned long st_ino; - unsigned short st_mode; - unsigned short st_nlink; - unsigned short st_uid; - unsigned short st_gid; - unsigned short st_rdev; - unsigned short __pad2; - unsigned long st_size; - unsigned long st_blksize; - unsigned long st_blocks; - unsigned long st_atime_; - unsigned long st_atime_nsec_; - unsigned long st_mtime_; - unsigned long st_mtime_nsec_; - unsigned long st_ctime_; - unsigned long st_ctime_nsec_; - unsigned long __unused4; - unsigned long __unused5; -}; #endif -/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc,s390}/statfs.h */ +/* include/asm-{arm,aarch64,i386,mips,x86_64,ppc}/statfs.h */ #ifdef __mips__ #if _MIPS_SIM != _MIPS_SIM_ABI64 struct kernel_statfs64 { @@ -576,22 +531,6 @@ struct kernel_statfs64 { unsigned long f_spare[6]; }; #endif -#elif defined(__s390__) -/* See also arch/s390/include/asm/compat.h */ -struct kernel_statfs64 { - unsigned int f_type; - unsigned int f_bsize; - unsigned long long f_blocks; - unsigned long long f_bfree; - unsigned long long f_bavail; - unsigned long long f_files; - unsigned long long f_ffree; - struct { int val[2]; } f_fsid; - unsigned int f_namelen; - unsigned int f_frsize; - unsigned int f_flags; - unsigned int f_spare[4]; -}; #elif !defined(__x86_64__) struct kernel_statfs64 { unsigned long f_type; @@ -608,7 +547,7 @@ struct kernel_statfs64 { }; #endif -/* include/asm-{arm,i386,mips,x86_64,ppc,generic,s390}/statfs.h */ +/* include/asm-{arm,i386,mips,x86_64,ppc,generic}/statfs.h */ #ifdef __mips__ struct kernel_statfs { long f_type; @@ -640,21 +579,6 @@ struct kernel_statfs { uint64_t f_frsize; uint64_t f_spare[5]; }; -#elif defined(__s390__) -struct kernel_statfs { - unsigned int f_type; - unsigned int f_bsize; - unsigned long f_blocks; - unsigned long f_bfree; - unsigned long f_bavail; - unsigned long f_files; - unsigned long f_ffree; - struct { int val[2]; } f_fsid; - unsigned int f_namelen; - unsigned int f_frsize; - unsigned int f_flags; - unsigned int f_spare[4]; -}; #else struct kernel_statfs { unsigned long f_type; @@ -1027,7 +951,7 @@ struct kernel_statfs { #ifndef __NR_getcpu #define __NR_getcpu (__NR_SYSCALL_BASE + 345) #endif -/* End of ARM 3/EABI definitions */ +/* End of ARM 3/EABI definitions */ #elif defined(__aarch64__) #ifndef __NR_setxattr #define __NR_setxattr 5 @@ -1580,189 +1504,6 @@ struct kernel_statfs { #define __NR_getcpu 302 #endif /* End of powerpc defininitions */ -#elif defined(__s390__) -#ifndef __NR_quotactl -#define __NR_quotactl 131 -#endif -#ifndef __NR_rt_sigreturn -#define __NR_rt_sigreturn 173 -#endif -#ifndef __NR_rt_sigaction -#define __NR_rt_sigaction 174 -#endif -#ifndef __NR_rt_sigprocmask -#define __NR_rt_sigprocmask 175 -#endif -#ifndef __NR_rt_sigpending -#define __NR_rt_sigpending 176 -#endif -#ifndef __NR_rt_sigsuspend -#define __NR_rt_sigsuspend 179 -#endif -#ifndef __NR_pread64 -#define __NR_pread64 180 -#endif -#ifndef __NR_pwrite64 -#define __NR_pwrite64 181 -#endif -#ifndef __NR_getdents64 -#define __NR_getdents64 220 -#endif -#ifndef __NR_readahead -#define __NR_readahead 222 -#endif -#ifndef __NR_setxattr -#define __NR_setxattr 224 -#endif -#ifndef __NR_lsetxattr -#define __NR_lsetxattr 225 -#endif -#ifndef __NR_getxattr -#define __NR_getxattr 227 -#endif -#ifndef __NR_lgetxattr -#define __NR_lgetxattr 228 -#endif -#ifndef __NR_listxattr -#define __NR_listxattr 230 -#endif -#ifndef __NR_llistxattr -#define __NR_llistxattr 231 -#endif -#ifndef __NR_gettid -#define __NR_gettid 236 -#endif -#ifndef __NR_tkill -#define __NR_tkill 237 -#endif -#ifndef __NR_futex -#define __NR_futex 238 -#endif -#ifndef __NR_sched_setaffinity -#define __NR_sched_setaffinity 239 -#endif -#ifndef __NR_sched_getaffinity -#define __NR_sched_getaffinity 240 -#endif -#ifndef __NR_set_tid_address -#define __NR_set_tid_address 252 -#endif -#ifndef __NR_clock_gettime -#define __NR_clock_gettime 260 -#endif -#ifndef __NR_clock_getres -#define __NR_clock_getres 261 -#endif -#ifndef __NR_statfs64 -#define __NR_statfs64 265 -#endif -#ifndef __NR_fstatfs64 -#define __NR_fstatfs64 266 -#endif -#ifndef __NR_ioprio_set -#define __NR_ioprio_set 282 -#endif -#ifndef __NR_ioprio_get -#define __NR_ioprio_get 283 -#endif -#ifndef __NR_openat -#define __NR_openat 288 -#endif -#ifndef __NR_unlinkat -#define __NR_unlinkat 294 -#endif -#ifndef __NR_move_pages -#define __NR_move_pages 310 -#endif -#ifndef __NR_getcpu -#define __NR_getcpu 311 -#endif -#ifndef __NR_fallocate -#define __NR_fallocate 314 -#endif -/* Some syscalls are named/numbered differently between s390 and s390x. */ -#ifdef __s390x__ -# ifndef __NR_getrlimit -# define __NR_getrlimit 191 -# endif -# ifndef __NR_setresuid -# define __NR_setresuid 208 -# endif -# ifndef __NR_getresuid -# define __NR_getresuid 209 -# endif -# ifndef __NR_setresgid -# define __NR_setresgid 210 -# endif -# ifndef __NR_getresgid -# define __NR_getresgid 211 -# endif -# ifndef __NR_setfsuid -# define __NR_setfsuid 215 -# endif -# ifndef __NR_setfsgid -# define __NR_setfsgid 216 -# endif -# ifndef __NR_fadvise64 -# define __NR_fadvise64 253 -# endif -# ifndef __NR_newfstatat -# define __NR_newfstatat 293 -# endif -#else /* __s390x__ */ -# ifndef __NR_getrlimit -# define __NR_getrlimit 76 -# endif -# ifndef __NR_setfsuid -# define __NR_setfsuid 138 -# endif -# ifndef __NR_setfsgid -# define __NR_setfsgid 139 -# endif -# ifndef __NR_setresuid -# define __NR_setresuid 164 -# endif -# ifndef __NR_getresuid -# define __NR_getresuid 165 -# endif -# ifndef __NR_setresgid -# define __NR_setresgid 170 -# endif -# ifndef __NR_getresgid -# define __NR_getresgid 171 -# endif -# ifndef __NR_ugetrlimit -# define __NR_ugetrlimit 191 -# endif -# ifndef __NR_mmap2 -# define __NR_mmap2 192 -# endif -# ifndef __NR_setresuid32 -# define __NR_setresuid32 208 -# endif -# ifndef __NR_getresuid32 -# define __NR_getresuid32 209 -# endif -# ifndef __NR_setresgid32 -# define __NR_setresgid32 210 -# endif -# ifndef __NR_getresgid32 -# define __NR_getresgid32 211 -# endif -# ifndef __NR_setfsuid32 -# define __NR_setfsuid32 215 -# endif -# ifndef __NR_setfsgid32 -# define __NR_setfsgid32 216 -# endif -# ifndef __NR_fadvise64_64 -# define __NR_fadvise64_64 264 -# endif -# ifndef __NR_fstatat64 -# define __NR_fstatat64 293 -# endif -#endif /* __s390__ */ -/* End of s390/s390x definitions */ #endif @@ -1826,7 +1567,7 @@ struct kernel_statfs { #undef LSS_RETURN #if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) \ - || defined(__ARM_EABI__) || defined(__aarch64__) || defined(__s390__)) + || defined(__ARM_EABI__) || defined(__aarch64__)) /* Failing system calls return a negative result in the range of * -1..-4095. These are "errno" values with the sign inverted. */ @@ -2095,6 +1836,32 @@ struct kernel_statfs { LSS_RETURN(int, __res); } + #define __NR__fadvise64_64 __NR_fadvise64_64 + LSS_INLINE _syscall6(int, _fadvise64_64, int, fd, + unsigned, offset_lo, unsigned, offset_hi, + unsigned, len_lo, unsigned, len_hi, + int, advice) + + LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, + loff_t len, int advice) { + return LSS_NAME(_fadvise64_64)(fd, + (unsigned)offset, (unsigned)(offset >>32), + (unsigned)len, (unsigned)(len >> 32), + advice); + } + + #define __NR__fallocate __NR_fallocate + LSS_INLINE _syscall6(int, _fallocate, int, fd, + int, mode, + unsigned, offset_lo, unsigned, offset_hi, + unsigned, len_lo, unsigned, len_hi) + + LSS_INLINE int LSS_NAME(fallocate)(int fd, int mode, + loff_t offset, loff_t len) { + union { loff_t off; unsigned w[2]; } o = { offset }, l = { len }; + return LSS_NAME(_fallocate)(fd, mode, o.w[0], o.w[1], l.w[0], l.w[1]); + } + LSS_INLINE _syscall1(int, set_thread_area, void *, u) LSS_INLINE _syscall1(int, get_thread_area, void *, u) @@ -2382,6 +2149,13 @@ struct kernel_statfs { } LSS_INLINE _syscall2(int, arch_prctl, int, c, void *, a) + /* Need to make sure loff_t isn't truncated to 32-bits under x32. */ + LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, loff_t len, + int advice) { + LSS_BODY(4, int, fadvise64, LSS_SYSCALL_ARG(fd), (uint64_t)(offset), + (uint64_t)(len), LSS_SYSCALL_ARG(advice)); + } + LSS_INLINE void (*LSS_NAME(restore_rt)(void))(void) { /* On x86-64, the kernel does not know how to return from * a signal handler. Instead, it relies on user space to provide a @@ -3192,138 +2966,6 @@ struct kernel_statfs { } LSS_RETURN(int, __ret, __err); } - #elif defined(__s390__) - #undef LSS_REG - #define LSS_REG(r, a) register unsigned long __r##r __asm__("r"#r) = (unsigned long) a - #undef LSS_BODY - #define LSS_BODY(type, name, args...) \ - register unsigned long __nr __asm__("r1") \ - = (unsigned long)(__NR_##name); \ - register long __res_r2 __asm__("r2"); \ - long __res; \ - __asm__ __volatile__ \ - ("svc 0\n\t" \ - : "=d"(__res_r2) \ - : "d"(__nr), ## args \ - : "memory"); \ - __res = __res_r2; \ - LSS_RETURN(type, __res) - #undef _syscall0 - #define _syscall0(type, name) \ - type LSS_NAME(name)(void) { \ - LSS_BODY(type, name); \ - } - #undef _syscall1 - #define _syscall1(type, name, type1, arg1) \ - type LSS_NAME(name)(type1 arg1) { \ - LSS_REG(2, arg1); \ - LSS_BODY(type, name, "0"(__r2)); \ - } - #undef _syscall2 - #define _syscall2(type, name, type1, arg1, type2, arg2) \ - type LSS_NAME(name)(type1 arg1, type2 arg2) { \ - LSS_REG(2, arg1); LSS_REG(3, arg2); \ - LSS_BODY(type, name, "0"(__r2), "d"(__r3)); \ - } - #undef _syscall3 - #define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ - type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3) { \ - LSS_REG(2, arg1); LSS_REG(3, arg2); LSS_REG(4, arg3); \ - LSS_BODY(type, name, "0"(__r2), "d"(__r3), "d"(__r4)); \ - } - #undef _syscall4 - #define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, \ - type4, arg4) \ - type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, \ - type4 arg4) { \ - LSS_REG(2, arg1); LSS_REG(3, arg2); LSS_REG(4, arg3); \ - LSS_REG(5, arg4); \ - LSS_BODY(type, name, "0"(__r2), "d"(__r3), "d"(__r4), \ - "d"(__r5)); \ - } - #undef _syscall5 - #define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, \ - type4, arg4, type5, arg5) \ - type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, \ - type4 arg4, type5 arg5) { \ - LSS_REG(2, arg1); LSS_REG(3, arg2); LSS_REG(4, arg3); \ - LSS_REG(5, arg4); LSS_REG(6, arg5); \ - LSS_BODY(type, name, "0"(__r2), "d"(__r3), "d"(__r4), \ - "d"(__r5), "d"(__r6)); \ - } - #undef _syscall6 - #define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3, \ - type4, arg4, type5, arg5, type6, arg6) \ - type LSS_NAME(name)(type1 arg1, type2 arg2, type3 arg3, \ - type4 arg4, type5 arg5, type6 arg6) { \ - LSS_REG(2, arg1); LSS_REG(3, arg2); LSS_REG(4, arg3); \ - LSS_REG(5, arg4); LSS_REG(6, arg5); LSS_REG(7, arg6); \ - LSS_BODY(type, name, "0"(__r2), "d"(__r3), "d"(__r4), \ - "d"(__r5), "d"(__r6), "d"(__r7)); \ - } - LSS_INLINE int LSS_NAME(clone)(int (*fn)(void *), void *child_stack, - int flags, void *arg, int *parent_tidptr, - void *newtls, int *child_tidptr) { - long __ret; - { - register int (*__fn)(void *) __asm__ ("r1") = fn; - register void *__cstack __asm__ ("r2") = child_stack; - register int __flags __asm__ ("r3") = flags; - register void *__arg __asm__ ("r0") = arg; - register int *__ptidptr __asm__ ("r4") = parent_tidptr; - register void *__newtls __asm__ ("r6") = newtls; - register int *__ctidptr __asm__ ("r5") = child_tidptr; - __asm__ __volatile__ ( - #ifndef __s390x__ - /* arg already in r0 */ - "ltr %4, %4\n\t" /* check fn, which is already in r1 */ - "jz 1f\n\t" /* NULL function pointer, return -EINVAL */ - "ltr %5, %5\n\t" /* check child_stack, which is already in r2 */ - "jz 1f\n\t" /* NULL stack pointer, return -EINVAL */ - /* flags already in r3 */ - /* parent_tidptr already in r4 */ - /* child_tidptr already in r5 */ - /* newtls already in r6 */ - "svc %2\n\t" /* invoke clone syscall */ - "ltr %0,%%r2\n\t" /* load return code into __ret and test */ - "jnz 1f\n\t" /* return to parent if non-zero */ - /* start child thread */ - "lr %%r2, %7\n\t" /* set first parameter to void *arg */ - "ahi %%r15, -96\n\t" /* make room on the stack for the save area */ - "xc 0(4,%%r15), 0(%%r15)\n\t" - "basr %%r14, %4\n\t" /* jump to fn */ - "svc %3\n" /* invoke exit syscall */ - "1:\n" - #else - /* arg already in r0 */ - "ltgr %4, %4\n\t" /* check fn, which is already in r1 */ - "jz 1f\n\t" /* NULL function pointer, return -EINVAL */ - "ltgr %5, %5\n\t" /* check child_stack, which is already in r2 */ - "jz 1f\n\t" /* NULL stack pointer, return -EINVAL */ - /* flags already in r3 */ - /* parent_tidptr already in r4 */ - /* child_tidptr already in r5 */ - /* newtls already in r6 */ - "svc %2\n\t" /* invoke clone syscall */ - "ltgr %0, %%r2\n\t" /* load return code into __ret and test */ - "jnz 1f\n\t" /* return to parent if non-zero */ - /* start child thread */ - "lgr %%r2, %7\n\t" /* set first parameter to void *arg */ - "aghi %%r15, -160\n\t" /* make room on the stack for the save area */ - "xc 0(8,%%r15), 0(%%r15)\n\t" - "basr %%r14, %4\n\t" /* jump to fn */ - "svc %3\n" /* invoke exit syscall */ - "1:\n" - #endif - : "=r" (__ret) - : "0" (-EINVAL), "i" (__NR_clone), "i" (__NR_exit), - "d" (__fn), "d" (__cstack), "d" (__flags), "d" (__arg), - "d" (__ptidptr), "d" (__newtls), "d" (__ctidptr) - : "cc", "r14", "memory" - ); - } - LSS_RETURN(int, __ret); - } #endif #define __NR__exit __NR_exit #define __NR__gettid __NR_gettid @@ -3538,77 +3180,14 @@ struct kernel_statfs { LSS_INLINE _syscall4(int, socketpair, int, d, int, t, int, p, int*, s) #endif - #if defined(__NR_fadvise64) - #if defined(__x86_64__) - /* Need to make sure loff_t isn't truncated to 32-bits under x32. */ - LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, loff_t len, - int advice) { - LSS_BODY(4, int, fadvise64, LSS_SYSCALL_ARG(fd), (uint64_t)(offset), - (uint64_t)(len), LSS_SYSCALL_ARG(advice)); - } - #else - LSS_INLINE _syscall4(int, fadvise64, - int, fd, loff_t, offset, loff_t, len, int, advice) - #endif - #elif defined(__i386__) - #define __NR__fadvise64_64 __NR_fadvise64_64 - LSS_INLINE _syscall6(int, _fadvise64_64, int, fd, - unsigned, offset_lo, unsigned, offset_hi, - unsigned, len_lo, unsigned, len_hi, - int, advice) - - LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, - loff_t len, int advice) { - return LSS_NAME(_fadvise64_64)(fd, - (unsigned)offset, (unsigned)(offset >>32), - (unsigned)len, (unsigned)(len >> 32), - advice); - } - - #elif defined(__s390__) && !defined(__s390x__) - #define __NR__fadvise64_64 __NR_fadvise64_64 - struct kernel_fadvise64_64_args { - int fd; - long long offset; - long long len; - int advice; - }; - - LSS_INLINE _syscall1(int, _fadvise64_64, - struct kernel_fadvise64_64_args *args) - - LSS_INLINE int LSS_NAME(fadvise64)(int fd, loff_t offset, - loff_t len, int advice) { - struct kernel_fadvise64_64_args args = { fd, offset, len, advice }; - return LSS_NAME(_fadvise64_64)(&args); - } - #endif - #if defined(__NR_fallocate) - #if defined(__x86_64__) + #if defined(__x86_64__) /* Need to make sure loff_t isn't truncated to 32-bits under x32. */ LSS_INLINE int LSS_NAME(fallocate)(int f, int mode, loff_t offset, loff_t len) { LSS_BODY(4, int, fallocate, LSS_SYSCALL_ARG(f), LSS_SYSCALL_ARG(mode), (uint64_t)(offset), (uint64_t)(len)); } - #elif defined(__i386__) || (defined(__s390__) && !defined(__s390x__)) - #define __NR__fallocate __NR_fallocate - LSS_INLINE _syscall6(int, _fallocate, int, fd, - int, mode, - unsigned, offset_lo, unsigned, offset_hi, - unsigned, len_lo, unsigned, len_hi) - LSS_INLINE int LSS_NAME(fallocate)(int fd, int mode, - loff_t offset, loff_t len) { - union { loff_t off; unsigned w[2]; } o = { offset }, l = { len }; - return LSS_NAME(_fallocate)(fd, mode, o.w[0], o.w[1], l.w[0], l.w[1]); - } - #else - LSS_INLINE _syscall4(int, fallocate, - int, f, int, mode, loff_t, offset, loff_t, len) - #endif - #endif - #if defined(__x86_64__) || defined(__s390x__) LSS_INLINE int LSS_NAME(getresgid32)(gid_t *rgid, gid_t *egid, gid_t *sgid) { @@ -3620,6 +3199,15 @@ struct kernel_statfs { uid_t *suid) { return LSS_NAME(getresuid)(ruid, euid, suid); } + + /* Need to make sure __off64_t isn't truncated to 32-bits under x32. */ + LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, + int64_t o) { + LSS_BODY(6, void*, mmap, LSS_SYSCALL_ARG(s), LSS_SYSCALL_ARG(l), + LSS_SYSCALL_ARG(p), LSS_SYSCALL_ARG(f), + LSS_SYSCALL_ARG(d), (uint64_t)(o)); + } + LSS_INLINE _syscall4(int, newfstatat, int, d, const char *, p, struct kernel_stat*, b, int, f) @@ -3643,7 +3231,6 @@ struct kernel_statfs { LSS_INLINE int LSS_NAME(sigaction)(int signum, const struct kernel_sigaction *act, struct kernel_sigaction *oldact) { - #if defined(__x86_64__) /* On x86_64, the kernel requires us to always set our own * SA_RESTORER in order to be able to return from a signal handler. * This function must have a "magic" signature that the "gdb" @@ -3655,10 +3242,10 @@ struct kernel_statfs { a.sa_restorer = LSS_NAME(restore_rt)(); return LSS_NAME(rt_sigaction)(signum, &a, oldact, (KERNEL_NSIG+7)/8); - } else - #endif + } else { return LSS_NAME(rt_sigaction)(signum, act, oldact, (KERNEL_NSIG+7)/8); + } } LSS_INLINE int LSS_NAME(sigpending)(struct kernel_sigset_t *set) { @@ -3677,8 +3264,7 @@ struct kernel_statfs { #endif #if defined(__x86_64__) || defined(__ARM_ARCH_3__) || \ defined(__ARM_EABI__) || defined(__aarch64__) || \ - (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI32) || \ - defined(__s390__) + (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI32) LSS_INLINE _syscall4(pid_t, wait4, pid_t, p, int*, s, int, o, struct kernel_rusage*, r) @@ -3687,14 +3273,11 @@ struct kernel_statfs { return LSS_NAME(wait4)(pid, status, options, 0); } #endif - #if defined(__NR_openat) + #if defined(__i386__) || defined(__x86_64__) || defined(__aarch64__) LSS_INLINE _syscall4(int, openat, int, d, const char *, p, int, f, int, m) - #endif - #if defined(__NR_unlinkat) LSS_INLINE _syscall3(int, unlinkat, int, d, const char *, p, int, f) #endif - #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ - (defined(__s390__) && !defined(__s390x__)) + #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) #define __NR__getresgid32 __NR_getresgid32 #define __NR__getresuid32 __NR_getresuid32 #define __NR__setfsgid32 __NR_setfsgid32 @@ -3848,11 +3431,9 @@ struct kernel_statfs { (1UL << ((signum - 1) % (8*sizeof(set->sig[0]))))); } } - #if defined(__i386__) || \ - defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ - (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ - defined(__PPC__) || \ - (defined(__s390__) && !defined(__s390x__)) + #if defined(__i386__) || defined(__ARM_ARCH_3__) || \ + defined(__ARM_EABI__) || \ + (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || defined(__PPC__) #define __NR__sigaction __NR_sigaction #define __NR__sigpending __NR_sigpending #define __NR__sigprocmask __NR_sigprocmask @@ -3863,23 +3444,13 @@ struct kernel_statfs { LSS_INLINE _syscall5(int, _llseek, uint, fd, unsigned long, hi, unsigned long, lo, loff_t *, res, uint, wh) -#if defined(__s390__) && !defined(__s390x__) - /* On s390, mmap2() arguments are passed in memory. */ - LSS_INLINE void* LSS_NAME(_mmap2)(void *s, size_t l, int p, int f, int d, - off_t o) { - unsigned long buf[6] = { (unsigned long) s, (unsigned long) l, - (unsigned long) p, (unsigned long) f, - (unsigned long) d, (unsigned long) o }; - LSS_REG(2, buf); - LSS_BODY(void*, mmap2, "0"(__r2)); - } -#else - #define __NR__mmap2 __NR_mmap2 - LSS_INLINE _syscall6(void*, _mmap2, void*, s, +#if !defined(__ARM_EABI__) + LSS_INLINE _syscall1(void*, mmap, void*, a) +#endif + LSS_INLINE _syscall6(void*, mmap2, void*, s, size_t, l, int, p, int, f, int, d, - off_t, o) -#endif + off_t, o) LSS_INLINE _syscall3(int, _sigaction, int, s, const struct kernel_old_sigaction*, a, struct kernel_old_sigaction*, o) @@ -4001,43 +3572,6 @@ struct kernel_statfs { return rc; } #endif - #if defined(__i386__) || \ - defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \ - (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ - defined(__PPC__) || \ - (defined(__s390__) && !defined(__s390x__)) - /* On these architectures, implement mmap() with mmap2(). */ - LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, - int64_t o) { - if (o % 4096) { - LSS_ERRNO = EINVAL; - return (void *) -1; - } - return LSS_NAME(_mmap2)(s, l, p, f, d, (o / 4096)); - } - #elif defined(__s390x__) - /* On s390x, mmap() arguments are passed in memory. */ - LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, - int64_t o) { - unsigned long buf[6] = { (unsigned long) s, (unsigned long) l, - (unsigned long) p, (unsigned long) f, - (unsigned long) d, (unsigned long) o }; - LSS_REG(2, buf); - LSS_BODY(void*, mmap, "0"(__r2)); - } - #elif defined(__x86_64__) - /* Need to make sure __off64_t isn't truncated to 32-bits under x32. */ - LSS_INLINE void* LSS_NAME(mmap)(void *s, size_t l, int p, int f, int d, - int64_t o) { - LSS_BODY(6, void*, mmap, LSS_SYSCALL_ARG(s), LSS_SYSCALL_ARG(l), - LSS_SYSCALL_ARG(p), LSS_SYSCALL_ARG(f), - LSS_SYSCALL_ARG(d), (uint64_t)(o)); - } - #else - /* Remaining 64-bit architectures. */ - LSS_INLINE _syscall6(void*, mmap, void*, addr, size_t, length, int, prot, - int, flags, int, fd, int64_t, offset) - #endif #if defined(__PPC__) #undef LSS_SC_LOADARGS_0 #define LSS_SC_LOADARGS_0(dummy...) @@ -4141,8 +3675,7 @@ struct kernel_statfs { int*, sv) #endif #if defined(__i386__) || defined(__ARM_ARCH_3__) || \ - (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) || \ - defined(__s390__) + (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) #define __NR__socketcall __NR_socketcall LSS_INLINE _syscall2(int, _socketcall, int, c, va_list, a) @@ -4186,7 +3719,7 @@ struct kernel_statfs { return LSS_NAME(socketcall)(8, d, type, protocol, sv); } #endif - #if defined(__NR_fstatat64) + #if defined(__i386__) || defined(__PPC__) LSS_INLINE _syscall4(int, fstatat64, int, d, const char *, p, struct kernel_stat64 *, b, int, f) @@ -4225,9 +3758,8 @@ struct kernel_statfs { #endif /* TODO(csilvers): see if ppc can/should support this as well */ #if defined(__i386__) || defined(__ARM_ARCH_3__) || \ - defined(__ARM_EABI__) || \ - (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64) || \ - (defined(__s390__) && !defined(__s390x__)) + defined(__ARM_EABI__) || \ + (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64) #define __NR__statfs64 __NR_statfs64 #define __NR__fstatfs64 __NR_fstatfs64 LSS_INLINE _syscall3(int, _statfs64, const char*, p, diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/COPYRIGHT b/toolkit/crashreporter/google-breakpad/src/third_party/musl/COPYRIGHT deleted file mode 100644 index f0ee3b78d879..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/third_party/musl/COPYRIGHT +++ /dev/null @@ -1,163 +0,0 @@ -musl as a whole is licensed under the following standard MIT license: - ----------------------------------------------------------------------- -Copyright © 2005-2014 Rich Felker, et al. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- - -Authors/contributors include: - -Alex Dowad -Alexander Monakov -Anthony G. Basile -Arvid Picciani -Bobby Bingham -Boris Brezillon -Brent Cook -Chris Spiegel -Clément Vasseur -Daniel Micay -Denys Vlasenko -Emil Renner Berthing -Felix Fietkau -Felix Janda -Gianluca Anzolin -Hauke Mehrtens -Hiltjo Posthuma -Isaac Dunham -Jaydeep Patil -Jens Gustedt -Jeremy Huntwork -Jo-Philipp Wich -Joakim Sindholt -John Spencer -Josiah Worcester -Justin Cormack -Khem Raj -Kylie McClain -Luca Barbato -Luka Perkov -M Farkas-Dyck (Strake) -Mahesh Bodapati -Michael Forney -Natanael Copa -Nicholas J. Kain -orc -Pascal Cuoq -Petr Hosek -Pierre Carrier -Rich Felker -Richard Pennington -Shiz -sin -Solar Designer -Stefan Kristiansson -Szabolcs Nagy -Timo Teräs -Trutz Behn -Valentin Ochs -William Haddon - -Portions of this software are derived from third-party works licensed -under terms compatible with the above MIT license: - -The TRE regular expression implementation (src/regex/reg* and -src/regex/tre*) is Copyright © 2001-2008 Ville Laurikari and licensed -under a 2-clause BSD license (license text in the source files). The -included version has been heavily modified by Rich Felker in 2012, in -the interests of size, simplicity, and namespace cleanliness. - -Much of the math library code (src/math/* and src/complex/*) is -Copyright © 1993,2004 Sun Microsystems or -Copyright © 2003-2011 David Schultz or -Copyright © 2003-2009 Steven G. Kargl or -Copyright © 2003-2009 Bruce D. Evans or -Copyright © 2008 Stephen L. Moshier -and labelled as such in comments in the individual source files. All -have been licensed under extremely permissive terms. - -The ARM memcpy code (src/string/arm/memcpy_el.S) is Copyright © 2008 -The Android Open Source Project and is licensed under a two-clause BSD -license. It was taken from Bionic libc, used on Android. - -The implementation of DES for crypt (src/crypt/crypt_des.c) is -Copyright © 1994 David Burren. It is licensed under a BSD license. - -The implementation of blowfish crypt (src/crypt/crypt_blowfish.c) was -originally written by Solar Designer and placed into the public -domain. The code also comes with a fallback permissive license for use -in jurisdictions that may not recognize the public domain. - -The smoothsort implementation (src/stdlib/qsort.c) is Copyright © 2011 -Valentin Ochs and is licensed under an MIT-style license. - -The BSD PRNG implementation (src/prng/random.c) and XSI search API -(src/search/*.c) functions are Copyright © 2011 Szabolcs Nagy and -licensed under following terms: "Permission to use, copy, modify, -and/or distribute this code for any purpose with or without fee is -hereby granted. There is no warranty." - -The x86_64 port was written by Nicholas J. Kain and is licensed under -the standard MIT terms. - -The mips and microblaze ports were originally written by Richard -Pennington for use in the ellcc project. The original code was adapted -by Rich Felker for build system and code conventions during upstream -integration. It is licensed under the standard MIT terms. - -The mips64 port was contributed by Imagination Technologies and is -licensed under the standard MIT terms. - -The powerpc port was also originally written by Richard Pennington, -and later supplemented and integrated by John Spencer. It is licensed -under the standard MIT terms. - -All other files which have no copyright comments are original works -produced specifically for use as part of this library, written either -by Rich Felker, the main author of the library, or by one or more -contibutors listed above. Details on authorship of individual files -can be found in the git version control history of the project. The -omission of copyright and license comments in each file is in the -interest of source tree size. - -In addition, permission is hereby granted for all public header files -(include/* and arch/*/bits/*) and crt files intended to be linked into -applications (crt/*, ldso/dlstart.c, and arch/*/crt_arch.h) to omit -the copyright notice and permission notice otherwise required by the -license, and to use these files without any requirement of -attribution. These files include substantial contributions from: - -Bobby Bingham -John Spencer -Nicholas J. Kain -Rich Felker -Richard Pennington -Stefan Kristiansson -Szabolcs Nagy - -all of whom have explicitly granted such permission. - -This file previously contained text expressing a belief that most of -the files covered by the above exception were sufficiently trivial not -to be subject to copyright, resulting in confusion over whether it -negated the permissions granted in the license. In the spirit of -permissive licensing, and of not having licensing issues being an -obstacle to adoption, that text has been removed. diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/README b/toolkit/crashreporter/google-breakpad/src/third_party/musl/README deleted file mode 100644 index a30eb112750c..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/third_party/musl/README +++ /dev/null @@ -1,23 +0,0 @@ - - musl libc - -musl, pronounced like the word "mussel", is an MIT-licensed -implementation of the standard C library targetting the Linux syscall -API, suitable for use in a wide range of deployment environments. musl -offers efficient static and dynamic linking support, lightweight code -and low runtime overhead, strong fail-safe guarantees under correct -usage, and correctness in the sense of standards conformance and -safety. musl is built on the principle that these goals are best -achieved through simple code that is easy to understand and maintain. - -The 1.1 release series for musl features coverage for all interfaces -defined in ISO C99 and POSIX 2008 base, along with a number of -non-standardized interfaces for compatibility with Linux, BSD, and -glibc functionality. - -For basic installation instructions, see the included INSTALL file. -Information on full musl-targeted compiler toolchains, system -bootstrapping, and Linux distributions built on musl can be found on -the project website: - - http://www.musl-libc.org/ diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/README.breakpad b/toolkit/crashreporter/google-breakpad/src/third_party/musl/README.breakpad deleted file mode 100644 index f500c4359ec7..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/third_party/musl/README.breakpad +++ /dev/null @@ -1,3 +0,0 @@ -This directory contains the elf header from -https://git.musl-libc.org/cgit/musl/tree/ -that is required to get ELF working in dump_syms on Mac OS X. diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/VERSION b/toolkit/crashreporter/google-breakpad/src/third_party/musl/VERSION deleted file mode 100644 index e9bc14996e26..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/third_party/musl/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.1.14 diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/musl/include/elf.h b/toolkit/crashreporter/google-breakpad/src/third_party/musl/include/elf.h deleted file mode 100644 index 8b3cd3ed3f2d..000000000000 --- a/toolkit/crashreporter/google-breakpad/src/third_party/musl/include/elf.h +++ /dev/null @@ -1,2827 +0,0 @@ -#ifndef _ELF_H -#define _ELF_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef uint16_t Elf32_Half; -typedef uint16_t Elf64_Half; - -typedef uint32_t Elf32_Word; -typedef int32_t Elf32_Sword; -typedef uint32_t Elf64_Word; -typedef int32_t Elf64_Sword; - -typedef uint64_t Elf32_Xword; -typedef int64_t Elf32_Sxword; -typedef uint64_t Elf64_Xword; -typedef int64_t Elf64_Sxword; - -typedef uint32_t Elf32_Addr; -typedef uint64_t Elf64_Addr; - -typedef uint32_t Elf32_Off; -typedef uint64_t Elf64_Off; - -typedef uint16_t Elf32_Section; -typedef uint16_t Elf64_Section; - -typedef Elf32_Half Elf32_Versym; -typedef Elf64_Half Elf64_Versym; - -#define EI_NIDENT (16) - -typedef struct { - unsigned char e_ident[EI_NIDENT]; - Elf32_Half e_type; - Elf32_Half e_machine; - Elf32_Word e_version; - Elf32_Addr e_entry; - Elf32_Off e_phoff; - Elf32_Off e_shoff; - Elf32_Word e_flags; - Elf32_Half e_ehsize; - Elf32_Half e_phentsize; - Elf32_Half e_phnum; - Elf32_Half e_shentsize; - Elf32_Half e_shnum; - Elf32_Half e_shstrndx; -} Elf32_Ehdr; - -typedef struct { - unsigned char e_ident[EI_NIDENT]; - Elf64_Half e_type; - Elf64_Half e_machine; - Elf64_Word e_version; - Elf64_Addr e_entry; - Elf64_Off e_phoff; - Elf64_Off e_shoff; - Elf64_Word e_flags; - Elf64_Half e_ehsize; - Elf64_Half e_phentsize; - Elf64_Half e_phnum; - Elf64_Half e_shentsize; - Elf64_Half e_shnum; - Elf64_Half e_shstrndx; -} Elf64_Ehdr; - -#define EI_MAG0 0 -#define ELFMAG0 0x7f - -#define EI_MAG1 1 -#define ELFMAG1 'E' - -#define EI_MAG2 2 -#define ELFMAG2 'L' - -#define EI_MAG3 3 -#define ELFMAG3 'F' - - -#define ELFMAG "\177ELF" -#define SELFMAG 4 - -#define EI_CLASS 4 -#define ELFCLASSNONE 0 -#define ELFCLASS32 1 -#define ELFCLASS64 2 -#define ELFCLASSNUM 3 - -#define EI_DATA 5 -#define ELFDATANONE 0 -#define ELFDATA2LSB 1 -#define ELFDATA2MSB 2 -#define ELFDATANUM 3 - -#define EI_VERSION 6 - - -#define EI_OSABI 7 -#define ELFOSABI_NONE 0 -#define ELFOSABI_SYSV 0 -#define ELFOSABI_HPUX 1 -#define ELFOSABI_NETBSD 2 -#define ELFOSABI_LINUX 3 -#define ELFOSABI_GNU 3 -#define ELFOSABI_SOLARIS 6 -#define ELFOSABI_AIX 7 -#define ELFOSABI_IRIX 8 -#define ELFOSABI_FREEBSD 9 -#define ELFOSABI_TRU64 10 -#define ELFOSABI_MODESTO 11 -#define ELFOSABI_OPENBSD 12 -#define ELFOSABI_ARM 97 -#define ELFOSABI_STANDALONE 255 - -#define EI_ABIVERSION 8 - -#define EI_PAD 9 - - - -#define ET_NONE 0 -#define ET_REL 1 -#define ET_EXEC 2 -#define ET_DYN 3 -#define ET_CORE 4 -#define ET_NUM 5 -#define ET_LOOS 0xfe00 -#define ET_HIOS 0xfeff -#define ET_LOPROC 0xff00 -#define ET_HIPROC 0xffff - - - -#define EM_NONE 0 -#define EM_M32 1 -#define EM_SPARC 2 -#define EM_386 3 -#define EM_68K 4 -#define EM_88K 5 -#define EM_860 7 -#define EM_MIPS 8 -#define EM_S370 9 -#define EM_MIPS_RS3_LE 10 - -#define EM_PARISC 15 -#define EM_VPP500 17 -#define EM_SPARC32PLUS 18 -#define EM_960 19 -#define EM_PPC 20 -#define EM_PPC64 21 -#define EM_S390 22 - -#define EM_V800 36 -#define EM_FR20 37 -#define EM_RH32 38 -#define EM_RCE 39 -#define EM_ARM 40 -#define EM_FAKE_ALPHA 41 -#define EM_SH 42 -#define EM_SPARCV9 43 -#define EM_TRICORE 44 -#define EM_ARC 45 -#define EM_H8_300 46 -#define EM_H8_300H 47 -#define EM_H8S 48 -#define EM_H8_500 49 -#define EM_IA_64 50 -#define EM_MIPS_X 51 -#define EM_COLDFIRE 52 -#define EM_68HC12 53 -#define EM_MMA 54 -#define EM_PCP 55 -#define EM_NCPU 56 -#define EM_NDR1 57 -#define EM_STARCORE 58 -#define EM_ME16 59 -#define EM_ST100 60 -#define EM_TINYJ 61 -#define EM_X86_64 62 -#define EM_PDSP 63 - -#define EM_FX66 66 -#define EM_ST9PLUS 67 -#define EM_ST7 68 -#define EM_68HC16 69 -#define EM_68HC11 70 -#define EM_68HC08 71 -#define EM_68HC05 72 -#define EM_SVX 73 -#define EM_ST19 74 -#define EM_VAX 75 -#define EM_CRIS 76 -#define EM_JAVELIN 77 -#define EM_FIREPATH 78 -#define EM_ZSP 79 -#define EM_MMIX 80 -#define EM_HUANY 81 -#define EM_PRISM 82 -#define EM_AVR 83 -#define EM_FR30 84 -#define EM_D10V 85 -#define EM_D30V 86 -#define EM_V850 87 -#define EM_M32R 88 -#define EM_MN10300 89 -#define EM_MN10200 90 -#define EM_PJ 91 -#define EM_OR1K 92 -#define EM_ARC_A5 93 -#define EM_XTENSA 94 -#define EM_AARCH64 183 -#define EM_TILEPRO 188 -#define EM_MICROBLAZE 189 -#define EM_TILEGX 191 -#define EM_NUM 192 -#define EM_ALPHA 0x9026 - -#define EV_NONE 0 -#define EV_CURRENT 1 -#define EV_NUM 2 - -typedef struct { - Elf32_Word sh_name; - Elf32_Word sh_type; - Elf32_Word sh_flags; - Elf32_Addr sh_addr; - Elf32_Off sh_offset; - Elf32_Word sh_size; - Elf32_Word sh_link; - Elf32_Word sh_info; - Elf32_Word sh_addralign; - Elf32_Word sh_entsize; -} Elf32_Shdr; - -typedef struct { - Elf64_Word sh_name; - Elf64_Word sh_type; - Elf64_Xword sh_flags; - Elf64_Addr sh_addr; - Elf64_Off sh_offset; - Elf64_Xword sh_size; - Elf64_Word sh_link; - Elf64_Word sh_info; - Elf64_Xword sh_addralign; - Elf64_Xword sh_entsize; -} Elf64_Shdr; - - - -#define SHN_UNDEF 0 -#define SHN_LORESERVE 0xff00 -#define SHN_LOPROC 0xff00 -#define SHN_BEFORE 0xff00 - -#define SHN_AFTER 0xff01 - -#define SHN_HIPROC 0xff1f -#define SHN_LOOS 0xff20 -#define SHN_HIOS 0xff3f -#define SHN_ABS 0xfff1 -#define SHN_COMMON 0xfff2 -#define SHN_XINDEX 0xffff -#define SHN_HIRESERVE 0xffff - - - -#define SHT_NULL 0 -#define SHT_PROGBITS 1 -#define SHT_SYMTAB 2 -#define SHT_STRTAB 3 -#define SHT_RELA 4 -#define SHT_HASH 5 -#define SHT_DYNAMIC 6 -#define SHT_NOTE 7 -#define SHT_NOBITS 8 -#define SHT_REL 9 -#define SHT_SHLIB 10 -#define SHT_DYNSYM 11 -#define SHT_INIT_ARRAY 14 -#define SHT_FINI_ARRAY 15 -#define SHT_PREINIT_ARRAY 16 -#define SHT_GROUP 17 -#define SHT_SYMTAB_SHNDX 18 -#define SHT_NUM 19 -#define SHT_LOOS 0x60000000 -#define SHT_GNU_ATTRIBUTES 0x6ffffff5 -#define SHT_GNU_HASH 0x6ffffff6 -#define SHT_GNU_LIBLIST 0x6ffffff7 -#define SHT_CHECKSUM 0x6ffffff8 -#define SHT_LOSUNW 0x6ffffffa -#define SHT_SUNW_move 0x6ffffffa -#define SHT_SUNW_COMDAT 0x6ffffffb -#define SHT_SUNW_syminfo 0x6ffffffc -#define SHT_GNU_verdef 0x6ffffffd -#define SHT_GNU_verneed 0x6ffffffe -#define SHT_GNU_versym 0x6fffffff -#define SHT_HISUNW 0x6fffffff -#define SHT_HIOS 0x6fffffff -#define SHT_LOPROC 0x70000000 -#define SHT_HIPROC 0x7fffffff -#define SHT_LOUSER 0x80000000 -#define SHT_HIUSER 0x8fffffff - -#define SHF_WRITE (1 << 0) -#define SHF_ALLOC (1 << 1) -#define SHF_EXECINSTR (1 << 2) -#define SHF_MERGE (1 << 4) -#define SHF_STRINGS (1 << 5) -#define SHF_INFO_LINK (1 << 6) -#define SHF_LINK_ORDER (1 << 7) -#define SHF_OS_NONCONFORMING (1 << 8) - -#define SHF_GROUP (1 << 9) -#define SHF_TLS (1 << 10) -#define SHF_MASKOS 0x0ff00000 -#define SHF_MASKPROC 0xf0000000 -#define SHF_ORDERED (1 << 30) -#define SHF_EXCLUDE (1U << 31) - -#define GRP_COMDAT 0x1 - -typedef struct { - Elf32_Word st_name; - Elf32_Addr st_value; - Elf32_Word st_size; - unsigned char st_info; - unsigned char st_other; - Elf32_Section st_shndx; -} Elf32_Sym; - -typedef struct { - Elf64_Word st_name; - unsigned char st_info; - unsigned char st_other; - Elf64_Section st_shndx; - Elf64_Addr st_value; - Elf64_Xword st_size; -} Elf64_Sym; - -typedef struct { - Elf32_Half si_boundto; - Elf32_Half si_flags; -} Elf32_Syminfo; - -typedef struct { - Elf64_Half si_boundto; - Elf64_Half si_flags; -} Elf64_Syminfo; - -#define SYMINFO_BT_SELF 0xffff -#define SYMINFO_BT_PARENT 0xfffe -#define SYMINFO_BT_LOWRESERVE 0xff00 - -#define SYMINFO_FLG_DIRECT 0x0001 -#define SYMINFO_FLG_PASSTHRU 0x0002 -#define SYMINFO_FLG_COPY 0x0004 -#define SYMINFO_FLG_LAZYLOAD 0x0008 - -#define SYMINFO_NONE 0 -#define SYMINFO_CURRENT 1 -#define SYMINFO_NUM 2 - -#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4) -#define ELF32_ST_TYPE(val) ((val) & 0xf) -#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf)) - -#define ELF64_ST_BIND(val) ELF32_ST_BIND (val) -#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val) -#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type)) - -#define STB_LOCAL 0 -#define STB_GLOBAL 1 -#define STB_WEAK 2 -#define STB_NUM 3 -#define STB_LOOS 10 -#define STB_GNU_UNIQUE 10 -#define STB_HIOS 12 -#define STB_LOPROC 13 -#define STB_HIPROC 15 - -#define STT_NOTYPE 0 -#define STT_OBJECT 1 -#define STT_FUNC 2 -#define STT_SECTION 3 -#define STT_FILE 4 -#define STT_COMMON 5 -#define STT_TLS 6 -#define STT_NUM 7 -#define STT_LOOS 10 -#define STT_GNU_IFUNC 10 -#define STT_HIOS 12 -#define STT_LOPROC 13 -#define STT_HIPROC 15 - -#define STN_UNDEF 0 - -#define ELF32_ST_VISIBILITY(o) ((o) & 0x03) -#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o) - -#define STV_DEFAULT 0 -#define STV_INTERNAL 1 -#define STV_HIDDEN 2 -#define STV_PROTECTED 3 - - - - -typedef struct -{ - Elf32_Addr r_offset; - Elf32_Word r_info; -} Elf32_Rel; - -typedef struct { - Elf64_Addr r_offset; - Elf64_Xword r_info; -} Elf64_Rel; - - - -typedef struct { - Elf32_Addr r_offset; - Elf32_Word r_info; - Elf32_Sword r_addend; -} Elf32_Rela; - -typedef struct { - Elf64_Addr r_offset; - Elf64_Xword r_info; - Elf64_Sxword r_addend; -} Elf64_Rela; - - - -#define ELF32_R_SYM(val) ((val) >> 8) -#define ELF32_R_TYPE(val) ((val) & 0xff) -#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff)) - -#define ELF64_R_SYM(i) ((i) >> 32) -#define ELF64_R_TYPE(i) ((i) & 0xffffffff) -#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type)) - - - -typedef struct { - Elf32_Word p_type; - Elf32_Off p_offset; - Elf32_Addr p_vaddr; - Elf32_Addr p_paddr; - Elf32_Word p_filesz; - Elf32_Word p_memsz; - Elf32_Word p_flags; - Elf32_Word p_align; -} Elf32_Phdr; - -typedef struct { - Elf64_Word p_type; - Elf64_Word p_flags; - Elf64_Off p_offset; - Elf64_Addr p_vaddr; - Elf64_Addr p_paddr; - Elf64_Xword p_filesz; - Elf64_Xword p_memsz; - Elf64_Xword p_align; -} Elf64_Phdr; - - - -#define PT_NULL 0 -#define PT_LOAD 1 -#define PT_DYNAMIC 2 -#define PT_INTERP 3 -#define PT_NOTE 4 -#define PT_SHLIB 5 -#define PT_PHDR 6 -#define PT_TLS 7 -#define PT_NUM 8 -#define PT_LOOS 0x60000000 -#define PT_GNU_EH_FRAME 0x6474e550 -#define PT_GNU_STACK 0x6474e551 -#define PT_GNU_RELRO 0x6474e552 -#define PT_LOSUNW 0x6ffffffa -#define PT_SUNWBSS 0x6ffffffa -#define PT_SUNWSTACK 0x6ffffffb -#define PT_HISUNW 0x6fffffff -#define PT_HIOS 0x6fffffff -#define PT_LOPROC 0x70000000 -#define PT_HIPROC 0x7fffffff - - -#define PN_XNUM 0xffff - - -#define PF_X (1 << 0) -#define PF_W (1 << 1) -#define PF_R (1 << 2) -#define PF_MASKOS 0x0ff00000 -#define PF_MASKPROC 0xf0000000 - - - -#define NT_PRSTATUS 1 -#define NT_FPREGSET 2 -#define NT_PRPSINFO 3 -#define NT_PRXREG 4 -#define NT_TASKSTRUCT 4 -#define NT_PLATFORM 5 -#define NT_AUXV 6 -#define NT_GWINDOWS 7 -#define NT_ASRS 8 -#define NT_PSTATUS 10 -#define NT_PSINFO 13 -#define NT_PRCRED 14 -#define NT_UTSNAME 15 -#define NT_LWPSTATUS 16 -#define NT_LWPSINFO 17 -#define NT_PRFPXREG 20 -#define NT_SIGINFO 0x53494749 -#define NT_FILE 0x46494c45 -#define NT_PRXFPREG 0x46e62b7f -#define NT_PPC_VMX 0x100 -#define NT_PPC_SPE 0x101 -#define NT_PPC_VSX 0x102 -#define NT_386_TLS 0x200 -#define NT_386_IOPERM 0x201 -#define NT_X86_XSTATE 0x202 -#define NT_S390_HIGH_GPRS 0x300 -#define NT_S390_TIMER 0x301 -#define NT_S390_TODCMP 0x302 -#define NT_S390_TODPREG 0x303 -#define NT_S390_CTRS 0x304 -#define NT_S390_PREFIX 0x305 -#define NT_S390_LAST_BREAK 0x306 -#define NT_S390_SYSTEM_CALL 0x307 -#define NT_S390_TDB 0x308 -#define NT_ARM_VFP 0x400 -#define NT_ARM_TLS 0x401 -#define NT_ARM_HW_BREAK 0x402 -#define NT_ARM_HW_WATCH 0x403 -#define NT_METAG_CBUF 0x500 -#define NT_METAG_RPIPE 0x501 -#define NT_METAG_TLS 0x502 -#define NT_VERSION 1 - - - - -typedef struct { - Elf32_Sword d_tag; - union { - Elf32_Word d_val; - Elf32_Addr d_ptr; - } d_un; -} Elf32_Dyn; - -typedef struct { - Elf64_Sxword d_tag; - union { - Elf64_Xword d_val; - Elf64_Addr d_ptr; - } d_un; -} Elf64_Dyn; - - - -#define DT_NULL 0 -#define DT_NEEDED 1 -#define DT_PLTRELSZ 2 -#define DT_PLTGOT 3 -#define DT_HASH 4 -#define DT_STRTAB 5 -#define DT_SYMTAB 6 -#define DT_RELA 7 -#define DT_RELASZ 8 -#define DT_RELAENT 9 -#define DT_STRSZ 10 -#define DT_SYMENT 11 -#define DT_INIT 12 -#define DT_FINI 13 -#define DT_SONAME 14 -#define DT_RPATH 15 -#define DT_SYMBOLIC 16 -#define DT_REL 17 -#define DT_RELSZ 18 -#define DT_RELENT 19 -#define DT_PLTREL 20 -#define DT_DEBUG 21 -#define DT_TEXTREL 22 -#define DT_JMPREL 23 -#define DT_BIND_NOW 24 -#define DT_INIT_ARRAY 25 -#define DT_FINI_ARRAY 26 -#define DT_INIT_ARRAYSZ 27 -#define DT_FINI_ARRAYSZ 28 -#define DT_RUNPATH 29 -#define DT_FLAGS 30 -#define DT_ENCODING 32 -#define DT_PREINIT_ARRAY 32 -#define DT_PREINIT_ARRAYSZ 33 -#define DT_NUM 34 -#define DT_LOOS 0x6000000d -#define DT_HIOS 0x6ffff000 -#define DT_LOPROC 0x70000000 -#define DT_HIPROC 0x7fffffff -#define DT_PROCNUM DT_MIPS_NUM - -#define DT_VALRNGLO 0x6ffffd00 -#define DT_GNU_PRELINKED 0x6ffffdf5 -#define DT_GNU_CONFLICTSZ 0x6ffffdf6 -#define DT_GNU_LIBLISTSZ 0x6ffffdf7 -#define DT_CHECKSUM 0x6ffffdf8 -#define DT_PLTPADSZ 0x6ffffdf9 -#define DT_MOVEENT 0x6ffffdfa -#define DT_MOVESZ 0x6ffffdfb -#define DT_FEATURE_1 0x6ffffdfc -#define DT_POSFLAG_1 0x6ffffdfd - -#define DT_SYMINSZ 0x6ffffdfe -#define DT_SYMINENT 0x6ffffdff -#define DT_VALRNGHI 0x6ffffdff -#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) -#define DT_VALNUM 12 - -#define DT_ADDRRNGLO 0x6ffffe00 -#define DT_GNU_HASH 0x6ffffef5 -#define DT_TLSDESC_PLT 0x6ffffef6 -#define DT_TLSDESC_GOT 0x6ffffef7 -#define DT_GNU_CONFLICT 0x6ffffef8 -#define DT_GNU_LIBLIST 0x6ffffef9 -#define DT_CONFIG 0x6ffffefa -#define DT_DEPAUDIT 0x6ffffefb -#define DT_AUDIT 0x6ffffefc -#define DT_PLTPAD 0x6ffffefd -#define DT_MOVETAB 0x6ffffefe -#define DT_SYMINFO 0x6ffffeff -#define DT_ADDRRNGHI 0x6ffffeff -#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) -#define DT_ADDRNUM 11 - - - -#define DT_VERSYM 0x6ffffff0 - -#define DT_RELACOUNT 0x6ffffff9 -#define DT_RELCOUNT 0x6ffffffa - - -#define DT_FLAGS_1 0x6ffffffb -#define DT_VERDEF 0x6ffffffc - -#define DT_VERDEFNUM 0x6ffffffd -#define DT_VERNEED 0x6ffffffe - -#define DT_VERNEEDNUM 0x6fffffff -#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) -#define DT_VERSIONTAGNUM 16 - - - -#define DT_AUXILIARY 0x7ffffffd -#define DT_FILTER 0x7fffffff -#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1) -#define DT_EXTRANUM 3 - - -#define DF_ORIGIN 0x00000001 -#define DF_SYMBOLIC 0x00000002 -#define DF_TEXTREL 0x00000004 -#define DF_BIND_NOW 0x00000008 -#define DF_STATIC_TLS 0x00000010 - - - -#define DF_1_NOW 0x00000001 -#define DF_1_GLOBAL 0x00000002 -#define DF_1_GROUP 0x00000004 -#define DF_1_NODELETE 0x00000008 -#define DF_1_LOADFLTR 0x00000010 -#define DF_1_INITFIRST 0x00000020 -#define DF_1_NOOPEN 0x00000040 -#define DF_1_ORIGIN 0x00000080 -#define DF_1_DIRECT 0x00000100 -#define DF_1_TRANS 0x00000200 -#define DF_1_INTERPOSE 0x00000400 -#define DF_1_NODEFLIB 0x00000800 -#define DF_1_NODUMP 0x00001000 -#define DF_1_CONFALT 0x00002000 -#define DF_1_ENDFILTEE 0x00004000 -#define DF_1_DISPRELDNE 0x00008000 -#define DF_1_DISPRELPND 0x00010000 -#define DF_1_NODIRECT 0x00020000 -#define DF_1_IGNMULDEF 0x00040000 -#define DF_1_NOKSYMS 0x00080000 -#define DF_1_NOHDR 0x00100000 -#define DF_1_EDITED 0x00200000 -#define DF_1_NORELOC 0x00400000 -#define DF_1_SYMINTPOSE 0x00800000 -#define DF_1_GLOBAUDIT 0x01000000 -#define DF_1_SINGLETON 0x02000000 - -#define DTF_1_PARINIT 0x00000001 -#define DTF_1_CONFEXP 0x00000002 - - -#define DF_P1_LAZYLOAD 0x00000001 -#define DF_P1_GROUPPERM 0x00000002 - - - - -typedef struct { - Elf32_Half vd_version; - Elf32_Half vd_flags; - Elf32_Half vd_ndx; - Elf32_Half vd_cnt; - Elf32_Word vd_hash; - Elf32_Word vd_aux; - Elf32_Word vd_next; -} Elf32_Verdef; - -typedef struct { - Elf64_Half vd_version; - Elf64_Half vd_flags; - Elf64_Half vd_ndx; - Elf64_Half vd_cnt; - Elf64_Word vd_hash; - Elf64_Word vd_aux; - Elf64_Word vd_next; -} Elf64_Verdef; - - - -#define VER_DEF_NONE 0 -#define VER_DEF_CURRENT 1 -#define VER_DEF_NUM 2 - - -#define VER_FLG_BASE 0x1 -#define VER_FLG_WEAK 0x2 - - -#define VER_NDX_LOCAL 0 -#define VER_NDX_GLOBAL 1 -#define VER_NDX_LORESERVE 0xff00 -#define VER_NDX_ELIMINATE 0xff01 - - - -typedef struct { - Elf32_Word vda_name; - Elf32_Word vda_next; -} Elf32_Verdaux; - -typedef struct { - Elf64_Word vda_name; - Elf64_Word vda_next; -} Elf64_Verdaux; - - - - -typedef struct { - Elf32_Half vn_version; - Elf32_Half vn_cnt; - Elf32_Word vn_file; - Elf32_Word vn_aux; - Elf32_Word vn_next; -} Elf32_Verneed; - -typedef struct { - Elf64_Half vn_version; - Elf64_Half vn_cnt; - Elf64_Word vn_file; - Elf64_Word vn_aux; - Elf64_Word vn_next; -} Elf64_Verneed; - - - -#define VER_NEED_NONE 0 -#define VER_NEED_CURRENT 1 -#define VER_NEED_NUM 2 - - - -typedef struct { - Elf32_Word vna_hash; - Elf32_Half vna_flags; - Elf32_Half vna_other; - Elf32_Word vna_name; - Elf32_Word vna_next; -} Elf32_Vernaux; - -typedef struct { - Elf64_Word vna_hash; - Elf64_Half vna_flags; - Elf64_Half vna_other; - Elf64_Word vna_name; - Elf64_Word vna_next; -} Elf64_Vernaux; - - - -#define VER_FLG_WEAK 0x2 - - - -typedef struct { - uint32_t a_type; - union { - uint32_t a_val; - } a_un; -} Elf32_auxv_t; - -typedef struct { - uint64_t a_type; - union { - uint64_t a_val; - } a_un; -} Elf64_auxv_t; - - - -#define AT_NULL 0 -#define AT_IGNORE 1 -#define AT_EXECFD 2 -#define AT_PHDR 3 -#define AT_PHENT 4 -#define AT_PHNUM 5 -#define AT_PAGESZ 6 -#define AT_BASE 7 -#define AT_FLAGS 8 -#define AT_ENTRY 9 -#define AT_NOTELF 10 -#define AT_UID 11 -#define AT_EUID 12 -#define AT_GID 13 -#define AT_EGID 14 -#define AT_CLKTCK 17 - - -#define AT_PLATFORM 15 -#define AT_HWCAP 16 - - - - -#define AT_FPUCW 18 - - -#define AT_DCACHEBSIZE 19 -#define AT_ICACHEBSIZE 20 -#define AT_UCACHEBSIZE 21 - - - -#define AT_IGNOREPPC 22 - -#define AT_SECURE 23 - -#define AT_BASE_PLATFORM 24 - -#define AT_RANDOM 25 - -#define AT_HWCAP2 26 - -#define AT_EXECFN 31 - - - -#define AT_SYSINFO 32 -#define AT_SYSINFO_EHDR 33 - - - -#define AT_L1I_CACHESHAPE 34 -#define AT_L1D_CACHESHAPE 35 -#define AT_L2_CACHESHAPE 36 -#define AT_L3_CACHESHAPE 37 - - - - -typedef struct { - Elf32_Word n_namesz; - Elf32_Word n_descsz; - Elf32_Word n_type; -} Elf32_Nhdr; - -typedef struct { - Elf64_Word n_namesz; - Elf64_Word n_descsz; - Elf64_Word n_type; -} Elf64_Nhdr; - - - - -#define ELF_NOTE_SOLARIS "SUNW Solaris" - - -#define ELF_NOTE_GNU "GNU" - - - - - -#define ELF_NOTE_PAGESIZE_HINT 1 - - -#define NT_GNU_ABI_TAG 1 -#define ELF_NOTE_ABI NT_GNU_ABI_TAG - - - -#define ELF_NOTE_OS_LINUX 0 -#define ELF_NOTE_OS_GNU 1 -#define ELF_NOTE_OS_SOLARIS2 2 -#define ELF_NOTE_OS_FREEBSD 3 - -#define NT_GNU_BUILD_ID 3 -#define NT_GNU_GOLD_VERSION 4 - - - -typedef struct { - Elf32_Xword m_value; - Elf32_Word m_info; - Elf32_Word m_poffset; - Elf32_Half m_repeat; - Elf32_Half m_stride; -} Elf32_Move; - -typedef struct { - Elf64_Xword m_value; - Elf64_Xword m_info; - Elf64_Xword m_poffset; - Elf64_Half m_repeat; - Elf64_Half m_stride; -} Elf64_Move; - - -#define ELF32_M_SYM(info) ((info) >> 8) -#define ELF32_M_SIZE(info) ((unsigned char) (info)) -#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size)) - -#define ELF64_M_SYM(info) ELF32_M_SYM (info) -#define ELF64_M_SIZE(info) ELF32_M_SIZE (info) -#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size) - -#define EF_CPU32 0x00810000 - -#define R_68K_NONE 0 -#define R_68K_32 1 -#define R_68K_16 2 -#define R_68K_8 3 -#define R_68K_PC32 4 -#define R_68K_PC16 5 -#define R_68K_PC8 6 -#define R_68K_GOT32 7 -#define R_68K_GOT16 8 -#define R_68K_GOT8 9 -#define R_68K_GOT32O 10 -#define R_68K_GOT16O 11 -#define R_68K_GOT8O 12 -#define R_68K_PLT32 13 -#define R_68K_PLT16 14 -#define R_68K_PLT8 15 -#define R_68K_PLT32O 16 -#define R_68K_PLT16O 17 -#define R_68K_PLT8O 18 -#define R_68K_COPY 19 -#define R_68K_GLOB_DAT 20 -#define R_68K_JMP_SLOT 21 -#define R_68K_RELATIVE 22 -#define R_68K_NUM 23 - -#define R_386_NONE 0 -#define R_386_32 1 -#define R_386_PC32 2 -#define R_386_GOT32 3 -#define R_386_PLT32 4 -#define R_386_COPY 5 -#define R_386_GLOB_DAT 6 -#define R_386_JMP_SLOT 7 -#define R_386_RELATIVE 8 -#define R_386_GOTOFF 9 -#define R_386_GOTPC 10 -#define R_386_32PLT 11 -#define R_386_TLS_TPOFF 14 -#define R_386_TLS_IE 15 -#define R_386_TLS_GOTIE 16 -#define R_386_TLS_LE 17 -#define R_386_TLS_GD 18 -#define R_386_TLS_LDM 19 -#define R_386_16 20 -#define R_386_PC16 21 -#define R_386_8 22 -#define R_386_PC8 23 -#define R_386_TLS_GD_32 24 -#define R_386_TLS_GD_PUSH 25 -#define R_386_TLS_GD_CALL 26 -#define R_386_TLS_GD_POP 27 -#define R_386_TLS_LDM_32 28 -#define R_386_TLS_LDM_PUSH 29 -#define R_386_TLS_LDM_CALL 30 -#define R_386_TLS_LDM_POP 31 -#define R_386_TLS_LDO_32 32 -#define R_386_TLS_IE_32 33 -#define R_386_TLS_LE_32 34 -#define R_386_TLS_DTPMOD32 35 -#define R_386_TLS_DTPOFF32 36 -#define R_386_TLS_TPOFF32 37 -#define R_386_SIZE32 38 -#define R_386_TLS_GOTDESC 39 -#define R_386_TLS_DESC_CALL 40 -#define R_386_TLS_DESC 41 -#define R_386_IRELATIVE 42 -#define R_386_NUM 43 - - - - - -#define STT_SPARC_REGISTER 13 - - - -#define EF_SPARCV9_MM 3 -#define EF_SPARCV9_TSO 0 -#define EF_SPARCV9_PSO 1 -#define EF_SPARCV9_RMO 2 -#define EF_SPARC_LEDATA 0x800000 -#define EF_SPARC_EXT_MASK 0xFFFF00 -#define EF_SPARC_32PLUS 0x000100 -#define EF_SPARC_SUN_US1 0x000200 -#define EF_SPARC_HAL_R1 0x000400 -#define EF_SPARC_SUN_US3 0x000800 - - - -#define R_SPARC_NONE 0 -#define R_SPARC_8 1 -#define R_SPARC_16 2 -#define R_SPARC_32 3 -#define R_SPARC_DISP8 4 -#define R_SPARC_DISP16 5 -#define R_SPARC_DISP32 6 -#define R_SPARC_WDISP30 7 -#define R_SPARC_WDISP22 8 -#define R_SPARC_HI22 9 -#define R_SPARC_22 10 -#define R_SPARC_13 11 -#define R_SPARC_LO10 12 -#define R_SPARC_GOT10 13 -#define R_SPARC_GOT13 14 -#define R_SPARC_GOT22 15 -#define R_SPARC_PC10 16 -#define R_SPARC_PC22 17 -#define R_SPARC_WPLT30 18 -#define R_SPARC_COPY 19 -#define R_SPARC_GLOB_DAT 20 -#define R_SPARC_JMP_SLOT 21 -#define R_SPARC_RELATIVE 22 -#define R_SPARC_UA32 23 - - - -#define R_SPARC_PLT32 24 -#define R_SPARC_HIPLT22 25 -#define R_SPARC_LOPLT10 26 -#define R_SPARC_PCPLT32 27 -#define R_SPARC_PCPLT22 28 -#define R_SPARC_PCPLT10 29 -#define R_SPARC_10 30 -#define R_SPARC_11 31 -#define R_SPARC_64 32 -#define R_SPARC_OLO10 33 -#define R_SPARC_HH22 34 -#define R_SPARC_HM10 35 -#define R_SPARC_LM22 36 -#define R_SPARC_PC_HH22 37 -#define R_SPARC_PC_HM10 38 -#define R_SPARC_PC_LM22 39 -#define R_SPARC_WDISP16 40 -#define R_SPARC_WDISP19 41 -#define R_SPARC_GLOB_JMP 42 -#define R_SPARC_7 43 -#define R_SPARC_5 44 -#define R_SPARC_6 45 -#define R_SPARC_DISP64 46 -#define R_SPARC_PLT64 47 -#define R_SPARC_HIX22 48 -#define R_SPARC_LOX10 49 -#define R_SPARC_H44 50 -#define R_SPARC_M44 51 -#define R_SPARC_L44 52 -#define R_SPARC_REGISTER 53 -#define R_SPARC_UA64 54 -#define R_SPARC_UA16 55 -#define R_SPARC_TLS_GD_HI22 56 -#define R_SPARC_TLS_GD_LO10 57 -#define R_SPARC_TLS_GD_ADD 58 -#define R_SPARC_TLS_GD_CALL 59 -#define R_SPARC_TLS_LDM_HI22 60 -#define R_SPARC_TLS_LDM_LO10 61 -#define R_SPARC_TLS_LDM_ADD 62 -#define R_SPARC_TLS_LDM_CALL 63 -#define R_SPARC_TLS_LDO_HIX22 64 -#define R_SPARC_TLS_LDO_LOX10 65 -#define R_SPARC_TLS_LDO_ADD 66 -#define R_SPARC_TLS_IE_HI22 67 -#define R_SPARC_TLS_IE_LO10 68 -#define R_SPARC_TLS_IE_LD 69 -#define R_SPARC_TLS_IE_LDX 70 -#define R_SPARC_TLS_IE_ADD 71 -#define R_SPARC_TLS_LE_HIX22 72 -#define R_SPARC_TLS_LE_LOX10 73 -#define R_SPARC_TLS_DTPMOD32 74 -#define R_SPARC_TLS_DTPMOD64 75 -#define R_SPARC_TLS_DTPOFF32 76 -#define R_SPARC_TLS_DTPOFF64 77 -#define R_SPARC_TLS_TPOFF32 78 -#define R_SPARC_TLS_TPOFF64 79 -#define R_SPARC_GOTDATA_HIX22 80 -#define R_SPARC_GOTDATA_LOX10 81 -#define R_SPARC_GOTDATA_OP_HIX22 82 -#define R_SPARC_GOTDATA_OP_LOX10 83 -#define R_SPARC_GOTDATA_OP 84 -#define R_SPARC_H34 85 -#define R_SPARC_SIZE32 86 -#define R_SPARC_SIZE64 87 -#define R_SPARC_GNU_VTINHERIT 250 -#define R_SPARC_GNU_VTENTRY 251 -#define R_SPARC_REV32 252 - -#define R_SPARC_NUM 253 - - - -#define DT_SPARC_REGISTER 0x70000001 -#define DT_SPARC_NUM 2 - - -#define EF_MIPS_NOREORDER 1 -#define EF_MIPS_PIC 2 -#define EF_MIPS_CPIC 4 -#define EF_MIPS_XGOT 8 -#define EF_MIPS_64BIT_WHIRL 16 -#define EF_MIPS_ABI2 32 -#define EF_MIPS_ABI_ON32 64 -#define EF_MIPS_NAN2008 1024 -#define EF_MIPS_ARCH 0xf0000000 - - - -#define EF_MIPS_ARCH_1 0x00000000 -#define EF_MIPS_ARCH_2 0x10000000 -#define EF_MIPS_ARCH_3 0x20000000 -#define EF_MIPS_ARCH_4 0x30000000 -#define EF_MIPS_ARCH_5 0x40000000 -#define EF_MIPS_ARCH_32 0x50000000 -#define EF_MIPS_ARCH_64 0x60000000 -#define EF_MIPS_ARCH_32R2 0x70000000 -#define EF_MIPS_ARCH_64R2 0x80000000 - - -#define E_MIPS_ARCH_1 0x00000000 -#define E_MIPS_ARCH_2 0x10000000 -#define E_MIPS_ARCH_3 0x20000000 -#define E_MIPS_ARCH_4 0x30000000 -#define E_MIPS_ARCH_5 0x40000000 -#define E_MIPS_ARCH_32 0x50000000 -#define E_MIPS_ARCH_64 0x60000000 - - - -#define SHN_MIPS_ACOMMON 0xff00 -#define SHN_MIPS_TEXT 0xff01 -#define SHN_MIPS_DATA 0xff02 -#define SHN_MIPS_SCOMMON 0xff03 -#define SHN_MIPS_SUNDEFINED 0xff04 - - - -#define SHT_MIPS_LIBLIST 0x70000000 -#define SHT_MIPS_MSYM 0x70000001 -#define SHT_MIPS_CONFLICT 0x70000002 -#define SHT_MIPS_GPTAB 0x70000003 -#define SHT_MIPS_UCODE 0x70000004 -#define SHT_MIPS_DEBUG 0x70000005 -#define SHT_MIPS_REGINFO 0x70000006 -#define SHT_MIPS_PACKAGE 0x70000007 -#define SHT_MIPS_PACKSYM 0x70000008 -#define SHT_MIPS_RELD 0x70000009 -#define SHT_MIPS_IFACE 0x7000000b -#define SHT_MIPS_CONTENT 0x7000000c -#define SHT_MIPS_OPTIONS 0x7000000d -#define SHT_MIPS_SHDR 0x70000010 -#define SHT_MIPS_FDESC 0x70000011 -#define SHT_MIPS_EXTSYM 0x70000012 -#define SHT_MIPS_DENSE 0x70000013 -#define SHT_MIPS_PDESC 0x70000014 -#define SHT_MIPS_LOCSYM 0x70000015 -#define SHT_MIPS_AUXSYM 0x70000016 -#define SHT_MIPS_OPTSYM 0x70000017 -#define SHT_MIPS_LOCSTR 0x70000018 -#define SHT_MIPS_LINE 0x70000019 -#define SHT_MIPS_RFDESC 0x7000001a -#define SHT_MIPS_DELTASYM 0x7000001b -#define SHT_MIPS_DELTAINST 0x7000001c -#define SHT_MIPS_DELTACLASS 0x7000001d -#define SHT_MIPS_DWARF 0x7000001e -#define SHT_MIPS_DELTADECL 0x7000001f -#define SHT_MIPS_SYMBOL_LIB 0x70000020 -#define SHT_MIPS_EVENTS 0x70000021 -#define SHT_MIPS_TRANSLATE 0x70000022 -#define SHT_MIPS_PIXIE 0x70000023 -#define SHT_MIPS_XLATE 0x70000024 -#define SHT_MIPS_XLATE_DEBUG 0x70000025 -#define SHT_MIPS_WHIRL 0x70000026 -#define SHT_MIPS_EH_REGION 0x70000027 -#define SHT_MIPS_XLATE_OLD 0x70000028 -#define SHT_MIPS_PDR_EXCEPTION 0x70000029 - - - -#define SHF_MIPS_GPREL 0x10000000 -#define SHF_MIPS_MERGE 0x20000000 -#define SHF_MIPS_ADDR 0x40000000 -#define SHF_MIPS_STRINGS 0x80000000 -#define SHF_MIPS_NOSTRIP 0x08000000 -#define SHF_MIPS_LOCAL 0x04000000 -#define SHF_MIPS_NAMES 0x02000000 -#define SHF_MIPS_NODUPE 0x01000000 - - - - - -#define STO_MIPS_DEFAULT 0x0 -#define STO_MIPS_INTERNAL 0x1 -#define STO_MIPS_HIDDEN 0x2 -#define STO_MIPS_PROTECTED 0x3 -#define STO_MIPS_PLT 0x8 -#define STO_MIPS_SC_ALIGN_UNUSED 0xff - - -#define STB_MIPS_SPLIT_COMMON 13 - - - -typedef union { - struct { - Elf32_Word gt_current_g_value; - Elf32_Word gt_unused; - } gt_header; - struct { - Elf32_Word gt_g_value; - Elf32_Word gt_bytes; - } gt_entry; -} Elf32_gptab; - - - -typedef struct { - Elf32_Word ri_gprmask; - Elf32_Word ri_cprmask[4]; - Elf32_Sword ri_gp_value; -} Elf32_RegInfo; - - - -typedef struct { - unsigned char kind; - - unsigned char size; - Elf32_Section section; - - Elf32_Word info; -} Elf_Options; - - - -#define ODK_NULL 0 -#define ODK_REGINFO 1 -#define ODK_EXCEPTIONS 2 -#define ODK_PAD 3 -#define ODK_HWPATCH 4 -#define ODK_FILL 5 -#define ODK_TAGS 6 -#define ODK_HWAND 7 -#define ODK_HWOR 8 - - - -#define OEX_FPU_MIN 0x1f -#define OEX_FPU_MAX 0x1f00 -#define OEX_PAGE0 0x10000 -#define OEX_SMM 0x20000 -#define OEX_FPDBUG 0x40000 -#define OEX_PRECISEFP OEX_FPDBUG -#define OEX_DISMISS 0x80000 - -#define OEX_FPU_INVAL 0x10 -#define OEX_FPU_DIV0 0x08 -#define OEX_FPU_OFLO 0x04 -#define OEX_FPU_UFLO 0x02 -#define OEX_FPU_INEX 0x01 - - - -#define OHW_R4KEOP 0x1 -#define OHW_R8KPFETCH 0x2 -#define OHW_R5KEOP 0x4 -#define OHW_R5KCVTL 0x8 - -#define OPAD_PREFIX 0x1 -#define OPAD_POSTFIX 0x2 -#define OPAD_SYMBOL 0x4 - - - -typedef struct { - Elf32_Word hwp_flags1; - Elf32_Word hwp_flags2; -} Elf_Options_Hw; - - - -#define OHWA0_R4KEOP_CHECKED 0x00000001 -#define OHWA1_R4KEOP_CLEAN 0x00000002 - - - -#define R_MIPS_NONE 0 -#define R_MIPS_16 1 -#define R_MIPS_32 2 -#define R_MIPS_REL32 3 -#define R_MIPS_26 4 -#define R_MIPS_HI16 5 -#define R_MIPS_LO16 6 -#define R_MIPS_GPREL16 7 -#define R_MIPS_LITERAL 8 -#define R_MIPS_GOT16 9 -#define R_MIPS_PC16 10 -#define R_MIPS_CALL16 11 -#define R_MIPS_GPREL32 12 - -#define R_MIPS_SHIFT5 16 -#define R_MIPS_SHIFT6 17 -#define R_MIPS_64 18 -#define R_MIPS_GOT_DISP 19 -#define R_MIPS_GOT_PAGE 20 -#define R_MIPS_GOT_OFST 21 -#define R_MIPS_GOT_HI16 22 -#define R_MIPS_GOT_LO16 23 -#define R_MIPS_SUB 24 -#define R_MIPS_INSERT_A 25 -#define R_MIPS_INSERT_B 26 -#define R_MIPS_DELETE 27 -#define R_MIPS_HIGHER 28 -#define R_MIPS_HIGHEST 29 -#define R_MIPS_CALL_HI16 30 -#define R_MIPS_CALL_LO16 31 -#define R_MIPS_SCN_DISP 32 -#define R_MIPS_REL16 33 -#define R_MIPS_ADD_IMMEDIATE 34 -#define R_MIPS_PJUMP 35 -#define R_MIPS_RELGOT 36 -#define R_MIPS_JALR 37 -#define R_MIPS_TLS_DTPMOD32 38 -#define R_MIPS_TLS_DTPREL32 39 -#define R_MIPS_TLS_DTPMOD64 40 -#define R_MIPS_TLS_DTPREL64 41 -#define R_MIPS_TLS_GD 42 -#define R_MIPS_TLS_LDM 43 -#define R_MIPS_TLS_DTPREL_HI16 44 -#define R_MIPS_TLS_DTPREL_LO16 45 -#define R_MIPS_TLS_GOTTPREL 46 -#define R_MIPS_TLS_TPREL32 47 -#define R_MIPS_TLS_TPREL64 48 -#define R_MIPS_TLS_TPREL_HI16 49 -#define R_MIPS_TLS_TPREL_LO16 50 -#define R_MIPS_GLOB_DAT 51 -#define R_MIPS_COPY 126 -#define R_MIPS_JUMP_SLOT 127 - -#define R_MIPS_NUM 128 - - - -#define PT_MIPS_REGINFO 0x70000000 -#define PT_MIPS_RTPROC 0x70000001 -#define PT_MIPS_OPTIONS 0x70000002 - - - -#define PF_MIPS_LOCAL 0x10000000 - - - -#define DT_MIPS_RLD_VERSION 0x70000001 -#define DT_MIPS_TIME_STAMP 0x70000002 -#define DT_MIPS_ICHECKSUM 0x70000003 -#define DT_MIPS_IVERSION 0x70000004 -#define DT_MIPS_FLAGS 0x70000005 -#define DT_MIPS_BASE_ADDRESS 0x70000006 -#define DT_MIPS_MSYM 0x70000007 -#define DT_MIPS_CONFLICT 0x70000008 -#define DT_MIPS_LIBLIST 0x70000009 -#define DT_MIPS_LOCAL_GOTNO 0x7000000a -#define DT_MIPS_CONFLICTNO 0x7000000b -#define DT_MIPS_LIBLISTNO 0x70000010 -#define DT_MIPS_SYMTABNO 0x70000011 -#define DT_MIPS_UNREFEXTNO 0x70000012 -#define DT_MIPS_GOTSYM 0x70000013 -#define DT_MIPS_HIPAGENO 0x70000014 -#define DT_MIPS_RLD_MAP 0x70000016 -#define DT_MIPS_DELTA_CLASS 0x70000017 -#define DT_MIPS_DELTA_CLASS_NO 0x70000018 - -#define DT_MIPS_DELTA_INSTANCE 0x70000019 -#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a - -#define DT_MIPS_DELTA_RELOC 0x7000001b -#define DT_MIPS_DELTA_RELOC_NO 0x7000001c - -#define DT_MIPS_DELTA_SYM 0x7000001d - -#define DT_MIPS_DELTA_SYM_NO 0x7000001e - -#define DT_MIPS_DELTA_CLASSSYM 0x70000020 - -#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 - -#define DT_MIPS_CXX_FLAGS 0x70000022 -#define DT_MIPS_PIXIE_INIT 0x70000023 -#define DT_MIPS_SYMBOL_LIB 0x70000024 -#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025 -#define DT_MIPS_LOCAL_GOTIDX 0x70000026 -#define DT_MIPS_HIDDEN_GOTIDX 0x70000027 -#define DT_MIPS_PROTECTED_GOTIDX 0x70000028 -#define DT_MIPS_OPTIONS 0x70000029 -#define DT_MIPS_INTERFACE 0x7000002a -#define DT_MIPS_DYNSTR_ALIGN 0x7000002b -#define DT_MIPS_INTERFACE_SIZE 0x7000002c -#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d - -#define DT_MIPS_PERF_SUFFIX 0x7000002e - -#define DT_MIPS_COMPACT_SIZE 0x7000002f -#define DT_MIPS_GP_VALUE 0x70000030 -#define DT_MIPS_AUX_DYNAMIC 0x70000031 - -#define DT_MIPS_PLTGOT 0x70000032 - -#define DT_MIPS_RWPLT 0x70000034 -#define DT_MIPS_NUM 0x35 - - - -#define RHF_NONE 0 -#define RHF_QUICKSTART (1 << 0) -#define RHF_NOTPOT (1 << 1) -#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) -#define RHF_NO_MOVE (1 << 3) -#define RHF_SGI_ONLY (1 << 4) -#define RHF_GUARANTEE_INIT (1 << 5) -#define RHF_DELTA_C_PLUS_PLUS (1 << 6) -#define RHF_GUARANTEE_START_INIT (1 << 7) -#define RHF_PIXIE (1 << 8) -#define RHF_DEFAULT_DELAY_LOAD (1 << 9) -#define RHF_REQUICKSTART (1 << 10) -#define RHF_REQUICKSTARTED (1 << 11) -#define RHF_CORD (1 << 12) -#define RHF_NO_UNRES_UNDEF (1 << 13) -#define RHF_RLD_ORDER_SAFE (1 << 14) - - - -typedef struct -{ - Elf32_Word l_name; - Elf32_Word l_time_stamp; - Elf32_Word l_checksum; - Elf32_Word l_version; - Elf32_Word l_flags; -} Elf32_Lib; - -typedef struct -{ - Elf64_Word l_name; - Elf64_Word l_time_stamp; - Elf64_Word l_checksum; - Elf64_Word l_version; - Elf64_Word l_flags; -} Elf64_Lib; - - - - -#define LL_NONE 0 -#define LL_EXACT_MATCH (1 << 0) -#define LL_IGNORE_INT_VER (1 << 1) -#define LL_REQUIRE_MINOR (1 << 2) -#define LL_EXPORTS (1 << 3) -#define LL_DELAY_LOAD (1 << 4) -#define LL_DELTA (1 << 5) - - - -typedef Elf32_Addr Elf32_Conflict; - - - - - - -#define EF_PARISC_TRAPNIL 0x00010000 -#define EF_PARISC_EXT 0x00020000 -#define EF_PARISC_LSB 0x00040000 -#define EF_PARISC_WIDE 0x00080000 -#define EF_PARISC_NO_KABP 0x00100000 - -#define EF_PARISC_LAZYSWAP 0x00400000 -#define EF_PARISC_ARCH 0x0000ffff - - - -#define EFA_PARISC_1_0 0x020b -#define EFA_PARISC_1_1 0x0210 -#define EFA_PARISC_2_0 0x0214 - - - -#define SHN_PARISC_ANSI_COMMON 0xff00 - -#define SHN_PARISC_HUGE_COMMON 0xff01 - - - -#define SHT_PARISC_EXT 0x70000000 -#define SHT_PARISC_UNWIND 0x70000001 -#define SHT_PARISC_DOC 0x70000002 - - - -#define SHF_PARISC_SHORT 0x20000000 -#define SHF_PARISC_HUGE 0x40000000 -#define SHF_PARISC_SBP 0x80000000 - - - -#define STT_PARISC_MILLICODE 13 - -#define STT_HP_OPAQUE (STT_LOOS + 0x1) -#define STT_HP_STUB (STT_LOOS + 0x2) - - - -#define R_PARISC_NONE 0 -#define R_PARISC_DIR32 1 -#define R_PARISC_DIR21L 2 -#define R_PARISC_DIR17R 3 -#define R_PARISC_DIR17F 4 -#define R_PARISC_DIR14R 6 -#define R_PARISC_PCREL32 9 -#define R_PARISC_PCREL21L 10 -#define R_PARISC_PCREL17R 11 -#define R_PARISC_PCREL17F 12 -#define R_PARISC_PCREL14R 14 -#define R_PARISC_DPREL21L 18 -#define R_PARISC_DPREL14R 22 -#define R_PARISC_GPREL21L 26 -#define R_PARISC_GPREL14R 30 -#define R_PARISC_LTOFF21L 34 -#define R_PARISC_LTOFF14R 38 -#define R_PARISC_SECREL32 41 -#define R_PARISC_SEGBASE 48 -#define R_PARISC_SEGREL32 49 -#define R_PARISC_PLTOFF21L 50 -#define R_PARISC_PLTOFF14R 54 -#define R_PARISC_LTOFF_FPTR32 57 -#define R_PARISC_LTOFF_FPTR21L 58 -#define R_PARISC_LTOFF_FPTR14R 62 -#define R_PARISC_FPTR64 64 -#define R_PARISC_PLABEL32 65 -#define R_PARISC_PLABEL21L 66 -#define R_PARISC_PLABEL14R 70 -#define R_PARISC_PCREL64 72 -#define R_PARISC_PCREL22F 74 -#define R_PARISC_PCREL14WR 75 -#define R_PARISC_PCREL14DR 76 -#define R_PARISC_PCREL16F 77 -#define R_PARISC_PCREL16WF 78 -#define R_PARISC_PCREL16DF 79 -#define R_PARISC_DIR64 80 -#define R_PARISC_DIR14WR 83 -#define R_PARISC_DIR14DR 84 -#define R_PARISC_DIR16F 85 -#define R_PARISC_DIR16WF 86 -#define R_PARISC_DIR16DF 87 -#define R_PARISC_GPREL64 88 -#define R_PARISC_GPREL14WR 91 -#define R_PARISC_GPREL14DR 92 -#define R_PARISC_GPREL16F 93 -#define R_PARISC_GPREL16WF 94 -#define R_PARISC_GPREL16DF 95 -#define R_PARISC_LTOFF64 96 -#define R_PARISC_LTOFF14WR 99 -#define R_PARISC_LTOFF14DR 100 -#define R_PARISC_LTOFF16F 101 -#define R_PARISC_LTOFF16WF 102 -#define R_PARISC_LTOFF16DF 103 -#define R_PARISC_SECREL64 104 -#define R_PARISC_SEGREL64 112 -#define R_PARISC_PLTOFF14WR 115 -#define R_PARISC_PLTOFF14DR 116 -#define R_PARISC_PLTOFF16F 117 -#define R_PARISC_PLTOFF16WF 118 -#define R_PARISC_PLTOFF16DF 119 -#define R_PARISC_LTOFF_FPTR64 120 -#define R_PARISC_LTOFF_FPTR14WR 123 -#define R_PARISC_LTOFF_FPTR14DR 124 -#define R_PARISC_LTOFF_FPTR16F 125 -#define R_PARISC_LTOFF_FPTR16WF 126 -#define R_PARISC_LTOFF_FPTR16DF 127 -#define R_PARISC_LORESERVE 128 -#define R_PARISC_COPY 128 -#define R_PARISC_IPLT 129 -#define R_PARISC_EPLT 130 -#define R_PARISC_TPREL32 153 -#define R_PARISC_TPREL21L 154 -#define R_PARISC_TPREL14R 158 -#define R_PARISC_LTOFF_TP21L 162 -#define R_PARISC_LTOFF_TP14R 166 -#define R_PARISC_LTOFF_TP14F 167 -#define R_PARISC_TPREL64 216 -#define R_PARISC_TPREL14WR 219 -#define R_PARISC_TPREL14DR 220 -#define R_PARISC_TPREL16F 221 -#define R_PARISC_TPREL16WF 222 -#define R_PARISC_TPREL16DF 223 -#define R_PARISC_LTOFF_TP64 224 -#define R_PARISC_LTOFF_TP14WR 227 -#define R_PARISC_LTOFF_TP14DR 228 -#define R_PARISC_LTOFF_TP16F 229 -#define R_PARISC_LTOFF_TP16WF 230 -#define R_PARISC_LTOFF_TP16DF 231 -#define R_PARISC_GNU_VTENTRY 232 -#define R_PARISC_GNU_VTINHERIT 233 -#define R_PARISC_TLS_GD21L 234 -#define R_PARISC_TLS_GD14R 235 -#define R_PARISC_TLS_GDCALL 236 -#define R_PARISC_TLS_LDM21L 237 -#define R_PARISC_TLS_LDM14R 238 -#define R_PARISC_TLS_LDMCALL 239 -#define R_PARISC_TLS_LDO21L 240 -#define R_PARISC_TLS_LDO14R 241 -#define R_PARISC_TLS_DTPMOD32 242 -#define R_PARISC_TLS_DTPMOD64 243 -#define R_PARISC_TLS_DTPOFF32 244 -#define R_PARISC_TLS_DTPOFF64 245 -#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L -#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R -#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L -#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R -#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32 -#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64 -#define R_PARISC_HIRESERVE 255 - - - -#define PT_HP_TLS (PT_LOOS + 0x0) -#define PT_HP_CORE_NONE (PT_LOOS + 0x1) -#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) -#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) -#define PT_HP_CORE_COMM (PT_LOOS + 0x4) -#define PT_HP_CORE_PROC (PT_LOOS + 0x5) -#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) -#define PT_HP_CORE_STACK (PT_LOOS + 0x7) -#define PT_HP_CORE_SHM (PT_LOOS + 0x8) -#define PT_HP_CORE_MMF (PT_LOOS + 0x9) -#define PT_HP_PARALLEL (PT_LOOS + 0x10) -#define PT_HP_FASTBIND (PT_LOOS + 0x11) -#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) -#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) -#define PT_HP_STACK (PT_LOOS + 0x14) - -#define PT_PARISC_ARCHEXT 0x70000000 -#define PT_PARISC_UNWIND 0x70000001 - - - -#define PF_PARISC_SBP 0x08000000 - -#define PF_HP_PAGE_SIZE 0x00100000 -#define PF_HP_FAR_SHARED 0x00200000 -#define PF_HP_NEAR_SHARED 0x00400000 -#define PF_HP_CODE 0x01000000 -#define PF_HP_MODIFY 0x02000000 -#define PF_HP_LAZYSWAP 0x04000000 -#define PF_HP_SBP 0x08000000 - - - - - - -#define EF_ALPHA_32BIT 1 -#define EF_ALPHA_CANRELAX 2 - - - - -#define SHT_ALPHA_DEBUG 0x70000001 -#define SHT_ALPHA_REGINFO 0x70000002 - - - -#define SHF_ALPHA_GPREL 0x10000000 - - -#define STO_ALPHA_NOPV 0x80 -#define STO_ALPHA_STD_GPLOAD 0x88 - - - -#define R_ALPHA_NONE 0 -#define R_ALPHA_REFLONG 1 -#define R_ALPHA_REFQUAD 2 -#define R_ALPHA_GPREL32 3 -#define R_ALPHA_LITERAL 4 -#define R_ALPHA_LITUSE 5 -#define R_ALPHA_GPDISP 6 -#define R_ALPHA_BRADDR 7 -#define R_ALPHA_HINT 8 -#define R_ALPHA_SREL16 9 -#define R_ALPHA_SREL32 10 -#define R_ALPHA_SREL64 11 -#define R_ALPHA_GPRELHIGH 17 -#define R_ALPHA_GPRELLOW 18 -#define R_ALPHA_GPREL16 19 -#define R_ALPHA_COPY 24 -#define R_ALPHA_GLOB_DAT 25 -#define R_ALPHA_JMP_SLOT 26 -#define R_ALPHA_RELATIVE 27 -#define R_ALPHA_TLS_GD_HI 28 -#define R_ALPHA_TLSGD 29 -#define R_ALPHA_TLS_LDM 30 -#define R_ALPHA_DTPMOD64 31 -#define R_ALPHA_GOTDTPREL 32 -#define R_ALPHA_DTPREL64 33 -#define R_ALPHA_DTPRELHI 34 -#define R_ALPHA_DTPRELLO 35 -#define R_ALPHA_DTPREL16 36 -#define R_ALPHA_GOTTPREL 37 -#define R_ALPHA_TPREL64 38 -#define R_ALPHA_TPRELHI 39 -#define R_ALPHA_TPRELLO 40 -#define R_ALPHA_TPREL16 41 - -#define R_ALPHA_NUM 46 - - -#define LITUSE_ALPHA_ADDR 0 -#define LITUSE_ALPHA_BASE 1 -#define LITUSE_ALPHA_BYTOFF 2 -#define LITUSE_ALPHA_JSR 3 -#define LITUSE_ALPHA_TLS_GD 4 -#define LITUSE_ALPHA_TLS_LDM 5 - - -#define DT_ALPHA_PLTRO (DT_LOPROC + 0) -#define DT_ALPHA_NUM 1 - - - - -#define EF_PPC_EMB 0x80000000 - - -#define EF_PPC_RELOCATABLE 0x00010000 -#define EF_PPC_RELOCATABLE_LIB 0x00008000 - - - -#define R_PPC_NONE 0 -#define R_PPC_ADDR32 1 -#define R_PPC_ADDR24 2 -#define R_PPC_ADDR16 3 -#define R_PPC_ADDR16_LO 4 -#define R_PPC_ADDR16_HI 5 -#define R_PPC_ADDR16_HA 6 -#define R_PPC_ADDR14 7 -#define R_PPC_ADDR14_BRTAKEN 8 -#define R_PPC_ADDR14_BRNTAKEN 9 -#define R_PPC_REL24 10 -#define R_PPC_REL14 11 -#define R_PPC_REL14_BRTAKEN 12 -#define R_PPC_REL14_BRNTAKEN 13 -#define R_PPC_GOT16 14 -#define R_PPC_GOT16_LO 15 -#define R_PPC_GOT16_HI 16 -#define R_PPC_GOT16_HA 17 -#define R_PPC_PLTREL24 18 -#define R_PPC_COPY 19 -#define R_PPC_GLOB_DAT 20 -#define R_PPC_JMP_SLOT 21 -#define R_PPC_RELATIVE 22 -#define R_PPC_LOCAL24PC 23 -#define R_PPC_UADDR32 24 -#define R_PPC_UADDR16 25 -#define R_PPC_REL32 26 -#define R_PPC_PLT32 27 -#define R_PPC_PLTREL32 28 -#define R_PPC_PLT16_LO 29 -#define R_PPC_PLT16_HI 30 -#define R_PPC_PLT16_HA 31 -#define R_PPC_SDAREL16 32 -#define R_PPC_SECTOFF 33 -#define R_PPC_SECTOFF_LO 34 -#define R_PPC_SECTOFF_HI 35 -#define R_PPC_SECTOFF_HA 36 - - -#define R_PPC_TLS 67 -#define R_PPC_DTPMOD32 68 -#define R_PPC_TPREL16 69 -#define R_PPC_TPREL16_LO 70 -#define R_PPC_TPREL16_HI 71 -#define R_PPC_TPREL16_HA 72 -#define R_PPC_TPREL32 73 -#define R_PPC_DTPREL16 74 -#define R_PPC_DTPREL16_LO 75 -#define R_PPC_DTPREL16_HI 76 -#define R_PPC_DTPREL16_HA 77 -#define R_PPC_DTPREL32 78 -#define R_PPC_GOT_TLSGD16 79 -#define R_PPC_GOT_TLSGD16_LO 80 -#define R_PPC_GOT_TLSGD16_HI 81 -#define R_PPC_GOT_TLSGD16_HA 82 -#define R_PPC_GOT_TLSLD16 83 -#define R_PPC_GOT_TLSLD16_LO 84 -#define R_PPC_GOT_TLSLD16_HI 85 -#define R_PPC_GOT_TLSLD16_HA 86 -#define R_PPC_GOT_TPREL16 87 -#define R_PPC_GOT_TPREL16_LO 88 -#define R_PPC_GOT_TPREL16_HI 89 -#define R_PPC_GOT_TPREL16_HA 90 -#define R_PPC_GOT_DTPREL16 91 -#define R_PPC_GOT_DTPREL16_LO 92 -#define R_PPC_GOT_DTPREL16_HI 93 -#define R_PPC_GOT_DTPREL16_HA 94 - - - -#define R_PPC_EMB_NADDR32 101 -#define R_PPC_EMB_NADDR16 102 -#define R_PPC_EMB_NADDR16_LO 103 -#define R_PPC_EMB_NADDR16_HI 104 -#define R_PPC_EMB_NADDR16_HA 105 -#define R_PPC_EMB_SDAI16 106 -#define R_PPC_EMB_SDA2I16 107 -#define R_PPC_EMB_SDA2REL 108 -#define R_PPC_EMB_SDA21 109 -#define R_PPC_EMB_MRKREF 110 -#define R_PPC_EMB_RELSEC16 111 -#define R_PPC_EMB_RELST_LO 112 -#define R_PPC_EMB_RELST_HI 113 -#define R_PPC_EMB_RELST_HA 114 -#define R_PPC_EMB_BIT_FLD 115 -#define R_PPC_EMB_RELSDA 116 - - -#define R_PPC_DIAB_SDA21_LO 180 -#define R_PPC_DIAB_SDA21_HI 181 -#define R_PPC_DIAB_SDA21_HA 182 -#define R_PPC_DIAB_RELSDA_LO 183 -#define R_PPC_DIAB_RELSDA_HI 184 -#define R_PPC_DIAB_RELSDA_HA 185 - - -#define R_PPC_IRELATIVE 248 - - -#define R_PPC_REL16 249 -#define R_PPC_REL16_LO 250 -#define R_PPC_REL16_HI 251 -#define R_PPC_REL16_HA 252 - - - -#define R_PPC_TOC16 255 - - -#define DT_PPC_GOT (DT_LOPROC + 0) -#define DT_PPC_NUM 1 - - -#define R_PPC64_NONE R_PPC_NONE -#define R_PPC64_ADDR32 R_PPC_ADDR32 -#define R_PPC64_ADDR24 R_PPC_ADDR24 -#define R_PPC64_ADDR16 R_PPC_ADDR16 -#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO -#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI -#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA -#define R_PPC64_ADDR14 R_PPC_ADDR14 -#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN -#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN -#define R_PPC64_REL24 R_PPC_REL24 -#define R_PPC64_REL14 R_PPC_REL14 -#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN -#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN -#define R_PPC64_GOT16 R_PPC_GOT16 -#define R_PPC64_GOT16_LO R_PPC_GOT16_LO -#define R_PPC64_GOT16_HI R_PPC_GOT16_HI -#define R_PPC64_GOT16_HA R_PPC_GOT16_HA - -#define R_PPC64_COPY R_PPC_COPY -#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT -#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT -#define R_PPC64_RELATIVE R_PPC_RELATIVE - -#define R_PPC64_UADDR32 R_PPC_UADDR32 -#define R_PPC64_UADDR16 R_PPC_UADDR16 -#define R_PPC64_REL32 R_PPC_REL32 -#define R_PPC64_PLT32 R_PPC_PLT32 -#define R_PPC64_PLTREL32 R_PPC_PLTREL32 -#define R_PPC64_PLT16_LO R_PPC_PLT16_LO -#define R_PPC64_PLT16_HI R_PPC_PLT16_HI -#define R_PPC64_PLT16_HA R_PPC_PLT16_HA - -#define R_PPC64_SECTOFF R_PPC_SECTOFF -#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO -#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI -#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA -#define R_PPC64_ADDR30 37 -#define R_PPC64_ADDR64 38 -#define R_PPC64_ADDR16_HIGHER 39 -#define R_PPC64_ADDR16_HIGHERA 40 -#define R_PPC64_ADDR16_HIGHEST 41 -#define R_PPC64_ADDR16_HIGHESTA 42 -#define R_PPC64_UADDR64 43 -#define R_PPC64_REL64 44 -#define R_PPC64_PLT64 45 -#define R_PPC64_PLTREL64 46 -#define R_PPC64_TOC16 47 -#define R_PPC64_TOC16_LO 48 -#define R_PPC64_TOC16_HI 49 -#define R_PPC64_TOC16_HA 50 -#define R_PPC64_TOC 51 -#define R_PPC64_PLTGOT16 52 -#define R_PPC64_PLTGOT16_LO 53 -#define R_PPC64_PLTGOT16_HI 54 -#define R_PPC64_PLTGOT16_HA 55 - -#define R_PPC64_ADDR16_DS 56 -#define R_PPC64_ADDR16_LO_DS 57 -#define R_PPC64_GOT16_DS 58 -#define R_PPC64_GOT16_LO_DS 59 -#define R_PPC64_PLT16_LO_DS 60 -#define R_PPC64_SECTOFF_DS 61 -#define R_PPC64_SECTOFF_LO_DS 62 -#define R_PPC64_TOC16_DS 63 -#define R_PPC64_TOC16_LO_DS 64 -#define R_PPC64_PLTGOT16_DS 65 -#define R_PPC64_PLTGOT16_LO_DS 66 - - -#define R_PPC64_TLS 67 -#define R_PPC64_DTPMOD64 68 -#define R_PPC64_TPREL16 69 -#define R_PPC64_TPREL16_LO 70 -#define R_PPC64_TPREL16_HI 71 -#define R_PPC64_TPREL16_HA 72 -#define R_PPC64_TPREL64 73 -#define R_PPC64_DTPREL16 74 -#define R_PPC64_DTPREL16_LO 75 -#define R_PPC64_DTPREL16_HI 76 -#define R_PPC64_DTPREL16_HA 77 -#define R_PPC64_DTPREL64 78 -#define R_PPC64_GOT_TLSGD16 79 -#define R_PPC64_GOT_TLSGD16_LO 80 -#define R_PPC64_GOT_TLSGD16_HI 81 -#define R_PPC64_GOT_TLSGD16_HA 82 -#define R_PPC64_GOT_TLSLD16 83 -#define R_PPC64_GOT_TLSLD16_LO 84 -#define R_PPC64_GOT_TLSLD16_HI 85 -#define R_PPC64_GOT_TLSLD16_HA 86 -#define R_PPC64_GOT_TPREL16_DS 87 -#define R_PPC64_GOT_TPREL16_LO_DS 88 -#define R_PPC64_GOT_TPREL16_HI 89 -#define R_PPC64_GOT_TPREL16_HA 90 -#define R_PPC64_GOT_DTPREL16_DS 91 -#define R_PPC64_GOT_DTPREL16_LO_DS 92 -#define R_PPC64_GOT_DTPREL16_HI 93 -#define R_PPC64_GOT_DTPREL16_HA 94 -#define R_PPC64_TPREL16_DS 95 -#define R_PPC64_TPREL16_LO_DS 96 -#define R_PPC64_TPREL16_HIGHER 97 -#define R_PPC64_TPREL16_HIGHERA 98 -#define R_PPC64_TPREL16_HIGHEST 99 -#define R_PPC64_TPREL16_HIGHESTA 100 -#define R_PPC64_DTPREL16_DS 101 -#define R_PPC64_DTPREL16_LO_DS 102 -#define R_PPC64_DTPREL16_HIGHER 103 -#define R_PPC64_DTPREL16_HIGHERA 104 -#define R_PPC64_DTPREL16_HIGHEST 105 -#define R_PPC64_DTPREL16_HIGHESTA 106 - - -#define R_PPC64_JMP_IREL 247 -#define R_PPC64_IRELATIVE 248 -#define R_PPC64_REL16 249 -#define R_PPC64_REL16_LO 250 -#define R_PPC64_REL16_HI 251 -#define R_PPC64_REL16_HA 252 - - -#define DT_PPC64_GLINK (DT_LOPROC + 0) -#define DT_PPC64_OPD (DT_LOPROC + 1) -#define DT_PPC64_OPDSZ (DT_LOPROC + 2) -#define DT_PPC64_NUM 3 - - - - - -#define EF_ARM_RELEXEC 0x01 -#define EF_ARM_HASENTRY 0x02 -#define EF_ARM_INTERWORK 0x04 -#define EF_ARM_APCS_26 0x08 -#define EF_ARM_APCS_FLOAT 0x10 -#define EF_ARM_PIC 0x20 -#define EF_ARM_ALIGN8 0x40 -#define EF_ARM_NEW_ABI 0x80 -#define EF_ARM_OLD_ABI 0x100 -#define EF_ARM_SOFT_FLOAT 0x200 -#define EF_ARM_VFP_FLOAT 0x400 -#define EF_ARM_MAVERICK_FLOAT 0x800 - -#define EF_ARM_ABI_FLOAT_SOFT 0x200 -#define EF_ARM_ABI_FLOAT_HARD 0x400 - - -#define EF_ARM_SYMSARESORTED 0x04 -#define EF_ARM_DYNSYMSUSESEGIDX 0x08 -#define EF_ARM_MAPSYMSFIRST 0x10 -#define EF_ARM_EABIMASK 0XFF000000 - - -#define EF_ARM_BE8 0x00800000 -#define EF_ARM_LE8 0x00400000 - -#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK) -#define EF_ARM_EABI_UNKNOWN 0x00000000 -#define EF_ARM_EABI_VER1 0x01000000 -#define EF_ARM_EABI_VER2 0x02000000 -#define EF_ARM_EABI_VER3 0x03000000 -#define EF_ARM_EABI_VER4 0x04000000 -#define EF_ARM_EABI_VER5 0x05000000 - - -#define STT_ARM_TFUNC STT_LOPROC -#define STT_ARM_16BIT STT_HIPROC - - -#define SHF_ARM_ENTRYSECT 0x10000000 -#define SHF_ARM_COMDEF 0x80000000 - - - -#define PF_ARM_SB 0x10000000 - -#define PF_ARM_PI 0x20000000 -#define PF_ARM_ABS 0x40000000 - - -#define PT_ARM_EXIDX (PT_LOPROC + 1) - - -#define SHT_ARM_EXIDX (SHT_LOPROC + 1) -#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) -#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) - - -#define R_AARCH64_NONE 0 -#define R_AARCH64_ABS64 257 -#define R_AARCH64_ABS32 258 -#define R_AARCH64_ABS16 259 -#define R_AARCH64_PREL64 260 -#define R_AARCH64_PREL32 261 -#define R_AARCH64_PREL16 262 -#define R_AARCH64_MOVW_UABS_G0 263 -#define R_AARCH64_MOVW_UABS_G0_NC 264 -#define R_AARCH64_MOVW_UABS_G1 265 -#define R_AARCH64_MOVW_UABS_G1_NC 266 -#define R_AARCH64_MOVW_UABS_G2 267 -#define R_AARCH64_MOVW_UABS_G2_NC 268 -#define R_AARCH64_MOVW_UABS_G3 269 -#define R_AARCH64_MOVW_SABS_G0 270 -#define R_AARCH64_MOVW_SABS_G1 271 -#define R_AARCH64_MOVW_SABS_G2 272 -#define R_AARCH64_LD_PREL_LO19 273 -#define R_AARCH64_ADR_PREL_LO21 274 -#define R_AARCH64_ADR_PREL_PG_HI21 275 -#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 -#define R_AARCH64_ADD_ABS_LO12_NC 277 -#define R_AARCH64_LDST8_ABS_LO12_NC 278 -#define R_AARCH64_TSTBR14 279 -#define R_AARCH64_CONDBR19 280 -#define R_AARCH64_JUMP26 282 -#define R_AARCH64_CALL26 283 -#define R_AARCH64_LDST16_ABS_LO12_NC 284 -#define R_AARCH64_LDST32_ABS_LO12_NC 285 -#define R_AARCH64_LDST64_ABS_LO12_NC 286 -#define R_AARCH64_MOVW_PREL_G0 287 -#define R_AARCH64_MOVW_PREL_G0_NC 288 -#define R_AARCH64_MOVW_PREL_G1 289 -#define R_AARCH64_MOVW_PREL_G1_NC 290 -#define R_AARCH64_MOVW_PREL_G2 291 -#define R_AARCH64_MOVW_PREL_G2_NC 292 -#define R_AARCH64_MOVW_PREL_G3 293 -#define R_AARCH64_LDST128_ABS_LO12_NC 299 -#define R_AARCH64_MOVW_GOTOFF_G0 300 -#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 -#define R_AARCH64_MOVW_GOTOFF_G1 302 -#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 -#define R_AARCH64_MOVW_GOTOFF_G2 304 -#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 -#define R_AARCH64_MOVW_GOTOFF_G3 306 -#define R_AARCH64_GOTREL64 307 -#define R_AARCH64_GOTREL32 308 -#define R_AARCH64_GOT_LD_PREL19 309 -#define R_AARCH64_LD64_GOTOFF_LO15 310 -#define R_AARCH64_ADR_GOT_PAGE 311 -#define R_AARCH64_LD64_GOT_LO12_NC 312 -#define R_AARCH64_LD64_GOTPAGE_LO15 313 -#define R_AARCH64_TLSGD_ADR_PREL21 512 -#define R_AARCH64_TLSGD_ADR_PAGE21 513 -#define R_AARCH64_TLSGD_ADD_LO12_NC 514 -#define R_AARCH64_TLSGD_MOVW_G1 515 -#define R_AARCH64_TLSGD_MOVW_G0_NC 516 -#define R_AARCH64_TLSLD_ADR_PREL21 517 -#define R_AARCH64_TLSLD_ADR_PAGE21 518 -#define R_AARCH64_TLSLD_ADD_LO12_NC 519 -#define R_AARCH64_TLSLD_MOVW_G1 520 -#define R_AARCH64_TLSLD_MOVW_G0_NC 521 -#define R_AARCH64_TLSLD_LD_PREL19 522 -#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 -#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 -#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 -#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 -#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 -#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 -#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 -#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 -#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 -#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 -#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 -#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 -#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 -#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 -#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 -#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 -#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 -#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 -#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 -#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 -#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 -#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 -#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 -#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 -#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 -#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 -#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 -#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 -#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 -#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 -#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 -#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 -#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 -#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 -#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 -#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 -#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 -#define R_AARCH64_TLSDESC_LD_PREL19 560 -#define R_AARCH64_TLSDESC_ADR_PREL21 561 -#define R_AARCH64_TLSDESC_ADR_PAGE21 562 -#define R_AARCH64_TLSDESC_LD64_LO12 563 -#define R_AARCH64_TLSDESC_ADD_LO12 564 -#define R_AARCH64_TLSDESC_OFF_G1 565 -#define R_AARCH64_TLSDESC_OFF_G0_NC 566 -#define R_AARCH64_TLSDESC_LDR 567 -#define R_AARCH64_TLSDESC_ADD 568 -#define R_AARCH64_TLSDESC_CALL 569 -#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 -#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 -#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 -#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 -#define R_AARCH64_COPY 1024 -#define R_AARCH64_GLOB_DAT 1025 -#define R_AARCH64_JUMP_SLOT 1026 -#define R_AARCH64_RELATIVE 1027 -#define R_AARCH64_TLS_DTPMOD64 1028 -#define R_AARCH64_TLS_DTPREL64 1029 -#define R_AARCH64_TLS_TPREL64 1030 -#define R_AARCH64_TLSDESC 1031 - - -#define R_ARM_NONE 0 -#define R_ARM_PC24 1 -#define R_ARM_ABS32 2 -#define R_ARM_REL32 3 -#define R_ARM_PC13 4 -#define R_ARM_ABS16 5 -#define R_ARM_ABS12 6 -#define R_ARM_THM_ABS5 7 -#define R_ARM_ABS8 8 -#define R_ARM_SBREL32 9 -#define R_ARM_THM_PC22 10 -#define R_ARM_THM_PC8 11 -#define R_ARM_AMP_VCALL9 12 -#define R_ARM_TLS_DESC 13 -#define R_ARM_THM_SWI8 14 -#define R_ARM_XPC25 15 -#define R_ARM_THM_XPC22 16 -#define R_ARM_TLS_DTPMOD32 17 -#define R_ARM_TLS_DTPOFF32 18 -#define R_ARM_TLS_TPOFF32 19 -#define R_ARM_COPY 20 -#define R_ARM_GLOB_DAT 21 -#define R_ARM_JUMP_SLOT 22 -#define R_ARM_RELATIVE 23 -#define R_ARM_GOTOFF 24 -#define R_ARM_GOTPC 25 -#define R_ARM_GOT32 26 -#define R_ARM_PLT32 27 -#define R_ARM_CALL 28 -#define R_ARM_JUMP24 29 -#define R_ARM_THM_JUMP24 30 -#define R_ARM_BASE_ABS 31 -#define R_ARM_ALU_PCREL_7_0 32 -#define R_ARM_ALU_PCREL_15_8 33 -#define R_ARM_ALU_PCREL_23_15 34 -#define R_ARM_LDR_SBREL_11_0 35 -#define R_ARM_ALU_SBREL_19_12 36 -#define R_ARM_ALU_SBREL_27_20 37 -#define R_ARM_TARGET1 38 -#define R_ARM_SBREL31 39 -#define R_ARM_V4BX 40 -#define R_ARM_TARGET2 41 -#define R_ARM_PREL31 42 -#define R_ARM_MOVW_ABS_NC 43 -#define R_ARM_MOVT_ABS 44 -#define R_ARM_MOVW_PREL_NC 45 -#define R_ARM_MOVT_PREL 46 -#define R_ARM_THM_MOVW_ABS_NC 47 -#define R_ARM_THM_MOVT_ABS 48 -#define R_ARM_THM_MOVW_PREL_NC 49 -#define R_ARM_THM_MOVT_PREL 50 -#define R_ARM_THM_JUMP19 51 -#define R_ARM_THM_JUMP6 52 -#define R_ARM_THM_ALU_PREL_11_0 53 -#define R_ARM_THM_PC12 54 -#define R_ARM_ABS32_NOI 55 -#define R_ARM_REL32_NOI 56 -#define R_ARM_ALU_PC_G0_NC 57 -#define R_ARM_ALU_PC_G0 58 -#define R_ARM_ALU_PC_G1_NC 59 -#define R_ARM_ALU_PC_G1 60 -#define R_ARM_ALU_PC_G2 61 -#define R_ARM_LDR_PC_G1 62 -#define R_ARM_LDR_PC_G2 63 -#define R_ARM_LDRS_PC_G0 64 -#define R_ARM_LDRS_PC_G1 65 -#define R_ARM_LDRS_PC_G2 66 -#define R_ARM_LDC_PC_G0 67 -#define R_ARM_LDC_PC_G1 68 -#define R_ARM_LDC_PC_G2 69 -#define R_ARM_ALU_SB_G0_NC 70 -#define R_ARM_ALU_SB_G0 71 -#define R_ARM_ALU_SB_G1_NC 72 -#define R_ARM_ALU_SB_G1 73 -#define R_ARM_ALU_SB_G2 74 -#define R_ARM_LDR_SB_G0 75 -#define R_ARM_LDR_SB_G1 76 -#define R_ARM_LDR_SB_G2 77 -#define R_ARM_LDRS_SB_G0 78 -#define R_ARM_LDRS_SB_G1 79 -#define R_ARM_LDRS_SB_G2 80 -#define R_ARM_LDC_SB_G0 81 -#define R_ARM_LDC_SB_G1 82 -#define R_ARM_LDC_SB_G2 83 -#define R_ARM_MOVW_BREL_NC 84 -#define R_ARM_MOVT_BREL 85 -#define R_ARM_MOVW_BREL 86 -#define R_ARM_THM_MOVW_BREL_NC 87 -#define R_ARM_THM_MOVT_BREL 88 -#define R_ARM_THM_MOVW_BREL 89 -#define R_ARM_TLS_GOTDESC 90 -#define R_ARM_TLS_CALL 91 -#define R_ARM_TLS_DESCSEQ 92 -#define R_ARM_THM_TLS_CALL 93 -#define R_ARM_PLT32_ABS 94 -#define R_ARM_GOT_ABS 95 -#define R_ARM_GOT_PREL 96 -#define R_ARM_GOT_BREL12 97 -#define R_ARM_GOTOFF12 98 -#define R_ARM_GOTRELAX 99 -#define R_ARM_GNU_VTENTRY 100 -#define R_ARM_GNU_VTINHERIT 101 -#define R_ARM_THM_PC11 102 -#define R_ARM_THM_PC9 103 -#define R_ARM_TLS_GD32 104 - -#define R_ARM_TLS_LDM32 105 - -#define R_ARM_TLS_LDO32 106 - -#define R_ARM_TLS_IE32 107 - -#define R_ARM_TLS_LE32 108 -#define R_ARM_TLS_LDO12 109 -#define R_ARM_TLS_LE12 110 -#define R_ARM_TLS_IE12GP 111 -#define R_ARM_ME_TOO 128 -#define R_ARM_THM_TLS_DESCSEQ 129 -#define R_ARM_THM_TLS_DESCSEQ16 129 -#define R_ARM_THM_TLS_DESCSEQ32 130 -#define R_ARM_THM_GOT_BREL12 131 -#define R_ARM_IRELATIVE 160 -#define R_ARM_RXPC25 249 -#define R_ARM_RSBREL32 250 -#define R_ARM_THM_RPC22 251 -#define R_ARM_RREL32 252 -#define R_ARM_RABS22 253 -#define R_ARM_RPC24 254 -#define R_ARM_RBASE 255 - -#define R_ARM_NUM 256 - - - - -#define EF_IA_64_MASKOS 0x0000000f -#define EF_IA_64_ABI64 0x00000010 -#define EF_IA_64_ARCH 0xff000000 - - -#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) -#define PT_IA_64_UNWIND (PT_LOPROC + 1) -#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12) -#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13) -#define PT_IA_64_HP_STACK (PT_LOOS + 0x14) - - -#define PF_IA_64_NORECOV 0x80000000 - - -#define SHT_IA_64_EXT (SHT_LOPROC + 0) -#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) - - -#define SHF_IA_64_SHORT 0x10000000 -#define SHF_IA_64_NORECOV 0x20000000 - - -#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0) -#define DT_IA_64_NUM 1 - - -#define R_IA64_NONE 0x00 -#define R_IA64_IMM14 0x21 -#define R_IA64_IMM22 0x22 -#define R_IA64_IMM64 0x23 -#define R_IA64_DIR32MSB 0x24 -#define R_IA64_DIR32LSB 0x25 -#define R_IA64_DIR64MSB 0x26 -#define R_IA64_DIR64LSB 0x27 -#define R_IA64_GPREL22 0x2a -#define R_IA64_GPREL64I 0x2b -#define R_IA64_GPREL32MSB 0x2c -#define R_IA64_GPREL32LSB 0x2d -#define R_IA64_GPREL64MSB 0x2e -#define R_IA64_GPREL64LSB 0x2f -#define R_IA64_LTOFF22 0x32 -#define R_IA64_LTOFF64I 0x33 -#define R_IA64_PLTOFF22 0x3a -#define R_IA64_PLTOFF64I 0x3b -#define R_IA64_PLTOFF64MSB 0x3e -#define R_IA64_PLTOFF64LSB 0x3f -#define R_IA64_FPTR64I 0x43 -#define R_IA64_FPTR32MSB 0x44 -#define R_IA64_FPTR32LSB 0x45 -#define R_IA64_FPTR64MSB 0x46 -#define R_IA64_FPTR64LSB 0x47 -#define R_IA64_PCREL60B 0x48 -#define R_IA64_PCREL21B 0x49 -#define R_IA64_PCREL21M 0x4a -#define R_IA64_PCREL21F 0x4b -#define R_IA64_PCREL32MSB 0x4c -#define R_IA64_PCREL32LSB 0x4d -#define R_IA64_PCREL64MSB 0x4e -#define R_IA64_PCREL64LSB 0x4f -#define R_IA64_LTOFF_FPTR22 0x52 -#define R_IA64_LTOFF_FPTR64I 0x53 -#define R_IA64_LTOFF_FPTR32MSB 0x54 -#define R_IA64_LTOFF_FPTR32LSB 0x55 -#define R_IA64_LTOFF_FPTR64MSB 0x56 -#define R_IA64_LTOFF_FPTR64LSB 0x57 -#define R_IA64_SEGREL32MSB 0x5c -#define R_IA64_SEGREL32LSB 0x5d -#define R_IA64_SEGREL64MSB 0x5e -#define R_IA64_SEGREL64LSB 0x5f -#define R_IA64_SECREL32MSB 0x64 -#define R_IA64_SECREL32LSB 0x65 -#define R_IA64_SECREL64MSB 0x66 -#define R_IA64_SECREL64LSB 0x67 -#define R_IA64_REL32MSB 0x6c -#define R_IA64_REL32LSB 0x6d -#define R_IA64_REL64MSB 0x6e -#define R_IA64_REL64LSB 0x6f -#define R_IA64_LTV32MSB 0x74 -#define R_IA64_LTV32LSB 0x75 -#define R_IA64_LTV64MSB 0x76 -#define R_IA64_LTV64LSB 0x77 -#define R_IA64_PCREL21BI 0x79 -#define R_IA64_PCREL22 0x7a -#define R_IA64_PCREL64I 0x7b -#define R_IA64_IPLTMSB 0x80 -#define R_IA64_IPLTLSB 0x81 -#define R_IA64_COPY 0x84 -#define R_IA64_SUB 0x85 -#define R_IA64_LTOFF22X 0x86 -#define R_IA64_LDXMOV 0x87 -#define R_IA64_TPREL14 0x91 -#define R_IA64_TPREL22 0x92 -#define R_IA64_TPREL64I 0x93 -#define R_IA64_TPREL64MSB 0x96 -#define R_IA64_TPREL64LSB 0x97 -#define R_IA64_LTOFF_TPREL22 0x9a -#define R_IA64_DTPMOD64MSB 0xa6 -#define R_IA64_DTPMOD64LSB 0xa7 -#define R_IA64_LTOFF_DTPMOD22 0xaa -#define R_IA64_DTPREL14 0xb1 -#define R_IA64_DTPREL22 0xb2 -#define R_IA64_DTPREL64I 0xb3 -#define R_IA64_DTPREL32MSB 0xb4 -#define R_IA64_DTPREL32LSB 0xb5 -#define R_IA64_DTPREL64MSB 0xb6 -#define R_IA64_DTPREL64LSB 0xb7 -#define R_IA64_LTOFF_DTPREL22 0xba - - - - -#define R_SH_NONE 0 -#define R_SH_DIR32 1 -#define R_SH_REL32 2 -#define R_SH_DIR8WPN 3 -#define R_SH_IND12W 4 -#define R_SH_DIR8WPL 5 -#define R_SH_DIR8WPZ 6 -#define R_SH_DIR8BP 7 -#define R_SH_DIR8W 8 -#define R_SH_DIR8L 9 -#define R_SH_SWITCH16 25 -#define R_SH_SWITCH32 26 -#define R_SH_USES 27 -#define R_SH_COUNT 28 -#define R_SH_ALIGN 29 -#define R_SH_CODE 30 -#define R_SH_DATA 31 -#define R_SH_LABEL 32 -#define R_SH_SWITCH8 33 -#define R_SH_GNU_VTINHERIT 34 -#define R_SH_GNU_VTENTRY 35 -#define R_SH_TLS_GD_32 144 -#define R_SH_TLS_LD_32 145 -#define R_SH_TLS_LDO_32 146 -#define R_SH_TLS_IE_32 147 -#define R_SH_TLS_LE_32 148 -#define R_SH_TLS_DTPMOD32 149 -#define R_SH_TLS_DTPOFF32 150 -#define R_SH_TLS_TPOFF32 151 -#define R_SH_GOT32 160 -#define R_SH_PLT32 161 -#define R_SH_COPY 162 -#define R_SH_GLOB_DAT 163 -#define R_SH_JMP_SLOT 164 -#define R_SH_RELATIVE 165 -#define R_SH_GOTOFF 166 -#define R_SH_GOTPC 167 -#define R_SH_GOT20 201 -#define R_SH_GOTOFF20 202 -#define R_SH_GOTFUNCDESC 203 -#define R_SH_GOTFUNCDEST20 204 -#define R_SH_GOTOFFFUNCDESC 205 -#define R_SH_GOTOFFFUNCDEST20 206 -#define R_SH_FUNCDESC 207 -#define R_SH_FUNCDESC_VALUE 208 - -#define R_SH_NUM 256 - - - -#define R_390_NONE 0 -#define R_390_8 1 -#define R_390_12 2 -#define R_390_16 3 -#define R_390_32 4 -#define R_390_PC32 5 -#define R_390_GOT12 6 -#define R_390_GOT32 7 -#define R_390_PLT32 8 -#define R_390_COPY 9 -#define R_390_GLOB_DAT 10 -#define R_390_JMP_SLOT 11 -#define R_390_RELATIVE 12 -#define R_390_GOTOFF32 13 -#define R_390_GOTPC 14 -#define R_390_GOT16 15 -#define R_390_PC16 16 -#define R_390_PC16DBL 17 -#define R_390_PLT16DBL 18 -#define R_390_PC32DBL 19 -#define R_390_PLT32DBL 20 -#define R_390_GOTPCDBL 21 -#define R_390_64 22 -#define R_390_PC64 23 -#define R_390_GOT64 24 -#define R_390_PLT64 25 -#define R_390_GOTENT 26 -#define R_390_GOTOFF16 27 -#define R_390_GOTOFF64 28 -#define R_390_GOTPLT12 29 -#define R_390_GOTPLT16 30 -#define R_390_GOTPLT32 31 -#define R_390_GOTPLT64 32 -#define R_390_GOTPLTENT 33 -#define R_390_PLTOFF16 34 -#define R_390_PLTOFF32 35 -#define R_390_PLTOFF64 36 -#define R_390_TLS_LOAD 37 -#define R_390_TLS_GDCALL 38 - -#define R_390_TLS_LDCALL 39 - -#define R_390_TLS_GD32 40 - -#define R_390_TLS_GD64 41 - -#define R_390_TLS_GOTIE12 42 - -#define R_390_TLS_GOTIE32 43 - -#define R_390_TLS_GOTIE64 44 - -#define R_390_TLS_LDM32 45 - -#define R_390_TLS_LDM64 46 - -#define R_390_TLS_IE32 47 - -#define R_390_TLS_IE64 48 - -#define R_390_TLS_IEENT 49 - -#define R_390_TLS_LE32 50 - -#define R_390_TLS_LE64 51 - -#define R_390_TLS_LDO32 52 - -#define R_390_TLS_LDO64 53 - -#define R_390_TLS_DTPMOD 54 -#define R_390_TLS_DTPOFF 55 -#define R_390_TLS_TPOFF 56 - -#define R_390_20 57 -#define R_390_GOT20 58 -#define R_390_GOTPLT20 59 -#define R_390_TLS_GOTIE20 60 - - -#define R_390_NUM 61 - - - -#define R_CRIS_NONE 0 -#define R_CRIS_8 1 -#define R_CRIS_16 2 -#define R_CRIS_32 3 -#define R_CRIS_8_PCREL 4 -#define R_CRIS_16_PCREL 5 -#define R_CRIS_32_PCREL 6 -#define R_CRIS_GNU_VTINHERIT 7 -#define R_CRIS_GNU_VTENTRY 8 -#define R_CRIS_COPY 9 -#define R_CRIS_GLOB_DAT 10 -#define R_CRIS_JUMP_SLOT 11 -#define R_CRIS_RELATIVE 12 -#define R_CRIS_16_GOT 13 -#define R_CRIS_32_GOT 14 -#define R_CRIS_16_GOTPLT 15 -#define R_CRIS_32_GOTPLT 16 -#define R_CRIS_32_GOTREL 17 -#define R_CRIS_32_PLT_GOTREL 18 -#define R_CRIS_32_PLT_PCREL 19 - -#define R_CRIS_NUM 20 - - - -#define R_X86_64_NONE 0 -#define R_X86_64_64 1 -#define R_X86_64_PC32 2 -#define R_X86_64_GOT32 3 -#define R_X86_64_PLT32 4 -#define R_X86_64_COPY 5 -#define R_X86_64_GLOB_DAT 6 -#define R_X86_64_JUMP_SLOT 7 -#define R_X86_64_RELATIVE 8 -#define R_X86_64_GOTPCREL 9 - -#define R_X86_64_32 10 -#define R_X86_64_32S 11 -#define R_X86_64_16 12 -#define R_X86_64_PC16 13 -#define R_X86_64_8 14 -#define R_X86_64_PC8 15 -#define R_X86_64_DTPMOD64 16 -#define R_X86_64_DTPOFF64 17 -#define R_X86_64_TPOFF64 18 -#define R_X86_64_TLSGD 19 - -#define R_X86_64_TLSLD 20 - -#define R_X86_64_DTPOFF32 21 -#define R_X86_64_GOTTPOFF 22 - -#define R_X86_64_TPOFF32 23 -#define R_X86_64_PC64 24 -#define R_X86_64_GOTOFF64 25 -#define R_X86_64_GOTPC32 26 -#define R_X86_64_GOT64 27 -#define R_X86_64_GOTPCREL64 28 -#define R_X86_64_GOTPC64 29 -#define R_X86_64_GOTPLT64 30 -#define R_X86_64_PLTOFF64 31 -#define R_X86_64_SIZE32 32 -#define R_X86_64_SIZE64 33 - -#define R_X86_64_GOTPC32_TLSDESC 34 -#define R_X86_64_TLSDESC_CALL 35 - -#define R_X86_64_TLSDESC 36 -#define R_X86_64_IRELATIVE 37 -#define R_X86_64_RELATIVE64 38 -#define R_X86_64_NUM 39 - - - -#define R_MN10300_NONE 0 -#define R_MN10300_32 1 -#define R_MN10300_16 2 -#define R_MN10300_8 3 -#define R_MN10300_PCREL32 4 -#define R_MN10300_PCREL16 5 -#define R_MN10300_PCREL8 6 -#define R_MN10300_GNU_VTINHERIT 7 -#define R_MN10300_GNU_VTENTRY 8 -#define R_MN10300_24 9 -#define R_MN10300_GOTPC32 10 -#define R_MN10300_GOTPC16 11 -#define R_MN10300_GOTOFF32 12 -#define R_MN10300_GOTOFF24 13 -#define R_MN10300_GOTOFF16 14 -#define R_MN10300_PLT32 15 -#define R_MN10300_PLT16 16 -#define R_MN10300_GOT32 17 -#define R_MN10300_GOT24 18 -#define R_MN10300_GOT16 19 -#define R_MN10300_COPY 20 -#define R_MN10300_GLOB_DAT 21 -#define R_MN10300_JMP_SLOT 22 -#define R_MN10300_RELATIVE 23 - -#define R_MN10300_NUM 24 - - - -#define R_M32R_NONE 0 -#define R_M32R_16 1 -#define R_M32R_32 2 -#define R_M32R_24 3 -#define R_M32R_10_PCREL 4 -#define R_M32R_18_PCREL 5 -#define R_M32R_26_PCREL 6 -#define R_M32R_HI16_ULO 7 -#define R_M32R_HI16_SLO 8 -#define R_M32R_LO16 9 -#define R_M32R_SDA16 10 -#define R_M32R_GNU_VTINHERIT 11 -#define R_M32R_GNU_VTENTRY 12 - -#define R_M32R_16_RELA 33 -#define R_M32R_32_RELA 34 -#define R_M32R_24_RELA 35 -#define R_M32R_10_PCREL_RELA 36 -#define R_M32R_18_PCREL_RELA 37 -#define R_M32R_26_PCREL_RELA 38 -#define R_M32R_HI16_ULO_RELA 39 -#define R_M32R_HI16_SLO_RELA 40 -#define R_M32R_LO16_RELA 41 -#define R_M32R_SDA16_RELA 42 -#define R_M32R_RELA_GNU_VTINHERIT 43 -#define R_M32R_RELA_GNU_VTENTRY 44 -#define R_M32R_REL32 45 - -#define R_M32R_GOT24 48 -#define R_M32R_26_PLTREL 49 -#define R_M32R_COPY 50 -#define R_M32R_GLOB_DAT 51 -#define R_M32R_JMP_SLOT 52 -#define R_M32R_RELATIVE 53 -#define R_M32R_GOTOFF 54 -#define R_M32R_GOTPC24 55 -#define R_M32R_GOT16_HI_ULO 56 - -#define R_M32R_GOT16_HI_SLO 57 - -#define R_M32R_GOT16_LO 58 -#define R_M32R_GOTPC_HI_ULO 59 - -#define R_M32R_GOTPC_HI_SLO 60 - -#define R_M32R_GOTPC_LO 61 - -#define R_M32R_GOTOFF_HI_ULO 62 - -#define R_M32R_GOTOFF_HI_SLO 63 - -#define R_M32R_GOTOFF_LO 64 -#define R_M32R_NUM 256 - -#define R_MICROBLAZE_NONE 0 -#define R_MICROBLAZE_32 1 -#define R_MICROBLAZE_32_PCREL 2 -#define R_MICROBLAZE_64_PCREL 3 -#define R_MICROBLAZE_32_PCREL_LO 4 -#define R_MICROBLAZE_64 5 -#define R_MICROBLAZE_32_LO 6 -#define R_MICROBLAZE_SRO32 7 -#define R_MICROBLAZE_SRW32 8 -#define R_MICROBLAZE_64_NONE 9 -#define R_MICROBLAZE_32_SYM_OP_SYM 10 -#define R_MICROBLAZE_GNU_VTINHERIT 11 -#define R_MICROBLAZE_GNU_VTENTRY 12 -#define R_MICROBLAZE_GOTPC_64 13 -#define R_MICROBLAZE_GOT_64 14 -#define R_MICROBLAZE_PLT_64 15 -#define R_MICROBLAZE_REL 16 -#define R_MICROBLAZE_JUMP_SLOT 17 -#define R_MICROBLAZE_GLOB_DAT 18 -#define R_MICROBLAZE_GOTOFF_64 19 -#define R_MICROBLAZE_GOTOFF_32 20 -#define R_MICROBLAZE_COPY 21 -#define R_MICROBLAZE_TLS 22 -#define R_MICROBLAZE_TLSGD 23 -#define R_MICROBLAZE_TLSLD 24 -#define R_MICROBLAZE_TLSDTPMOD32 25 -#define R_MICROBLAZE_TLSDTPREL32 26 -#define R_MICROBLAZE_TLSDTPREL64 27 -#define R_MICROBLAZE_TLSGOTTPREL32 28 -#define R_MICROBLAZE_TLSTPREL32 29 - -#define R_OR1K_NONE 0 -#define R_OR1K_32 1 -#define R_OR1K_16 2 -#define R_OR1K_8 3 -#define R_OR1K_LO_16_IN_INSN 4 -#define R_OR1K_HI_16_IN_INSN 5 -#define R_OR1K_INSN_REL_26 6 -#define R_OR1K_GNU_VTENTRY 7 -#define R_OR1K_GNU_VTINHERIT 8 -#define R_OR1K_32_PCREL 9 -#define R_OR1K_16_PCREL 10 -#define R_OR1K_8_PCREL 11 -#define R_OR1K_GOTPC_HI16 12 -#define R_OR1K_GOTPC_LO16 13 -#define R_OR1K_GOT16 14 -#define R_OR1K_PLT26 15 -#define R_OR1K_GOTOFF_HI16 16 -#define R_OR1K_GOTOFF_LO16 17 -#define R_OR1K_COPY 18 -#define R_OR1K_GLOB_DAT 19 -#define R_OR1K_JMP_SLOT 20 -#define R_OR1K_RELATIVE 21 -#define R_OR1K_TLS_GD_HI16 22 -#define R_OR1K_TLS_GD_LO16 23 -#define R_OR1K_TLS_LDM_HI16 24 -#define R_OR1K_TLS_LDM_LO16 25 -#define R_OR1K_TLS_LDO_HI16 26 -#define R_OR1K_TLS_LDO_LO16 27 -#define R_OR1K_TLS_IE_HI16 28 -#define R_OR1K_TLS_IE_LO16 29 -#define R_OR1K_TLS_LE_HI16 30 -#define R_OR1K_TLS_LE_LO16 31 -#define R_OR1K_TLS_TPOFF 32 -#define R_OR1K_TLS_DTPOFF 33 -#define R_OR1K_TLS_DTPMOD 34 - -#ifdef __cplusplus -} -#endif - - -#endif diff --git a/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc b/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc index 84953172ea12..c8ade33a404d 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/linux/dump_syms/dump_syms.cc @@ -27,9 +27,7 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#include #include -#include #include #include @@ -39,53 +37,37 @@ #include "common/linux/dump_symbols.h" using google_breakpad::WriteSymbolFile; -using google_breakpad::WriteSymbolFileHeader; int usage(const char* self) { fprintf(stderr, "Usage: %s [OPTION] " "[directories-for-debug-file]\n\n", self); fprintf(stderr, "Options:\n"); - fprintf(stderr, " -i: Output module header information only.\n"); fprintf(stderr, " -c Do not generate CFI section\n"); fprintf(stderr, " -r Do not handle inter-compilation unit references\n"); - fprintf(stderr, " -v Print all warnings to stderr\n"); return 1; } int main(int argc, char **argv) { if (argc < 2) return usage(argv[0]); - bool header_only = false; + bool cfi = true; bool handle_inter_cu_refs = true; - bool log_to_stderr = false; int arg_index = 1; while (arg_index < argc && strlen(argv[arg_index]) > 0 && argv[arg_index][0] == '-') { - if (strcmp("-i", argv[arg_index]) == 0) { - header_only = true; - } else if (strcmp("-c", argv[arg_index]) == 0) { + if (strcmp("-c", argv[arg_index]) == 0) { cfi = false; } else if (strcmp("-r", argv[arg_index]) == 0) { handle_inter_cu_refs = false; - } else if (strcmp("-v", argv[arg_index]) == 0) { - log_to_stderr = true; } else { - printf("2.4 %s\n", argv[arg_index]); return usage(argv[0]); } ++arg_index; } if (arg_index == argc) return usage(argv[0]); - // Save stderr so it can be used below. - FILE* saved_stderr = fdopen(dup(fileno(stderr)), "w"); - if (!log_to_stderr) { - if (freopen(_PATH_DEVNULL, "w", stderr)) { - // If it fails, not a lot we can (or should) do. - // Add this brace section to silence gcc warnings. - } - } + const char* binary; std::vector debug_dirs; binary = argv[arg_index]; @@ -95,18 +77,11 @@ int main(int argc, char **argv) { debug_dirs.push_back(argv[debug_dir_index]); } - if (header_only) { - if (!WriteSymbolFileHeader(binary, std::cout)) { - fprintf(saved_stderr, "Failed to process file.\n"); - return 1; - } - } else { - SymbolData symbol_data = cfi ? ALL_SYMBOL_DATA : NO_CFI; - google_breakpad::DumpOptions options(symbol_data, handle_inter_cu_refs); - if (!WriteSymbolFile(binary, debug_dirs, options, std::cout)) { - fprintf(saved_stderr, "Failed to write symbol file.\n"); - return 1; - } + SymbolData symbol_data = cfi ? ALL_SYMBOL_DATA : NO_CFI; + google_breakpad::DumpOptions options(symbol_data, handle_inter_cu_refs); + if (!WriteSymbolFile(binary, debug_dirs, options, std::cout)) { + fprintf(stderr, "Failed to write symbol file.\n"); + return 1; } return 0; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc b/toolkit/crashreporter/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc index 6f637845ee76..8e9cd1291a0d 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/linux/md2core/minidump-2-core.cc @@ -35,6 +35,7 @@ #include #include +#include #include #include #include @@ -49,8 +50,6 @@ #include "common/linux/memory_mapped_file.h" #include "common/minidump_type_helper.h" #include "common/scoped_ptr.h" -#include "common/using_std_string.h" -#include "google_breakpad/common/breakpad_types.h" #include "google_breakpad/common/minidump_format.h" #include "third_party/lss/linux_syscall_support.h" #include "tools/linux/md2core/minidump_memory_range.h" @@ -98,7 +97,7 @@ typedef MDTypeHelper::MDRawLinkMap MDRawLinkMap; static const MDRVA kInvalidMDRVA = static_cast(-1); static bool verbose; -static string g_custom_so_basedir; +static std::string g_custom_so_basedir; static int usage(const char* argv0) { fprintf(stderr, "Usage: %s [-v] \n", argv0); @@ -204,8 +203,8 @@ struct CrashedProcess { uint32_t permissions; uint64_t start_address, end_address, offset; - string filename; - string data; + std::string filename; + std::string data; }; std::map mappings; @@ -239,9 +238,9 @@ struct CrashedProcess { prpsinfo prps; - std::map signatures; + std::map signatures; - string dynamic_data; + std::string dynamic_data; MDRawDebug debug; std::vector link_map; }; @@ -495,21 +494,11 @@ ParseSystemInfo(CrashedProcess* crashinfo, const MinidumpMemoryRange& range, _exit(1); } #elif defined(__mips__) -# if _MIPS_SIM == _ABIO32 if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_MIPS) { fprintf(stderr, - "This version of minidump-2-core only supports mips o32 (32bit).\n"); + "This version of minidump-2-core only supports mips (32bit).\n"); _exit(1); } -# elif _MIPS_SIM == _ABI64 - if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_MIPS64) { - fprintf(stderr, - "This version of minidump-2-core only supports mips n64 (64bit).\n"); - _exit(1); - } -# else -# error "This mips ABI is currently not supported (n32)" -# endif #else #error "This code has not been ported to your platform yet" #endif @@ -536,8 +525,6 @@ ParseSystemInfo(CrashedProcess* crashinfo, const MinidumpMemoryRange& range, ? "ARM" : sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_MIPS ? "MIPS" - : sysinfo->processor_architecture == MD_CPU_ARCHITECTURE_MIPS64 - ? "MIPS64" : "???", sysinfo->number_of_processors, sysinfo->processor_level, @@ -598,8 +585,8 @@ ParseMaps(CrashedProcess* crashinfo, const MinidumpMemoryRange& range) { ptr < range.data() + range.length();) { const uint8_t* eol = (uint8_t*)memchr(ptr, '\n', range.data() + range.length() - ptr); - string line((const char*)ptr, - eol ? eol - ptr : range.data() + range.length() - ptr); + std::string line((const char*)ptr, + eol ? eol - ptr : range.data() + range.length() - ptr); ptr = eol ? eol + 1 : range.data() + range.length(); unsigned long long start, stop, offset; char* permissions = NULL; @@ -876,17 +863,17 @@ ParseModuleStream(CrashedProcess* crashinfo, const MinidumpMemoryRange& range, record->signature.data4[2], record->signature.data4[3], record->signature.data4[4], record->signature.data4[5], record->signature.data4[6], record->signature.data4[7]); - string filename = + std::string filename = full_file.GetAsciiMDString(rawmodule->module_name_rva); size_t slash = filename.find_last_of('/'); - string basename = slash == string::npos ? - filename : filename.substr(slash + 1); + std::string basename = slash == std::string::npos ? + filename : filename.substr(slash + 1); if (strcmp(guid, "00000000-0000-0000-0000-000000000000")) { - string prefix; + std::string prefix; if (!g_custom_so_basedir.empty()) prefix = g_custom_so_basedir; else - prefix = string("/var/lib/breakpad/") + guid + "-" + basename; + prefix = std::string("/var/lib/breakpad/") + guid + "-" + basename; crashinfo->signatures[rawmodule->base_of_image] = prefix + basename; } @@ -905,7 +892,7 @@ ParseModuleStream(CrashedProcess* crashinfo, const MinidumpMemoryRange& range, } static void -AddDataToMapping(CrashedProcess* crashinfo, const string& data, +AddDataToMapping(CrashedProcess* crashinfo, const std::string& data, uintptr_t addr) { for (std::map::iterator iter = crashinfo->mappings.begin(); @@ -961,7 +948,7 @@ AugmentMappings(CrashedProcess* crashinfo, for (unsigned i = 0; i < crashinfo->threads.size(); ++i) { const CrashedProcess::Thread& thread = crashinfo->threads[i]; AddDataToMapping(crashinfo, - string((char *)thread.stack, thread.stack_length), + std::string((char *)thread.stack, thread.stack_length), thread.stack_addr); } @@ -969,7 +956,7 @@ AugmentMappings(CrashedProcess* crashinfo, // the beginning of the address space, as this area should always be // available. static const uintptr_t start_addr = 4096; - string data; + std::string data; struct r_debug debug = { 0 }; debug.r_version = crashinfo->debug.version; debug.r_brk = (ElfW(Addr))crashinfo->debug.brk; @@ -989,11 +976,11 @@ AugmentMappings(CrashedProcess* crashinfo, link_map.l_ld = (ElfW(Dyn)*)iter->ld; link_map.l_prev = prev; prev = (struct link_map*)(start_addr + data.size()); - string filename = full_file.GetAsciiMDString(iter->name); + std::string filename = full_file.GetAsciiMDString(iter->name); // Look up signature for this filename. If available, change filename // to point to GUID, instead. - std::map::const_iterator guid = + std::map::const_iterator guid = crashinfo->signatures.find((uintptr_t)iter->addr); if (guid != crashinfo->signatures.end()) { filename = guid->second; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/linux/symupload/sym_upload.cc b/toolkit/crashreporter/google-breakpad/src/tools/linux/symupload/sym_upload.cc index 9eeb2d447e32..2f9a73c39f8b 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/linux/symupload/sym_upload.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/linux/symupload/sym_upload.cc @@ -39,13 +39,138 @@ // cpu: the CPU that the module was built for // symbol_file: the contents of the breakpad-format symbol file +#include #include #include #include -#include "common/linux/symbol_upload.h" +#include +#include +#include +#include -using google_breakpad::sym_upload::Options; +#include "common/linux/http_upload.h" +#include "common/using_std_string.h" + +using google_breakpad::HTTPUpload; + +typedef struct { + string symbolsPath; + string uploadURLStr; + string proxy; + string proxy_user_pwd; + string version; + bool success; +} Options; + +static void TokenizeByChar(const string &source_string, + int c, std::vector *results) { + assert(results); + string::size_type cur_pos = 0, next_pos = 0; + while ((next_pos = source_string.find(c, cur_pos)) != string::npos) { + if (next_pos != cur_pos) + results->push_back(source_string.substr(cur_pos, next_pos - cur_pos)); + cur_pos = next_pos + 1; + } + if (cur_pos < source_string.size() && next_pos != cur_pos) + results->push_back(source_string.substr(cur_pos)); +} + +//============================================================================= +// Parse out the module line which have 5 parts. +// MODULE +static bool ModuleDataForSymbolFile(const string &file, + std::vector *module_parts) { + assert(module_parts); + const size_t kModulePartNumber = 5; + FILE* fp = fopen(file.c_str(), "r"); + if (fp) { + char buffer[1024]; + if (fgets(buffer, sizeof(buffer), fp)) { + string line(buffer); + string::size_type line_break_pos = line.find_first_of('\n'); + if (line_break_pos == string::npos) { + assert(0 && "The file is invalid!"); + fclose(fp); + return false; + } + line.resize(line_break_pos); + const char kDelimiter = ' '; + TokenizeByChar(line, kDelimiter, module_parts); + if (module_parts->size() != kModulePartNumber) + module_parts->clear(); + } + fclose(fp); + } + + return module_parts->size() == kModulePartNumber; +} + +//============================================================================= +static string CompactIdentifier(const string &uuid) { + std::vector components; + TokenizeByChar(uuid, '-', &components); + string result; + for (size_t i = 0; i < components.size(); ++i) + result += components[i]; + return result; +} + +//============================================================================= +static void Start(Options *options) { + std::map parameters; + options->success = false; + std::vector module_parts; + if (!ModuleDataForSymbolFile(options->symbolsPath, &module_parts)) { + fprintf(stderr, "Failed to parse symbol file!\n"); + return; + } + + string compacted_id = CompactIdentifier(module_parts[3]); + + // Add parameters + if (!options->version.empty()) + parameters["version"] = options->version; + + // MODULE + // 0 1 2 3 4 + parameters["os"] = module_parts[1]; + parameters["cpu"] = module_parts[2]; + parameters["debug_file"] = module_parts[4]; + parameters["code_file"] = module_parts[4]; + parameters["debug_identifier"] = compacted_id; + + std::map files; + files["symbol_file"] = options->symbolsPath; + + string response, error; + long response_code; + bool success = HTTPUpload::SendRequest(options->uploadURLStr, + parameters, + files, + options->proxy, + options->proxy_user_pwd, + "", + &response, + &response_code, + &error); + + if (!success) { + printf("Failed to send symbol file: %s\n", error.c_str()); + printf("Response code: %ld\n", response_code); + printf("Response:\n"); + printf("%s\n", response.c_str()); + } else if (response_code == 0) { + printf("Failed to send symbol file: No response code\n"); + } else if (response_code != 200) { + printf("Failed to send symbol file: Response code %ld\n", response_code); + printf("Response:\n"); + printf("%s\n", response.c_str()); + } else { + printf("Successfully sent the symbol file.\n"); + } + options->success = success; +} //============================================================================= static void @@ -107,6 +232,6 @@ SetupOptions(int argc, const char *argv[], Options *options) { int main(int argc, const char* argv[]) { Options options; SetupOptions(argc, argv, &options); - google_breakpad::sym_upload::Start(&options); + Start(&options); return options.success ? 0 : 1; } diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj index 2e6bd9e102e9..ee20b2dd219e 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj @@ -36,8 +36,6 @@ 162F64FA161C591500CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F8161C591500CD68D5 /* arch_utilities.cc */; }; 162F6500161C5F2200CD68D5 /* arch_utilities.cc in Sources */ = {isa = PBXBuildFile; fileRef = 162F64F8161C591500CD68D5 /* arch_utilities.cc */; }; 4D72CAF513DFBAC2006CABE3 /* md5.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4D72CAF413DFBAC2006CABE3 /* md5.cc */; }; - 8BCAAA4C1CE3A7980046090B /* elf_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8BCAAA4A1CE3A7980046090B /* elf_reader.cc */; }; - 8BCAAA4D1CE3B1260046090B /* elf_reader.cc in Sources */ = {isa = PBXBuildFile; fileRef = 8BCAAA4A1CE3A7980046090B /* elf_reader.cc */; }; B84A91F8116CF78F006C210E /* libgtestmockall.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88FB024116BDFFF00407530 /* libgtestmockall.a */; }; B84A91FB116CF7AF006C210E /* module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE241166603300407530 /* module.cc */; }; B84A91FC116CF7AF006C210E /* stabs_to_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = B88FAE3C11666C8900407530 /* stabs_to_module.cc */; }; @@ -282,8 +280,6 @@ 8B31023E11F0CF1C00FCF3E4 /* Breakpad.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Breakpad.xcconfig; path = ../../../common/mac/Breakpad.xcconfig; sourceTree = SOURCE_ROOT; }; 8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadDebug.xcconfig; path = ../../../common/mac/BreakpadDebug.xcconfig; sourceTree = SOURCE_ROOT; }; 8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = BreakpadRelease.xcconfig; path = ../../../common/mac/BreakpadRelease.xcconfig; sourceTree = SOURCE_ROOT; }; - 8BCAAA4A1CE3A7980046090B /* elf_reader.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = elf_reader.cc; path = ../../../common/dwarf/elf_reader.cc; sourceTree = ""; }; - 8BCAAA4B1CE3A7980046090B /* elf_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = elf_reader.h; path = ../../../common/dwarf/elf_reader.h; sourceTree = ""; }; 9BDF186D0B1BB43700F8391B /* dump_syms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dump_syms.h; path = ../../../common/mac/dump_syms.h; sourceTree = ""; }; 9BDF186E0B1BB43700F8391B /* dump_syms_tool.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = dump_syms_tool.cc; sourceTree = ""; }; 9BE650410B52F6D800611104 /* file_id.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = file_id.cc; path = ../../../common/mac/file_id.cc; sourceTree = SOURCE_ROOT; }; @@ -617,8 +613,6 @@ B88FAE1711665FE400407530 /* dwarf2diehandler.cc */, B88FAE1811665FE400407530 /* dwarf2diehandler.h */, B88FB0DB116CEC5800407530 /* dwarf2diehandler_unittest.cc */, - 8BCAAA4A1CE3A7980046090B /* elf_reader.cc */, - 8BCAAA4B1CE3A7980046090B /* elf_reader.h */, ); name = DWARF; sourceTree = ""; @@ -893,8 +887,6 @@ /* Begin PBXProject section */ 08FB7793FE84155DC02AAC07 /* Project object */ = { isa = PBXProject; - attributes = { - }; buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "dump_syms" */; compatibilityVersion = "Xcode 3.1"; developmentRegion = English; @@ -962,7 +954,6 @@ files = ( B88FAF38116A595400407530 /* dwarf2reader_cfi_unittest.cc in Sources */, B88FAF3F116A5A2E00407530 /* dwarf2reader.cc in Sources */, - 8BCAAA4D1CE3B1260046090B /* elf_reader.cc in Sources */, B88FAF40116A5A2E00407530 /* bytereader.cc in Sources */, B88FAF37116A595400407530 /* cfi_assembler.cc in Sources */, ); @@ -1080,7 +1071,6 @@ files = ( 162F64FA161C591500CD68D5 /* arch_utilities.cc in Sources */, B88FAE2C1166606200407530 /* macho_reader.cc in Sources */, - 8BCAAA4C1CE3A7980046090B /* elf_reader.cc in Sources */, B8C5B5171166534700D34F4E /* dwarf2reader.cc in Sources */, B8C5B5181166534700D34F4E /* bytereader.cc in Sources */, B8C5B5191166534700D34F4E /* macho_utilities.cc in Sources */, @@ -1235,11 +1225,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 8B3102D411F0D60300FCF3E4 /* BreakpadDebug.xcconfig */; buildSettings = { - HEADER_SEARCH_PATHS = ( - ../../.., - ../../../common/mac/include/, - ../../../third_party/musl/include/, - ); + HEADER_SEARCH_PATHS = ../../..; }; name = Debug; }; @@ -1247,11 +1233,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = 8B3102D511F0D60300FCF3E4 /* BreakpadRelease.xcconfig */; buildSettings = { - HEADER_SEARCH_PATHS = ( - ../../.., - ../../../common/mac/include/, - ../../../third_party/musl/include/, - ); + HEADER_SEARCH_PATHS = ../../..; }; name = Release; }; @@ -1635,7 +1617,6 @@ isa = XCBuildConfiguration; buildSettings = { GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H; - GCC_VERSION = ""; PRODUCT_NAME = dump_syms; }; name = Debug; @@ -1644,7 +1625,6 @@ isa = XCBuildConfiguration; buildSettings = { GCC_PREPROCESSOR_DEFINITIONS = HAVE_MACH_O_NLIST_H; - GCC_VERSION = ""; PRODUCT_NAME = dump_syms; }; name = Release; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc index 6f68457b4c16..54f29226116d 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/dump_syms_tool.cc @@ -51,13 +51,11 @@ using std::vector; struct Options { Options() - : srcPath(), dsymPath(), arch(), header_only(false), - cfi(true), handle_inter_cu_refs(true) {} + : srcPath(), dsymPath(), arch(), cfi(true), handle_inter_cu_refs(true) {} string srcPath; string dsymPath; const NXArchInfo *arch; - bool header_only; bool cfi; bool handle_inter_cu_refs; }; @@ -153,9 +151,6 @@ static bool Start(const Options &options) { } } - if (options.header_only) - return dump_symbols.WriteSymbolFileHeader(std::cout); - // Read the primary file into a Breakpad Module. Module* module = NULL; if (!dump_symbols.ReadSymbolData(&module)) @@ -194,7 +189,6 @@ static void Usage(int argc, const char *argv[]) { fprintf(stderr, "Output a Breakpad symbol file from a Mach-o file.\n"); fprintf(stderr, "Usage: %s [-a ARCHITECTURE] [-c] [-g dSYM path] " "\n", argv[0]); - fprintf(stderr, "\t-i: Output module header information only.\n"); fprintf(stderr, "\t-a: Architecture type [default: native, or whatever is\n"); fprintf(stderr, "\t in the file, if it contains only one architecture]\n"); fprintf(stderr, "\t-g: Debug symbol file (dSYM) to dump in addition to the " @@ -210,11 +204,8 @@ static void SetupOptions(int argc, const char *argv[], Options *options) { extern int optind; signed char ch; - while ((ch = getopt(argc, (char * const *)argv, "ia:g:chr?")) != -1) { + while ((ch = getopt(argc, (char * const *)argv, "a:g:chr?")) != -1) { switch (ch) { - case 'i': - options->header_only = true; - break; case 'a': { const NXArchInfo *arch_info = google_breakpad::BreakpadGetArchInfoFromName(optarg); diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc index d882bbe883b6..4402bf4ea06d 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/macho_dump.cc @@ -138,12 +138,8 @@ void DumpFile(const char *filename) { } printf("filename: %s\n", filename); size_t object_files_size; - const SuperFatArch* super_fat_object_files = - fat_reader.object_files(&object_files_size); - struct fat_arch *object_files; - if (!super_fat_object_files->ConvertToFatArch(object_files)) { - exit(1); - } + const struct fat_arch *object_files + = fat_reader.object_files(&object_files_size); printf(" object file count: %ld\n", object_files_size); for (size_t i = 0; i < object_files_size; i++) { const struct fat_arch &file = object_files[i]; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build index 99ae82aa7ff0..65eda4522580 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/dump_syms/moz.build @@ -11,8 +11,6 @@ HOST_SOURCES += [ HOST_CXXFLAGS += [ '-O2', '-g', - '-pthread', - '-stdlib=libc++', ] # Order matters here, but HOST_USE_LIBS must be sorted. diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/minidump_upload.m b/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/minidump_upload.m index 741ad765e5f2..991a5de5ebc8 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/minidump_upload.m +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/minidump_upload.m @@ -68,8 +68,8 @@ static void Start(Options *options) { encoding:NSUTF8StringEncoding]; NSLog(@"Send: %@", error ? [error description] : @"No Error"); - NSLog(@"Response: %ld", (long)[[ul response] statusCode]); - NSLog(@"Result: %lu bytes\n%@", (unsigned long)[data length], result); + NSLog(@"Response: %d", [[ul response] statusCode]); + NSLog(@"Result: %d bytes\n%@", [data length], result); [result release]; [ul release]; diff --git a/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m b/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m index a7cce7b00cc0..fe4134581eee 100644 --- a/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m +++ b/toolkit/crashreporter/google-breakpad/src/tools/mac/symupload/symupload.m @@ -38,8 +38,6 @@ // cpu: the CPU that the module was built for (x86 or ppc) // symbol_file: the contents of the breakpad-format symbol file -#include -#include #include #include @@ -83,6 +81,15 @@ static NSArray *ModuleDataForSymbolFile(NSString *file) { return parts; } +//============================================================================= +static NSString *CompactIdentifier(NSString *uuid) { + NSMutableString *str = [NSMutableString stringWithString:uuid]; + [str replaceOccurrencesOfString:@"-" withString:@"" options:0 + range:NSMakeRange(0, [str length])]; + + return str; +} + //============================================================================= static void Start(Options *options) { NSURL *url = [NSURL URLWithString:options->uploadURLStr]; @@ -167,25 +174,6 @@ SetupOptions(int argc, const char *argv[], Options *options) { exit(1); } - int fd = open(argv[optind], O_RDONLY); - if (fd < 0) { - fprintf(stderr, "%s: %s: %s\n", argv[0], argv[optind], strerror(errno)); - exit(1); - } - - struct stat statbuf; - if (fstat(fd, &statbuf) < 0) { - fprintf(stderr, "%s: %s: %s\n", argv[0], argv[optind], strerror(errno)); - close(fd); - exit(1); - } - close(fd); - - if (!S_ISREG(statbuf.st_mode)) { - fprintf(stderr, "%s: %s: not a regular file\n", argv[0], argv[optind]); - exit(1); - } - options->symbolsPath = [NSString stringWithUTF8String:argv[optind]]; options->uploadURLStr = [NSString stringWithUTF8String:argv[optind + 1]]; } diff --git a/toolkit/crashreporter/nsExceptionHandler.cpp b/toolkit/crashreporter/nsExceptionHandler.cpp index 6ced8d8f8e75..4786ba163c74 100644 --- a/toolkit/crashreporter/nsExceptionHandler.cpp +++ b/toolkit/crashreporter/nsExceptionHandler.cpp @@ -108,11 +108,6 @@ using google_breakpad::ClientInfo; #ifdef XP_LINUX using google_breakpad::MinidumpDescriptor; #endif -#if defined(MOZ_WIDGET_ANDROID) -using google_breakpad::auto_wasteful_vector; -using google_breakpad::FileID; -using google_breakpad::PageAllocator; -#endif using namespace mozilla; using mozilla::dom::CrashReporterChild; using mozilla::dom::PCrashReporterChild; @@ -1713,12 +1708,10 @@ nsresult SetExceptionHandler(nsIFile* aXREDirectory, #if defined(MOZ_WIDGET_ANDROID) for (unsigned int i = 0; i < library_mappings.size(); i++) { - PageAllocator allocator; - auto_wasteful_vector guid(&allocator); - FileID::ElfFileIdentifierFromMappedFile( - (void const *)library_mappings[i].start_address, guid); + u_int8_t guid[sizeof(MDGUID)]; + google_breakpad::FileID::ElfFileIdentifierFromMappedFile((void const *)library_mappings[i].start_address, guid); gExceptionHandler->AddMappingInfo(library_mappings[i].name, - guid.data(), + guid, library_mappings[i].start_address, library_mappings[i].length, library_mappings[i].file_offset); @@ -4071,11 +4064,10 @@ void AddLibraryMapping(const char* library_name, library_mappings.push_back(info); } else { - PageAllocator allocator; - auto_wasteful_vector guid(&allocator); - FileID::ElfFileIdentifierFromMappedFile((void const *)start_address, guid); + u_int8_t guid[sizeof(MDGUID)]; + google_breakpad::FileID::ElfFileIdentifierFromMappedFile((void const *)start_address, guid); gExceptionHandler->AddMappingInfo(library_name, - guid.data(), + guid, start_address, mapping_length, file_offset); diff --git a/toolkit/crashreporter/test/moz.build b/toolkit/crashreporter/test/moz.build index 058e6a71e06f..ab93adeace47 100644 --- a/toolkit/crashreporter/test/moz.build +++ b/toolkit/crashreporter/test/moz.build @@ -34,7 +34,3 @@ TEST_HARNESS_FILES.xpcshell.toolkit.crashreporter.test.unit_ipc += ['CrashTestUt include('/toolkit/crashreporter/crashreporter.mozbuild') NO_PGO = True - -# Temporary workaround for an issue in upstream breakpad -if CONFIG['_MSC_VER']: - CXXFLAGS += ['-wd4334'] diff --git a/toolkit/crashreporter/update-breakpad.sh b/toolkit/crashreporter/update-breakpad.sh index 3b3079876d67..ff01e5d650d5 100755 --- a/toolkit/crashreporter/update-breakpad.sh +++ b/toolkit/crashreporter/update-breakpad.sh @@ -26,13 +26,11 @@ lss_rev=`python -c "import sys; execfile(sys.argv[1]); print deps['src/src/third # remove some extraneous bits rm -rf \ ${crashreporter_dir}/google-breakpad/docs/ \ - ${crashreporter_dir}/google-breakpad/scripts/ \ ${crashreporter_dir}/google-breakpad/src/third_party/protobuf \ ${crashreporter_dir}/google-breakpad/src/testing/ \ ${crashreporter_dir}/google-breakpad/src/tools/gyp/ \ ${crashreporter_dir}/google-breakpad/src/processor/testdata/ \ - ${crashreporter_dir}/google-breakpad/src/tools/windows/dump_syms/testdata/ \ - ${crashreporter_dir}/.travis.yml + ${crashreporter_dir}/google-breakpad/src/tools/windows/dump_syms/testdata/ # restore our Makefile.ins hg -R ${repo} st -n | grep "Makefile\.in$" | xargs hg revert --no-backup diff --git a/tools/profiler/core/shared-libraries-linux.cc b/tools/profiler/core/shared-libraries-linux.cc index 24437fb4e718..e9740783acca 100644 --- a/tools/profiler/core/shared-libraries-linux.cc +++ b/tools/profiler/core/shared-libraries-linux.cc @@ -26,12 +26,18 @@ static std::string getId(const char *bin_name) using namespace google_breakpad; using namespace std; - PageAllocator allocator; - auto_wasteful_vector identifier(&allocator); + uint8_t identifier[kMDGUIDSize]; + char id_str[37]; // magic number from file_id.h FileID file_id(bin_name); if (file_id.ElfFileIdentifier(identifier)) { - return FileID::ConvertIdentifierToUUIDString(identifier) + "0"; + FileID::ConvertIdentifierToString(identifier, id_str, ARRAY_SIZE(id_str)); + // ConvertIdentifierToString converts the identifier to a string with + // some dashes (don't ask me why), but we need it raw, so remove the dashes. + char *id_end = remove(id_str, id_str + strlen(id_str), '-'); + // Also add an extra "0" by the end. google-breakpad does it for + // consistency with PDB files so we need to do too. + return string(id_str, id_end) + '0'; } return ""; From 1e0c767fd6f48fb842472595469178cbe4214f8d Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Wed, 21 Sep 2016 16:40:44 -0400 Subject: [PATCH 087/117] Bug 1304114 - fix invalid Sk4f store to SkColor in SkPixmap::erase. r=jrmuizel MozReview-Commit-ID: 840x1nXgYns --- gfx/skia/skia/src/core/SkPixmap.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gfx/skia/skia/src/core/SkPixmap.cpp b/gfx/skia/skia/src/core/SkPixmap.cpp index a5e474b6d4d8..bd551ed9d3dd 100644 --- a/gfx/skia/skia/src/core/SkPixmap.cpp +++ b/gfx/skia/skia/src/core/SkPixmap.cpp @@ -226,7 +226,7 @@ bool SkPixmap::erase(const SkColor4f& origColor, const SkIRect* subset) const { if (kRGBA_F16_SkColorType != pm.colorType()) { Sk4f c4 = Sk4f::Load(color.vec()); SkColor c; - (c4 * Sk4f(255) + Sk4f(0.5f)).store(&c); + SkNx_cast(c4 * Sk4f(255) + Sk4f(0.5f)).store(&c); return pm.erase(c); } From 8869fd86cf28c4236ef020c68e23cfd38d5139a2 Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Wed, 21 Sep 2016 17:03:20 -0400 Subject: [PATCH 088/117] Bug 1029705 - allow clipping to a list of device-space rectangles (a region) in DrawTarget via PushDeviceSpaceClipRects. r=bas MozReview-Commit-ID: 8zM116zB0NB --- gfx/2d/2D.h | 10 ++++ gfx/2d/DrawTarget.cpp | 17 +++++++ gfx/2d/DrawTargetD2D1.cpp | 101 ++++++++++++++++++++++++-------------- gfx/2d/DrawTargetD2D1.h | 20 +++++--- gfx/2d/DrawTargetSkia.cpp | 16 ++++++ gfx/2d/DrawTargetSkia.h | 1 + gfx/thebes/gfxUtils.cpp | 47 ++++++++++++------ 7 files changed, 152 insertions(+), 60 deletions(-) diff --git a/gfx/2d/2D.h b/gfx/2d/2D.h index f9c10039120a..992eec7f2bb9 100644 --- a/gfx/2d/2D.h +++ b/gfx/2d/2D.h @@ -1019,6 +1019,16 @@ public: */ virtual void PushClipRect(const Rect &aRect) = 0; + /** + * Push a clip region specifed by the union of axis-aligned rectangular + * clips to the DrawTarget. These rectangles are specified in device space. + * This must be balanced by a corresponding call to PopClip within a layer. + * + * @param aRects The rects to clip to + * @param aCount The number of rectangles + */ + virtual void PushDeviceSpaceClipRects(const IntRect* aRects, uint32_t aCount); + /** Pop a clip from the DrawTarget. A pop without a corresponding push will * be ignored. */ diff --git a/gfx/2d/DrawTarget.cpp b/gfx/2d/DrawTarget.cpp index d27d27944078..72e070dc3316 100644 --- a/gfx/2d/DrawTarget.cpp +++ b/gfx/2d/DrawTarget.cpp @@ -5,6 +5,7 @@ #include "2D.h" #include "Logging.h" +#include "PathHelpers.h" #include "DrawTargetCapture.h" @@ -35,5 +36,21 @@ DrawTarget::DrawCapturedDT(DrawTargetCapture *aCaptureDT, static_cast(aCaptureDT)->ReplayToDrawTarget(this, aTransform); } +void +DrawTarget::PushDeviceSpaceClipRects(const IntRect* aRects, uint32_t aCount) +{ + Matrix oldTransform = GetTransform(); + SetTransform(Matrix()); + + RefPtr pathBuilder = CreatePathBuilder(); + for (uint32_t i = 0; i < aCount; i++) { + AppendRectToPath(pathBuilder, Rect(aRects[i])); + } + RefPtr path = pathBuilder->Finish(); + PushClip(path); + + SetTransform(oldTransform); +} + } // namespace gfx } // namespace mozilla diff --git a/gfx/2d/DrawTargetD2D1.cpp b/gfx/2d/DrawTargetD2D1.cpp index 98f7f82d1149..1f088a5a1e1f 100644 --- a/gfx/2d/DrawTargetD2D1.cpp +++ b/gfx/2d/DrawTargetD2D1.cpp @@ -679,22 +679,18 @@ DrawTargetD2D1::Mask(const Pattern &aSource, } void -DrawTargetD2D1::PushClip(const Path *aPath) +DrawTargetD2D1::PushClipGeometry(ID2D1Geometry* aGeometry, + const D2D1_MATRIX_3X2_F& aTransform, + bool aPixelAligned) { - if (aPath->GetBackendType() != BackendType::DIRECT2D1_1) { - gfxDebug() << *this << ": Ignoring clipping call for incompatible path."; - return; - } - mCurrentClippedGeometry = nullptr; - RefPtr pathD2D = static_cast(const_cast(aPath)); - PushedClip clip; - clip.mTransform = D2DMatrix(mTransform); - clip.mPath = pathD2D; - - pathD2D->mGeometry->GetBounds(clip.mTransform, &clip.mBounds); + clip.mGeometry = aGeometry; + clip.mTransform = aTransform; + clip.mIsPixelAligned = aPixelAligned; + + aGeometry->GetBounds(aTransform, &clip.mBounds); CurrentLayer().mPushedClips.push_back(clip); @@ -704,10 +700,23 @@ DrawTargetD2D1::PushClip(const Path *aPath) mTransformDirty = true; if (CurrentLayer().mClipsArePushed) { - PushD2DLayer(mDC, pathD2D->mGeometry, clip.mTransform); + PushD2DLayer(mDC, clip.mGeometry, clip.mTransform, clip.mIsPixelAligned); } } +void +DrawTargetD2D1::PushClip(const Path *aPath) +{ + if (aPath->GetBackendType() != BackendType::DIRECT2D1_1) { + gfxDebug() << *this << ": Ignoring clipping call for incompatible path."; + return; + } + + RefPtr pathD2D = static_cast(const_cast(aPath)); + + PushClipGeometry(pathD2D->GetGeometry(), D2DMatrix(mTransform)); +} + void DrawTargetD2D1::PushClipRect(const Rect &aRect) { @@ -715,15 +724,8 @@ DrawTargetD2D1::PushClipRect(const Rect &aRect) // Whoops, this isn't a rectangle in device space, Direct2D will not deal // with this transform the way we want it to. // See remarks: http://msdn.microsoft.com/en-us/library/dd316860%28VS.85%29.aspx - - RefPtr pathBuilder = CreatePathBuilder(); - pathBuilder->MoveTo(aRect.TopLeft()); - pathBuilder->LineTo(aRect.TopRight()); - pathBuilder->LineTo(aRect.BottomRight()); - pathBuilder->LineTo(aRect.BottomLeft()); - pathBuilder->Close(); - RefPtr path = pathBuilder->Finish(); - return PushClip(path); + RefPtr geom = ConvertRectToGeometry(D2DRect(aRect)); + return PushClipGeometry(geom, D2DMatrix(mTransform)); } mCurrentClippedGeometry = nullptr; @@ -746,6 +748,29 @@ DrawTargetD2D1::PushClipRect(const Rect &aRect) } } +void +DrawTargetD2D1::PushDeviceSpaceClipRects(const IntRect* aRects, uint32_t aCount) +{ + // Build a path for the union of the rects. + RefPtr path; + factory()->CreatePathGeometry(getter_AddRefs(path)); + RefPtr sink; + path->Open(getter_AddRefs(sink)); + sink->SetFillMode(D2D1_FILL_MODE_WINDING); + for (uint32_t i = 0; i < aCount; i++) { + const IntRect& rect = aRects[i]; + sink->BeginFigure(D2DPoint(rect.TopLeft()), D2D1_FIGURE_BEGIN_FILLED); + D2D1_POINT_2F lines[3] = { D2DPoint(rect.TopRight()), D2DPoint(rect.BottomRight()), D2DPoint(rect.BottomLeft()) }; + sink->AddLines(lines, 3); + sink->EndFigure(D2D1_FIGURE_END_CLOSED); + } + sink->Close(); + + // The path is in device-space, so there is no transform needed, + // and all rects are pixel aligned. + PushClipGeometry(path, D2D1::IdentityMatrix(), true); +} + void DrawTargetD2D1::PopClip() { @@ -756,7 +781,7 @@ DrawTargetD2D1::PopClip() } if (CurrentLayer().mClipsArePushed) { - if (CurrentLayer().mPushedClips.back().mPath) { + if (CurrentLayer().mPushedClips.back().mGeometry) { mDC->PopLayer(); } else { mDC->PopAxisAlignedClip(); @@ -1395,7 +1420,7 @@ DrawTargetD2D1::GetDeviceSpaceClipRect(D2D1_RECT_F& aClipRect, bool& aIsPixelAli aClipRect = D2D1::RectF(0, 0, mSize.width, mSize.height); for (auto iter = CurrentLayer().mPushedClips.begin();iter != CurrentLayer().mPushedClips.end(); iter++) { - if (iter->mPath) { + if (iter->mGeometry) { return false; } aClipRect = IntersectRect(aClipRect, iter->mBounds); @@ -1475,8 +1500,8 @@ DrawTargetD2D1::GetClippedGeometry(IntRect *aClipBounds) bool pathRectIsAxisAligned = false; auto iter = CurrentLayer().mPushedClips.begin(); - if (iter->mPath) { - pathGeom = GetTransformedGeometry(iter->mPath->GetGeometry(), iter->mTransform); + if (iter->mGeometry) { + pathGeom = GetTransformedGeometry(iter->mGeometry, iter->mTransform); } else { pathRect = iter->mBounds; pathRectIsAxisAligned = iter->mIsPixelAligned; @@ -1485,7 +1510,7 @@ DrawTargetD2D1::GetClippedGeometry(IntRect *aClipBounds) iter++; for (;iter != CurrentLayer().mPushedClips.end(); iter++) { // Do nothing but add it to the current clip bounds. - if (!iter->mPath && iter->mIsPixelAligned) { + if (!iter->mGeometry && iter->mIsPixelAligned) { mCurrentClipBounds.IntersectRect(mCurrentClipBounds, IntRect(int32_t(iter->mBounds.left), int32_t(iter->mBounds.top), int32_t(iter->mBounds.right - iter->mBounds.left), @@ -1500,12 +1525,12 @@ DrawTargetD2D1::GetClippedGeometry(IntRect *aClipBounds) int32_t(pathRect.right - pathRect.left), int32_t(pathRect.bottom - pathRect.top))); } - if (iter->mPath) { + if (iter->mGeometry) { // See if pathRect needs to go into the path geometry. if (!pathRectIsAxisAligned) { pathGeom = ConvertRectToGeometry(pathRect); } else { - pathGeom = GetTransformedGeometry(iter->mPath->GetGeometry(), iter->mTransform); + pathGeom = GetTransformedGeometry(iter->mGeometry, iter->mTransform); } } else { pathRect = IntersectRect(pathRect, iter->mBounds); @@ -1520,8 +1545,8 @@ DrawTargetD2D1::GetClippedGeometry(IntRect *aClipBounds) RefPtr currentSink; newGeom->Open(getter_AddRefs(currentSink)); - if (iter->mPath) { - pathGeom->CombineWithGeometry(iter->mPath->GetGeometry(), D2D1_COMBINE_MODE_INTERSECT, + if (iter->mGeometry) { + pathGeom->CombineWithGeometry(iter->mGeometry, D2D1_COMBINE_MODE_INTERSECT, iter->mTransform, currentSink); } else { RefPtr rectGeom = ConvertRectToGeometry(iter->mBounds); @@ -1592,8 +1617,8 @@ DrawTargetD2D1::PushClipsToDC(ID2D1DeviceContext *aDC, bool aForceIgnoreAlpha, c mTransformDirty = true; for (auto iter = CurrentLayer().mPushedClips.begin(); iter != CurrentLayer().mPushedClips.end(); iter++) { - if (iter->mPath) { - PushD2DLayer(aDC, iter->mPath->mGeometry, iter->mTransform, aForceIgnoreAlpha, aMaxRect); + if (iter->mGeometry) { + PushD2DLayer(aDC, iter->mGeometry, iter->mTransform, iter->mIsPixelAligned, aForceIgnoreAlpha, aMaxRect); } else { mDC->PushAxisAlignedClip(iter->mBounds, iter->mIsPixelAligned ? D2D1_ANTIALIAS_MODE_ALIASED : D2D1_ANTIALIAS_MODE_PER_PRIMITIVE); } @@ -1604,7 +1629,7 @@ void DrawTargetD2D1::PopClipsFromDC(ID2D1DeviceContext *aDC) { for (int i = CurrentLayer().mPushedClips.size() - 1; i >= 0; i--) { - if (CurrentLayer().mPushedClips[i].mPath) { + if (CurrentLayer().mPushedClips[i].mGeometry) { aDC->PopLayer(); } else { aDC->PopAxisAlignedClip(); @@ -1866,7 +1891,7 @@ DrawTargetD2D1::OptimizeSourceSurface(SourceSurface* aSurface) const void DrawTargetD2D1::PushD2DLayer(ID2D1DeviceContext *aDC, ID2D1Geometry *aGeometry, const D2D1_MATRIX_3X2_F &aTransform, - bool aForceIgnoreAlpha, const D2D1_RECT_F& aMaxRect) + bool aPixelAligned, bool aForceIgnoreAlpha, const D2D1_RECT_F& aMaxRect) { D2D1_LAYER_OPTIONS1 options = D2D1_LAYER_OPTIONS1_NONE; @@ -1874,8 +1899,10 @@ DrawTargetD2D1::PushD2DLayer(ID2D1DeviceContext *aDC, ID2D1Geometry *aGeometry, options = D2D1_LAYER_OPTIONS1_IGNORE_ALPHA | D2D1_LAYER_OPTIONS1_INITIALIZE_FROM_BACKGROUND; } - mDC->PushLayer(D2D1::LayerParameters1(aMaxRect, aGeometry, - D2D1_ANTIALIAS_MODE_PER_PRIMITIVE, aTransform, + D2D1_ANTIALIAS_MODE antialias = + aPixelAligned ? D2D1_ANTIALIAS_MODE_ALIASED : D2D1_ANTIALIAS_MODE_PER_PRIMITIVE; + + mDC->PushLayer(D2D1::LayerParameters1(aMaxRect, aGeometry, antialias, aTransform, 1.0, nullptr, options), nullptr); } diff --git a/gfx/2d/DrawTargetD2D1.h b/gfx/2d/DrawTargetD2D1.h index 37c92a0696f1..973ac0fc3249 100644 --- a/gfx/2d/DrawTargetD2D1.h +++ b/gfx/2d/DrawTargetD2D1.h @@ -93,6 +93,8 @@ public: const DrawOptions &aOptions = DrawOptions()) override; virtual void PushClip(const Path *aPath) override; virtual void PushClipRect(const Rect &aRect) override; + virtual void PushDeviceSpaceClipRects(const IntRect* aRects, uint32_t aCount) override; + virtual void PopClip() override; virtual void PushLayer(bool aOpaque, Float aOpacity, SourceSurface* aMask, @@ -215,8 +217,11 @@ private: already_AddRefed GetSolidColorBrush(const D2D_COLOR_F& aColor); already_AddRefed CreateBrushForPattern(const Pattern &aPattern, Float aAlpha = 1.0f); + void PushClipGeometry(ID2D1Geometry* aGeometry, const D2D1_MATRIX_3X2_F& aTransform, bool aPixelAligned = false); + void PushD2DLayer(ID2D1DeviceContext *aDC, ID2D1Geometry *aGeometry, const D2D1_MATRIX_3X2_F &aTransform, - bool aForceIgnoreAlpha = false, const D2D1_RECT_F& aLayerRect = D2D1::InfiniteRect()); + bool aPixelAligned = false, bool aForceIgnoreAlpha = false, + const D2D1_RECT_F& aLayerRect = D2D1::InfiniteRect()); IntSize mSize; @@ -240,13 +245,12 @@ private: struct PushedClip { D2D1_RECT_F mBounds; - union { - // If mPath is non-null, the mTransform member will be used, otherwise - // the mIsPixelAligned member is valid. - D2D1_MATRIX_3X2_F mTransform; - bool mIsPixelAligned; - }; - RefPtr mPath; + // If mGeometry is non-null, the mTransform member will be used. + D2D1_MATRIX_3X2_F mTransform; + RefPtr mGeometry; + // Indicates if mBounds, and when non-null, mGeometry with mTransform + // applied, are pixel-aligned. + bool mIsPixelAligned; }; // List of pushed layers. diff --git a/gfx/2d/DrawTargetSkia.cpp b/gfx/2d/DrawTargetSkia.cpp index b0af38c4fb05..1f29c8adb3ae 100644 --- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp @@ -1816,6 +1816,22 @@ DrawTargetSkia::PushClip(const Path *aPath) mCanvas->clipPath(skiaPath->GetPath(), SkRegion::kIntersect_Op, true); } +void +DrawTargetSkia::PushDeviceSpaceClipRects(const IntRect* aRects, uint32_t aCount) +{ + // Build a region by unioning all the rects together. + SkRegion region; + for (uint32_t i = 0; i < aCount; i++) { + region.op(IntRectToSkIRect(aRects[i]), SkRegion::kUnion_Op); + } + + // Clip with the resulting region. clipRegion does not transform + // this region by the current transform, unlike the other SkCanvas + // clip methods, so it is just passed through in device-space. + mCanvas->save(); + mCanvas->clipRegion(region, SkRegion::kIntersect_Op); +} + void DrawTargetSkia::PushClipRect(const Rect& aRect) { diff --git a/gfx/2d/DrawTargetSkia.h b/gfx/2d/DrawTargetSkia.h index 62401f5bb98a..abd33c6abd1b 100644 --- a/gfx/2d/DrawTargetSkia.h +++ b/gfx/2d/DrawTargetSkia.h @@ -104,6 +104,7 @@ public: const Matrix4x4& aMatrix) override; virtual void PushClip(const Path *aPath) override; virtual void PushClipRect(const Rect& aRect) override; + virtual void PushDeviceSpaceClipRects(const IntRect* aRects, uint32_t aCount) override; virtual void PopClip() override; virtual void PushLayer(bool aOpaque, Float aOpacity, SourceSurface* aMask, diff --git a/gfx/thebes/gfxUtils.cpp b/gfx/thebes/gfxUtils.cpp index 861b5cec9fba..b7b36c18efbb 100644 --- a/gfx/thebes/gfxUtils.cpp +++ b/gfx/thebes/gfxUtils.cpp @@ -20,6 +20,7 @@ #include "mozilla/gfx/2D.h" #include "mozilla/gfx/DataSurfaceHelpers.h" #include "mozilla/gfx/Logging.h" +#include "mozilla/gfx/PathHelpers.h" #include "mozilla/Maybe.h" #include "mozilla/RefPtr.h" #include "mozilla/UniquePtrExtensions.h" @@ -719,25 +720,41 @@ gfxUtils::ClipToRegion(gfxContext* aContext, const nsIntRegion& aRegion) /*static*/ void gfxUtils::ClipToRegion(DrawTarget* aTarget, const nsIntRegion& aRegion) { - if (!aRegion.IsComplex()) { - IntRect rect = aRegion.GetBounds(); - aTarget->PushClipRect(Rect(rect.x, rect.y, rect.width, rect.height)); + uint32_t numRects = aRegion.GetNumRects(); + // If there is only one rect, then the region bounds are equivalent to the + // contents. So just use push a single clip rect with the bounds. + if (numRects == 1) { + aTarget->PushClipRect(Rect(aRegion.GetBounds())); return; } - RefPtr pb = aTarget->CreatePathBuilder(); - - for (auto iter = aRegion.RectIter(); !iter.Done(); iter.Next()) { - const IntRect& r = iter.Get(); - pb->MoveTo(Point(r.x, r.y)); - pb->LineTo(Point(r.XMost(), r.y)); - pb->LineTo(Point(r.XMost(), r.YMost())); - pb->LineTo(Point(r.x, r.YMost())); - pb->Close(); + // Check if the target's transform will preserve axis-alignment and + // pixel-alignment for each rect. For now, just handle the common case + // of integer translations. + Matrix transform = aTarget->GetTransform(); + if (transform.IsIntegerTranslation()) { + IntPoint translation = RoundedToInt(transform.GetTranslation()); + AutoTArray rects; + rects.SetLength(numRects); + uint32_t i = 0; + // Build the list of transformed rects by adding in the translation. + for (auto iter = aRegion.RectIter(); !iter.Done(); iter.Next()) { + IntRect rect = iter.Get(); + rect.MoveBy(translation); + rects[i++] = rect; + } + aTarget->PushDeviceSpaceClipRects(rects.Elements(), rects.Length()); + } else { + // The transform does not produce axis-aligned rects or a rect was not + // pixel-aligned. So just build a path with all the rects and clip to it + // instead. + RefPtr pathBuilder = aTarget->CreatePathBuilder(); + for (auto iter = aRegion.RectIter(); !iter.Done(); iter.Next()) { + AppendRectToPath(pathBuilder, Rect(iter.Get())); + } + RefPtr path = pathBuilder->Finish(); + aTarget->PushClip(path); } - RefPtr path = pb->Finish(); - - aTarget->PushClip(path); } /*static*/ gfxFloat From 598c29ffbe7a0573823ea2bda2ad79b5849d2ba4 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Wed, 21 Sep 2016 16:37:23 -0700 Subject: [PATCH 089/117] Backed out changeset a03e56efce4c (bug 1281156) for android failures in test_bug772796.html a=backout CLOSED TREE --- js/public/GCHashTable.h | 2 +- js/src/jscntxtinlines.h | 7 ----- js/src/vm/TraceLogging.cpp | 61 +++++--------------------------------- js/src/vm/TraceLogging.h | 25 ++++++---------- 4 files changed, 17 insertions(+), 78 deletions(-) diff --git a/js/public/GCHashTable.h b/js/public/GCHashTable.h index d96a3c96f717..687128743e31 100644 --- a/js/public/GCHashTable.h +++ b/js/public/GCHashTable.h @@ -108,7 +108,7 @@ template > class GCRekeyableHashMap : public JS::GCHashMap { - using Base = JS::GCHashMap; + using Base = JS::GCHashMap; public: explicit GCRekeyableHashMap(AllocPolicy a = AllocPolicy()) : Base(a) {} diff --git a/js/src/jscntxtinlines.h b/js/src/jscntxtinlines.h index 98e3d299d753..a3eb1d61eac9 100644 --- a/js/src/jscntxtinlines.h +++ b/js/src/jscntxtinlines.h @@ -446,13 +446,6 @@ js::ExclusiveContext::setCompartment(JSCompartment* comp, compartment_ = comp; zone_ = comp ? comp->zone() : nullptr; arenas_ = zone_ ? &zone_->arenas : nullptr; - -#ifdef JS_TRACE_LOGGING - if (isJSContext()) { - TraceLoggerThread* logger = TraceLoggerForMainThread(runtime_); - logger->updateZone(zone_); - } -#endif } inline JSScript* diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp index 2df167247861..1fb13c1b7a3f 100644 --- a/js/src/vm/TraceLogging.cpp +++ b/js/src/vm/TraceLogging.cpp @@ -111,16 +111,6 @@ js::DestroyTraceLoggerThreadState() } } -TraceLoggerThread::TraceLoggerThread() - : enabled_(0), - failed(false), - graph(), - currentZone_(nullptr), - nextTextId(TraceLogger_Last), - iteration_(0), - top(nullptr) -{ } - bool TraceLoggerThread::init() { @@ -140,28 +130,6 @@ TraceLoggerThread::init() return true; } -bool -TraceLoggerThread::WeakScriptMapSweepPolicy::needsSweep(HeapPtr* key, - TraceLoggerEventPayload** value) -{ - return JS::GCPolicy>::needsSweep(key); -} - -void -TraceLoggerThread::updateZone(Zone* zone) -{ - if (zone != currentZone_) { - currentZone_ = zone; - scriptMap.reset(); - - if (zone) { - scriptMap.emplace(zone, ScriptHashMap()); - if (!scriptMap->get().init()) - scriptMap.reset(); - } - } -} - void TraceLoggerThread::initGraph() { @@ -425,7 +393,7 @@ TraceLoggerThread::getOrCreateEventPayload(const char* text) TraceLoggerEventPayload* TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* filename, - size_t lineno, size_t colno, JSScript* script) + size_t lineno, size_t colno, const void* ptr) { MOZ_ASSERT(type == TraceLogger_Scripts || type == TraceLogger_AnnotateScripts || type == TraceLogger_InlinedScripts); @@ -439,9 +407,9 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f if (!traceLoggerState->isTextIdEnabled(type)) return getOrCreateEventPayload(type); - ScriptHashMap::AddPtr p; - if (scriptMap.isSome() && script) { - p = scriptMap->get().lookupForAdd(script); + PointerHashMap::AddPtr p; + if (ptr) { + p = pointerMap.lookupForAdd(ptr); if (p) { MOZ_ASSERT(p->value()->textId() < nextTextId); // Sanity check. return p->value(); @@ -484,8 +452,8 @@ TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, const char* f nextTextId++; - if (scriptMap.isSome() && script) { - if (!scriptMap->get().add(p, script, payload)) + if (ptr) { + if (!pointerMap.add(p, ptr, payload)) return nullptr; } @@ -496,7 +464,7 @@ TraceLoggerEventPayload* TraceLoggerThread::getOrCreateEventPayload(TraceLoggerTextId type, JSScript* script) { return getOrCreateEventPayload(type, script->filename(), script->lineno(), script->column(), - script); + nullptr); } TraceLoggerEventPayload* @@ -641,21 +609,6 @@ TraceLoggerThread::log(uint32_t id) e.removeFront(); } - // Remove the item in the scriptMap for which the payloads - // have no uses anymore - if (scriptMap.isSome()) { - for (ScriptHashMap::Enum e(scriptMap->get()); !e.empty(); e.popFront()) { - if (e.front().value()->uses() != 0) - continue; - - TextIdHashMap::Ptr p = textIdPayloads.lookup(e.front().value()->textId()); - MOZ_ASSERT(p); - textIdPayloads.remove(p); - - e.removeFront(); - } - } - // Free all payloads that have no uses anymore. for (TextIdHashMap::Enum e(textIdPayloads); !e.empty(); e.popFront()) { if (e.front().value()->uses() == 0) { diff --git a/js/src/vm/TraceLogging.h b/js/src/vm/TraceLogging.h index f9c21f2acb39..b16412c80d56 100644 --- a/js/src/vm/TraceLogging.h +++ b/js/src/vm/TraceLogging.h @@ -8,11 +8,9 @@ #define TraceLogging_h #include "mozilla/GuardObjects.h" -#include "mozilla/Maybe.h" #include "jsalloc.h" -#include "gc/Barrier.h" #include "js/HashTable.h" #include "js/TypeDecls.h" #include "js/Vector.h" @@ -160,19 +158,10 @@ class TraceLoggerThread { #ifdef JS_TRACE_LOGGING private: - struct WeakScriptMapSweepPolicy { - static bool needsSweep(HeapPtr* key, TraceLoggerEventPayload** value); - }; typedef HashMap, SystemAllocPolicy> PointerHashMap; - typedef GCHashMap, - TraceLoggerEventPayload*, - MovableCellHasher>, - SystemAllocPolicy, - WeakScriptMapSweepPolicy> ScriptHashMap; - typedef JS::WeakCache WeakScriptHashMap; typedef HashMap, @@ -184,8 +173,6 @@ class TraceLoggerThread UniquePtr graph; PointerHashMap pointerMap; - mozilla::Maybe scriptMap; - Zone* currentZone_; TextIdHashMap textIdPayloads; uint32_t nextTextId; @@ -204,10 +191,16 @@ class TraceLoggerThread public: AutoTraceLog* top; - TraceLoggerThread(); + TraceLoggerThread() + : enabled_(0), + failed(false), + graph(), + nextTextId(TraceLogger_Last), + iteration_(0), + top(nullptr) + { } bool init(); - void updateZone(Zone* zone); ~TraceLoggerThread(); bool init(uint32_t loggerId); @@ -281,7 +274,7 @@ class TraceLoggerThread const JS::ReadOnlyCompileOptions& script); private: TraceLoggerEventPayload* getOrCreateEventPayload(TraceLoggerTextId type, const char* filename, - size_t lineno, size_t colno, JSScript* script); + size_t lineno, size_t colno, const void* p); public: // Log an event (no start/stop, only the timestamp is recorded). From ef05c52b630d753b0718575a5c47814de56debc5 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Wed, 21 Sep 2016 16:37:28 -0700 Subject: [PATCH 090/117] Backed out changeset c414e9547045 (bug 1302417) for android failures in test_bug772796.html a=backout CLOSED TREE --- js/src/builtin/TestingFunctions.cpp | 10 ---------- .../jit-test/tests/tracelogger/bug1302417.js | 20 ------------------- js/src/vm/TraceLogging.cpp | 14 ++----------- 3 files changed, 2 insertions(+), 42 deletions(-) delete mode 100644 js/src/jit-test/tests/tracelogger/bug1302417.js diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp index 2d27214d4973..b2a15bd1d4ba 100644 --- a/js/src/builtin/TestingFunctions.cpp +++ b/js/src/builtin/TestingFunctions.cpp @@ -1396,16 +1396,6 @@ OOMTest(JSContext* cx, unsigned argc, Value* vp) cx->clearPendingException(); cx->runtime()->hadOutOfMemory = false; -#ifdef JS_TRACE_LOGGING - // Reset the TraceLogger state if enabled. - TraceLoggerThread* logger = TraceLoggerForMainThread(cx->runtime()); - if (logger->enabled()) { - while (logger->enabled()) - logger->disable(); - logger->enable(cx); - } -#endif - allocation++; } while (handledOOM); diff --git a/js/src/jit-test/tests/tracelogger/bug1302417.js b/js/src/jit-test/tests/tracelogger/bug1302417.js deleted file mode 100644 index 18819207650b..000000000000 --- a/js/src/jit-test/tests/tracelogger/bug1302417.js +++ /dev/null @@ -1,20 +0,0 @@ - -if (!('oomTest' in this)) - quit(); - -if (typeof new Debugger().setupTraceLoggerScriptCalls == "function") { - lfLogBuffer = ` - var du = new Debugger; - du.setupTraceLoggerScriptCalls(); - startTraceLogger(); - `; - loadFile(lfLogBuffer); - function loadFile(lfVarx) { - oomTest(function() { - m = parseModule(lfVarx); - m.declarationInstantiation(); - m.evaluation(); - }) - } -} - diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp index 1fb13c1b7a3f..ffad8219973d 100644 --- a/js/src/vm/TraceLogging.cpp +++ b/js/src/vm/TraceLogging.cpp @@ -254,10 +254,8 @@ TraceLoggerThread::enable(JSContext* cx) bool TraceLoggerThread::disable(bool force, const char* error) { - if (failed) { - MOZ_ASSERT(enabled_ == 0); + if (failed) return false; - } if (enabled_ == 0) return true; @@ -537,10 +535,7 @@ TraceLoggerThread::stopEvent(uint32_t id) #ifdef DEBUG if (enabled_ > 0 && !graphStack.empty()) { uint32_t prev = graphStack.popCopy(); - if (id == TraceLogger_Error || prev == TraceLogger_Error) { - // When encountering an Error id the stack will most likely not be correct anymore. - // Ignore this. - } else if (id == TraceLogger_Engine) { + if (id == TraceLogger_Engine) { MOZ_ASSERT(prev == TraceLogger_IonMonkey || prev == TraceLogger_Baseline || prev == TraceLogger_Interpreter); } else if (id == TraceLogger_Scripts) { @@ -576,11 +571,6 @@ TraceLoggerThread::log(uint32_t id) if (enabled_ == 0) return; -#ifdef DEBUG - if (id == TraceLogger_Disable) - graphStack.clear(); -#endif - MOZ_ASSERT(traceLoggerState); // We request for 3 items to add, since if we don't have enough room From 741d9cb87072b39201acb4a7e687db59dcf88cce Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Wed, 21 Sep 2016 16:37:32 -0700 Subject: [PATCH 091/117] Backed out changeset 5a71ed072a2b (bug 1300546) for android failures in test_bug772796.html a=backout CLOSED TREE --- .../jit-test/tests/wasm/regress/bug1300546.js | 34 ------------------- js/src/jit/arm/Lowering-arm.cpp | 3 +- js/src/jit/x86/Lowering-x86.cpp | 3 +- 3 files changed, 4 insertions(+), 36 deletions(-) delete mode 100644 js/src/jit-test/tests/wasm/regress/bug1300546.js diff --git a/js/src/jit-test/tests/wasm/regress/bug1300546.js b/js/src/jit-test/tests/wasm/regress/bug1300546.js deleted file mode 100644 index 6ef35dc136fb..000000000000 --- a/js/src/jit-test/tests/wasm/regress/bug1300546.js +++ /dev/null @@ -1,34 +0,0 @@ -load(libdir + "wasm.js"); - -setJitCompilerOption('wasm.test-mode', 1); - -try { - wasmEvalText(` - - (module - (type $type0 (func)) - (func $func0 - (nop) - (f64.load offset=59 align=1 (i32.const 0)) - (current_memory) - (current_memory) - (current_memory) - (current_memory) - (current_memory) - (current_memory) - (current_memory) - (current_memory) - (i64.rem_s (i64.const 17) (i64.xor (i64.const 17) (i64.xor (i64.const 17) (i64.xor (i64.xor (i64.const 17) (i64.const 17)) (i64.xor (i64.const 17) (i64.const 17)))))) - - (i64.rem_s - (i64.const 17) - (i64.xor - (i64.rem_s (i64.const 17) (i64.const 17)) - (i64.xor (i64.rem_s (i64.const 17) (i64.const 17)) (i64.xor (i64.const 17) (i64.const 17))))) - ) - (memory 1 1) - ) - - `)(createI64(41)); -} catch(e) { -} diff --git a/js/src/jit/arm/Lowering-arm.cpp b/js/src/jit/arm/Lowering-arm.cpp index 18efc9b1c393..f5b0ec0bb1fb 100644 --- a/js/src/jit/arm/Lowering-arm.cpp +++ b/js/src/jit/arm/Lowering-arm.cpp @@ -203,7 +203,8 @@ LIRGeneratorARM::lowerForALUInt64(LInstructionHelpersetInt64Operand(0, useInt64RegisterAtStart(lhs)); - ins->setInt64Operand(INT64_PIECES, useInt64OrConstant(rhs)); + ins->setInt64Operand(INT64_PIECES, + lhs != rhs ? useInt64OrConstant(rhs) : useInt64OrConstantAtStart(rhs)); defineInt64ReuseInput(ins, mir, 0); } diff --git a/js/src/jit/x86/Lowering-x86.cpp b/js/src/jit/x86/Lowering-x86.cpp index 87265f20223b..e9e2a16fbfff 100644 --- a/js/src/jit/x86/Lowering-x86.cpp +++ b/js/src/jit/x86/Lowering-x86.cpp @@ -209,7 +209,8 @@ LIRGeneratorX86::lowerForALUInt64(LInstructionHelpersetInt64Operand(0, useInt64RegisterAtStart(lhs)); - ins->setInt64Operand(INT64_PIECES, useInt64OrConstant(rhs)); + ins->setInt64Operand(INT64_PIECES, + lhs != rhs ? useInt64OrConstant(rhs) : useInt64OrConstantAtStart(rhs)); defineInt64ReuseInput(ins, mir, 0); } From 765926408d4d4aec7591b6ef346d899569f7d132 Mon Sep 17 00:00:00 2001 From: Wes Kocher Date: Wed, 21 Sep 2016 16:56:50 -0700 Subject: [PATCH 092/117] Backed out changeset e1d144423657 (bug 1280571) for making leaks hard to diagnose a=backout CLOSED TREE --- .flake8 | 2 - testing/mochitest/bisection.py | 32 +++++-------- testing/mochitest/leaks.py | 24 ++++------ testing/mochitest/mach_commands.py | 4 +- testing/mochitest/runrobocop.py | 12 ++--- testing/mochitest/runtests.py | 69 +++++++++++++---------------- testing/mochitest/runtestsb2g.py | 6 +-- testing/mochitest/runtestsremote.py | 3 +- tools/lint/flake8.lint | 3 +- 9 files changed, 63 insertions(+), 92 deletions(-) diff --git a/.flake8 b/.flake8 index e284d44cea70..3a5f65948dc1 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,3 @@ [flake8] -# See http://pep8.readthedocs.io/en/latest/intro.html#configuration -ignore = E121, E123, E126, E133, E226, E241, E242, E704, W503, E402 max-line-length = 99 filename = *.py, +.lint diff --git a/testing/mochitest/bisection.py b/testing/mochitest/bisection.py index b4eb4497d6af..9c6d69d2b513 100644 --- a/testing/mochitest/bisection.py +++ b/testing/mochitest/bisection.py @@ -15,8 +15,7 @@ class Bisect(object): self.max_failures = 3 def setup(self, tests): - """This method is used to initialize various variables that are required - for test bisection""" + "This method is used to initialize various variables that are required for test bisection" status = 0 self.contents.clear() # We need totalTests key in contents for sanity check @@ -26,8 +25,7 @@ class Bisect(object): return status def reset(self, expectedError, result): - """This method is used to initialize self.expectedError and self.result - for each loop in runtests.""" + "This method is used to initialize self.expectedError and self.result for each loop in runtests." self.expectedError = expectedError self.result = result @@ -42,27 +40,23 @@ class Bisect(object): return bisectlist def pre_test(self, options, tests, status): - """This method is used to call other methods for setting up variables and - getting the list of tests for bisection.""" + "This method is used to call other methods for setting up variables and getting the list of tests for bisection." if options.bisectChunk == "default": return tests # The second condition in 'if' is required to verify that the failing # test is the last one. - elif ('loop' not in self.contents or not self.contents['tests'][-1].endswith( - options.bisectChunk)): + elif 'loop' not in self.contents or not self.contents['tests'][-1].endswith(options.bisectChunk): tests = self.get_tests_for_bisection(options, tests) status = self.setup(tests) return self.next_chunk_binary(options, status) def post_test(self, options, expectedError, result): - """This method is used to call other methods to summarize results and check whether a - sanity check is done or not.""" + "This method is used to call other methods to summarize results and check whether a sanity check is done or not." self.reset(expectedError, result) status = self.summarize_chunk(options) - # Check whether sanity check has to be done. Also it is necessary to check whether - # options.bisectChunk is present in self.expectedError as we do not want to run - # if it is "default". + # Check whether sanity check has to be done. Also it is necessary to check whether options.bisectChunk is present + # in self.expectedError as we do not want to run if it is "default". if status == -1 and options.bisectChunk in self.expectedError: # In case we have a debug build, we don't want to run a sanity # check, will take too much time. @@ -219,8 +213,7 @@ class Bisect(object): # is the failing test itself therefore the bleedthrough # test is the first test self.summary.append( - "TEST-UNEXPECTED-FAIL | %s | Bleedthrough detected, this test is the " - "root cause for many of the above failures" % + "TEST-UNEXPECTED-FAIL | %s | Bleedthrough detected, this test is the root cause for many of the above failures" % self.contents['testsToRun'][0]) status = -1 else: @@ -243,8 +236,7 @@ class Bisect(object): return 0 else: if self.failcount > 0: - # -1 is being returned as the test is intermittent, so no need to bisect - # further. + # -1 is being returned as the test is intermittent, so no need to bisect further. return -1 # If the test does not fail even once, then proceed to next chunk for bisection. # loop is set to 2 to proceed on bisection. @@ -262,14 +254,12 @@ class Bisect(object): # limit set, it is a perma-fail. if self.failcount < self.max_failures: if self.repeat == 0: - # -1 is being returned as the test is intermittent, so no need to bisect - # further. + # -1 is being returned as the test is intermittent, so no need to bisect further. return -1 return 0 else: self.summary.append( - "TEST-UNEXPECTED-FAIL | %s | Bleedthrough detected, this test is the " - "root cause for many of the above failures" % + "TEST-UNEXPECTED-FAIL | %s | Bleedthrough detected, this test is the root cause for many of the above failures" % self.contents['testsToRun'][0]) return -1 diff --git a/testing/mochitest/leaks.py b/testing/mochitest/leaks.py index a75355dd17cf..11f46f1801ea 100644 --- a/testing/mochitest/leaks.py +++ b/testing/mochitest/leaks.py @@ -54,21 +54,17 @@ class ShutdownLeaks(object): for test in self._parseLeakingTests(): for url, count in self._zipLeakedWindows(test["leakedWindows"]): self.logger.warning( - "TEST-UNEXPECTED-FAIL | %s | leaked %d window(s) until shutdown " - "[url = %s]") % (test["fileName"], count, url) + "TEST-UNEXPECTED-FAIL | %s | leaked %d window(s) until shutdown [url = %s]" % (test["fileName"], count, url)) if test["leakedWindowsString"]: self.logger.info("TEST-INFO | %s | windows(s) leaked: %s" % (test["fileName"], test["leakedWindowsString"])) if test["leakedDocShells"]: - self.logger.warning("TEST-UNEXPECTED-FAIL | %s | leaked %d docShell(s) until " - "shutdown" % - (test["fileName"], len(test["leakedDocShells"]))) - self.logger.info("TEST-INFO | %s | docShell(s) leaked: %s" % - (test["fileName"], ', '.join(["[pid = %s] [id = %s]" % - x for x in test["leakedDocShells"]] - ))) + self.logger.warning("TEST-UNEXPECTED-FAIL | %s | leaked %d docShell(s) until shutdown" % ( + test["fileName"], len(test["leakedDocShells"]))) + self.logger.info("TEST-INFO | %s | docShell(s) leaked: %s" % (test["fileName"], + ', '.join(["[pid = %s] [id = %s]" % x for x in test["leakedDocShells"]]))) def _logWindow(self, line): created = line[:2] == "++" @@ -233,14 +229,12 @@ class LSANLeaks(object): def process(self): if self.fatalError: - self.logger.warning("TEST-UNEXPECTED-FAIL | LeakSanitizer | LeakSanitizer " - "has encountered a fatal error.") + self.logger.warning( + "TEST-UNEXPECTED-FAIL | LeakSanitizer | LeakSanitizer has encountered a fatal error.") if self.foundFrames: - self.logger.info("TEST-INFO | LeakSanitizer | To show the " - "addresses of leaked objects add report_objects=1 to LSAN_OPTIONS") - self.logger.info("TEST-INFO | LeakSanitizer | This can be done " - "in testing/mozbase/mozrunner/mozrunner/utils.py") + self.logger.info("TEST-INFO | LeakSanitizer | To show the addresses of leaked objects add report_objects=1 to LSAN_OPTIONS") + self.logger.info("TEST-INFO | LeakSanitizer | This can be done in testing/mozbase/mozrunner/mozrunner/utils.py") for f in self.foundFrames: self.logger.warning( diff --git a/testing/mochitest/mach_commands.py b/testing/mochitest/mach_commands.py index 7b31fbf02e7d..c7e50a83b8ee 100644 --- a/testing/mochitest/mach_commands.py +++ b/testing/mochitest/mach_commands.py @@ -9,6 +9,7 @@ from collections import defaultdict from itertools import chain import logging import os +import shutil import sys import warnings @@ -349,8 +350,7 @@ def verify_host_bin(): # validate MOZ_HOST_BIN environment variables for Android tests MOZ_HOST_BIN = os.environ.get('MOZ_HOST_BIN') if not MOZ_HOST_BIN: - print('environment variable MOZ_HOST_BIN must be set to a directory containing host ' - 'xpcshell') + print('environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell') return 1 elif not os.path.isdir(MOZ_HOST_BIN): print('$MOZ_HOST_BIN does not specify a directory') diff --git a/testing/mochitest/runrobocop.py b/testing/mochitest/runrobocop.py index 7f76eee73bf7..433705de2892 100644 --- a/testing/mochitest/runrobocop.py +++ b/testing/mochitest/runrobocop.py @@ -376,9 +376,9 @@ class RobocopTestRunner(MochitestDesktop): for key, value in browserEnv.items(): try: value.index(',') - self.log.error("setupRobotiumConfig: browserEnv - Found a ',' " - "in our value, unable to process value. key=%s,value=%s" % - (key, value)) + self.log.error( + "setupRobotiumConfig: browserEnv - Found a ',' in our value, unable to process value. key=%s,value=%s" % + (key, value)) self.log.error("browserEnv=%s" % browserEnv) except ValueError: envstr += "%s%s=%s" % (delim, key, value) @@ -445,9 +445,9 @@ class RobocopTestRunner(MochitestDesktop): # This does not launch a test at all. It launches an activity # that starts Fennec and then waits indefinitely, since cat # never returns. - browserArgs = ["start", "-n", - "org.mozilla.roboexample.test/org.mozilla." - "gecko.LaunchFennecWithConfigurationActivity", "&&", "cat"] + browserArgs = ["start", + "-n", "org.mozilla.roboexample.test/org.mozilla.gecko.LaunchFennecWithConfigurationActivity", + "&&", "cat"] self.dm.default_timeout = sys.maxint # Forever. self.log.info("") self.log.info("Serving mochi.test Robocop root at http://%s:%s/tests/robocop/" % diff --git a/testing/mochitest/runtests.py b/testing/mochitest/runtests.py index 3f733ec64515..142adfd84fbb 100644 --- a/testing/mochitest/runtests.py +++ b/testing/mochitest/runtests.py @@ -157,8 +157,7 @@ class MessageLogger(object): self.errors = [] def valid_message(self, obj): - """True if the given object is a valid structured message - (only does a superficial validation)""" + """True if the given object is a valid structured message (only does a superficial validation)""" return isinstance(obj, dict) and 'action' in obj and obj[ 'action'] in MessageLogger.VALID_ACTIONS @@ -180,8 +179,7 @@ class MessageLogger(object): message['message'] = unicode(message['message']) def parse_line(self, line): - """Takes a given line of input (structured or not) and - returns a list of structured messages""" + """Takes a given line of input (structured or not) and returns a list of structured messages""" line = line.rstrip().decode("UTF-8", "replace") messages = [] @@ -415,9 +413,7 @@ class MochitestServer(object): self._httpdPath, "httpd.js"), "-e", - "const _PROFILE_PATH = '%(profile)s'; const _SERVER_PORT = '%(port)s'; " - "const _SERVER_ADDR = '%(server)s'; const _TEST_PREFIX = %(testPrefix)s; " - "const _DISPLAY_RESULTS = %(displayResults)s;" % { + """const _PROFILE_PATH = '%(profile)s'; const _SERVER_PORT = '%(port)s'; const _SERVER_ADDR = '%(server)s'; const _TEST_PREFIX = %(testPrefix)s; const _DISPLAY_RESULTS = %(displayResults)s;""" % { "profile": self._profileDir.replace( '\\', '\\\\'), @@ -559,6 +555,7 @@ class MochitestBase(object): self.message_logger = MessageLogger(logger=self.log) + def update_mozinfo(self): """walk up directories to find mozinfo.json update the info""" # TODO: This should go in a more generic place, e.g. mozinfo @@ -818,7 +815,7 @@ class MochitestBase(object): % self.websocketProcessBridge.pid) # ensure the server is up, wait for at most ten seconds - for i in range(1, 100): + for i in range(1,100): if self.websocketProcessBridge.proc.poll() is not None: self.log.error("runtests.py | websocket/process bridge failed " "to launch. Are all the dependencies installed?") @@ -954,8 +951,7 @@ class MochitestBase(object): # Write userChrome.css. chrome = """ -/* set default namespace to XUL */ -@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); +@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* set default namespace to XUL */ toolbar, toolbarpalette { background-color: rgb(235, 235, 235) !important; @@ -1139,8 +1135,7 @@ toolbar#nav-bar { manifestFileAbs = os.path.abspath(options.manifestFile) assert manifestFileAbs.startswith(SCRIPT_DIR) manifest = TestManifest([options.manifestFile], strict=False) - elif (options.manifestFile and - os.path.isfile(os.path.join(SCRIPT_DIR, options.manifestFile))): + elif options.manifestFile and os.path.isfile(os.path.join(SCRIPT_DIR, options.manifestFile)): manifestFileAbs = os.path.abspath( os.path.join( SCRIPT_DIR, @@ -1283,7 +1278,8 @@ toolbar#nav-bar { script = self.start_script with self.marionette.using_context('chrome'): - return self.marionette.execute_script(script, script_args=self.start_script_args) + return self.marionette.execute_script(script, + script_args=self.start_script_args) class SSLTunnel: @@ -1694,14 +1690,14 @@ class MochitestDesktop(MochitestBase): # https://bugzilla.mozilla.org/show_bug.cgi?id=913152 # proxy - # use SSL port for legacy compatibility; see - # - https://bugzilla.mozilla.org/show_bug.cgi?id=688667#c66 - # - https://bugzilla.mozilla.org/show_bug.cgi?id=899221 - # - https://github.com/mozilla/mozbase/commit/43f9510e3d58bfed32790c82a57edac5f928474d - # 'ws': str(self.webSocketPort) proxy = {'remote': options.webServer, 'http': options.httpPort, 'https': options.sslPort, + # use SSL port for legacy compatibility; see + # - https://bugzilla.mozilla.org/show_bug.cgi?id=688667#c66 + # - https://bugzilla.mozilla.org/show_bug.cgi?id=899221 + # - https://github.com/mozilla/mozbase/commit/43f9510e3d58bfed32790c82a57edac5f928474d + # 'ws': str(self.webSocketPort) 'ws': options.sslPort } @@ -1860,8 +1856,9 @@ class MochitestDesktop(MochitestBase): processPID) if isPidAlive(processPID): foundZombie = True - self.log.info("TEST-UNEXPECTED-FAIL | zombiecheck | child process " - "%d still alive after shutdown" % processPID) + self.log.info( + "TEST-UNEXPECTED-FAIL | zombiecheck | child process %d still alive after shutdown" % + processPID) self.killAndGetStack( processPID, utilityPath, @@ -1890,8 +1887,7 @@ class MochitestDesktop(MochitestBase): marionette_args=None): """ Run the app, log the duration it took to execute, return the status code. - Kills the app if it runs for longer than |maxTime| seconds, or outputs nothing - for |timeout| seconds. + Kills the app if it runs for longer than |maxTime| seconds, or outputs nothing for |timeout| seconds. """ # configure the message logger buffering @@ -1917,8 +1913,7 @@ class MochitestDesktop(MochitestBase): valgrindSuppFiles_final = [] if valgrindSuppFiles is not None: - valgrindSuppFiles_final = ["--suppressions=" + - path for path in valgrindSuppFiles.split(",")] + valgrindSuppFiles_final = ["--suppressions=" + path for path in valgrindSuppFiles.split(",")] debug_args = ([valgrindPath] + mozdebug.get_default_valgrind_args() @@ -2167,9 +2162,8 @@ class MochitestDesktop(MochitestBase): # To inform that we are in the process of bisection, and to # look for bleedthrough if options.bisectChunk != "default" and not bisection_log: - self.log.info("TEST-UNEXPECTED-FAIL | Bisection | Please ignore repeats " - "and look for 'Bleedthrough' (if any) at the end of " - "the failure list") + self.log.info( + "TEST-UNEXPECTED-FAIL | Bisection | Please ignore repeats and look for 'Bleedthrough' (if any) at the end of the failure list") bisection_log = 1 result = self.doTests(options, testsToRun) @@ -2230,8 +2224,8 @@ class MochitestDesktop(MochitestBase): tests_in_dir = [t for t in testsToRun if os.path.dirname(t) == d] # If we are using --run-by-dir, we should not use the profile path (if) provided - # by the user, since we need to create a new directory for each run. We would face - # problems if we use the directory provided by the user. + # by the user, since we need to create a new directory for each run. We would face problems + # if we use the directory provided by the user. result = self.runMochitests(options, tests_in_dir) # Dump the logging buffer @@ -2338,8 +2332,7 @@ class MochitestDesktop(MochitestBase): return 1 if self.mozLogs: - self.browserEnv["MOZ_LOG_FILE"] = "{}/moz-pid=%PID-uid={}.log".format( - self.browserEnv["MOZ_UPLOAD_DIR"], str(uuid.uuid4())) + self.browserEnv["MOZ_LOG_FILE"] = "{}/moz-pid=%PID-uid={}.log".format(self.browserEnv["MOZ_UPLOAD_DIR"], str(uuid.uuid4())) try: self.startServers(options, debuggerInfo) @@ -2455,12 +2448,12 @@ class MochitestDesktop(MochitestBase): """handle process output timeout""" # TODO: bug 913975 : _processOutput should call self.processOutputLine # one more time one timeout (I think) - error_message = ("TEST-UNEXPECTED-TIMEOUT | %s | application timed out after " - "%d seconds with no output") % (self.lastTestSeen, int(timeout)) + error_message = "TEST-UNEXPECTED-TIMEOUT | %s | application timed out after %d seconds with no output" % ( + self.lastTestSeen, int(timeout)) self.message_logger.dump_buffered() self.message_logger.buffering = False self.log.info(error_message) - self.log.error("Force-terminating active process(es).") + self.log.error("Force-terminating active process(es)."); browser_pid = browser_pid or proc.pid child_pids = self.extract_child_pids(processLog, browser_pid) @@ -2517,10 +2510,10 @@ class MochitestDesktop(MochitestBase): self.lsanLeaks = lsanLeaks self.bisectChunk = bisectChunk - # With metro browser runs this script launches the metro test harness which launches - # the browser. The metro test harness hands back the real browser process id via log - # output which we need to pick up on and parse out. This variable tracks the real - # browser process id if we find it. + # With metro browser runs this script launches the metro test harness which launches the browser. + # The metro test harness hands back the real browser process id via log output which we need to + # pick up on and parse out. This variable tracks the real browser + # process id if we find it. self.browserProcessId = None self.stackFixerFunction = self.stackFixer() diff --git a/testing/mochitest/runtestsb2g.py b/testing/mochitest/runtestsb2g.py index d2318e505c33..ae9ea3b5ace5 100644 --- a/testing/mochitest/runtestsb2g.py +++ b/testing/mochitest/runtestsb2g.py @@ -219,8 +219,7 @@ class MochitestB2G(MochitestBase): """) self.marionette.execute_script(""" - let SECURITY_PREF = "security.turn_off_all_security_" + - "so_that_viruses_can_take_over_this_computer"; + let SECURITY_PREF = "security.turn_off_all_security_so_that_viruses_can_take_over_this_computer"; Services.prefs.setBoolPref(SECURITY_PREF, true); if (!testUtils.hasOwnProperty("specialPowersObserver")) { @@ -313,8 +312,7 @@ class MochitestB2G(MochitestBase): os.remove(options.pidFile) os.remove(options.pidFile + ".xpcshell.pid") except: - print("Warning: cleaning up pidfile '%s' was unsuccessful " - "from the test harness") % options.pidFile + print "Warning: cleaning up pidfile '%s' was unsuccessful from the test harness" % options.pidFile # stop and clean up the runner if getattr(self, 'runner', False): diff --git a/testing/mochitest/runtestsremote.py b/testing/mochitest/runtestsremote.py index 964275ad8deb..315e0e2643cc 100644 --- a/testing/mochitest/runtestsremote.py +++ b/testing/mochitest/runtestsremote.py @@ -194,8 +194,7 @@ class MochiRemote(MochitestDesktop): # Runtime (webapp). if options.flavor == 'chrome': # append overlay to chrome.manifest - chrome = ("overlay chrome://browser/content/browser.xul " - "chrome://mochikit/content/browser-test-overlay.xul") + chrome = "overlay chrome://browser/content/browser.xul chrome://mochikit/content/browser-test-overlay.xul" path = os.path.join(options.profilePath, 'extensions', 'staged', 'mochikit@mozilla.org', 'chrome.manifest') with open(path, "a") as f: diff --git a/tools/lint/flake8.lint b/tools/lint/flake8.lint index e74aec95e61c..0f138a0487d1 100644 --- a/tools/lint/flake8.lint +++ b/tools/lint/flake8.lint @@ -135,12 +135,11 @@ LINTER = { 'testing/firefox-ui', 'testing/marionette/client', 'testing/marionette/harness', - 'testing/mochitest', 'testing/puppeteer', 'testing/talos/', 'tools/lint', ], - 'exclude': ['testing/mochitest/pywebsocket'], + 'exclude': [], 'extensions': EXTENSIONS, 'type': 'external', 'payload': lint, From db1ebdc0cf0f85285ed51042f1e30a35dc2378a7 Mon Sep 17 00:00:00 2001 From: Matthew Gregan Date: Wed, 21 Sep 2016 19:41:34 +1200 Subject: [PATCH 093/117] Bug 1304303 - Speed up default initialization of SampleInfoSize table. r=gerald MozReview-Commit-ID: 9dValMxqVkh --- media/libstagefright/binding/MoofParser.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/media/libstagefright/binding/MoofParser.cpp b/media/libstagefright/binding/MoofParser.cpp index 354fcf484e17..9612b9074741 100644 --- a/media/libstagefright/binding/MoofParser.cpp +++ b/media/libstagefright/binding/MoofParser.cpp @@ -848,14 +848,11 @@ Saiz::Saiz(Box& aBox, AtomType aDefaultType) uint8_t defaultSampleInfoSize = reader->ReadU8(); uint32_t count = reader->ReadU32(); if (defaultSampleInfoSize) { - if (!mSampleInfoSize.SetCapacity(count, fallible)) { + if (!mSampleInfoSize.SetLength(count, fallible)) { LOG(Saiz, "OOM"); return; } - for (int i = 0; i < count; i++) { - MOZ_ALWAYS_TRUE(mSampleInfoSize.AppendElement(defaultSampleInfoSize, - fallible)); - } + MOZ_ALWAYS_TRUE(mSampleInfoSize.ReplaceElementsAt(0, count, defaultSampleInfoSize, fallible)); } else { if (!reader->ReadArray(mSampleInfoSize, count)) { LOG(Saiz, "Incomplete Box (OOM or missing count:%u)", count); From 3c6249dd4b07c849490b5733f9c3e3cda4722cea Mon Sep 17 00:00:00 2001 From: Thomas Wisniewski Date: Wed, 21 Sep 2016 13:48:05 -0400 Subject: [PATCH 094/117] Bug 884693 - Do not log console warnings for XHR parse failures if HTTP status is 204 or 304. r=smaug --- dom/base/nsIDocument.h | 3 ++ dom/base/test/chrome/bug884693.sjs | 8 +++ dom/base/test/chrome/chrome.ini | 1 + dom/base/test/chrome/test_bug884693.xul | 67 +++++++++++++++++++++++++ dom/base/test/moz.build | 1 + dom/xhr/XMLHttpRequestMainThread.cpp | 9 ++++ dom/xml/XMLDocument.cpp | 12 +++++ dom/xml/XMLDocument.h | 6 +++ parser/htmlparser/nsExpatDriver.cpp | 5 ++ 9 files changed, 112 insertions(+) create mode 100644 dom/base/test/chrome/bug884693.sjs create mode 100644 dom/base/test/chrome/test_bug884693.xul diff --git a/dom/base/nsIDocument.h b/dom/base/nsIDocument.h index 982b7b6ee6a4..c62fb4ee802a 100644 --- a/dom/base/nsIDocument.h +++ b/dom/base/nsIDocument.h @@ -250,6 +250,9 @@ public: virtual void SetSuppressParserErrorElement(bool aSuppress) {} virtual bool SuppressParserErrorElement() { return false; } + virtual void SetSuppressParserErrorConsoleMessages(bool aSuppress) {} + virtual bool SuppressParserErrorConsoleMessages() { return false; } + /** * Signal that the document title may have changed * (see nsDocument::GetTitle). diff --git a/dom/base/test/chrome/bug884693.sjs b/dom/base/test/chrome/bug884693.sjs new file mode 100644 index 000000000000..30d4f8a033bd --- /dev/null +++ b/dom/base/test/chrome/bug884693.sjs @@ -0,0 +1,8 @@ +function handleRequest(request, response) +{ + let [status, statusText, body] = request.queryString.split("&"); + response.setStatusLine(request.httpVersion, status, statusText); + response.setHeader("Content-Type", "text/xml", false); + response.setHeader("Content-Length", "" + body.length, false); + response.write(body); +} diff --git a/dom/base/test/chrome/chrome.ini b/dom/base/test/chrome/chrome.ini index 1426b535c1d4..68bb9a063e44 100644 --- a/dom/base/test/chrome/chrome.ini +++ b/dom/base/test/chrome/chrome.ini @@ -58,6 +58,7 @@ skip-if = buildapp == 'mulet' [test_bug800386.xul] [test_bug814638.xul] [test_bug816340.xul] +[test_bug884693.xul] [test_bug914381.html] [test_bug990812.xul] [test_bug1063837.xul] diff --git a/dom/base/test/chrome/test_bug884693.xul b/dom/base/test/chrome/test_bug884693.xul new file mode 100644 index 000000000000..6a2be9d733b9 --- /dev/null +++ b/dom/base/test/chrome/test_bug884693.xul @@ -0,0 +1,67 @@ + + + + + + + diff --git a/dom/base/test/moz.build b/dom/base/test/moz.build index 742c62cf8704..59938c573920 100644 --- a/dom/base/test/moz.build +++ b/dom/base/test/moz.build @@ -36,6 +36,7 @@ TEST_DIRS += [ TEST_HARNESS_FILES.testing.mochitest.tests.dom.base.test.chrome += [ 'chrome/bug421622-referer.sjs', + 'chrome/bug884693.sjs', 'chrome/nochrome_bug765993.html', 'chrome/nochrome_bug765993.js', 'chrome/nochrome_bug765993.js^headers^', diff --git a/dom/xhr/XMLHttpRequestMainThread.cpp b/dom/xhr/XMLHttpRequestMainThread.cpp index d7efc04fb84a..895c80d3c02c 100644 --- a/dom/xhr/XMLHttpRequestMainThread.cpp +++ b/dom/xhr/XMLHttpRequestMainThread.cpp @@ -2000,6 +2000,15 @@ XMLHttpRequestMainThread::OnStopRequest(nsIRequest *request, nsISupports *ctxt, mRequestObserver->OnStopRequest(request, ctxt, status); } + // suppress parsing failure messages to console for status 204/304 (see bug 884693). + if (mResponseXML) { + uint32_t responseStatus; + if (NS_SUCCEEDED(GetStatus(&responseStatus)) && + (responseStatus == 204 || responseStatus == 304)) { + mResponseXML->SetSuppressParserErrorConsoleMessages(true); + } + } + // make sure to notify the listener if we were aborted // XXX in fact, why don't we do the cleanup below in this case?? // State::unsent is for abort calls. See OnStartRequest above. diff --git a/dom/xml/XMLDocument.cpp b/dom/xml/XMLDocument.cpp index fd3197f1b1c6..096009cc872b 100644 --- a/dom/xml/XMLDocument.cpp +++ b/dom/xml/XMLDocument.cpp @@ -499,6 +499,18 @@ XMLDocument::SuppressParserErrorElement() return mSuppressParserErrorElement; } +void +XMLDocument::SetSuppressParserErrorConsoleMessages(bool aSuppress) +{ + mSuppressParserErrorConsoleMessages = aSuppress; +} + +bool +XMLDocument::SuppressParserErrorConsoleMessages() +{ + return mSuppressParserErrorConsoleMessages; +} + nsresult XMLDocument::StartDocumentLoad(const char* aCommand, nsIChannel* aChannel, diff --git a/dom/xml/XMLDocument.h b/dom/xml/XMLDocument.h index d5def672a104..28c9ff61bb8c 100644 --- a/dom/xml/XMLDocument.h +++ b/dom/xml/XMLDocument.h @@ -32,6 +32,9 @@ public: virtual void SetSuppressParserErrorElement(bool aSuppress) override; virtual bool SuppressParserErrorElement() override; + virtual void SetSuppressParserErrorConsoleMessages(bool aSuppress) override; + virtual bool SuppressParserErrorConsoleMessages() override; + virtual nsresult StartDocumentLoad(const char* aCommand, nsIChannel* channel, nsILoadGroup* aLoadGroup, nsISupports* aContainer, @@ -92,6 +95,9 @@ protected: // If true, do not output elements. Per spec, XMLHttpRequest // shouldn't output them, whereas DOMParser/others should (see bug 918703). bool mSuppressParserErrorElement; + + // If true, do not log parsing errors to the web console (see bug 884693). + bool mSuppressParserErrorConsoleMessages; }; } // namespace dom diff --git a/parser/htmlparser/nsExpatDriver.cpp b/parser/htmlparser/nsExpatDriver.cpp index 273ccf88bc7d..ac8e7522a974 100644 --- a/parser/htmlparser/nsExpatDriver.cpp +++ b/parser/htmlparser/nsExpatDriver.cpp @@ -969,6 +969,11 @@ nsExpatDriver::HandleError() } } + nsCOMPtr doc = do_QueryInterface(mOriginalSink->GetTarget()); + if (doc && doc->SuppressParserErrorConsoleMessages()) { + shouldReportError = false; + } + if (shouldReportError) { nsCOMPtr cs (do_GetService(NS_CONSOLESERVICE_CONTRACTID)); From 121151ec67cffdc721f3d399171cd2230c5a02d3 Mon Sep 17 00:00:00 2001 From: Eric Faust Date: Thu, 15 Sep 2016 21:35:14 -0700 Subject: [PATCH 095/117] Bug 1263595 - Avoid deadlock between the JIT and the gecko profiler on win64. (r=froydnj) --- dom/indexedDB/ActorsParent.cpp | 4 +++ js/src/jit/ExecutableAllocatorWin.cpp | 29 ++++++++++++++++- mozglue/misc/StackWalk.cpp | 44 ++++++++++++++++++++++++++ mozglue/misc/StackWalk_windows.h | 21 ++++++++++++ mozglue/misc/moz.build | 1 + netwerk/base/ProxyAutoConfig.cpp | 2 ++ tools/profiler/core/ThreadInfo.cpp | 19 +++++++++++ tools/profiler/core/ThreadInfo.h | 4 +++ tools/profiler/core/ThreadProfile.h | 3 ++ tools/profiler/core/platform-win32.cc | 30 ++++++++++++++++-- xpcom/base/CycleCollectedJSContext.cpp | 2 ++ xpcom/threads/HangMonitor.cpp | 15 +++++++++ xpcom/threads/LazyIdleThread.cpp | 13 ++++++++ xpcom/threads/nsIThread.idl | 8 +++++ xpcom/threads/nsThread.cpp | 15 +++++++++ xpcom/threads/nsThread.h | 3 ++ 16 files changed, 210 insertions(+), 3 deletions(-) create mode 100644 mozglue/misc/StackWalk_windows.h diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp index e7427d446332..ed0b660e28f0 100644 --- a/dom/indexedDB/ActorsParent.cpp +++ b/dom/indexedDB/ActorsParent.cpp @@ -24179,6 +24179,10 @@ NormalJSContext::Init() return false; } + // Let everyone know that we might be able to call JS. This alerts the + // profiler about certain possible deadlocks. + NS_GetCurrentThread()->SetCanInvokeJS(true); + // Not setting this will cause JS_CHECK_RECURSION to report false positives. JS_SetNativeStackQuota(mContext, 128 * sizeof(size_t) * 1024); diff --git a/js/src/jit/ExecutableAllocatorWin.cpp b/js/src/jit/ExecutableAllocatorWin.cpp index bad54e413412..5b71c210fbb9 100644 --- a/js/src/jit/ExecutableAllocatorWin.cpp +++ b/js/src/jit/ExecutableAllocatorWin.cpp @@ -25,6 +25,10 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifdef MOZ_STACKWALKING +#include "mozilla/StackWalk_windows.h" +#endif + #include "mozilla/WindowsVersion.h" #include "jsfriendapi.h" @@ -165,14 +169,37 @@ RegisterExecutableMemory(void* p, size_t bytes, size_t pageSize) if (!VirtualProtect(p, pageSize, PAGE_EXECUTE_READ, &oldProtect)) return false; - return RtlAddFunctionTable(&r->runtimeFunction, 1, reinterpret_cast(p)); + // XXX NB: The profiler believes this function is only called from the main + // thread. If that ever becomes untrue, SPS must be updated immediately. +#ifdef MOZ_STACKWALKING + AcquireStackWalkWorkaroundLock(); +#endif + + bool success = RtlAddFunctionTable(&r->runtimeFunction, 1, reinterpret_cast(p)); + +#ifdef MOZ_STACKWALKING + ReleaseStackWalkWorkaroundLock(); +#endif + + return success; } static void UnregisterExecutableMemory(void* p, size_t bytes, size_t pageSize) { ExceptionHandlerRecord* r = reinterpret_cast(p); + + // XXX NB: The profiler believes this function is only called from the main + // thread. If that ever becomes untrue, SPS must be updated immediately. +#ifdef MOZ_STACKWALKING + AcquireStackWalkWorkaroundLock(); +#endif + RtlDeleteFunctionTable(&r->runtimeFunction); + +#ifdef MOZ_STACKWALKING + ReleaseStackWalkWorkaroundLock(); +#endif } #endif diff --git a/mozglue/misc/StackWalk.cpp b/mozglue/misc/StackWalk.cpp index a208bad9905e..bb23b922a896 100644 --- a/mozglue/misc/StackWalk.cpp +++ b/mozglue/misc/StackWalk.cpp @@ -188,6 +188,7 @@ StackWalkInitCriticalAddress() #include #include #include "mozilla/ArrayUtils.h" +#include "mozilla/StackWalk_windows.h" #include // We need a way to know if we are building for WXP (or later), as if we are, we @@ -441,6 +442,49 @@ WalkStackMain64(struct WalkStackData* aData) } } +// The JIT needs to allocate executable memory. Because of the inanity of +// the win64 APIs, this requires locks that stalk walkers also need. Provide +// another lock to allow synchronization around these resources. +#ifdef _M_AMD64 + +struct CriticalSectionAutoInitializer { + CRITICAL_SECTION lock; + + CriticalSectionAutoInitializer() { + InitializeCriticalSection(&lock); + } +}; + +static CriticalSectionAutoInitializer gWorkaroundLock; + +#endif // _M_AMD64 + +MFBT_API void +AcquireStackWalkWorkaroundLock() +{ +#ifdef _M_AMD64 + EnterCriticalSection(&gWorkaroundLock.lock); +#endif +} + +MFBT_API bool +TryAcquireStackWalkWorkaroundLock() +{ +#ifdef _M_AMD64 + return TryEnterCriticalSection(&gWorkaroundLock.lock); +#else + return true; +#endif +} + +MFBT_API void +ReleaseStackWalkWorkaroundLock() +{ +#ifdef _M_AMD64 + LeaveCriticalSection(&gWorkaroundLock.lock); +#endif +} + static unsigned int WINAPI WalkStackThread(void* aData) { diff --git a/mozglue/misc/StackWalk_windows.h b/mozglue/misc/StackWalk_windows.h new file mode 100644 index 000000000000..5ffdd20683f8 --- /dev/null +++ b/mozglue/misc/StackWalk_windows.h @@ -0,0 +1,21 @@ +#ifndef mozilla_StackWalk_windows_h +#define mozilla_StackWalk_windows_h + +#include "mozilla/Types.h" + +/** + * Allow stack walkers to work around the egregious win64 dynamic lookup table + * list API by locking around SuspendThread to avoid deadlock. + * + * See comment in StackWalk.cpp + */ +MFBT_API void +AcquireStackWalkWorkaroundLock(); + +MFBT_API bool +TryAcquireStackWalkWorkaroundLock(); + +MFBT_API void +ReleaseStackWalkWorkaroundLock(); + +#endif // mozilla_StackWalk_windows_h diff --git a/mozglue/misc/moz.build b/mozglue/misc/moz.build index f311ddac20db..2e1ca7960802 100644 --- a/mozglue/misc/moz.build +++ b/mozglue/misc/moz.build @@ -7,6 +7,7 @@ EXPORTS.mozilla += [ if CONFIG['OS_ARCH'] == 'WINNT': EXPORTS.mozilla += [ + 'StackWalk_windows.h', 'TimeStamp_windows.h', ] diff --git a/netwerk/base/ProxyAutoConfig.cpp b/netwerk/base/ProxyAutoConfig.cpp index 8ec5c79db709..a4546edd8bbe 100644 --- a/netwerk/base/ProxyAutoConfig.cpp +++ b/netwerk/base/ProxyAutoConfig.cpp @@ -761,6 +761,8 @@ ProxyAutoConfig::SetupJS() if (mPACScript.IsEmpty()) return NS_ERROR_FAILURE; + NS_GetCurrentThread()->SetCanInvokeJS(true); + mJSContext = JSContextWrapper::Create(); if (!mJSContext) return NS_ERROR_FAILURE; diff --git a/tools/profiler/core/ThreadInfo.cpp b/tools/profiler/core/ThreadInfo.cpp index a901567297d3..45005078476f 100644 --- a/tools/profiler/core/ThreadInfo.cpp +++ b/tools/profiler/core/ThreadInfo.cpp @@ -7,6 +7,8 @@ #include "ThreadInfo.h" #include "ThreadProfile.h" +#include "mozilla/DebugOnly.h" + ThreadInfo::ThreadInfo(const char* aName, int aThreadId, bool aIsMainThread, PseudoStack* aPseudoStack, void* aStackTop) @@ -50,3 +52,20 @@ ThreadInfo::SetPendingDelete() } } +bool +ThreadInfo::CanInvokeJS() const +{ +#ifdef SPS_STANDALONE + return false; +#else + nsIThread* thread = GetThread(); + if (!thread) { + MOZ_ASSERT(IsMainThread()); + return true; + } + bool result; + mozilla::DebugOnly rv = thread->GetCanInvokeJS(&result); + MOZ_ASSERT(NS_SUCCEEDED(rv)); + return result; +#endif +} diff --git a/tools/profiler/core/ThreadInfo.h b/tools/profiler/core/ThreadInfo.h index b5cb824292db..1cb4e5dc8a6d 100644 --- a/tools/profiler/core/ThreadInfo.h +++ b/tools/profiler/core/ThreadInfo.h @@ -35,7 +35,11 @@ class ThreadInfo { * May be null for the main thread if the profiler was started during startup */ nsIThread* GetThread() const { return mThread.get(); } + #endif + + bool CanInvokeJS() const; + private: char* mName; int mThreadId; diff --git a/tools/profiler/core/ThreadProfile.h b/tools/profiler/core/ThreadProfile.h index 297f2bdca22d..ca2bbfe7ab43 100644 --- a/tools/profiler/core/ThreadProfile.h +++ b/tools/profiler/core/ThreadProfile.h @@ -49,6 +49,9 @@ public: #ifndef SPS_STANDALONE ThreadResponsiveness* GetThreadResponsiveness() { return &mRespInfo; } #endif + + bool CanInvokeJS() const { return mThreadInfo->CanInvokeJS(); } + void SetPendingDelete() { mPseudoStack = nullptr; diff --git a/tools/profiler/core/platform-win32.cc b/tools/profiler/core/platform-win32.cc index 8344ad011b82..f3b965164f57 100644 --- a/tools/profiler/core/platform-win32.cc +++ b/tools/profiler/core/platform-win32.cc @@ -12,7 +12,7 @@ // * Neither the name of Google, Inc. nor the names of its contributors // may be used to endorse or promote products derived from this // software without specific prior written permission. -// +// // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS @@ -37,6 +37,9 @@ // Memory profile #include "nsMemoryReporterManager.h" +#include "mozilla/StackWalk_windows.h" + + class PlatformData { public: // Get a handle to the calling thread. This is the thread that we are @@ -101,7 +104,7 @@ class SamplerThread : public Thread { } else { ASSERT(instance_->interval_ == sampler->interval()); } - } + } static void StopSampler() { instance_->Join(); @@ -188,6 +191,29 @@ class SamplerThread : public Thread { if (SuspendThread(profiled_thread) == kSuspendFailed) return; + // Threads that may invoke JS require extra attention. Since, on windows, + // the jits also need to modify the same dynamic function table that we need + // to get a stack trace, we have to be wary of that to avoid deadlock. + // + // When embedded in Gecko, for threads that aren't the main thread, + // CanInvokeJS consults an unlocked value in the nsIThread, so we must + // consult this after suspending the profiled thread to avoid racing + // against a value change. + if (thread_profile->CanInvokeJS()) { + if (!TryAcquireStackWalkWorkaroundLock()) { + ResumeThread(profiled_thread); + return; + } + + // It is safe to immediately drop the lock. We only need to contend with + // the case in which the profiled thread held needed system resources. + // If the profiled thread had held those resources, the trylock would have + // failed. Anyone else who grabs those resources will continue to make + // progress, since those threads are not suspended. Because of this, + // we cannot deadlock with them, and should let them run as they please. + ReleaseStackWalkWorkaroundLock(); + } + // Using only CONTEXT_CONTROL is faster but on 64-bit it causes crashes in // RtlVirtualUnwind (see bug 1120126) so we set all the flags. #if V8_HOST_ARCH_X64 diff --git a/xpcom/base/CycleCollectedJSContext.cpp b/xpcom/base/CycleCollectedJSContext.cpp index a425652e6b99..81b2893f5b2c 100644 --- a/xpcom/base/CycleCollectedJSContext.cpp +++ b/xpcom/base/CycleCollectedJSContext.cpp @@ -512,6 +512,8 @@ CycleCollectedJSContext::Initialize(JSContext* aParentContext, return NS_ERROR_OUT_OF_MEMORY; } + NS_GetCurrentThread()->SetCanInvokeJS(true); + if (!JS_AddExtraGCRootsTracer(mJSContext, TraceBlackJS, this)) { MOZ_CRASH("JS_AddExtraGCRootsTracer failed"); } diff --git a/xpcom/threads/HangMonitor.cpp b/xpcom/threads/HangMonitor.cpp index e051c58ae0f5..7438ad632191 100644 --- a/xpcom/threads/HangMonitor.cpp +++ b/xpcom/threads/HangMonitor.cpp @@ -16,6 +16,9 @@ #include "mozilla/UniquePtr.h" #include "nsReadableUtils.h" #include "mozilla/StackWalk.h" +#ifdef _WIN64 +#include "mozilla/StackWalk_windows.h" +#endif #include "nsThreadUtils.h" #include "nsXULAppAPI.h" @@ -146,7 +149,19 @@ GetChromeHangReport(Telemetry::ProcessedStack& aStack, // so allocate ahead of time std::vector rawStack; rawStack.reserve(MAX_CALL_STACK_PCS); + + // Workaround possible deadlock where the main thread is running a + // long-standing JS job, and happens to be in the JIT allocator when we + // suspend it. Since, on win 64, this requires holding a process lock that + // MozStackWalk requires, take this "workaround lock" to avoid deadlock. +#ifdef _WIN64 + AcquireStackWalkWorkaroundLock(); +#endif DWORD ret = ::SuspendThread(winMainThreadHandle); +#ifdef _WIN64 + ReleaseStackWalkWorkaroundLock(); +#endif + if (ret == -1) { return; } diff --git a/xpcom/threads/LazyIdleThread.cpp b/xpcom/threads/LazyIdleThread.cpp index 7b9da184600e..ee100a5a2ed6 100644 --- a/xpcom/threads/LazyIdleThread.cpp +++ b/xpcom/threads/LazyIdleThread.cpp @@ -458,6 +458,19 @@ LazyIdleThread::GetPRThread(PRThread** aPRThread) return NS_ERROR_NOT_AVAILABLE; } +NS_IMETHODIMP +LazyIdleThread::GetCanInvokeJS(bool* aCanInvokeJS) +{ + *aCanInvokeJS = false; + return NS_OK; +} + +NS_IMETHODIMP +LazyIdleThread::SetCanInvokeJS(bool aCanInvokeJS) +{ + return NS_ERROR_NOT_IMPLEMENTED; +} + NS_IMETHODIMP LazyIdleThread::AsyncShutdown() { diff --git a/xpcom/threads/nsIThread.idl b/xpcom/threads/nsIThread.idl index 36fd9af1522a..6f937b6165fc 100644 --- a/xpcom/threads/nsIThread.idl +++ b/xpcom/threads/nsIThread.idl @@ -26,6 +26,14 @@ interface nsIThread : nsIEventTarget */ [noscript] readonly attribute PRThread PRThread; + /** + * @returns + * Whether or not this thread may call into JS. Used in the profiler + * to avoid some unnecessary locking. + */ + [noscript] attribute boolean CanInvokeJS; + + /** * Shutdown the thread. This method prevents further dispatch of events to * the thread, and it causes any pending events to run to completion before diff --git a/xpcom/threads/nsThread.cpp b/xpcom/threads/nsThread.cpp index 14518d158e69..e98f99b8fea9 100644 --- a/xpcom/threads/nsThread.cpp +++ b/xpcom/threads/nsThread.cpp @@ -596,6 +596,7 @@ nsThread::nsThread(MainThreadFlag aMainThread, uint32_t aStackSize) , mShutdownRequired(false) , mEventsAreDoomed(false) , mIsMainThread(aMainThread) + , mCanInvokeJS(false) { } @@ -800,6 +801,20 @@ nsThread::GetPRThread(PRThread** aResult) return NS_OK; } +NS_IMETHODIMP +nsThread::GetCanInvokeJS(bool* aResult) +{ + *aResult = mCanInvokeJS; + return NS_OK; +} + +NS_IMETHODIMP +nsThread::SetCanInvokeJS(bool aCanInvokeJS) +{ + mCanInvokeJS = aCanInvokeJS; + return NS_OK; +} + NS_IMETHODIMP nsThread::AsyncShutdown() { diff --git a/xpcom/threads/nsThread.h b/xpcom/threads/nsThread.h index d7009330d091..d4592245211e 100644 --- a/xpcom/threads/nsThread.h +++ b/xpcom/threads/nsThread.h @@ -222,6 +222,9 @@ protected: // Set to true when events posted to this thread will never run. bool mEventsAreDoomed; MainThreadFlag mIsMainThread; + + // Set to true if this thread creates a JSRuntime. + bool mCanInvokeJS; }; #if defined(XP_UNIX) && !defined(ANDROID) && !defined(DEBUG) && HAVE_UALARM \ From fc6f7f8f0a7f595c01568b675817f80e1d89507f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Qu=C3=A8ze?= Date: Wed, 21 Sep 2016 21:20:06 +0200 Subject: [PATCH 096/117] Bug 1258142 - Stop using a CPOW in promiseMessage for webrtc bc tests, r=Gijs. --- .../webrtc/get_user_media_content_script.js | 6 +++++ browser/base/content/test/webrtc/head.js | 22 ++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/browser/base/content/test/webrtc/get_user_media_content_script.js b/browser/base/content/test/webrtc/get_user_media_content_script.js index 7786fe00cb32..37345b090ede 100644 --- a/browser/base/content/test/webrtc/get_user_media_content_script.js +++ b/browser/base/content/test/webrtc/get_user_media_content_script.js @@ -84,3 +84,9 @@ addMessageListener("Test:WaitForObserverCall", ({data}) => { } }, topic, false); }); + +addMessageListener("Test:WaitForMessage", () => { + content.addEventListener("message", ({data}) => { + sendAsyncMessage("Test:MessageReceived", data); + }, {once: true}); +}); diff --git a/browser/base/content/test/webrtc/head.js b/browser/base/content/test/webrtc/head.js index 327820160680..9909aec75b95 100644 --- a/browser/base/content/test/webrtc/head.js +++ b/browser/base/content/test/webrtc/head.js @@ -246,21 +246,23 @@ function promiseTodoObserverNotCalled(aTopic) { } function promiseMessage(aMessage, aAction) { - let deferred = Promise.defer(); - - content.addEventListener("message", function messageListener(event) { - content.removeEventListener("message", messageListener); - is(event.data, aMessage, "received " + aMessage); - if (event.data == aMessage) - deferred.resolve(); - else - deferred.reject(); + let promise = new Promise((resolve, reject) => { + let mm = _mm(); + mm.addMessageListener("Test:MessageReceived", function listener({data}) { + is(data, aMessage, "received " + aMessage); + if (data == aMessage) + resolve(); + else + reject(); + mm.removeMessageListener("Test:MessageReceived", listener); + }); + mm.sendAsyncMessage("Test:WaitForMessage"); }); if (aAction) aAction(); - return deferred.promise; + return promise; } function promisePopupNotificationShown(aName, aAction) { From c0bbe59b8779f205e350694e3b8fda668d19ad6c Mon Sep 17 00:00:00 2001 From: James Long Date: Wed, 21 Sep 2016 15:54:17 -0400 Subject: [PATCH 097/117] Bug 1303866 - don't track sourcemapped sources if sourcemaps are disabled r=fitzgen,ejpbruel --- devtools/server/actors/utils/TabSources.js | 13 +++-- .../server/tests/unit/test_listsources-04.js | 58 +++++++++++++++++++ devtools/server/tests/unit/xpcshell.ini | 1 + 3 files changed, 67 insertions(+), 5 deletions(-) create mode 100644 devtools/server/tests/unit/test_listsources-04.js diff --git a/devtools/server/actors/utils/TabSources.js b/devtools/server/actors/utils/TabSources.js index 312f0a9a17d2..56e862939fcb 100644 --- a/devtools/server/actors/utils/TabSources.js +++ b/devtools/server/actors/utils/TabSources.js @@ -406,7 +406,10 @@ TabSources.prototype = { * @return Promise of a SourceMapConsumer */ fetchSourceMap: function (aSource) { - if (this._sourceMaps.has(aSource)) { + if (!this._useSourceMaps) { + return resolve(null); + } + else if (this._sourceMaps.has(aSource)) { return this._sourceMaps.get(aSource); } else if (!aSource || !aSource.sourceMapURL) { @@ -457,10 +460,10 @@ TabSources.prototype = { * them from aScriptURL. */ _fetchSourceMap: function (aAbsSourceMapURL, aSourceURL) { - if (!this._useSourceMaps) { - return resolve(null); - } - else if (this._sourceMapCache[aAbsSourceMapURL]) { + assert(this._useSourceMaps, + "Cannot fetch sourcemaps if they are disabled"); + + if (this._sourceMapCache[aAbsSourceMapURL]) { return this._sourceMapCache[aAbsSourceMapURL]; } diff --git a/devtools/server/tests/unit/test_listsources-04.js b/devtools/server/tests/unit/test_listsources-04.js new file mode 100644 index 000000000000..6da99a6cec1c --- /dev/null +++ b/devtools/server/tests/unit/test_listsources-04.js @@ -0,0 +1,58 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Check getSources functionality with sourcemaps. + */ + +const {SourceNode} = require("source-map"); + +function run_test() { + run_test_with_server(DebuggerServer, function () { + // Bug 1304144 - This test does not run in a worker because the + // `rpc` method which talks to the main thread does not work. + // run_test_with_server(WorkerDebuggerServer, do_test_finished); + do_test_finished(); + }); + do_test_pending(); +} + +function run_test_with_server(server, cb) { + Task.spawn(function*() { + initTestDebuggerServer(server); + const debuggee = addTestGlobal("test-sources", server); + const client = new DebuggerClient(server.connectPipe()); + yield client.connect(); + const [,,threadClient] = yield attachTestTabAndResume(client, "test-sources"); + + yield threadClient.reconfigure({ useSourceMaps: true }); + addSources(debuggee); + + threadClient.getSources(Task.async(function* (res) { + do_check_true(res.sources.length === 3, "3 sources exist"); + + yield threadClient.reconfigure({ useSourceMaps: false }); + + threadClient.getSources(function(res) { + do_check_true(res.sources.length === 1, "1 source exist"); + client.close().then(cb); + }); + })); + }); +} + +function addSources(debuggee) { + let { code, map } = (new SourceNode(null, null, null, [ + new SourceNode(1, 0, "a.js", "function a() { return 'a'; }\n"), + new SourceNode(1, 0, "b.js", "function b() { return 'b'; }\n"), + new SourceNode(1, 0, "c.js", "function c() { return 'c'; }\n"), + ])).toStringWithSourceMap({ + file: "abc.js", + sourceRoot: "http://example.com/www/js/" + }); + + code += "//# sourceMappingURL=data:text/json;base64," + btoa(map.toString()); + + Components.utils.evalInSandbox(code, debuggee, "1.8", + "http://example.com/www/js/abc.js", 1); +} diff --git a/devtools/server/tests/unit/xpcshell.ini b/devtools/server/tests/unit/xpcshell.ini index b8097ef4fb84..cd5465f94691 100644 --- a/devtools/server/tests/unit/xpcshell.ini +++ b/devtools/server/tests/unit/xpcshell.ini @@ -165,6 +165,7 @@ skip-if = toolkit != "gonk" [test_listsources-01.js] [test_listsources-02.js] [test_listsources-03.js] +[test_listsources-04.js] [test_new_source-01.js] [test_sourcemaps-01.js] [test_sourcemaps-02.js] From a71d3c6aa7a1c5353744220748133f6d96b21f02 Mon Sep 17 00:00:00 2001 From: James Long Date: Wed, 21 Sep 2016 15:56:56 -0400 Subject: [PATCH 098/117] Bug 1302862 - Initialize the debugger after the sources have loaded r=bgrins,jlast --- devtools/client/debugger/new/panel.js | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/devtools/client/debugger/new/panel.js b/devtools/client/debugger/new/panel.js index 19145d503301..6b29cecd32d7 100644 --- a/devtools/client/debugger/new/panel.js +++ b/devtools/client/debugger/new/panel.js @@ -3,29 +3,27 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; +const { Task } = require("devtools/shared/task"); + function DebuggerPanel(iframeWindow, toolbox) { this.panelWin = iframeWindow; this.toolbox = toolbox; } DebuggerPanel.prototype = { - open: function() { - let targetPromise; + open: Task.async(function*() { if (!this.toolbox.target.isRemote) { - targetPromise = this.toolbox.target.makeRemote(); - } else { - targetPromise = Promise.resolve(this.toolbox.target); + yield this.toolbox.target.makeRemote(); } - return targetPromise.then(() => { - this.panelWin.Debugger.bootstrap({ - threadClient: this.toolbox.threadClient, - tabTarget: this.toolbox.target - }); - this.isReady = true; - return this; + yield this.panelWin.Debugger.bootstrap({ + threadClient: this.toolbox.threadClient, + tabTarget: this.toolbox.target }); - }, + + this.isReady = true; + return this; + }), _store: function() { return this.panelWin.Debugger.store; From 441d8c4ead0174e111cf0076f33dd4670c97829d Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Wed, 21 Sep 2016 22:45:37 +0200 Subject: [PATCH 099/117] Backed out changeset 9bc9a1bb8ad6 (bug 1283076) for failing clipboard test browser_410196_paste_into_tags.js. r=backout --- browser/locales/en-US/profile/bookmarks.inc | 32 --------- .../locales/generic/profile/bookmarks.html.in | 68 ++++++------------- 2 files changed, 22 insertions(+), 78 deletions(-) diff --git a/browser/locales/en-US/profile/bookmarks.inc b/browser/locales/en-US/profile/bookmarks.inc index 3ef47799a2a1..1b0cdb4ac3fb 100644 --- a/browser/locales/en-US/profile/bookmarks.inc +++ b/browser/locales/en-US/profile/bookmarks.inc @@ -37,36 +37,4 @@ # link title for https://www.mozilla.org/en-US/about/ #define firefox_about About Us -# LOCALIZATION NOTE (nightly_heading): -# Firefox Nightly links folder name -#define nightly_heading Firefox Nightly Resources - -# LOCALIZATION NOTE (nightly_blog): -# Nightly builds only, link title for https://blog.nightly.mozilla.org/ -#define nightly_blog Firefox Nightly blog - -# LOCALIZATION NOTE (bugzilla): -# Nightly builds only, link title for https://bugzilla.mozilla.org/ -#define bugzilla Mozilla Bug Tracker - -# LOCALIZATION NOTE (mdn): -# Nightly builds only, link title for https://developer.mozilla.org/ -#define mdn Mozilla Developer Network - -# LOCALIZATION NOTE (nightly_tester_tools): -# Nightly builds only, link title for https://addons.mozilla.org/en-US/firefox/addon/nightly-tester-tools/ -#define nightly_tester_tools Nightly Tester Tools - -# LOCALIZATION NOTE (crashes): -# Nightly builds only, link title for about:crashes -#define crashes All your crashes - -# LOCALIZATION NOTE (irc): -# Nightly builds only, link title for ircs://irc.mozilla.org/nightly -#define irc Discuss Nightly on IRC - -# LOCALIZATION NOTE (planet): -# Nightly builds only, link title for https://planet.mozilla.org/ -#define planet Planet Mozilla - #unfilter emptyLines diff --git a/browser/locales/generic/profile/bookmarks.html.in b/browser/locales/generic/profile/bookmarks.html.in index 3231864b0213..cba600e8167c 100644 --- a/browser/locales/generic/profile/bookmarks.html.in +++ b/browser/locales/generic/profile/bookmarks.html.in @@ -4,53 +4,29 @@ #if AB_CD == ja_jp_mac #define AB_CD ja #endif - -#define mozilla_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3gwMDAsTBZbkNwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAABNElEQVQ4y8WSsU0DURBE3yyWIaAJaqAAN4DPSL6AlIACKIEOyJEgRsIgOOkiInJqgAKowNg7BHdn7MOksNl+zZ//dvbDf5cAiklp22BdVtXdeTEpDYDB9m1VzU6OJuVp2NdEQCaI96fH2YHG4+mDduKYNMYINTcjcGbXzQVDEAphG0k48zUsajIbnAiMIXThpW8EICE0RAK4dvoKg9NIcTiQ589otyHOZLnwqK5nLwBFUZ4igc3iM0d1ff8CMC6mZ6Ihiaqq3gi1aUAnArD00SW1fq5OLBg0ymYmSZsR2/t4e/rGyCLW0sbp3oq+yTYqVgytQWui2FS7XYF7GFprY921T4CNQt8zr47dNzCkIX7y/jBtH+v+RGMQrc828W8pApnZbmEVQp/Ae7BlOy2ttib81/UFc+WRWEbjckIAAAAASUVORK5CYII= - -#define nightly_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA01JREFUeNpkk01oXFUUx//vzp33ZiaTzkwnyUwmsbbNRpp0GhuVKiVgQIUiLmoX7lyIG10I6qIUrG6KGyuYZbMwiATqxipSMVhQYwWhiwSJwUxKkzbz8ZJ5H/M+7/vunUIE7Vnc1f3/zjn/c46wsCbjIOI4Rlfew+Zf6/h9+RYYYzj70hymZp7GULUCSin+H8IBwLYsfLOwiOfffndK1c2LmhO84jl+2e5ZCTN6Xer0fpp5dmq+frxy5zGAY9n49IOLuHDls8uqE3y07YV0ywwQGA6oZsJRFRT0FnK2Hpw8PTl/7tXZDw8ApF/29YUvufjqxxqLPrnLQBUiQRUI4EcQHQ+EgwbjENl8Pv3H9W/f//m7W9cOAKkXzr+J4pm5umy6S/uEkiAEOlzscWHG5jTbhcsrDJiHsN1CIScJTlc5JaSlldEna9uk8fcGHNO6tOMGqfssQjNFoHOxyAXU9xF5HiRXw2AqhuUEsLs6giCkjbXG549a+O3mMhQneLnthOh0NBiaAdozkTEdpC0Hnm2hKAKR3ESJRigNFZBHCF2zn+p7SMIwRM9kRcI/D5g2xAcd1PQeMtw8xkGuafIRGRgZKfHfCbKlIu5t3IVASYYDDtMzL85il2fLuh6qIkFkWtjrARY3zjENJLwCKgqwOjLcnW30Qh/HnpmGYTJhT1bSdPL0NBpr+6rbs8qhIiPivQtRhDDJQuCViI4BxdJRrx/jBopob25BDmIMnzgZjFTK+2R4tAo4+q8iM9Ba3wBTuxirHELeM5AxFO6FCsnSsHNnFfL9XUiFIo7ypNmB9D3eQkT665nS5Xm72Q5r3KCo04be2MIRKULOUlEkPnJpAbn8AI7XJyEUy/CBhIrJlUdT6D/rP3x1u1yQFjP5bFIbH4HdbHG2j/GJMfiqzneCwVI0oFrD8OgTiKLgl5Ubi0v/uYV3ZqcrE2ff+Do2/LlUxAi/HKQZH9eegupzpxDztL4gIfTU9d3VG+ev/nh7s6/797wiz1K3VpYuDU3MvFWunXg9ly2WTNVNDZaPgIU08V3NMNXVZfmfP68lvt187Br78d5r52hoKaUkiWspQqqHx4+OCQLhFu3KAXNbCYQWzR5SBCr5X3x/M+lrHgowAMP2wWqd+FzxAAAAAElFTkSuQmCC - -#define firefox_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAz5JREFUeNpcU0toXFUY/s49596588ikySSmM8rk0UkJEirVTVEjYk1NUdRFFgouXZQI2k2hUCjdiYIuCi4Kuig0DbqQYgU3Yi0iFRuRCBMwaZvMZDTNY95z3/fM8b8jldpzOeeee/i/737n+/+f4ZExf730rkiaZ9NJMx/nmk5HypMqqLr+ZuD4F67N5ZYejmfRsnvhyKsLhSs3zP70SubgYKHSdFENu+gXAprQIGnvBi5ez0m1b6u7M399+PTx+UvtCKtFi2F6195qXK2byir88esy5ksfYND5DhuhRCtUKBNB0Q7w5Z8ee2GgWdjOn250fn5v5j8F5dOHlZD0kWRgAwp3hrKY0S9BJWKIcQ5PShhNG4+1bHx+IocT+RXcrRSDMfFNRvvt3Oyp/icIrRhUl9hoO4kt3F55Bxf3LkLV20jWOohbDjzXxyc/lMH0cRSyCd1xq+dFhu986t7T0CUwIzB8EkW3O5ibhj44ib7NJhiBKRoB/aS4ZWHjbxtjGQYP7nGRTjim1SaQqYiAVAREpHG8vzWJn+6PQ6CF0HPR7nQQczpYeEWHyWMUkwU8MSECGwgJxAWp9xWKNzkuH3oet+JDlIE9Momedh1G4CN0bfhVG9nsS0BQQthJx0V7j3elq7ihqV5ezQTwZmodP9ZGkU/bOPr4Nr53xtDYsaD7Dg4nNqFaH5OCYSSdGhf7daNmuv6wEKqXk/yExKGBHSznFsH6FFpKQ/JAA0ulUejWLt44lkHXsqDaX6C6Nl4Rnq8vK8s/KThDMlJhkI91YOO+iR3XwEelCdTCBLSgijNzd6DLNfhlHfZ6FtWiWBQpq/V2LdSrrNPljBQkoOjuCiPxAMutOIbkPqYSEqeequGZaTLzdhZhS0PlnlB9bvhtr5CuHj3y2Qj8hVQ/kEopxONEEsO/0yATDYXYAdWrE69JEElXq7Hyk0tro+xBU1yZmr4xrIcvptIRCZlJJAYBmRGRkD08aivA7VDvWPqt564Xn41w/AHB1/u7l1/uGxGU8mNcgodUNDIq0JDeLnpzc1uo1Qr76rWbqyf/142PjsXJqdkmN2YDnQ9oGkJNU+t57q7qUv4y9/t64+HYfwQYAN7OczrzUDvGAAAAAElFTkSuQmCC - -#define bugzilla_icon data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnYCL7J0pY9wwETY9kYEM9AAAAAEBAYAhVVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1bjTOS1Vb/wAA2/8JEqT/Q0g8kQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJnMqoiJtJ/0haST/NEkp/yQnW/8AAPD8AAHY/RsgP/JZUI+GKitih4ObUEAAAAAAAAAAAAAAAAAAAAAAKnouwip5Lv9ooW//a6Jz/y9GIv8JBXb/AADO/gEBvf8AAK7/FRJp/z9BfP8iLGj1AAAAAAAAAAAAAAAAL4YzwiB0I/+UwJ3/bK+C/02eZ/9CTjz/DBa1/wABxf8BAOj/AACp/w8Oc/sJCv//EhCN9AAAAAAAAAAANJA6iC2MMv93tYL/TZ5U/3mzjP9NoWr/NEss/wYIU/8CBOn/ARCX/wwNqP0TD6X/Cgyex5qacDAAAAAAAAAAADKUN/ZirWj/d76R/0SgXf9Ln1P/eLSM/1mda/8rOkb/CQiD/wMQvf8UEnT/MTAt4P//MwUhZyN8AAAAAAAAAAAznDf5UqlZ/228jP9NqnD/Qp9c/0yiVP+Dv5b/VaVw/0VxXf9PZXD/S3pQ/y54Nf8jcCf/I2wn/wAAAAA0ozjIM6E4/zOeOP+Uz6z/XLR+/06scv9BoV3/TqZX/4XBmP9XqHP/hr6Z/yp+Lf8leSr1JXUqbQAAAAA3rTz7Nqo7/zWmOqM3oz7rUK1W/43Mpf9etYD/T61z/0KjXf9Rqln/msup/46/lf8pgy7/JFg6sAAAAAAAAAAAOK8+8jqvOiMAAAAAAAAAADSlOv85pT//kM6o/2K5hP9Ysnv/YLJ2/ziXPv8piS3/V6Ri/yZQQ9wAAAAAAAAAAAAAAAAAAAAAAAAAADetP0E2qzz/OKg98UWsS/+e1K3/pNe4/4XDjv8ojy3/T7df/5fIqv8sjTH/K4kw/yqFLv8AAAAAAAAAAAAAAAA4sT3xN7A8+QAAAAA4qz3yNag6/zSlOf80oTn/csJ+/6/jwv9fjHj/MmRMdQAAAAAAAAAAAAAAAAAAAAAAAAAAOrdA/zm0QHQAAAAAAAAAADasO/k2qTvuRX5lpjqGT/gznDr/O3FXigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADq9QiMAAAAAAAAAAAAAAAA4sj7/Nq09s0uOaSI1qTplM6U68wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOrc//zu0P0EAAAAAOK4+UjWsPPgAAAAAAAAAAAAAAAAAAAAA/48AAP8HAAD4AQAA8AAAAOAAAADAAQAAwAMAAMAAAACAAwAAAAMAAHADAADwAAAA5AcAAO4HAAD+bwAA/u8AAA== - -#define mdn_icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAACYklEQVQ4y3WSTYjNYRTGf+f9/+/NuDN3GKMxt1mYpKR8RT6zEk1iyUo2IysSNspCxEIZRSN07YiUJSWkaUIZizELMzIZlO9h3MzXvf/341jcmTGa69RZvKfnPOc5z3mhQlRd651Ry17tqQQl5uR9ONHC3EtdiPPxWKZ24bhJvQV0OlBHhiV7pTs3WpUdEmeLrnWJAhhOtJA5/3RjqZg8Lrnwy4bQT/DvTb73Qt3N9ymATNvTU15Mvx8vfvTWDrmgT0y+dzuAZM527lM0Xx6jFKvnEKIYvIIqVeMFRCfEiDBWMw9UQUBUT8fBWvmrU9HEUpUWDq2cT23a0P6kQEqEwTFLQCBJpm9mYrV+6lW0ngNr62jb0kw6KvMeXJohZYSLzz9xvOMDJG6aPUKMtZPDObq+iXPbmoG/ooJC0QVaVy2g5AI3Bkq8/jYCkQEBo9ah1hESS1N1Gu9DxXNFRji0oYm+/Stoaa4tK0kcRq1HE4fxHqOKEf4bk16ubphd9iKxGKxFrcOWLB1vvuOCzmg0Irig1MxKMfBznPbOd2DLCmJNHKgSIdzr/kjXhwKbFtVPNQ+NJiw7+YDh0YTFuVr6CwLpaNJDjCYOtR61DldyHL7975c9dqeH4ZESscC7r79BFBI7kY5YrZsCC8qL/kFyR+6yY0UjS3M1PHz5ich71IOIQGSn0cskwdTeryTyfV9+jGzOP3rTQAiIHUNQEBkCeUbkcqguB2JEMGqt4sJlg8lGIsv0+p5dON8YaVgn3veJ85/F61YNtn5uXf3OCF0TQVacP0PiXMVzpfbemlnbna+I/QPSFTsRLd+hHAAAAABJRU5ErkJggg== - -#define addon_icon data:image/vndmicrosofticon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKoSURBVDiNjZNLaJRnFIaf75vvy2UGTWr8NYkxl0IFUYkNXSSZQNWFWlxIEVy1FLLo0i4adddVXRnS4kJwYxci2GaRTWlSFGKFGRXNmFBF62VMO4TENBdjMv9k5p//Oy4SLzgqHs7yPc95eTlHiQjvqniPbVYRzuBoR+FQDEvId4neIPNCY945DayNVff/8NUvn9XXNJMv5hhKnTvYP3ymHmj/IMBSbmHjjP8fycxv+MEzGqtatUI1vK7R7wM4J32XUv3Li/l5imGBkbtXlsMw/PF1jXozg3iP3aM0Z8XRBFDr1fl7Og9EnTguXx30p/6fjAIozb/i6C4BdB2z6QOfH27ZUFNL0QUELs/tycs4J2zdGEerCADTM1P8df3PxyUZiKPF8zyGHpwGFLC6QCCRuYA4QQQ6mw4hjhYT77GN2qiBWFnV5sXc0xMAgfKx5foVYKURB2vLPbxoM8auODE6ws/fH+77dHtjhxp5OHzywpWf/IIsRk25Rq0CRFY4UVNNndkmqZFRf3YuWaYUS0aE3RP5MXX3/iCOgu3Y1WYfL90sdSDgxRoYTY5mZ2anjwC/AqEBdM4tMJ4dwYs1YiOGSBkYrVHqlQNxoC34OV8BdxK9gQ+guo7bwdYdrXu92nU6nR7Pzc/PSXxfazTj30IpRaWpIqbX4UQoBDkWJlRwLzVeLBTyGs2UcUX5duzvsfPqNpvDovQhnBIdELGaWFk1hclYmLx2fxmFbNm5qXJNvdi2DQ1WAsO1P/5petshyf6v25gJ0nxUUUeiP531s/kvAcor7MDOL2pjz3JzVKpqUoMTpb8QsSqdeTT98fomjyDv8LP5aKI3uAgQP2orCkGAVRVMZxbQhnQJIAzkm3s3Js6GSfkEQEd4+bpa8+TW71P1ANqoB65I93OA2DgV+Z+omgAAAABJRU5ErkJggg== - - -@bookmarks_title@ -

    @bookmarks_heading@

    -

    -

    @bookmarks_toolbarfolder@

    -
    @bookmarks_toolbarfolder_description@ -#ifndef NIGHTLY_BUILD -
    -

    @getting_started@
    -
    -

    @firefox_heading@

    -

    -

    @firefox_help@ -
    @firefox_customize@ -
    @firefox_community@ -
    @firefox_about@ -
    -#else -
    -

    @firefox_community@ -
    -

    @nightly_heading@

    -

    -

    @nightly_blog@ -
    @bugzilla@ -
    @mdn@ -
    @nightly_tester_tools@ -
    @crashes@ -
    @irc@ -
    @planet@ -
    -#endif -
    + + + +@bookmarks_title@ +

    @bookmarks_heading@

    + +

    +

    @bookmarks_toolbarfolder@

    +
    @bookmarks_toolbarfolder_description@ +

    +

    @getting_started@ +

    +

    @firefox_heading@

    +

    +

    @firefox_help@ +
    @firefox_customize@ +
    @firefox_community@ +
    @firefox_about@ +

    +

    From ddf863a8eb187ddfba55e921af7f481a3c3951e0 Mon Sep 17 00:00:00 2001 From: Lin Clark Date: Wed, 21 Sep 2016 16:07:03 -0700 Subject: [PATCH 100/117] Bug 1303989 - New console frontend: Transfer focus to vview window on vview link click. r=bgrins MozReview-Commit-ID: JVs6Co1DUXv --- .../webconsole/new-console-output/utils/variables-view.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/devtools/client/webconsole/new-console-output/utils/variables-view.js b/devtools/client/webconsole/new-console-output/utils/variables-view.js index 3697a238b4a1..3cfee875a966 100644 --- a/devtools/client/webconsole/new-console-output/utils/variables-view.js +++ b/devtools/client/webconsole/new-console-output/utils/variables-view.js @@ -12,6 +12,9 @@ * * Once JSTerm is also written in React/Redux, these will be actions. */ -exports.openVariablesView = (object) => { - window.jsterm.openVariablesView({objectActor: object}); +exports.openVariablesView = (objectActor) => { + window.jsterm.openVariablesView({ + objectActor, + autofocus: true, + }); }; From 758721c2e9361a0a9f2658ef29c70b3e48147d67 Mon Sep 17 00:00:00 2001 From: Lin Clark Date: Wed, 21 Sep 2016 16:07:04 -0700 Subject: [PATCH 101/117] Bug 1304185 - Part 1: Convert evaluation result unit test to Enzyme. r=bgrins MozReview-Commit-ID: Btpc4E7uu9P --- .../test/components/evaluation-result.test.js | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js b/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js index 72b8abe63861..4032e8600c6e 100644 --- a/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js +++ b/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js @@ -2,29 +2,24 @@ http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; -const { stubPreparedMessages } = require("devtools/client/webconsole/new-console-output/test/fixtures/stubs/index"); -const { EvaluationResult } = require("devtools/client/webconsole/new-console-output/components/message-types/evaluation-result"); - +// Test utils. const expect = require("expect"); +const { render } = require("enzyme"); -const { - renderComponent -} = require("devtools/client/webconsole/new-console-output/test/helpers"); +// React +const { createFactory } = require("devtools/client/shared/vendor/react"); + +// Components under test. +const EvaluationResult = createFactory(require("devtools/client/webconsole/new-console-output/components/message-types/evaluation-result").EvaluationResult); + +// Test fakes. +const { stubPreparedMessages } = require("devtools/client/webconsole/new-console-output/test/fixtures/stubs/index"); describe("EvaluationResult component:", () => { it("renders a grip result", () => { const message = stubPreparedMessages.get("new Date(0)"); - const props = { - message - }; - const rendered = renderComponent(EvaluationResult, props); + const wrapper = render(EvaluationResult({ message })); - const messageBody = getMessageBody(rendered); - expect(messageBody.textContent).toBe("Date 1970-01-01T00:00:00.000Z"); + expect(wrapper.find(".message-body").text()).toBe("Date 1970-01-01T00:00:00.000Z"); }); }); - -function getMessageBody(rendered) { - const queryPath = "div.message span.message-body-wrapper span.message-body"; - return rendered.querySelector(queryPath); -} From 89b04f6278babda5627c2729abf9a666ae5d33d0 Mon Sep 17 00:00:00 2001 From: Lin Clark Date: Wed, 21 Sep 2016 16:07:04 -0700 Subject: [PATCH 102/117] Bug 1304185 - Part 2: Display evaluation result errors. r=bgrins MozReview-Commit-ID: E4xatW19czo --- .../message-types/evaluation-result.js | 10 +++- .../test/components/evaluation-result.test.js | 12 +++++ .../fixtures/stub-generators/stub-snippets.js | 3 +- .../test/fixtures/stubs/evaluationResult.js | 51 +++++++++++++++++-- .../new-console-output/utils/messages.js | 11 ++-- 5 files changed, 79 insertions(+), 8 deletions(-) diff --git a/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js b/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js index 58a9c3caf9d0..991717ca1d4c 100644 --- a/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js +++ b/devtools/client/webconsole/new-console-output/components/message-types/evaluation-result.js @@ -26,6 +26,14 @@ function EvaluationResult(props) { const {source, type, level} = message; const icon = MessageIcon({level}); + let messageBody; + if (message.messageText) { + messageBody = message.messageText; + } else { + messageBody = GripMessageBody({grip: message.parameters}); + } + + const classes = ["message", "cm-s-mozilla"]; classes.push(source); @@ -41,7 +49,7 @@ function EvaluationResult(props) { dom.span({ className: "message-body-wrapper" }, dom.span({ className: "message-flex-body" }, dom.span({ className: "message-body devtools-monospace" }, - GripMessageBody({grip: message.parameters}) + messageBody ) ) ) diff --git a/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js b/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js index 4032e8600c6e..78fe60015b85 100644 --- a/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js +++ b/devtools/client/webconsole/new-console-output/test/components/evaluation-result.test.js @@ -21,5 +21,17 @@ describe("EvaluationResult component:", () => { const wrapper = render(EvaluationResult({ message })); expect(wrapper.find(".message-body").text()).toBe("Date 1970-01-01T00:00:00.000Z"); + + expect(wrapper.find(".message.log").length).toBe(1); + }); + + it("renders an error", () => { + const message = stubPreparedMessages.get("asdf()"); + const wrapper = render(EvaluationResult({ message })); + + expect(wrapper.find(".message-body").text()) + .toBe("ReferenceError: asdf is not defined"); + + expect(wrapper.find(".message.error").length).toBe(1); }); }); diff --git a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js index 8ad294b3db80..71338e0c7281 100644 --- a/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js +++ b/devtools/client/webconsole/new-console-output/test/fixtures/stub-generators/stub-snippets.js @@ -49,7 +49,8 @@ console.timeEnd("bar"); // Evaluation Result const evaluationResultCommands = [ - "new Date(0)" + "new Date(0)", + "asdf()" ]; let evaluationResult = new Map(evaluationResultCommands.map(cmd => [cmd, cmd])); diff --git a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js index b839e0060097..d914cc796275 100644 --- a/devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js +++ b/devtools/client/webconsole/new-console-output/test/fixtures/stubs/evaluationResult.js @@ -19,7 +19,6 @@ stubPreparedMessages.set("new Date(0)", new ConsoleMessage({ "source": "javascript", "type": "result", "level": "log", - "messageText": null, "parameters": { "type": "object", "actor": "server1.conn0.child1/obj30", @@ -33,7 +32,23 @@ stubPreparedMessages.set("new Date(0)", new ConsoleMessage({ } }, "repeat": 1, - "repeatId": "{\"id\":null,\"allowRepeating\":true,\"source\":\"javascript\",\"type\":\"result\",\"level\":\"log\",\"messageText\":null,\"parameters\":{\"type\":\"object\",\"actor\":\"server1.conn0.child1/obj30\",\"class\":\"Date\",\"extensible\":true,\"frozen\":false,\"sealed\":false,\"ownPropertyLength\":0,\"preview\":{\"timestamp\":0}},\"repeatId\":null,\"stacktrace\":null,\"frame\":null}", + "repeatId": "{\"id\":null,\"allowRepeating\":true,\"source\":\"javascript\",\"type\":\"result\",\"level\":\"log\",\"parameters\":{\"type\":\"object\",\"actor\":\"server1.conn0.child1/obj30\",\"class\":\"Date\",\"extensible\":true,\"frozen\":false,\"sealed\":false,\"ownPropertyLength\":0,\"preview\":{\"timestamp\":0}},\"repeatId\":null,\"stacktrace\":null,\"frame\":null}", + "stacktrace": null, + "frame": null +})); + +stubPreparedMessages.set("asdf()", new ConsoleMessage({ + "id": "1", + "allowRepeating": true, + "source": "javascript", + "type": "result", + "level": "error", + "messageText": "ReferenceError: asdf is not defined", + "parameters": { + "type": "undefined" + }, + "repeat": 1, + "repeatId": "{\"id\":null,\"allowRepeating\":true,\"source\":\"javascript\",\"type\":\"result\",\"level\":\"error\",\"messageText\":\"ReferenceError: asdf is not defined\",\"parameters\":{\"type\":\"undefined\"},\"repeatId\":null,\"stacktrace\":null,\"frame\":null}", "stacktrace": null, "frame": null })); @@ -54,11 +69,41 @@ stubPackets.set("new Date(0)", { "timestamp": 0 } }, - "timestamp": 1471886229652, + "timestamp": 1474405330863, "exception": null, "helperResult": null }); +stubPackets.set("asdf()", { + "from": "server1.conn0.child1/consoleActor2", + "input": "asdf()", + "result": { + "type": "undefined" + }, + "timestamp": 1474405330881, + "exception": { + "type": "object", + "actor": "server1.conn0.child1/obj32", + "class": "Error", + "extensible": true, + "frozen": false, + "sealed": false, + "ownPropertyLength": 4, + "preview": { + "kind": "Error", + "name": "ReferenceError", + "message": "asdf is not defined", + "stack": "@debugger eval code:1:1\n", + "fileName": "debugger eval code", + "lineNumber": 1, + "columnNumber": 1 + } + }, + "exceptionMessage": "ReferenceError: asdf is not defined", + "exceptionDocURL": "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Errors/Not_defined?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default", + "helperResult": null +}); + module.exports = { stubPreparedMessages, diff --git a/devtools/client/webconsole/new-console-output/utils/messages.js b/devtools/client/webconsole/new-console-output/utils/messages.js index b8685a16b4b3..8b91257a833c 100644 --- a/devtools/client/webconsole/new-console-output/utils/messages.js +++ b/devtools/client/webconsole/new-console-output/utils/messages.js @@ -148,13 +148,18 @@ function transformPacket(packet) { case "evaluationResult": default: { - let { result } = packet; + let { + exceptionMessage: messageText, + result: parameters + } = packet; + const level = messageText ? MESSAGE_LEVEL.ERROR : MESSAGE_LEVEL.LOG; return new ConsoleMessage({ source: MESSAGE_SOURCE.JAVASCRIPT, type: MESSAGE_TYPE.RESULT, - level: MESSAGE_LEVEL.LOG, - parameters: result, + level, + messageText, + parameters, }); } } From e164a44f6a075ef9575d999e44d7a758cd7c2229 Mon Sep 17 00:00:00 2001 From: Brian Grinstead Date: Wed, 21 Sep 2016 16:07:04 -0700 Subject: [PATCH 103/117] Bug 1304414 - New console frontend: remove outline flicker on #output-container; r=linclark MozReview-Commit-ID: 2aPq3JBtbwW --- devtools/client/webconsole/webconsole.js | 1 + 1 file changed, 1 insertion(+) diff --git a/devtools/client/webconsole/webconsole.js b/devtools/client/webconsole/webconsole.js index e409ca1d5ec8..ec6fa93a8d53 100644 --- a/devtools/client/webconsole/webconsole.js +++ b/devtools/client/webconsole/webconsole.js @@ -582,6 +582,7 @@ WebConsoleFrame.prototype = { // XXX: We should actually stop output from happening on old output // panel, but for now let's just hide it. this.experimentalOutputNode = this.outputNode.cloneNode(); + this.experimentalOutputNode.removeAttribute("tabindex"); this.outputNode.hidden = true; this.outputNode.parentNode.appendChild(this.experimentalOutputNode); // @TODO Once the toolbox has been converted to React, see if passing From 8aed77e735e4ae303c6168462ae512a90fd858c5 Mon Sep 17 00:00:00 2001 From: Lin Clark Date: Wed, 21 Sep 2016 16:07:04 -0700 Subject: [PATCH 104/117] Bug 1304003 - Part 1: Rewrite browser_bug_865871_variables_view_close_on_esc_key.js. r=bgrins MozReview-Commit-ID: DHjTBSru0uu --- devtools/client/webconsole/jsterm.js | 18 ++-- .../message-types/console-command.js | 3 +- .../components/variables-view-link.js | 2 +- .../test/mochitest/browser.ini | 1 + .../test/mochitest/browser_webconsole_init.js | 33 ------- ...owser_webconsole_vview_close_on_esc_key.js | 46 +++++++++ .../new-console-output/test/mochitest/head.js | 98 ++++++++++++++++++- 7 files changed, 158 insertions(+), 43 deletions(-) create mode 100644 devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_vview_close_on_esc_key.js diff --git a/devtools/client/webconsole/jsterm.js b/devtools/client/webconsole/jsterm.js index 4ff5d9bb329b..d0b7f4188545 100644 --- a/devtools/client/webconsole/jsterm.js +++ b/devtools/client/webconsole/jsterm.js @@ -378,6 +378,7 @@ JSTerm.prototype = { if (this.hud.NEW_CONSOLE_OUTPUT_ENABLED) { this.hud.newConsoleOutput.dispatchMessageAdd(response); // @TODO figure out what to do about the callback. + callback && callback(); return; } let msg = new Messages.JavaScriptEvalOutput(response, @@ -423,12 +424,17 @@ JSTerm.prototype = { */ execute: function (executeString, callback) { let deferred = promise.defer(); - let resultCallback = function (msg) { - deferred.resolve(msg); - if (callback) { - callback(msg); - } - }; + let resultCallback; + if (this.hud.NEW_CONSOLE_OUTPUT_ENABLED) { + resultCallback = () => deferred.resolve(); + } else { + resultCallback = (msg) => { + deferred.resolve(msg); + if (callback) { + callback(msg); + } + }; + } // attempt to execute the content of the inputNode executeString = executeString || this.getInputValue(); diff --git a/devtools/client/webconsole/new-console-output/components/message-types/console-command.js b/devtools/client/webconsole/new-console-output/components/message-types/console-command.js index 81f569a86746..38bdcc260a0e 100644 --- a/devtools/client/webconsole/new-console-output/components/message-types/console-command.js +++ b/devtools/client/webconsole/new-console-output/components/message-types/console-command.js @@ -12,13 +12,12 @@ const { DOM: dom, PropTypes } = require("devtools/client/shared/vendor/react"); -const { ConsoleCommand: ConsoleCommandType } = require("devtools/client/webconsole/new-console-output/types"); const MessageIcon = createFactory(require("devtools/client/webconsole/new-console-output/components/message-icon").MessageIcon); ConsoleCommand.displayName = "ConsoleCommand"; ConsoleCommand.propTypes = { - message: PropTypes.instanceOf(ConsoleCommandType).isRequired, + message: PropTypes.object.isRequired, }; /** diff --git a/devtools/client/webconsole/new-console-output/components/variables-view-link.js b/devtools/client/webconsole/new-console-output/components/variables-view-link.js index 2c4ae11b82ec..78b62dded411 100644 --- a/devtools/client/webconsole/new-console-output/components/variables-view-link.js +++ b/devtools/client/webconsole/new-console-output/components/variables-view-link.js @@ -16,7 +16,7 @@ const {openVariablesView} = require("devtools/client/webconsole/new-console-outp VariablesViewLink.displayName = "VariablesViewLink"; VariablesViewLink.propTypes = { - object: PropTypes.object.required + object: PropTypes.object.isRequired }; function VariablesViewLink(props) { diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini index eaa0f140755e..423b8f41926d 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini @@ -7,3 +7,4 @@ support-files = test-console.html [browser_webconsole_init.js] +[browser_webconsole_vview_close_on_esc_key.js] diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_init.js b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_init.js index 2565e4c09270..4280270dd0b2 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_init.js +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_init.js @@ -33,36 +33,3 @@ add_task(function* () { yield receievedMessages; }); - -/** - * Wait for messages in the web console output, resolving once they are receieved. - * - * @param object options - * - hud: the webconsole - * - messages: Array[Object]. An array of messages to match. Current supported options: - * - text: Exact text match in .message-body - */ -function waitForMessages({ hud, messages }) { - return new Promise(resolve => { - let numMatched = 0; - let receivedLog = hud.ui.on("new-messages", function messagesReceieved(e, newMessage) { - for (let message of messages) { - if (message.matched) { - continue; - } - - if (newMessage.node.querySelector(".message-body").textContent == message.text) { - numMatched++; - message.matched = true; - info("Matched a message with text: " + message.text + ", still waiting for " + (messages.length - numMatched) + " messages"); - } - - if (numMatched === messages.length) { - hud.ui.off("new-messages", messagesReceieved); - resolve(); - return; - } - } - }); - }); -} \ No newline at end of file diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_vview_close_on_esc_key.js b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_vview_close_on_esc_key.js new file mode 100644 index 000000000000..712a990b4406 --- /dev/null +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_vview_close_on_esc_key.js @@ -0,0 +1,46 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Check that the variables view sidebar can be closed by pressing Escape in the +// web console. + +"use strict"; + +const TEST_URI = + "data:text/html;charset=utf8,"; + +add_task(function* () { + let hud = yield openNewTabAndConsole(TEST_URI); + let jsterm = hud.jsterm; + let vview; + + yield openSidebar("fooObj", 'testProp: "testValue"'); + vview.window.focus(); + + let sidebarClosed = jsterm.once("sidebar-closed"); + EventUtils.synthesizeKey("VK_ESCAPE", {}); + yield sidebarClosed; + + function* openSidebar(objName, expectedText) { + yield jsterm.execute(objName); + info("JSTerm executed"); + + let msg = yield waitFor(() => findMessage(hud, "Object")); + ok(msg, "Message found"); + + let anchor = msg.querySelector("a"); + let body = msg.querySelector(".message-body"); + ok(anchor, "object anchor"); + ok(body, "message body"); + ok(body.textContent.includes(expectedText), "message text check"); + + msg.scrollIntoView(); + yield EventUtils.synthesizeMouse(anchor, 2, 2, {}, hud.iframeWindow); + + let vviewVar = yield jsterm.once("variablesview-fetched"); + vview = vviewVar._variablesView; + ok(vview, "variables view object exists"); + } +}); diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/head.js b/devtools/client/webconsole/new-console-output/test/mochitest/head.js index faa2093b4a13..8957af0a1b73 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/head.js +++ b/devtools/client/webconsole/new-console-output/test/mochitest/head.js @@ -13,6 +13,102 @@ Services.scriptloader.loadSubScript( this); Services.prefs.setBoolPref("devtools.webconsole.new-frontend-enabled", true); -registerCleanupFunction(() => { +registerCleanupFunction(function* () { Services.prefs.clearUserPref("devtools.webconsole.new-frontend-enabled"); + + let browserConsole = HUDService.getBrowserConsole(); + if (browserConsole) { + if (browserConsole.jsterm) { + browserConsole.jsterm.clearOutput(true); + } + yield HUDService.toggleBrowserConsole(); + } }); + +/** + * Add a new tab and open the toolbox in it, and select the webconsole. + * + * @param string url + * The URL for the tab to be opened. + * @return Promise + * Resolves when the tab has been added, loaded and the toolbox has been opened. + * Resolves to the toolbox. + */ +var openNewTabAndConsole = Task.async(function* (url) { + let toolbox = yield openNewTabAndToolbox(TEST_URI, "webconsole"); + let hud = toolbox.getCurrentPanel().hud; + hud.jsterm._lazyVariablesView = false; + return hud; +}); + +/** + * Wait for messages in the web console output, resolving once they are receieved. + * + * @param object options + * - hud: the webconsole + * - messages: Array[Object]. An array of messages to match. Current supported options: + * - text: Exact text match in .message-body + */ +function waitForMessages({ hud, messages }) { + return new Promise(resolve => { + let numMatched = 0; + let receivedLog = hud.ui.on("new-messages", function messagesReceieved(e, newMessage) { + for (let message of messages) { + if (message.matched) { + continue; + } + + if (newMessage.node.querySelector(".message-body").textContent == message.text) { + numMatched++; + message.matched = true; + info("Matched a message with text: " + message.text + ", still waiting for " + (messages.length - numMatched) + " messages"); + } + + if (numMatched === messages.length) { + hud.ui.off("new-messages", messagesReceieved); + resolve(receivedLog); + return; + } + } + }); + }); +} + +/** + * Wait for a predicate to return a result. + * + * @param function condition + * Invoked once in a while until it returns a truthy value. This should be an + * idempotent function, since we have to run it a second time after it returns + * true in order to return the value. + * @param string message [optional] + * A message to output if the condition failes. + * @param number interval [optional] + * How often the predicate is invoked, in milliseconds. + * @return object + * A promise that is resolved with the result of the condition. + */ +function* waitFor(condition, message = "waitFor", interval = 100, maxTries = 50) { + return new Promise(resolve => { + BrowserTestUtils.waitForCondition(condition, message, interval, maxTries) + .then(resolve(condition())); + }); +} + +/** + * Find a message in the output. + * + * @param object hud + * The web console. + * @param string text + * A substring that can be found in the message. + * @param selector [optional] + * The selector to use in finding the message. + */ +function findMessage(hud, text, selector = ".message") { + const elements = Array.prototype.filter.call( + hud.ui.experimentalOutputNode.querySelectorAll(selector), + (el) => el.textContent.includes(text) + ); + return elements.pop(); +} From 0bf04397725761423398d019a33e7a257685faa1 Mon Sep 17 00:00:00 2001 From: Lin Clark Date: Wed, 21 Sep 2016 16:07:04 -0700 Subject: [PATCH 105/117] Bug 1304003 - Part 2: Rewrite browser_webconsole_bug_579412_input_focus.js. r=bgrins MozReview-Commit-ID: HHVtxrLlg88 --- .../test/mochitest/browser.ini | 2 ++ .../browser_webconsole_input_focus.js | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_input_focus.js diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini index 423b8f41926d..0dfbe8f9491e 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini @@ -7,4 +7,6 @@ support-files = test-console.html [browser_webconsole_init.js] +[browser_webconsole_input_focus.js] [browser_webconsole_vview_close_on_esc_key.js] + diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_input_focus.js b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_input_focus.js new file mode 100644 index 000000000000..c972c276157c --- /dev/null +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_input_focus.js @@ -0,0 +1,18 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// Tests that the input field is focused when the console is opened. + +"use strict"; + +const TEST_URI = "data:text/html;charset=utf-8,Test input focus"; + +add_task(function* () { + let hud = yield openNewTabAndConsole(TEST_URI); + hud.jsterm.clearOutput(); + + let inputNode = hud.jsterm.inputNode; + ok(inputNode.getAttribute("focused"), "input node is focused"); +}); From 570ebdd0fc9780f81b8b09d31be1f865973dd186 Mon Sep 17 00:00:00 2001 From: Lin Clark Date: Wed, 21 Sep 2016 16:07:04 -0700 Subject: [PATCH 106/117] Bug 1304003 - Part 3: Rewrite browser_webconsole_notifications.js. r=bgrins MozReview-Commit-ID: A58RPFsCsI4 --- .../test/mochitest/browser.ini | 1 + ...owser_webconsole_observer_notifications.js | 47 +++++++++++++++++++ .../new-console-output/utils/messages.js | 14 +++--- 3 files changed, 55 insertions(+), 7 deletions(-) create mode 100644 devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_observer_notifications.js diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini index 0dfbe8f9491e..d7206443f11c 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini @@ -8,5 +8,6 @@ support-files = [browser_webconsole_init.js] [browser_webconsole_input_focus.js] +[browser_webconsole_observer_notifications.js] [browser_webconsole_vview_close_on_esc_key.js] diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_observer_notifications.js b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_observer_notifications.js new file mode 100644 index 000000000000..5225a6ac17a4 --- /dev/null +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_observer_notifications.js @@ -0,0 +1,47 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ft=javascript ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const TEST_URI = "data:text/html;charset=utf-8,

    Web Console test for " + + "obeserver notifications"; + +let created = false; +let destroyed = false; + +add_task(function* () { + setupObserver(); + yield openNewTabAndConsole(TEST_URI); + yield waitFor(() => created); + + yield closeTabAndToolbox(gBrowser.selectedTab); + yield waitFor(() => destroyed); +}); + +function setupObserver() { + const observer = { + QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]), + + observe: function observe(subject, topic) { + subject = subject.QueryInterface(Ci.nsISupportsString); + + switch (topic) { + case "web-console-created": + ok(HUDService.getHudReferenceById(subject.data), "We have a hud reference"); + Services.obs.removeObserver(observer, "web-console-created"); + created = true; + break; + case "web-console-destroyed": + ok(!HUDService.getHudReferenceById(subject.data), "We do not have a hud reference"); + Services.obs.removeObserver(observer, "web-console-destroyed"); + destroyed = true; + break; + } + }, + }; + + Services.obs.addObserver(observer, "web-console-created", false); + Services.obs.addObserver(observer, "web-console-destroyed", false); +} diff --git a/devtools/client/webconsole/new-console-output/utils/messages.js b/devtools/client/webconsole/new-console-output/utils/messages.js index 8b91257a833c..b464a778142d 100644 --- a/devtools/client/webconsole/new-console-output/utils/messages.js +++ b/devtools/client/webconsole/new-console-output/utils/messages.js @@ -83,11 +83,11 @@ function transformPacket(packet) { break; } - const frame = { - source: message.filename || null, - line: message.lineNumber || null, - column: message.columnNumber || null - }; + const frame = message.filename ? { + source: message.filename, + line: message.lineNumber, + column: message.columnNumber, + } : null; return new ConsoleMessage({ source: MESSAGE_SOURCE.CONSOLE_API, @@ -119,11 +119,11 @@ function transformPacket(packet) { level = MESSAGE_LEVEL.INFO; } - const frame = { + const frame = pageError.sourceName ? { source: pageError.sourceName, line: pageError.lineNumber, column: pageError.columnNumber - }; + } : null; return new ConsoleMessage({ source: MESSAGE_SOURCE.JAVASCRIPT, From c9972b98e7019e3720e9140d0e4ed555638f4007 Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Wed, 21 Sep 2016 19:56:58 -0700 Subject: [PATCH 107/117] Backed out changeset 9b7d9479690e (bug 1304303) for gtest and mda failures CLOSED TREE --- media/libstagefright/binding/MoofParser.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/media/libstagefright/binding/MoofParser.cpp b/media/libstagefright/binding/MoofParser.cpp index 9612b9074741..354fcf484e17 100644 --- a/media/libstagefright/binding/MoofParser.cpp +++ b/media/libstagefright/binding/MoofParser.cpp @@ -848,11 +848,14 @@ Saiz::Saiz(Box& aBox, AtomType aDefaultType) uint8_t defaultSampleInfoSize = reader->ReadU8(); uint32_t count = reader->ReadU32(); if (defaultSampleInfoSize) { - if (!mSampleInfoSize.SetLength(count, fallible)) { + if (!mSampleInfoSize.SetCapacity(count, fallible)) { LOG(Saiz, "OOM"); return; } - MOZ_ALWAYS_TRUE(mSampleInfoSize.ReplaceElementsAt(0, count, defaultSampleInfoSize, fallible)); + for (int i = 0; i < count; i++) { + MOZ_ALWAYS_TRUE(mSampleInfoSize.AppendElement(defaultSampleInfoSize, + fallible)); + } } else { if (!reader->ReadArray(mSampleInfoSize, count)) { LOG(Saiz, "Incomplete Box (OOM or missing count:%u)", count); From 18aca2998b9bf5175eee3570da029aa39f20f444 Mon Sep 17 00:00:00 2001 From: John Dai Date: Wed, 21 Sep 2016 19:40:00 -0400 Subject: [PATCH 108/117] Bug 1275838 - Implement CustomElementsRegistry get function. r=smaug, r=wchen --- dom/base/CustomElementsRegistry.cpp | 15 ++++++--- dom/base/CustomElementsRegistry.h | 2 +- .../mochitest/webcomponents/mochitest.ini | 1 + .../test_custom_element_get.html | 31 +++++++++++++++++++ dom/webidl/CustomElementsRegistry.webidl | 1 - 5 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 dom/tests/mochitest/webcomponents/test_custom_element_get.html diff --git a/dom/base/CustomElementsRegistry.cpp b/dom/base/CustomElementsRegistry.cpp index 41a560d81fa5..b4d97e78e2a4 100644 --- a/dom/base/CustomElementsRegistry.cpp +++ b/dom/base/CustomElementsRegistry.cpp @@ -793,11 +793,18 @@ CustomElementsRegistry::Define(const nsAString& aName, void CustomElementsRegistry::Get(JSContext* aCx, const nsAString& aName, - JS::MutableHandle aRetVal, - ErrorResult& aRv) + JS::MutableHandle aRetVal) { - // TODO: This function will be implemented in bug 1275838 - aRv.Throw(NS_ERROR_NOT_IMPLEMENTED); + nsCOMPtr nameAtom(NS_Atomize(aName)); + CustomElementDefinition* data = mCustomDefinitions.Get(nameAtom); + + if (!data) { + aRetVal.setUndefined(); + return; + } + + aRetVal.setObject(*data->mConstructor); + return; } already_AddRefed diff --git a/dom/base/CustomElementsRegistry.h b/dom/base/CustomElementsRegistry.h index 044593db8592..5bfb344d9666 100644 --- a/dom/base/CustomElementsRegistry.h +++ b/dom/base/CustomElementsRegistry.h @@ -243,7 +243,7 @@ public: const ElementDefinitionOptions& aOptions, ErrorResult& aRv); void Get(JSContext* cx, const nsAString& name, - JS::MutableHandle aRetVal, ErrorResult& aRv); + JS::MutableHandle aRetVal); already_AddRefed WhenDefined(const nsAString& name, ErrorResult& aRv); }; diff --git a/dom/tests/mochitest/webcomponents/mochitest.ini b/dom/tests/mochitest/webcomponents/mochitest.ini index b13438b3ed75..c1309aae4405 100644 --- a/dom/tests/mochitest/webcomponents/mochitest.ini +++ b/dom/tests/mochitest/webcomponents/mochitest.ini @@ -14,6 +14,7 @@ support-files = [test_custom_element_import_node_created_callback.html] [test_custom_element_in_shadow.html] [test_custom_element_register_invalid_callbacks.html] +[test_custom_element_get.html] [test_nested_content_element.html] [test_dest_insertion_points.html] [test_dest_insertion_points_shadow.html] diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_get.html b/dom/tests/mochitest/webcomponents/test_custom_element_get.html new file mode 100644 index 000000000000..3920ea343c00 --- /dev/null +++ b/dom/tests/mochitest/webcomponents/test_custom_element_get.html @@ -0,0 +1,31 @@ + + + + + Test custom elements get function. + + + + + +Bug 1275838 + + + diff --git a/dom/webidl/CustomElementsRegistry.webidl b/dom/webidl/CustomElementsRegistry.webidl index 8e231b392b3c..e05ceecf20b9 100644 --- a/dom/webidl/CustomElementsRegistry.webidl +++ b/dom/webidl/CustomElementsRegistry.webidl @@ -8,7 +8,6 @@ interface CustomElementsRegistry { [Throws] void define(DOMString name, Function functionConstructor, optional ElementDefinitionOptions options); - [Throws] any get(DOMString name); [Throws] Promise whenDefined(DOMString name); From 4c2e28b8b6a04a5e636f6522f13ed55fe4069a5f Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 21 Sep 2016 22:38:40 -0700 Subject: [PATCH 109/117] Add XRE_IsGPUProcess. (bug 1301266 part 1, r=billm) --- toolkit/xre/nsAppRunner.cpp | 6 ++++++ xpcom/build/nsXULAppAPI.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp index 0fc73318ee56..6cb8c55d9d4c 100644 --- a/toolkit/xre/nsAppRunner.cpp +++ b/toolkit/xre/nsAppRunner.cpp @@ -4736,6 +4736,12 @@ XRE_GetProcessType() return mozilla::startup::sChildProcessType; } +bool +XRE_IsGPUProcess() +{ + return XRE_GetProcessType() == GeckoProcessType_GPU; +} + bool XRE_IsParentProcess() { diff --git a/xpcom/build/nsXULAppAPI.h b/xpcom/build/nsXULAppAPI.h index 7551cb20a191..426a58f06368 100644 --- a/xpcom/build/nsXULAppAPI.h +++ b/xpcom/build/nsXULAppAPI.h @@ -457,6 +457,9 @@ XRE_API(bool, XRE_API(bool, XRE_IsContentProcess, ()) +XRE_API(bool, + XRE_IsGPUProcess, ()) + typedef void (*MainFunction)(void* aData); XRE_API(nsresult, From 14db343852eb24dd641cc418f9ffb8f4e1d7fa3f Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 21 Sep 2016 22:38:44 -0700 Subject: [PATCH 110/117] Support about:checkerboard reporting in the GPU process. (bug 1301266 part 2, r=kats) --- gfx/ipc/GPUChild.cpp | 8 +++++++ gfx/ipc/GPUChild.h | 1 + gfx/ipc/GPUParent.cpp | 10 ++++++++ gfx/ipc/GPUParent.h | 2 ++ gfx/ipc/PGPU.ipdl | 3 +++ gfx/layers/apz/src/AsyncPanZoomController.cpp | 5 +--- .../apz/util/CheckerboardReportService.cpp | 24 +++++++++++++++++++ .../apz/util/CheckerboardReportService.h | 14 ++++++----- 8 files changed, 57 insertions(+), 10 deletions(-) diff --git a/gfx/ipc/GPUChild.cpp b/gfx/ipc/GPUChild.cpp index 4c3fac55a0d6..ed1a0038f4d0 100644 --- a/gfx/ipc/GPUChild.cpp +++ b/gfx/ipc/GPUChild.cpp @@ -7,6 +7,7 @@ #include "gfxConfig.h" #include "gfxPrefs.h" #include "GPUProcessHost.h" +#include "mozilla/dom/CheckerboardReportService.h" #include "mozilla/gfx/gfxVars.h" #if defined(XP_WIN) # include "mozilla/gfx/DeviceManagerDx.h" @@ -93,6 +94,13 @@ GPUChild::RecvInitComplete(const GPUDeviceData& aData) return true; } +bool +GPUChild::RecvReportCheckerboard(const uint32_t& aSeverity, const nsCString& aLog) +{ + layers::CheckerboardEventStorage::Report(aSeverity, std::string(aLog.get())); + return true; +} + void GPUChild::ActorDestroy(ActorDestroyReason aWhy) { diff --git a/gfx/ipc/GPUChild.h b/gfx/ipc/GPUChild.h index effbac94411e..93f4d0af2a15 100644 --- a/gfx/ipc/GPUChild.h +++ b/gfx/ipc/GPUChild.h @@ -33,6 +33,7 @@ public: // PGPUChild overrides. bool RecvInitComplete(const GPUDeviceData& aData) override; + bool RecvReportCheckerboard(const uint32_t& aSeverity, const nsCString& aLog) override; void ActorDestroy(ActorDestroyReason aWhy) override; static void Destroy(UniquePtr&& aChild); diff --git a/gfx/ipc/GPUParent.cpp b/gfx/ipc/GPUParent.cpp index fd9689de1f23..fc356e484de0 100644 --- a/gfx/ipc/GPUParent.cpp +++ b/gfx/ipc/GPUParent.cpp @@ -41,12 +41,22 @@ namespace gfx { using namespace ipc; using namespace layers; +static GPUParent* sGPUParent; + GPUParent::GPUParent() { + sGPUParent = this; } GPUParent::~GPUParent() { + sGPUParent = nullptr; +} + +/* static */ GPUParent* +GPUParent::GetSingleton() +{ + return sGPUParent; } bool diff --git a/gfx/ipc/GPUParent.h b/gfx/ipc/GPUParent.h index 552d86d07b8e..87ff26dd0a94 100644 --- a/gfx/ipc/GPUParent.h +++ b/gfx/ipc/GPUParent.h @@ -20,6 +20,8 @@ public: GPUParent(); ~GPUParent(); + static GPUParent* GetSingleton(); + bool Init(base::ProcessId aParentPid, MessageLoop* aIOLoop, IPC::Channel* aChannel); diff --git a/gfx/ipc/PGPU.ipdl b/gfx/ipc/PGPU.ipdl index 49d4cec8ad65..a673bce375fa 100644 --- a/gfx/ipc/PGPU.ipdl +++ b/gfx/ipc/PGPU.ipdl @@ -72,6 +72,9 @@ child: // Sent when the GPU process has initialized devices. This occurs once, after // Init(). async InitComplete(GPUDeviceData data); + + // Sent when APZ detects checkerboarding and apz checkerboard reporting is enabled. + async ReportCheckerboard(uint32_t severity, nsCString log); }; } // namespace gfx diff --git a/gfx/layers/apz/src/AsyncPanZoomController.cpp b/gfx/layers/apz/src/AsyncPanZoomController.cpp index c84420c63441..4a9229b298e8 100644 --- a/gfx/layers/apz/src/AsyncPanZoomController.cpp +++ b/gfx/layers/apz/src/AsyncPanZoomController.cpp @@ -3200,10 +3200,7 @@ AsyncPanZoomController::ReportCheckerboard(const TimeStamp& aSampleTime) // checkerboard events. uint32_t severity = mCheckerboardEvent->GetSeverity(); std::string log = mCheckerboardEvent->GetLog(); - NS_DispatchToMainThread(NS_NewRunnableFunction([severity, log]() { - RefPtr storage = CheckerboardEventStorage::GetInstance(); - storage->ReportCheckerboard(severity, log); - })); + CheckerboardEventStorage::Report(severity, log); } mCheckerboardEvent = nullptr; } diff --git a/gfx/layers/apz/util/CheckerboardReportService.cpp b/gfx/layers/apz/util/CheckerboardReportService.cpp index bf61d4cd306b..664e76b5c701 100644 --- a/gfx/layers/apz/util/CheckerboardReportService.cpp +++ b/gfx/layers/apz/util/CheckerboardReportService.cpp @@ -11,6 +11,7 @@ #include "mozilla/Assertions.h" // for MOZ_ASSERT #include "mozilla/ClearOnShutdown.h" // for ClearOnShutdown #include "mozilla/dom/CheckerboardReportServiceBinding.h" // for dom::CheckerboardReports +#include "mozilla/gfx/GPUParent.h" #include "nsContentUtils.h" // for nsContentUtils #include "nsXULAppAPI.h" @@ -35,6 +36,29 @@ CheckerboardEventStorage::GetInstance() return instance.forget(); } +void +CheckerboardEventStorage::Report(uint32_t aSeverity, const std::string& aLog) +{ + if (!NS_IsMainThread()) { + RefPtr task = NS_NewRunnableFunction([aSeverity, aLog] () -> void { + CheckerboardEventStorage::Report(aSeverity, aLog); + }); + NS_DispatchToMainThread(task.forget()); + return; + } + + if (XRE_IsGPUProcess()) { + if (gfx::GPUParent* gpu = gfx::GPUParent::GetSingleton()) { + nsCString log(aLog.c_str()); + gpu->SendReportCheckerboard(aSeverity, log); + } + return; + } + + RefPtr storage = GetInstance(); + storage->ReportCheckerboard(aSeverity, aLog); +} + void CheckerboardEventStorage::ReportCheckerboard(uint32_t aSeverity, const std::string& aLog) { diff --git a/gfx/layers/apz/util/CheckerboardReportService.h b/gfx/layers/apz/util/CheckerboardReportService.h index ee86bef54a0a..643c7a548c6e 100644 --- a/gfx/layers/apz/util/CheckerboardReportService.h +++ b/gfx/layers/apz/util/CheckerboardReportService.h @@ -37,17 +37,17 @@ public: */ static already_AddRefed GetInstance(); - /** - * Save a checkerboard event log, optionally dropping older ones that were - * less severe or less recent. Zero-severity reports may be ignored entirely. - */ - void ReportCheckerboard(uint32_t aSeverity, const std::string& aLog); - /** * Get the stored checkerboard reports. */ void GetReports(nsTArray& aOutReports); + /** + * Save a checkerboard event log, optionally dropping older ones that were + * less severe or less recent. Zero-severity reports may be ignored entirely. + */ + static void Report(uint32_t aSeverity, const std::string& aLog); + private: /* Stuff for refcounted singleton */ CheckerboardEventStorage() {} @@ -55,6 +55,8 @@ private: static StaticRefPtr sInstance; + void ReportCheckerboard(uint32_t aSeverity, const std::string& aLog); + private: /** * Struct that this class uses internally to store a checkerboard report. From 269fe42c7e2e4c5fd8883e256fdabd57df1e0f82 Mon Sep 17 00:00:00 2001 From: Matthew Gregan Date: Wed, 21 Sep 2016 19:41:34 +1200 Subject: [PATCH 111/117] Bug 1304303 - Speed up default initialization of SampleInfoSize table. r=gerald MozReview-Commit-ID: 9dValMxqVkh --- media/libstagefright/binding/MoofParser.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/media/libstagefright/binding/MoofParser.cpp b/media/libstagefright/binding/MoofParser.cpp index 354fcf484e17..9d39a17b593f 100644 --- a/media/libstagefright/binding/MoofParser.cpp +++ b/media/libstagefright/binding/MoofParser.cpp @@ -848,14 +848,11 @@ Saiz::Saiz(Box& aBox, AtomType aDefaultType) uint8_t defaultSampleInfoSize = reader->ReadU8(); uint32_t count = reader->ReadU32(); if (defaultSampleInfoSize) { - if (!mSampleInfoSize.SetCapacity(count, fallible)) { + if (!mSampleInfoSize.SetLength(count, fallible)) { LOG(Saiz, "OOM"); return; } - for (int i = 0; i < count; i++) { - MOZ_ALWAYS_TRUE(mSampleInfoSize.AppendElement(defaultSampleInfoSize, - fallible)); - } + memset(mSampleInfoSize.Elements(), defaultSampleInfoSize, mSampleInfoSize.Length()); } else { if (!reader->ReadArray(mSampleInfoSize, count)) { LOG(Saiz, "Incomplete Box (OOM or missing count:%u)", count); From e87d2f8355131b140fdf6beb3406295e2a7b2f89 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 21 Sep 2016 22:40:20 -0700 Subject: [PATCH 112/117] Make ipc::Shmem hold a strong reference to underlying SharedMemory. (bug 1303426 part 1, r=billm) --HG-- extra : rebase_source : 32e182cf5fca848144f472b54a100547a3414f60 --- ipc/glue/Shmem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipc/glue/Shmem.h b/ipc/glue/Shmem.h index a3a4be55813b..2736c9ac1cdb 100644 --- a/ipc/glue/Shmem.h +++ b/ipc/glue/Shmem.h @@ -255,7 +255,7 @@ private: void AssertInvariants() const; #endif - SharedMemory* MOZ_NON_OWNING_REF mSegment; + RefPtr mSegment; void* mData; size_t mSize; id_t mId; From 352bf5384ca61edb2925919aaf4006b6a8125b6f Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 21 Sep 2016 22:40:20 -0700 Subject: [PATCH 113/117] Fail safely if IPC has shut down during an ImageBridge shmem request. (bug 1303426 part 2, r=nical) --HG-- extra : rebase_source : c5d46710e1dd6056b750ddbae02726d77ab0ce95 --- gfx/layers/ipc/ImageBridgeChild.cpp | 42 ++++++++++++++++------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/gfx/layers/ipc/ImageBridgeChild.cpp b/gfx/layers/ipc/ImageBridgeChild.cpp index fcd73cf7a37e..6aa3f6611928 100644 --- a/gfx/layers/ipc/ImageBridgeChild.cpp +++ b/gfx/layers/ipc/ImageBridgeChild.cpp @@ -1152,7 +1152,9 @@ ImageBridgeChild::AllocUnsafeShmem(size_t aSize, return DispatchAllocShmemInternal(aSize, aType, aShmem, true); // true: unsafe } - MOZ_ASSERT(CanSend()); + if (!CanSend()) { + return false; + } return PImageBridgeChild::AllocUnsafeShmem(aSize, aType, aShmem); } @@ -1165,14 +1167,15 @@ ImageBridgeChild::AllocShmem(size_t aSize, return DispatchAllocShmemInternal(aSize, aType, aShmem, false); // false: unsafe } - MOZ_ASSERT(CanSend()); + if (!CanSend()) { + return false; + } return PImageBridgeChild::AllocShmem(aSize, aType, aShmem); } // NewRunnableFunction accepts a limited number of parameters so we need a // struct here struct AllocShmemParams { - RefPtr mAllocator; size_t mSize; ipc::SharedMemory::SharedMemoryType mType; ipc::Shmem* mShmem; @@ -1185,18 +1188,17 @@ ImageBridgeChild::ProxyAllocShmemNow(SynchronousTask* aTask, AllocShmemParams* a { AutoCompleteTask complete(aTask); - MOZ_ASSERT(aParams); - - auto shmAllocator = aParams->mAllocator->AsShmemAllocator(); - if (aParams->mUnsafe) { - aParams->mSuccess = shmAllocator->AllocUnsafeShmem(aParams->mSize, - aParams->mType, - aParams->mShmem); - } else { - aParams->mSuccess = shmAllocator->AllocShmem(aParams->mSize, - aParams->mType, - aParams->mShmem); + if (!CanSend()) { + return; } + + bool ok = false; + if (aParams->mUnsafe) { + ok = AllocUnsafeShmem(aParams->mSize, aParams->mType, aParams->mShmem); + } else { + ok = AllocShmem(aParams->mSize, aParams->mType, aParams->mShmem); + } + aParams->mSuccess = ok; } bool @@ -1208,7 +1210,7 @@ ImageBridgeChild::DispatchAllocShmemInternal(size_t aSize, SynchronousTask task("AllocatorProxy alloc"); AllocShmemParams params = { - this, aSize, aType, aShmem, aUnsafe, true + aSize, aType, aShmem, aUnsafe, false }; RefPtr runnable = WrapRunnable( @@ -1230,15 +1232,19 @@ ImageBridgeChild::ProxyDeallocShmemNow(SynchronousTask* aTask, { AutoCompleteTask complete(aTask); - MOZ_ASSERT(aShmem); - - aAllocator->AsShmemAllocator()->DeallocShmem(*aShmem); + if (!CanSend()) { + return; + } + DeallocShmem(*aShmem); } void ImageBridgeChild::DeallocShmem(ipc::Shmem& aShmem) { if (InImageBridgeChildThread()) { + if (!CanSend()) { + return; + } PImageBridgeChild::DeallocShmem(aShmem); return; } From 2255e55899f03f30c8164efe6a0eeb72b11965fd Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 21 Sep 2016 22:40:20 -0700 Subject: [PATCH 114/117] Remove the ChildActor helper class. (bug 1303426 part 3, r=nical) --HG-- extra : rebase_source : 1b0219df4a61caedd210dd82def132accf3d3ad9 --- gfx/layers/IPDLActor.h | 82 ----------------------------- gfx/layers/client/TextureClient.cpp | 52 ++++++++++++++---- gfx/layers/client/TextureClient.h | 2 - 3 files changed, 43 insertions(+), 93 deletions(-) diff --git a/gfx/layers/IPDLActor.h b/gfx/layers/IPDLActor.h index 8773ab30129b..4698d16c4a5b 100644 --- a/gfx/layers/IPDLActor.h +++ b/gfx/layers/IPDLActor.h @@ -14,88 +14,6 @@ namespace mozilla { namespace layers { -/// A base class to facilitate the deallocation of IPDL actors. -/// -/// This class implements a simple deallocation protocol that avoids races -/// between async messages and actor destruction. The priniple is that the -/// child side is always the one that tells the parent that the actor pair is -/// going to be destroyed through the async Destroy message, and the parent -/// side always sends the __delete__ message. -/// Once ChildActor::Destroy has been called it is invalid to send any other -/// IPDL message from the child, although the child might receive messages -/// from the parent that were sent before the parent received the Destroy -/// message. Always check the result of ChildActor::Destroy before sending -/// anything. -/// -/// The actual IPDL protocol must have the following messages: -/// -/// child: -/// async __delete__(); -/// parent: -/// async Destroy(); -/// sync DestroySynchronously(); -/// -template -class ChildActor : public Protocol -{ -public: - ChildActor() : mDestroyed(false) {} - - ~ChildActor() { MOZ_ASSERT(mDestroyed); } - - /// Check the return of CanSend before sending any message! - bool CanSend() const { return !mDestroyed; } - - /// The normal way to destroy the actor. - /// - /// This will asynchronously send a Destroy message to the parent actor, whom - /// will send the delete message. - void Destroy(CompositableForwarder* aFwd = nullptr) - { - MOZ_ASSERT(!mDestroyed); - if (!mDestroyed) { - mDestroyed = true; - DestroyManagees(); - if (!aFwd || !aFwd->DestroyInTransaction(this, false)) { - this->SendDestroy(); - } - } - } - - /// The ugly and slow way to destroy the actor. - /// - /// This will block until the Parent actor has handled the Destroy message, - /// and then start the asynchronous handshake (and destruction will already - /// be done on the parent side, when the async part happens). - void DestroySynchronously(CompositableForwarder* aFwd = nullptr) - { - MOZ_PERFORMANCE_WARNING("gfx", "IPDL actor requires synchronous deallocation"); - MOZ_ASSERT(!mDestroyed); - if (!mDestroyed) { - DestroyManagees(); - mDestroyed = true; - if (!aFwd || !aFwd->DestroyInTransaction(this, true)) { - this->SendDestroySync(); - this->SendDestroy(); - } - } - } - - /// If the transaction that was supposed to destroy the texture fails for - /// whatever reason, fallback to destroying the actor synchronously. - static bool DestroyFallback(Protocol* aActor) - { - return aActor->SendDestroySync(); - } - - /// Override this if the protocol manages other protocols, and destroy the - /// managees from there - virtual void DestroyManagees() {} - -private: - bool mDestroyed; -}; - /// A base class to facilitate the deallocation of IPDL actors. /// /// Implements the parent side of the simple deallocation handshake. diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index ebb6d3b43244..d5ca24dfbb75 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -94,12 +94,13 @@ void DeallocateTextureClient(TextureDeallocParams params); * TextureClient's data until the compositor side confirmed that it is safe to * deallocte or recycle the it. */ -class TextureChild final : public ChildActor +class TextureChild final : PTextureChild { ~TextureChild() { // We should have deallocated mTextureData in ActorDestroy MOZ_ASSERT(!mTextureData); + MOZ_ASSERT(mOwnerCalledDestroy); } public: NS_INLINE_DECL_THREADSAFE_REFCOUNTING(TextureChild) @@ -113,6 +114,7 @@ public: , mMainThreadOnly(false) , mIPCOpen(false) , mOwnsTextureData(false) + , mOwnerCalledDestroy(false) {} bool Recv__delete__() override { return true; } @@ -144,6 +146,19 @@ private: Release(); } + /// The normal way to destroy the actor. + /// + /// This will asynchronously send a Destroy message to the parent actor, whom + /// will send the delete message. + void Destroy(CompositableForwarder* aFwd); + + /// The ugly and slow way to destroy the actor. + /// + /// This will block until the Parent actor has handled the Destroy message, + /// and then start the asynchronous handshake (and destruction will already + /// be done on the parent side, when the async part happens). + void DestroySynchronously(CompositableForwarder* aFwd); + // This lock is used order to prevent several threads to access the // TextureClient's data concurrently. In particular, it prevents shutdown // code to destroy a texture while another thread is reading or writing into @@ -218,6 +233,7 @@ private: bool mMainThreadOnly; bool mIPCOpen; bool mOwnsTextureData; + bool mOwnerCalledDestroy; friend class TextureClient; friend void DeallocateTextureClient(TextureDeallocParams params); @@ -258,6 +274,32 @@ TextureChild::ActorDestroy(ActorDestroyReason why) } } +void +TextureChild::Destroy(CompositableForwarder* aFwd) +{ + MOZ_ASSERT(!mOwnerCalledDestroy); + if (!mOwnerCalledDestroy) { + mOwnerCalledDestroy = true; + if (!aFwd || !aFwd->DestroyInTransaction(this, false)) { + this->SendDestroy(); + } + } +} + +void +TextureChild::DestroySynchronously(CompositableForwarder* aFwd) +{ + MOZ_PERFORMANCE_WARNING("gfx", "IPDL actor requires synchronous deallocation"); + MOZ_ASSERT(!mOwnerCalledDestroy); + if (!mOwnerCalledDestroy) { + mOwnerCalledDestroy = true; + if (!aFwd || !aFwd->DestroyInTransaction(this, true)) { + this->SendDestroySync(); + this->SendDestroy(); + } + } +} + /* static */ Atomic TextureClient::sSerialCounter(0); void DeallocateTextureClientSyncProxy(TextureDeallocParams params, @@ -410,14 +452,6 @@ void TextureClient::Destroy(bool aForceSync) } } -bool -TextureClient::DestroyFallback(PTextureChild* aActor) -{ - // should not end up here so crash debug builds. - MOZ_ASSERT(false); - return aActor->SendDestroySync(); -} - void TextureClient::LockActor() const { diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h index 73b716e27bab..1b795c410707 100644 --- a/gfx/layers/client/TextureClient.h +++ b/gfx/layers/client/TextureClient.h @@ -510,8 +510,6 @@ public: */ static PTextureChild* CreateIPDLActor(); static bool DestroyIPDLActor(PTextureChild* actor); - // call this if the transaction that was supposed to destroy the actor failed. - static bool DestroyFallback(PTextureChild* actor); /** * Get the TextureClient corresponding to the actor passed in parameter. From c77a418e0d37704d595e063574c0c44e4429d1fd Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 21 Sep 2016 22:40:21 -0700 Subject: [PATCH 115/117] Destoy TextureData even if TextureChild::ActorDestroy has already run. (bug 1303426 part 4, r=nical) --HG-- extra : rebase_source : 8ca1eb13ac949ecf00efe821acd3fbde8cc11c7e --- gfx/layers/client/TextureClient.cpp | 77 ++++++++++++++++------------- 1 file changed, 44 insertions(+), 33 deletions(-) diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index d5ca24dfbb75..8a8a476ded06 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -150,14 +150,14 @@ private: /// /// This will asynchronously send a Destroy message to the parent actor, whom /// will send the delete message. - void Destroy(CompositableForwarder* aFwd); + void Destroy(const TextureDeallocParams& aParams); /// The ugly and slow way to destroy the actor. /// /// This will block until the Parent actor has handled the Destroy message, /// and then start the asynchronous handshake (and destruction will already /// be done on the parent side, when the async part happens). - void DestroySynchronously(CompositableForwarder* aFwd); + void DestroySynchronously(const TextureDeallocParams& aParams); // This lock is used order to prevent several threads to access the // TextureClient's data concurrently. In particular, it prevents shutdown @@ -275,28 +275,53 @@ TextureChild::ActorDestroy(ActorDestroyReason why) } void -TextureChild::Destroy(CompositableForwarder* aFwd) +TextureChild::Destroy(const TextureDeallocParams& aParams) { MOZ_ASSERT(!mOwnerCalledDestroy); - if (!mOwnerCalledDestroy) { - mOwnerCalledDestroy = true; - if (!aFwd || !aFwd->DestroyInTransaction(this, false)) { - this->SendDestroy(); - } + if (mOwnerCalledDestroy) { + return; + } + + mOwnerCalledDestroy = true; + + // DestroyTextureData will be called by TextureChild::ActorDestroy + mTextureData = aParams.data; + mOwnsTextureData = aParams.clientDeallocation; + + if (!mCompositableForwarder || + !mCompositableForwarder->DestroyInTransaction(this, false)) + { + this->SendDestroy(); } } void -TextureChild::DestroySynchronously(CompositableForwarder* aFwd) +TextureChild::DestroySynchronously(const TextureDeallocParams& aParams) { - MOZ_PERFORMANCE_WARNING("gfx", "IPDL actor requires synchronous deallocation"); + MOZ_PERFORMANCE_WARNING("gfx", "TextureClient/Host pair requires synchronous deallocation"); + MOZ_ASSERT(!mOwnerCalledDestroy); - if (!mOwnerCalledDestroy) { - mOwnerCalledDestroy = true; - if (!aFwd || !aFwd->DestroyInTransaction(this, true)) { - this->SendDestroySync(); - this->SendDestroy(); - } + if (mOwnerCalledDestroy) { + return; + } + + mOwnerCalledDestroy = true; + + DestroyTextureData( + aParams.data, + aParams.allocator, + aParams.clientDeallocation, + mMainThreadOnly); + + if (!IPCOpen()) { + return; + } + + if (!mCompositableForwarder || + !mCompositableForwarder->DestroyInTransaction(this, true)) + { + this->SendDestroySync(); + this->SendDestroy(); } } @@ -381,24 +406,10 @@ DeallocateTextureClient(TextureDeallocParams params) return; } - if (!actor->IPCOpen()) { - // The actor is already deallocated which probably means there was a shutdown - // race causing this function to be called concurrently which is bad! - gfxCriticalError() << "Racy texture deallocation"; - return; - } - - if (params.syncDeallocation) { - MOZ_PERFORMANCE_WARNING("gfx", - "TextureClient/Host pair requires synchronous deallocation"); - actor->DestroySynchronously(actor->mCompositableForwarder); - DestroyTextureData(params.data, params.allocator, params.clientDeallocation, - actor->mMainThreadOnly); + if (params.syncDeallocation || !actor->IPCOpen()) { + actor->DestroySynchronously(params); } else { - actor->mTextureData = params.data; - actor->mOwnsTextureData = params.clientDeallocation; - actor->Destroy(actor->mCompositableForwarder); - // DestroyTextureData will be called by TextureChild::ActorDestroy + actor->Destroy(params); } } From 4a10c9994aad95cbed9960ec5c291eb9422d1046 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 21 Sep 2016 22:40:21 -0700 Subject: [PATCH 116/117] Update comment in TextureClient::AsTextureClient. (bug 1303426 part 5, r=nical) --HG-- extra : rebase_source : 56f8addea4631c103741823b5a13a0d90308ac90 --- gfx/layers/client/TextureClient.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index 8a8a476ded06..af96971bf283 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -762,11 +762,12 @@ TextureClient::AsTextureClient(PTextureChild* actor) TextureChild* tc = static_cast(actor); - // TODO: This is not entirely race-free because TextureClient's ref count - // can reach zero on another thread and AsTextureClient gets called before - // Destroy. tc->Lock(); + // Since TextureClient may be destroyed asynchronously with respect to its + // IPDL actor, we must acquire a reference within a lock. The mDestroyed bit + // tells us whether or not the main thread has disconnected the TextureClient + // from its actor. if (tc->mDestroyed) { tc->Unlock(); return nullptr; From ef0f273f0f8313aaffbdfa7a57fe368ff2c85271 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 21 Sep 2016 22:56:00 -0700 Subject: [PATCH 117/117] Fix build bustage from bug 1301266 (r=CLOSED TREE) --- gfx/layers/apz/util/CheckerboardReportService.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gfx/layers/apz/util/CheckerboardReportService.cpp b/gfx/layers/apz/util/CheckerboardReportService.cpp index 664e76b5c701..7a93073d4071 100644 --- a/gfx/layers/apz/util/CheckerboardReportService.cpp +++ b/gfx/layers/apz/util/CheckerboardReportService.cpp @@ -10,6 +10,7 @@ #include "MainThreadUtils.h" // for NS_IsMainThread #include "mozilla/Assertions.h" // for MOZ_ASSERT #include "mozilla/ClearOnShutdown.h" // for ClearOnShutdown +#include "mozilla/Unused.h" #include "mozilla/dom/CheckerboardReportServiceBinding.h" // for dom::CheckerboardReports #include "mozilla/gfx/GPUParent.h" #include "nsContentUtils.h" // for nsContentUtils @@ -50,7 +51,7 @@ CheckerboardEventStorage::Report(uint32_t aSeverity, const std::string& aLog) if (XRE_IsGPUProcess()) { if (gfx::GPUParent* gpu = gfx::GPUParent::GetSingleton()) { nsCString log(aLog.c_str()); - gpu->SendReportCheckerboard(aSeverity, log); + Unused << gpu->SendReportCheckerboard(aSeverity, log); } return; }